51单片机流水灯程序

51单片机流水灯程序,第1张

程序如下:

#include <reg52h>

sbit led1 = P2^0;

sbit led2 = P2^1;

sbit led3 = P2^2;

sbit led4 = P2^3;

sbit led5 = P2^4;

sbit led6 = P2^5;

sbit led7 = P2^6;

sbit led8 = P2^7;

void main()

{

  int i,j;

 //点亮第一个灯

  led1 = 1;

  led2 = 0;

  led3 = 0;

  led4 = 0;

  led5 = 0;

  led6 = 0;

  led7 = 0;

  led8 = 0;

  //延时1秒

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

{

 for(j = 0; j < 1000; ++j)

 {

   ;//什么也不做

 }

}

  //点亮第二个灯

  led1 = 0;

  led2 = 1;

  led3 = 0;

  led4 = 0;

  led5 = 0;

  led6 = 0;

  led7 = 0;

  led8 = 0; 

  //点亮剩余的灯

  //省略……

  while(1);

}

扩展资料:

流水灯几点说明:

void:因为该延时函数不需要返回值,所以写为void

delay1s:该函数的函数名,命名需要符合C语言的标识符命名规则。

(): 不需要传入参数,所以括号中为空

至此我们可以把流水灯程序写为以下形式:

(1)如何用8086/8088组成一个微机原理的最小系统?

(2)怎样用这个系统完成一个简单的流水灯控制。

(要求要有8086/8088程序的下载方法)

因为在总线周期的前半部分,cpu总是送出地址信号和BHE(总线高允许)信号,为了通知地址已经准备好了,可以被所存,cpu会送出高电平允许所存信号ALE。此时地址信号和BHE信号被所存。

由于有了锁存器对地址信号和BHE信号的所存,CPU在总线周期的后半部分,地址和数据都在地址总线和数据总线上,确保了CPU对锁存器和I/O接口的读/写 *** 作。

以上是书上的观点,个人整理了一下,用自己的话来说就是:

因为数据时8位的,地址是16位的,程序首先输出地址时,先输出高8位,然后进行所存,再输出低8位,这样就能完成16位的地址输出了。

希望能够帮到你啊~~~

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\}

以上就是关于51单片机流水灯程序全部的内容,包括:51单片机流水灯程序、8086最小系统bhe接在哪、如何用c语言编写流水灯等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/10099804.html

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

发表评论

登录后才能评论

评论列表(0条)

保存