欢迎来到宝虹电子网!

单片机设计系列(一)——从交通灯开始

单片机制作 zhangbao 963℃ 0评论

 

  • 想什么

想想我们每天经过的路口,等红灯的情景…

特别是偶尔遇到交通混乱,各路人马急匆匆不遵守交通秩序的浪漫情景,当然也会看到井然有序的标准交通状况。你是否曾经这样想过:“要是我来设计一个信号灯控制系统,会不会让交通更有序,通行指挥更科学?”

不管你有没有想过,今天,我来带你这样做!

其实,从一开始,让我们做一款很科学,很先进的控制系统,那存粹是理想,现实是,作为一个刚入门或者还没入门的爱好者,要做的是先简单,后改进,这样的步骤比较合理。

  • 开始吧

首先,我们不是设计师,我们是初学者,我们不是做工程,我们是学习单片机设计。因此,我们接下来做的是从学习角度出发的。

下面我先绘制一个基本功能和设计思路的图表:

交通灯设计功能与设计思路思维导图

设计思路的第一步,确定功能 我们已经在上面的图表里进行了描述;

下面我们继续第二步,器件选型 同样看图表:

交通灯设计器件选型思维导图

为什么选择STC89C52RC?

首先我自己不希望用这么古老的东东来玩,只因为这个东东是起步阶段的首选,尽管它不是我想要的,但它是最合适的。如果你的教科书够古老的话,可能有人想要AT89C51这样的,准确的说是曾经真有很多人说必须用它。请相信我它是早已停产的型号,你能买到的也是陈旧的,而且你用STC89C52RC来代替它完全正确。

我们需要了解的是51的程序空间是4K,52的是8K,选52的原因是二者价格相同。后面的RC表示内部RAM是512字节,如果是RD+那就是1280字节了。其实古老的128字节RAM对我们这款设计来说都够用了。程序空间估计也就用个1、2k而已。

接下来看数码管,什么是共阳极?那我先说说什么是数码管。

数码管顾名思义,它是用来显示数字的,当然也可以显示部分字母和符号。也叫做七段数码管,是因为它由A、B、C、D、E、F、G,7个发光二极管组成(不包括还有一个小数点),如下图:

数码管结构图

假如我们点亮B和C那就是“1”;点亮A、B、G、E、D那就是“2”…

它内部其实就是普通LED,由于阳极和阴极的接法不同,又分为共阳极和共阴极。如下面两个图所示:

共阳极数码管原理图

共阳极数码管内部图

共阴极数码管原理图

共阴极数码管内部图

一位数码管的控制比较简单,超过一位的话就需要分时控制。也就是先给7个LED分配电压,这决定了显示内容;然后打开第一位数码管的公共极,这时其它数码管不显示,等待一个小的延时,再关闭第一位数码管的公共极,给“字段”重新分配显示内容,继而打开第二位数码管的公共极…

这是利用人眼的视觉暂留特性,看起来是持续点亮的效果。一般控制8个以内都没问题,太多的话就会出现亮度暗,再多就会闪烁。

我们这里需要点亮的是8位数码管,但是由于东西和南北各自一组的显示内容一致,我们会把它并联使用,从而只控制相当于4位数码管。

按照芯片数据手册介绍,单片机I/O口下拉电流是6mA,P0口是12mA,直接驱动LED是没问题。但是数码管公共极的电流就比较大了,简单估算一下:红色LED的压降是1.8v,5V供电,落在限流电阻的电压就是 5 – 1.8 = 3.2V,电阻取值1K,电流就是3.2mA。7个同时点亮就是22.4mA。这超出了单片机单个管脚的输出能力,因此必须用三极管或者接口芯片来控制数码管的公共极。

我在这里先择了74HC245N,I/O口输出电流为上拉60mA、下拉80mA。

特点:

1. 三态,就是输出使能脚OE高电平时,输出跟没连接一样,高阻;

输出使能脚OE低电平时,输出跟输入电平一样。

2.八线双向,DIR脚高电平,A输入,B输出;

DIR低电平,B输入,A输出。

3.宽电压,3~5V供电。

由于输入和输出电平一致,所以在OE和DIR管脚设置好后,对于编程来说可以忽视它的存在。

这里为什么选择共阳极数码管?

原因是这样的,假如选择共阴极,段码需要接高电平才能点亮,单片机端口下拉能力强,上拉弱,必须加电流驱动芯片;而采用共阳极时,段码只需要下拉即可。

信号灯,用LED发光二极管代替。

最后,所有的元器件清单参考前面的器件选型 图表。

这里有一个重要的问题,就是要提前想到后面代码如何下载?

对于STC单片机,需要准备一个USB转串口小板,例如PL2303HX,CH340等都都可以。(提示,目前PL2303选购时应先了解是否支持你的电脑系统)。

现在到了备料的时间,后面的文章,我会介绍原理图,c51源程序编写等内容…

微信扫一扫
关注该公众号

转载请注明:baohongdz » 单片机设计系列(一)——从交通灯开始

喜欢 (3)or分享 (0)

您必须 登录 才能发表评论!