单片机交流
直播中

王敏

7年用户 1411经验值
私信 关注
[问答]

求助怎样去设计一种基于单片机的简单流水灯?

怎样去设计一种基于单片机的简单流水灯?如何编写其程序?
如何对基于单片机的简单流水灯进行proteus仿真

回帖(1)

刘嵩

2021-7-19 14:44:32
  这次用单片机做个简单的流水灯。
  先给大家看一下仿真软件的威廉希尔官方网站 (软件为Proteus)
  
  上图就是用仿真软件制作的线路原理图
  AT89C51RC2:单片机
  BUTTON:按键
  CAP:电容
  CRYSTAL:晶振
  LED-GERRN:LED灯(绿色)
  RES:电阻
  接下来是程序部分(软件为keil)
  #include“reg51.h” //此文件中定义了单片机的一些特殊功能寄存器 #include“intrins.h” //因为要用到左右移函数,所以加入这个头文件 void delay1ms(unsigned char c) //c=1时,大约为1ms { unsigned char a,b; for(c ;c》0;c--) for(b=142;b》0;b--) for(a=2;a》0;a--); } void main() { unsigned char led,i; //设定两个变量 led=0xfe; //硬件图上我们是负极连接单片机,所以输出0才能点亮LED,0xfe=1111 1110 delay1ms(100); //大约延时100ms while(1) { for(i=0;i《7;i++) //把0移到最右边需要7次 { P2=led; //P2口的8个引脚输出为0xfe delay1ms(100); led=_crol_(led,1); //左移函数,将led左移一位 _crol_(“变量”,“位数”) } for(i=0;i《7;i++) //同上for的作用 { P2=led; delay1ms(100); led=_cror_(led,1); //右移函数,将led右移一位 } } } PS:
  程序中必须先赋值,再移位,不然在执行的时候最两边的灯是不亮的。
  流水灯的快慢取决于delay的数值。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分