使用proteus仿真51单片机来实现十字路口红绿灯

一.实验内容

1.需要仿真的元件:51单片机,一个动态显示的双数码管,六个LED灯。

2.实验要求:做一个十字路口红绿灯,每一向各一个,红绿灯要求能够按照通行的要求来亮灯。南北向红绿灯,红灯亮60秒,东西向的红绿灯亮,红灯亮30秒。

3.要求使用定时器中断来完成。

实验的内容跟我发的上一节是一样的,只不过这里用的不是真的51单片机和其他元器件了,而是仿真出来的。

二.步骤分析

1.首先我们得会初步使用preteus这个软件来实现我们电路的连接

2.了解动态数码管显示的原理

3.我们需要编写程序,让动态数码管显示倒计时,让led正确的亮灭

三.电路的仿真部分

我所绘制的电路图如下:

使用proteus仿真51单片机来实现十字路口红绿灯

        在这个电路图中,我们能够知道,我所设计的led都是共阴接法的,而且我所用到这个数码管也是共阴接法的(数码管可能看不出来是共阴的不过你知道就好了),而共阴接法和共阳接法让led和数码管显示是相反的。也就是说,共阴接法,你的引脚给1,led才会亮;而共阳接法,你的引脚给0,led会亮。所以你所写的程序是根据电路图来写的,如果电路图的接法不同,你的程序也得与之对应的发生改变。

        我是把P2.0到P2.5的六给引脚分别给了六个红绿灯,分别代表是,南北路的绿红黄灯(上面的一组),和东西路的绿红黄灯(下面的一组)。这个灯的颜色是可以在它的元件库里挑的,可能当时嫌弃太麻烦就用了一个颜色的灯。

        我把这个数码管的八个用来控制显示的引脚分别用p1.0和p1.7来控制,p1.7引脚控制的是数码管那个小数点的显示,因为用不到,所以我直接全部给的0。至于数码管显示的原理其实很简单,我就不过多阐述了,不知道可以去B站搜个视频看看。

        至于数码管的片选的两个位,我给的是P0.0和P0.1两个引脚来控制,因为这个是两个数码管连在一起的,所以需要片选,什么意思呢,也就是说我们只能选择这两个数码管的其中一个亮,如果让这两个位同时给1,让他俩一起量,那么两个数码管就只能显示一样的数了,那么我们怎么实现让两个数码管一起亮,还能显示不同的数字呢。这就要用到数码管的动态显示了。

四.什么是数码管的动态显示 ,它是如何实现的呢/strong>

        我们都知道人眼识别是有一定范围的,如果我让两个数每一毫秒亮一次,并且让两个灯交替着亮,你看到的现象只会是两个灯一直在亮,而不会看到两个灯交替去亮。而动态数码管显示用的就是这个原理。

        而用程序如何实现,如果我在程序里写让数码管一显示1,然后不加任何延时,接着写让数码管二显示2就可以实现吗/p>

        其实不行,你还得加一个让数码管清除的语句,也就是说,让数码管一亮,然后让数码管一不亮,然后在让数码管二亮,让数码管二不亮,这样四个语句放在一起才能正常的显示。为什么非得加一个让它不亮的程序呢,在这里干说可能有些同学不理解,我建议你可以试试不加的,再试试加的,对比一下,你就明白了。

五.程序实现部分(切记,如果电路以及使用的电器件不一致,程序照搬照抄肯定是错的)

来源:翱翔的小鸭

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月8日
下一篇 2022年4月8日

相关推荐