![a625cf1da02c9abdcd9263b7f468c215.png](https://i-blog.csdnimg.cn/blog_migrate/973340ff56ffb60f161af235af750def.jpeg)
![325846f871b6ae959de5d441f27ecd6d.png](https://i-blog.csdnimg.cn/blog_migrate/a2123bac7869284100b9d3a4042c094e.jpeg)
这次给大家带来的是Proteus仿真之流水灯,流水灯作为单片机入门的实验课程,具有代表性意义。Proteus仿真软件是英国一家公司出品的EDA仿真软件,能仿真大多数单片机及外围电路。Proteus8.7版本已经可以仿真STM32系列单片机,这作为已经学习过51系列单片机的同学们来说是一件很好的事情,因为首先不用购置昂贵的开发板就可以提前熟悉32位的单片机,再结合手册做一些小实验,入门不成问题。
1.流水灯程序
![69d72275e03a0fe0512c3cf79d4801c3.png](https://i-blog.csdnimg.cn/blog_migrate/a14cfff9cf67d7d36327f1feb5fadc71.jpeg)
流水灯主程序
LED=_crol_(LED,1);//调用函数使循环
先看一下上面的示例程序,采用调用移位函数的方式使LED灯向右依次点亮。这种方法看起来程序简洁,没有冗余,可以看做程序优化的一种方法。主要分为两部分:移位和延时。移位则是逐次点亮下一个LED灯,并且熄灭上一个LED灯;合理的延时时间就是为了达到流水的效果,当然延时时间在不同的程序中要求也不一样,在多位数码管动态显示程序中要求延时必须小于20ms,因为利用人眼的视觉暂留特性,使人眼看不出来数码管在不停的闪烁。
2.流水灯电路
![6d47dbb01c5833eb08f343973141b344.png](https://i-blog.csdnimg.cn/blog_migrate/e3d996c22a10e9dd84cccd85686dd2f0.jpeg)
流水灯电路
电路采用限流电阻与单片机P2口相连接,若不采用限流电阻,则在长时间点亮过程中会烧坏LED灯珠。LED灯阳极经限流电阻接高电平,负极直接连接单片机IO口,通过改变IO口状态,可以实现LED灯的点亮与熄灭。
3.仿真效果(联调)
![3744a1c6ca9336c37f103378673084c6.png](https://i-blog.csdnimg.cn/blog_migrate/fa805c8aeb293600b5181c41606b03e5.jpeg)
仿真界面