1、中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。三、芯片简介3.1、AT89C51芯片简介AT89C51单片机内部结构AT89C51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线。MCS-51的引脚说明:MCS-51系列单片机中的8031、8051及8751均采用40Pi
2、n封装的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用下图是MCS-51系列单片机的内部结构示意图1。 图1单片机的复位及初始化如图2:图23.2、74LS47芯片简介74LS47的端子功能图如下图3:图374LS47的主要功能端如下:BI为熄灭输入端,低电平有效,当BI=0时,无论其他输入端状态如何,译码器输出七段同时熄灭;BI=1时,不影响译码器正常译码。LT为测试输入端,低电平有效,用于检查数码管的七段是否正常发光。当LT=0,同时BI=1时,不管输入的BCD码是什么状态,都可使驱动数
3、码管的七段同时点亮。译码器要正常译码,必须LT输入无效电平。RBI为灭零输入端,低电平有效。设置灭零输入端的目的是为了能将不希望显示的0熄灭,例如一个四位数码显示电路,整数部分两位,小数部分两位,在显示6.4时,将出现06.40的字样,如果将前、后多余的0熄灭,显示的结果更醒目一些。灭零输入端只能对显示的0进行熄灭,而对其他数字没有影响。在原理图中,译码器与数码管的连接如图4:图4四、系统硬件设计4.1、交通管理的方案论证AB、CD两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯
4、燃亮时间为AB、CD两干道的公共停车时间。设AB道比CD道的车流量大,指示灯燃亮的方案如表1:车道时间60s3s2s35sAB道绿灯黄灯红灯CD道 表1表1说明:(1)当AB道为绿灯,此道车辆通过,行人禁止通行。时间为60秒;CD方向为红灯,此道车辆禁止通行,CD道行人可通过。(2)当AB方向为黄灯闪烁3秒,警示车辆和行人红、绿灯的状态即将切换;(3)当AB方向为红灯,此道车辆禁止通行,AB道行人可通过;当CD方向为红灯,此道车辆禁止通行,CD道行人可通过。(4)当AB方向为红灯,此道车辆禁止通行,AB道行人可通过;AB道为绿灯,此道车辆通过,行人禁止通行。时间为35秒。(5)当AB方向为红灯
5、,此道车辆禁止通行,AB道行人可通过;CD方向为黄灯闪烁3秒,警示车辆和行人红、绿灯的状态即将切换。(6)此表可根据车流量动态设定红绿灯初始值。4.2、系统硬件设计选用设备:AT89C51弹片机一片,74LS47芯片二片,电阻排RESPACK-7三个,共阴极的七段数码管7SEG-MPX2-CA两个,红、黄、绿交通灯各四个,开关键盘、连线、电阻、电容若干。4.2.1、系统总框图如下:4.2.2、交通灯硬件线路图:见附录4.2.3、系统工作原理(1)开关键盘a、改变数码管显示的时间;b、开关控制十字路口十个方向的灯同时显示红灯且数码管显示00。(2) 由AT89C51单片机每秒钟通过P0、P2口向
6、74LS47的数据口送信息,由P1口显示红、绿、黄灯的燃亮情况;由7SEG-MPX2-CA显示每个灯的燃亮时间。(3)AT89C51 P3.3为低电平时,P1口对应的红灯即四个方向的红灯亮,数码显示为00.(4 AT89C51 P3.2有下降沿触发时,时间暂停,进入时间显示状态,当P3.6为低电平时,时间显示以240ms的速度进行加1;当P3.7为低电平时,时间显示以240ms的速度进行减1;当P1.0为低电平时,时间暂停消除,恢复正常。(5)初始状态AB方向绿灯60秒CD方向红灯65秒。(6)当AB方向绿灯60秒倒计时完了。进入下一阶段,AB方向黄灯3秒,且黄灯以40ms的速度闪烁;CD方向
7、红灯5秒。(7)当AB方向黄灯3秒倒计时完。进入第三阶段,AB方向红灯40秒;CD方向红灯2秒。(8)当CD方向红灯2秒倒计时完。进入第四阶段,AB方向红灯38秒;CD方向绿灯35秒。(9)当CD方向绿灯35秒倒计时完。进入第五阶段,AB方向红灯3秒;CD方向黄灯3秒,且黄灯以40ms的速度闪烁。(10)AB方向红灯和CD方向黄灯3秒同时倒计时完毕,重新循环。五、软件设计5.1、每秒钟的设定 延时方法可以有两种一中是利用AT89C51内部定时器才生溢出中断来确定1秒的时间,另一种是采用软延时的方法。5.2、秒的方法我们采用在主程序中设定一个初值为的软件计数器和使定时毫秒这样每当到毫秒时就响应它
8、的溢出中断请求,进入他的中断服务子程序。在中断服务子程序中,先使软件计数器减,然后判断它是否为零。为零表示秒已到可以返回到输出时间显示程序.5.3、相应程序代码()主程序定时器需定时10毫秒,故工作于方式。初值:T0初值=216-fose/12Xt=216-(12X106X0.01)/12=55536D=D8F0H ORG 0000H MAIN: MOV TMOD,#01H MOV TL0,#0F0H MOV TH0,#0D8H SETB EA SETB ET0 SETB TR0 SETB EX0 SETB EX1 SETB IT0 CLR IT1 SETB PT0()中断服务子程序 ORG
9、000BH ZHD2: MOV TL0,#0F0H ;重先赋值 CLR P3.4 RETI5.4、键盘显示流程图5.5、 软件延时 MCS-51的工作频率为2-12MHZ,我们选用的AT89C51单片机的工作频率为12MHZ。机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/12M)=1us。我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。 具体的延时程序分析:DEL: MOV R7,#40 ; ;延时10msDEL1: MOV R6,#123 NOPDEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 RET 5.6
10、、软件流程图:见附录5.7、源程序代码 ORG 0000H ;伪指令、程序开始、中断入口地址 LJMP MAIN ORG 0003H LJMP ZHD1 LJMP ZHD2 ORG 0013H LJMP ZHD3 ORG 1000H;主程序MAIN:MOV TMOD,#01H ;设工作方式设初值 ,单片机晶振12M,定时10MS SETB EA ;开放总中断 SETB ET0 ;开放T0中断 SETB TR0 ;启动T0定时 SETB EX0 ;开放外中断0 SETB EX1 ;开放外中断1 SETB IT0 ;设外中断0为边沿触发 CLR IT1 ;设外中断1为低电平有效CYCLE:MOV
11、R0,#60 ;AB方向绿灯显示时间 MOV R1,#65 ;CD方向红灯显示时间 MOV R2,#25 ;为延时1秒而用CD红灯 AB绿灯LOOP1:SETB P3.4 MOV P1,#01H SETB P1.7 ;点亮红灯 SETB P1.4 ;点亮绿灯 LCALL DISPLAY ;调用显示程序 DJNZ R2,LOOP1 MOV R2,#25 DEC R1 DJNZ R0,LOOP1 MOV R0,#3 ;AB方向黄灯显示时间CD红灯 AB黄灯LOOP2:MOV P1,#01H SETB P1.3 ;点亮黄灯LLJ: CPL P1.3 DJNZ R2,LLJ DJNZ R0,LOOP2 MOV R0,#40 ;AB方向红灯显示时间CD红灯 AB红灯LOOP3: SETB P1.2 ; DJNZ R2,LOOP3 DEC R0 DJNZ R1,LOOP3 MOV R1,#35 ;CD方向绿灯显示时间CD绿灯 AB红灯LOOP4: SETB P1.5 ; DJNZ R2,LOOP4 DJNZ R1,LOOP4 MOV R1,#3 ;CD方向黄灯显示时间CD黄灯 AB红灯LOOP5: SETB P1.6 ;LLJ1: CPL P1.6 DJNZ R
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1