c51单片机流水灯程序c语言(c51单片机编程流水灯)

http://www.itjxue.com  2023-03-16 20:22  来源:未知  点击次数: 

用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语言编写流水灯?

C语言流水灯程序是学习的基础,一定要搞懂!给你发两个!\x0d\x0a(一)\x0d\x0a#include //51系列单片机定义文件\x0d\x0a#define uchar unsigned char //定义无符号字符\x0d\x0a#define uint unsigned int //定义无符号整数\x0d\x0avoid delay(uint); //声明延时函数\x0d\x0avoid main()\x0d\x0a{\x0d\x0a uint i;\x0d\x0a uchar temp;\x0d\x0a while(1)\x0d\x0a {\x0d\x0a temp=0x01;\x0d\x0a for(i=0;i=1;\x0d\x0a }\x0d\x0a temp=0xFE;\x0d\x0a for(i=0;i=1;\x0d\x0a }\x0d\x0a }\x0d\x0a}\x0d\x0avoid delay(uint a) //延时函数,毫秒级别\x0d\x0a{\x0d\x0a uint i;\x0d\x0a while(--a!=0) //执行空操作循环,其中a为形参,由调用该函数的函数语句提供值\x0d\x0a {\x0d\x0a for(i=0;i\x0d\x0a#define uint unsigned int\x0d\x0a#define uchar unsigned char\x0d\x0a#define ulong unsigned long\x0d\x0a sbit p2=P2^0;\x0d\x0avoid main()\x0d\x0a{\x0d\x0a TMOD=0x01;\x0d\x0a TR0=1;\x0d\x0a ET0=1;\x0d\x0a EA=1;\x0d\x0a while(1)\x0d\x0a {\x0d\x0a ;\x0d\x0a }\x0d\x0a}\x0d\x0a\x0d\x0atimer0() interrupt 1\x0d\x0a{\x0d\x0a TH0=0x00;\x0d\x0a TL0=0x06;\x0d\x0a p2=!p2;\x0d\x0a}\x0d\x0a\x0d\x0a(三)\x0d\x0a定时流水灯//\x0d\x0a#include\x0d\x0a#define uint unsigned int\x0d\x0a#define uchar unsigned char\x0d\x0a#define ulong unsigned long\x0d\x0abit ldelay=0;\x0d\x0avoid main()\x0d\x0a{\x0d\x0a uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};\x0d\x0a uchar leda;\x0d\x0a TMOD=0x00;\x0d\x0a TR0=1;\x0d\x0a ET0=1;\x0d\x0a EA=1;\x0d\x0a while(1)\x0d\x0a {\x0d\x0a if(ldelay)\x0d\x0a {\x0d\x0a ldelay=0;\x0d\x0a P2=led[leda];\x0d\x0a leda++;\x0d\x0a if(leda==9)leda=0; \x0d\x0a }\x0d\x0a }\x0d\x0a}\x0d\x0atimer2() interrupt 1\x0d\x0a{\x0d\x0a static uchar t;\x0d\x0a TF0=0;\x0d\x0a t++;\x0d\x0a if(t==10)\x0d\x0a {\x0d\x0a t=0;\x0d\x0a ldelay=1;\x0d\x0a }\x0d\x0a} \x0d\x0a\x0d\x0a(四)\x0d\x0a变速流水灯//\x0d\x0a#include\x0d\x0a#define uint unsigned int\x0d\x0a#define uchar unsigned char\x0d\x0a#define ulong unsigned long\x0d\x0abit ldelay=0;\x0d\x0auchar speed=100;\x0d\x0avoid main()\x0d\x0a{\x0d\x0a uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};\x0d\x0a uchar leda;\x0d\x0a TMOD=0x00;\x0d\x0a TR0=1;\x0d\x0a ET0=1;\x0d\x0a EA=1;\x0d\x0a while(1)\x0d\x0a {\x0d\x0a if(ldelay)\x0d\x0a {\x0d\x0a ldelay=0;\x0d\x0a P2=led[leda];\x0d\x0a leda++;\x0d\x0a if(leda==9)\x0d\x0a {\x0d\x0a leda=0;\x0d\x0a speed-=10;\x0d\x0a if(speed==0)speed=100;\x0d\x0a } \x0d\x0a }\x0d\x0a }\x0d\x0a}\x0d\x0atimer2() interrupt 1\x0d\x0a{\x0d\x0a static uchar t;\x0d\x0a TF0=0;\x0d\x0a t++;\x0d\x0a if(t==speed)\x0d\x0a {\x0d\x0a t=0;\x0d\x0a ldelay=1;\x0d\x0a }\x0d\x0a} \x0d\x0a\x0d\x0a(五)\x0d\x0a//每2两圈改变一次亮度\x0d\x0a#include\x0d\x0a#define uint unsigned int\x0d\x0a#define uchar unsigned char\x0d\x0a#define ulong unsigned long\x0d\x0abit ldelay=0;\x0d\x0auchar speeda=30;\x0d\x0auint k=0;\x0d\x0avoid main()\x0d\x0a{\x0d\x0a uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};\x0d\x0a uchar leda;\x0d\x0a uchar speed[10]={5,80,70,60,50,40,30,20,10,5};\x0d\x0a uint i;\x0d\x0a uint k;\x0d\x0a TMOD=0x00;\x0d\x0a TR0=1;\x0d\x0a ET0=1;\x0d\x0a EA=1;\x0d\x0a while(1)\x0d\x0a {\x0d\x0a if(ldelay)\x0d\x0a {\x0d\x0a ldelay=0;\x0d\x0a P2=led[leda];\x0d\x0a leda++;\x0d\x0a if(leda==9)\x0d\x0a {\x0d\x0a leda=0;\x0d\x0a k++;\x0d\x0a if(k==2){\x0d\x0a k=0;\x0d\x0a speeda=speed[i];\x0d\x0a i++;\x0d\x0a if(i==9)i=0;\x0d\x0a }\x0d\x0a } \x0d\x0a }\x0d\x0a }\x0d\x0a}\x0d\x0atimer2() interrupt 1\x0d\x0a{\x0d\x0a static uchar t;\x0d\x0a TF0=0;\x0d\x0a t++;\x0d\x0a if(t==speeda)\x0d\x0a {\x0d\x0a t=0;\x0d\x0a ldelay=1;\x0d\x0a }\x0d\x0a} \x0d\x0a\x0d\x0a(六)\x0d\x0a//在上面基础上调灯的亮度(调占空比)\x0d\x0a#include\x0d\x0a#define uint unsigned int\x0d\x0a#define uchar unsigned char\x0d\x0a#define ulong unsigned long\x0d\x0abit ldelay=0;\x0d\x0auchar speeda=30;\x0d\x0auint k=0;\x0d\x0auchar scale; \x0d\x0avoid main()\x0d\x0a{\x0d\x0a uchar led[9]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};\x0d\x0a uchar leda;\x0d\x0a uchar speed[10]={5,80,70,60,50,40,30,20,10,5};\x0d\x0a uint i;\x0d\x0a uint k;\x0d\x0a TMOD=0x00;\x0d\x0a TR0=1;\x0d\x0a ET0=1;\x0d\x0a EA=1;\x0d\x0a while(1)\x0d\x0a {\x0d\x0a if(ldelay==1)\x0d\x0a {\x0d\x0a ldelay=0;\x0d\x0a P2=led[leda];\x0d\x0a leda++;\x0d\x0a scale++;\x0d\x0a if(scale==10)scale=0;\x0d\x0a if(leda==9)\x0d\x0a {\x0d\x0a leda=0;\x0d\x0a k++;\x0d\x0a if(k==2){\x0d\x0a k=0;\x0d\x0a speeda=speed[i];\x0d\x0a i++;\x0d\x0a if(i==9)i=0;\x0d\x0a }\x0d\x0a } \x0d\x0a }\x0d\x0a }\x0d\x0a}\x0d\x0atimer2() interrupt 1\x0d\x0a{ \x0d\x0a static uchar t;\x0d\x0a TH0=0x1c;\x0d\x0a TL0=0xbf;\x0d\x0a TF0=0;\x0d\x0a t++;\x0d\x0a if(t==speeda)\x0d\x0a {\x0d\x0a t=0;\x0d\x0a ldelay=1;\x0d\x0a }\x0d\x0a if(scale==10)P2=0;\x0d\x0a if(scale==0)P2=1;\x0d\x0a}

