
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)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)