本文目录一览:
- 1、单片机C语言编程求解:让四个流水灯同时点亮然后...(内详附示意图)
- 2、如何用c语言编写流水灯?
- 3、c语言流水灯程序 求具体代码
- 4、单片机流水灯的C语言编程
- 5、51单片机 c语言 如何用4个按键控制4个流水灯
单片机C语言编程求解:让四个流水灯同时点亮然后...(内详附示意图)
这是89c52的程序,我觉得改改可以用吧。希望能帮到你
共阳极,低电平亮,到时候自己调整。假设用单片机P1口。延时函数自己写吧。
#includereg52.h
#includeintrins.h
#define unsigned char uchar
#define unsigned int uint
void delay()
{}
void main()
{
uchar i=1,;
P1=0x0f;
while(1)
{
delay();
P1=_crol_(P1,1);
}
}
如何用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语言流水灯程序 求具体代码
1灭)。编译器keil
C代码如下:
#include
#include
//包含循环左移函数
_cro_l头文件
unsigned
char
tmp;
//中间变量
//////////////////////////////////////////////////////////////////////////////////////////////////
//
延时子程序
////////////////////////////////////////////////////////////////////////////////////////////////
void
delay(unsigned
int
cnt)
{
while(--cnt);
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//
主函数
////////////////////////////////////////////////////////////////////////////////////////////////
main()
{
while(1)
//外层循环
{
tmp
=
0xfe;
P1
=
tmp;
while(1)
//内层循环,执行1、3、5、7亮灯循环
{
delay(30000);
//延时以便能观察到灯亮移动,自己可以调整时间,由晶振和实参决定
tmp
=
_crol_(tmp,2);
P1
=
tmp;
if(tmp
==
0xbf)
//判断是否已经点亮到第7灯。是,则退出进入2、4、6、8循环
{
break;
}
}
tmp
=
0xfd;
P1
=
tmp;
while(1)
//内层循环,执行2、4、6、8亮灯循环
{
delay(30000);
//延时以便能观察到灯亮移动,自己可以调整时间,由晶振和实参决定
tmp
=
_crol_(tmp,2);
P1
=
tmp;
if(tmp
==
0x7f)
//判断是否已经点亮到第8灯。是,则退出进入1、3、5、7循环
{
break;
}
}
}
}
单片机流水灯的C语言编程
#includereg52.h
#includeintrins.h
#define uint unsigned int
#define uchar unsigned char
#define led P1
uint delay(uint z)
{
uint x,y;
for(x=z;x0;x--)
{
for(y=110;y0;y--);
}
}
void main()
{
uint i,temp,j;
for(i=0;i3;i++)
{
led=0xAA;
delay(300);
led=0x55;
delay(300);
}
for(i=0;i3;i++)
{
temp=0xfe;
for(j=0;j8;j++)
{
led=temp;
delay(300);
temp=_crol_(temp,1);
}
temp=0xbf;
for(j=0;j6;j++)
{
led=temp;
delay(300);
temp=_cror_(temp,1);
}
}
for (i=0;i3;i++)
{
led=0x7e;
delay(300);
led=0xbd;
delay(300);
led=0xdb;
delay(300);
led=0xe7;
delay(300);
}
for (i=0;i3;i++)
{
led=0xe7;
delay(300);
led=0xdb;
delay(300);
led=0xbd;
delay(300);
led=0x7e;
delay(300);
}
for (i=0;i3;i++)
{
led=0xff;
delay(300);
led=0x00;
delay(300);
}
led=0xff;
while(1);
}
现象说明:
8个灯,间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环
三次;再分别从两边往中间流动三次;再从中间往两边流
动三次;8个全部闪烁3次;关闭发光管,程序停止。
晶振为11.0592MHz
51单片机 c语言 如何用4个按键控制4个流水灯
不用中断一样的实现,而且可以有多少个按键就可以有多少种流水灯方式。你使用的键盘函数直接调用流水灯函数就可以。比如使用独立键盘,if(P1.1==0) light_water(); 然后:
void light_water()
{
num=1;
for(a=0;a8;a++)
{
P1.1=num1;
delay(1000); //延时;
keyboard();//执行时又不停扫描键盘函数;
}
}
这样就会有一个LED从右往左移动8次;那么当第一次流水未完时,又调用第二个流水函数light_water1就能中断当前执行的流水函数又去执行第二个流水灯函数了。
希望我的回答能帮助到你。