单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)

单片机流水灯C语言程序的源代码如下:

#include //51系列单片机定义文件

#define uchar unsigned char //定义无符号字符

#define uint unsigned int //定义无符号整数

void delay(uint); //声明延时函数

void main(void)

{

uint i;

uchar temp;

while(1)

{

temp=0x01;

for(i=0;i8;i++) //8个流水灯逐个闪动

{

P1=~temp;

delay(100); //调用延时函数

temp=1;

}

temp=0x80;

for(i=0;i8;i++) //8个流水灯反向逐个闪动

{

P1=~temp;

delay(100); //调用延时函数

temp=1;

}

temp=0xFE;

for(i=0;i8;i++) //8个流水灯依次全部点亮

{

P1=temp;

delay(100); //调用延时函数

temp=1;

}

temp=0x7F;

for(i=0;i8;i++) //8个流水灯依次反向全部点亮

{

P1=temp;

delay(100); //调用延时函数

temp=1;

}

void delay(uint t) //定义延时函数

{

register uint bt;

for(;t;t--)

for(bt=0;bt255;bt++);

}

扩展资料

51单片机流水灯的源代码如下

#includereg51.h

#includeintrins.h

void?delay(int?a)

{

int?i;

while(a--)for(i=0;i110;i++);

}

main()

{

int?i;

while(1)

{

P0=0xfe;

for(i=0;i8;i++)

{

P0=_crol_(P0,1);

delay(500);

}

}

}

很简的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单片机是基础入门的一个单片机,还是应用最广泛的一种。

(责任编辑:IT教学网)

更多

推荐软件水平考试文章