c51单片机流水灯程序c语言(c51单片机编程流水灯)
用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单片机是基础入门的一个单片机,还是应用最广泛的一种。