如何用c语言编写流水灯

如何用c语言编写流水灯,第1张

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

单片机流水灯程序代码(汇编语言):ORG0000HAJMPMAINORG0030HMAIN:MOVP1,#11111110BACALLDELAY;跳转到子程序MOVP1,#11111101BACALLDELAYMOVP1,#11111011BACALLDELAYMOVP1,#11110111BACALLDELAYMOVP1,#11101111BACALLDELAYMOVP1,#11011111BACALLDELAYMOVP1,#10111111BACALLDELAYMOVP1,#01111111BACALLDELAYAJMPMAINDELAY:MOVR7,#10;延时1s子程序开始DEL1:MOVR6,#200DEL2:MOVR5,#250DJNZR5,$DJNZR6,DEL2DJNZR7,DEL1RETEND

1、流水灯是若干个灯泡依次点亮,视觉上感觉到灯光在流动就叫做流水灯。2、它是由无数个LED灯组成的,而LED就是发光二极管的简称,它有个特性:就是它只允许电流单一方向流过。如果让LED灯亮起来,他需要连接一个高电平和一个低电平,当它遇到低电平时它会亮起来而遇到高电平它就会熄灭。由于他只能单方向流过电流,所以也就会一亮一暗。

单片机流水灯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;i<8;i++) //8个流水灯逐个闪动

{

P1=~temp;

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

temp<<=1;

}

temp=0x80;

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

{

P1=~temp;

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

temp>>=1;

}

temp=0xFE;

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

{

P1=temp;

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

temp<<=1;

}

temp=0x7F;

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

{

P1=temp;

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

temp>>=1;

}

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

{

register uint bt;

for(;t;t--)

for(bt=0;bt<255;bt++);

}

扩展资料

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

#include<reg51h>

#include<intrinsh>

void delay(int a)

{

int i;

while(a--)for(i=0;i<110;i++);

}

main()

{

int i;

while(1)

{

P0=0xfe;

for(i=0;i<8;i++)

{

P0=_crol_(P0,1);

delay(500);

}

}

}

#include<reg52h>

#include <intrinsh>

void main()

{

unsigned int x,y;

P1=0xfe;

while(1)

{

P1=_crol_(P1,1);

for(x=500;x>0;x--)

for(y=113;y>0;y--);

}

}

P1接二极管(低电平有效)每隔x毫秒流动一下(可改变x的值)

震荡周期为110592MHz

把上面的P1=0xfe;改为P1=0x01;!!!

高电平也许要用上拉电阻!!

给你这个双向流水灯C语言程序,经过调试成功的,按程序的内容配置硬件即可。

#include

void delay(unsigned int i);

char led;

main()

{

unsigned char i;

while(1)

{

led=0xfe;

for(i=0; i<8; i++)

{

P2=led;

delay(500);

led=led<<1;

led=led|0x01;

if(led==0x7f) break;

}

for(i=0; i<8; i++)

{

P2=led;

delay(500);

led=led>>1;

led=led|0x01;

if(led==0x80);

}

}

}

void delay(unsigned int i)

{

unsigned char j;

for(i; i>0; i--)

for(j=255; j>0;j--);

}

以上就是关于如何用c语言编写流水灯全部的内容,包括:如何用c语言编写流水灯、流水灯单片机程序代码、单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10126540.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存