流水灯单片机程序代码c语言(流水灯的单片机程序)
很简的51单片机C语言流水灯程序
1、51单片机C语言实现循环8个流水灯左移三次,后右移三次。
例程:
#includereg51.h??//51单片机头文件
#include?intrins.h?//包含有左右循环移位子函数的库
#define?uint?unsigned?int????//宏定义
#define?uchar?unsigned?char??//宏定义
sbit?beep=P2^3;
void?delay(uint?z)??//延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.
{????????????????????//delay(500);大约延时500ms.
????uint?x,y;
????for(x=z;x0;x--)
????????for(y=110;y0;y--);????
}
void?main()????????????//主函数
{
????uchar?a,i,j;
????while(1)????????//大循环
????{
????????a=0xfe;?????//赋初值
????????for(j=0;j3;j++)?for(i=0;i8;i++)???//左移三次
????????{
????????????P1=a;???????//点亮小灯
????????????beep=0;?????//开启蜂鸣器
????????????delay(50);?//延时50毫秒
????????????beep=1;?????//关闭蜂鸣器
????????????delay(50);??//再延时50毫秒
????????????a=_crol_(a,1);?//将a变量循环左移一位
????????}
????????a=0x7f;
???????for(j=0;j3;j++)?for(i=0;i8;i++)??//右移三次
????????{
????????????P1=a;???????//点亮小灯
????????????beep=0;?????//开启蜂鸣器
????????????delay(50);?//延时50毫秒
????????????beep=1;?????//关闭蜂鸣器
????????????delay(50);???//再延时50毫秒
????????????a=_cror_(a,1);?//将a变量循环右移一位
????????}????????
????}
}
2、51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。
单片机流水灯的程序怎么打(C语言)?顺便解释解释。
你的事C语言 回答的是汇编 如下 //led显示程序,简单地显示led的程序
//展示了如何控制端口的方法
//现象 : led 8个灯从左到右,然后从右到左显示;#include 8051.hvoid delay(unsigned char times);void main()
{
int k,m;
P0 = 0; //关闭数码显示
P2 = 0; //
P3_7 = 0; //关闭蜂鸣器
while(1) //设置一个无限制循环
{ m = 254;
P1 = m; //从第一个灯开始显示
for(k=0;k8;k++)
{delay(255);br m =1;br P1 = m; //表示,P1每次向左一位br }
m = 128;
for(k=0;k8;k++) //第二次重复
{delay(255);br m = 1;br P1 = m; //表示,P1每次向右一位br }
}
}
单片机流水灯c程序
经过仿真,程序没有毛病,可以实现流水灯的效果。
keil软件,也有时添乱,多实验几次,即可。
只是太快,可以加大延时的时间。
#includereg52.h
#includeintrins.h
unsignedchara;
voidmain()
{
inti,j;
a=0xfe;
while(1){
a=_crol_(a,1);
P0=a;
for(i=250;i0;i--)
for(j=1000;j0;j--);//加一行
}
}
用C51单片机控制12个LED流水灯的C语言程序怎么写?
#include "REG52.H"
//控制引脚定义
sbit LED1 = PX.X; //P0.0-P3.7任意引脚
.... .... .......
sbit LED12 = PX.X;
//宏定义灯亮灯灭
#define LED1_ON( ) LED1 =0 //阳极接电源
#define LED1_OFF( ) LED1 =1 //阳极接电源
....... ............. .............
#define LED12_ON( ) LED12 =0 //阳极接电源
#define LED12_OFF( ) LED12 =1 //阳极接电源
void Init_GPIO( )//端口引脚初始化,关闭所有指示灯
{
LED1_OFF( ) ;
..............
LED12_OFF( ) ;
}
void Delay_ms( u16 dat ) //延时函数
{
u16 i, j;
for(i = dat; i0; i--)
{
for (j=300; j0; j--);
}
}
int main( ) //主函数
{
Init_GPIO( );//引脚初始化
while(1) //大循环
{
LED1_ON( );//点亮第一个LED
LED2_OFF( );
.............
LED12_OFF( );
Delay_ms(1000);//延时 参数自己可以根据晶振频率自己调节
LED1_OFF( ); //点亮第二个LED
LED2_ON( );
LED3_OFF( );
.............
LED12_OFF( );
Delay_ms(1000);
............. //按照上面修改;
LED1_OFF( );//点亮第十二个LED
LED2_OFF );
LED3_OFF( );
.............
LED12_ON( );
Delay_ms(1000);
}
}
单片机C语言编程:控制流水灯
T0 工作模式2 计时器中断,一次200us,1s流水灯左移或右移一次。
k3触发外部中断0,级别高于计时器中断,故暂停。
#include?reg52.h
#include?intrins.h?
#define uint?unsigned?int
#define uchar?unsigned?char
sbit?k1=P1^0;?//左循环按钮
sbit?k2=P1^1;?//右循环按钮
sbit?k4=P1^2;?//恢复暂停
sbit?k3=P3^2;//暂停
void?init();
void?showLED();
void?delay(uint?xms);
uint?delayTime;
uint?goLeft=1;
uint?goRight=0;
uint?sFlag=0;
void?main()
{
init();
while(1)
{
if(k1==0)
{
delay(10);
if(k1==0)
{
while(k1==0);
goLeft=1;
goRight=0;
}
}
if(k2==0)
{
delay(10);
if(k2==0)
{
while(k2==0);
goLeft=0;
goRight=1;
}
}
}
}
void?delay(uint?xms)
{
uint?i,j;
for(i=xms;i0;i--)
for(j=112;j0;j--);
}
void?init()
{
P0=0xfe;
TMOD=0x02;?//T0?工作模式2?自动装填8位 ?200us
????TH0=0x38;
????TL0=0x38;
????EA=1;
ET0=1;
????TR0=1;
EX0=1;
IT0=1;
}
void?showLED()
{
if(goLeft==1)
P0=_crol_(P0,1);
if(goRight==1)
P0=_cror_(P0,1);
}
void?moveDelay()?interrupt??1 //一次中断200us
{
if(delayTime==5000)
{
showLED();
delayTime=0;
}
else
delayTime++;
}
void?stopLED()?interrupt?0
{
while(1)
{
if(k4==0)
{
delay(10);
if(k4==0)
{
while(k4==0);
break;
}
}
}
}
51单片机c语言编写一个流水灯程序,要求如下(不能用数组,8个led指示灯从两边往中间移动,然后再分开)
?//流水灯
#include?"reg52.h"
#define?LED_PORT?P3
void?delay(unsigned?char?time)
{
?unsigned?char?i,j,k;
?for(i=0;itime;i++)
?{
??for(j=0;j200;j++)
??{
???for(k=0;k200;k++);
??}
?}
}
void?main()
{
?unsigned?char?i,halfbyteh=0x80,halfbytel=0x01;
?while(1)
?{
??halfbyteh=0x80;
??halfbytel=0x01;
??for(i=0;i8;i++)
??{
???//LED_PORT=halfbyteh|halfbytel;//高电平点亮??
???LED_PORT=~(halfbyteh|halfbytel);//低电平点亮
???halfbyteh=halfbyteh1;
???halfbytel=halfbytel1;
???delay(10);
??}
?}
}