基于单片机的交通灯的设计报告程序为汇编语言Word下载.docx
- 文档编号:18832572
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:14
- 大小:651.87KB
基于单片机的交通灯的设计报告程序为汇编语言Word下载.docx
《基于单片机的交通灯的设计报告程序为汇编语言Word下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的交通灯的设计报告程序为汇编语言Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
图1
单片机的复位及初始化如图2:
图2
3.2、74LS47芯片简介
74LS47的端子功能图如下图3:
图3
74LS47的主要功能端如下:
BI为熄灭输入端,低电平有效,当BI=0时,无论其他输入端状态如何,译码器输出七段同时熄灭;
BI=1时,不影响译码器正常译码。
LT为测试输入端,低电平有效,用于检查数码管的七段是否正常发光。
当LT=0,同时BI=1时,不管输入的BCD码是什么状态,都可使驱动数码管的七段同时点亮。
译码器要正常译码,必须LT输入无效电平。
RBI为灭零输入端,低电平有效。
设置灭零输入端的目的是为了能将不希望显示的0熄灭,例如一个四位数码显示电路,整数部分两位,小数部分两位,在显示6.4时,将出现06.40的字样,如果将前、后多余的0熄灭,显示的结果更醒目一些。
灭零输入端只能对显示的0进行熄灭,而对其他数字没有影响。
在原理图中,译码器与数码管的连接如图4:
图4
四、系统硬件设计
4.1、交通管理的方案论证
AB、CD两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为AB、CD两干道的公共停车时间。
设AB道比CD道的车流量大,指示灯燃亮的方案如表1:
车道\时间
60s
3s
2s
35s
AB道
绿灯
黄灯
红灯
CD道
表1
表1说明:
(1)当AB道为绿灯,此道车辆通过,行人禁止通行。
时间为60秒;
CD方向为红灯,此道车辆禁止通行,CD道行人可通过。
(2)当AB方向为黄灯闪烁3秒,警示车辆和行人红、绿灯的状态即将切换;
(3)当AB方向为红灯,此道车辆禁止通行,AB道行人可通过;
当CD方向为红灯,此道车辆禁止通行,CD道行人可通过。
(4)当AB方向为红灯,此道车辆禁止通行,AB道行人可通过;
AB道为绿灯,此道车辆通过,行人禁止通行。
时间为35秒。
(5)当AB方向为红灯,此道车辆禁止通行,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口向74LS47的数据口送信息,由P1口显示红、绿、黄灯的燃亮情况;
由7SEG-MPX2-CA显示每个灯的燃亮时间。
(3)AT89C51P3.3为低电平时,P1口对应的红灯即四个方向的红灯亮,数码显示为00.
(4AT89C51P3.2有下降沿触发时,时间暂停,进入时间显示状态,当P3.6为低电平时,时间显示以240ms的速度进行加1;
当P3.7为低电平时,时间显示以240ms的速度进行减1;
当P1.0为低电平时,时间暂停消除,恢复正常。
(5)初始状态AB方向绿灯60秒CD方向红灯65秒。
(6)当AB方向绿灯60秒倒计时完了。
进入下一阶段,AB方向黄灯3秒,且黄灯以40ms的速度闪烁;
CD方向红灯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、1秒的方法
我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。
在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。
为零表示1秒已到可以返回到输出时间显示程序.
5.3、相应程序代码
(1)主程序
定时器需定时10毫秒,故T0工作于方式1。
初值:
T0初值=216-fose/12Xt=216-(12X106X0.01)/12=55536D=D8F0H
ORG0000H
MAIN:
MOVTMOD,#01H
MOVTL0,#0F0H
MOVTH0,#0D8H
SETBEA
SETBET0
SETBTR0
SETBEX0
SETBEX1
SETBIT0
CLRIT1
SETBPT0
(2)中断服务子程序
ORG000BH
ZHD2:
MOVTL0,#0F0H;
重先赋值
CLRP3.4
RETI
5.4、键盘显示流程图
5.5、软件延时
MCS-51的工作频率为2-12MHZ,我们选用的AT89C51单片机的工作频率为12MHZ。
机器周期与主频有关,机器周期是主频的12倍,所以一个机器周期的时间为12*(1/12M)=1us。
我们可以知道具体每条指令的周期数,这样我们就可以通过指令的执行条数来确定1秒的时间。
具体的延时程序分析:
DEL:
MOVR7,#40;
;
延时10ms
DEL1:
MOVR6,#123
NOP
DEL2:
DJNZR6,DEL2
DJNZR7,DEL1
RET
5.6、软件流程图:
见附录Ⅱ
5.7、源程序代码
ORG0000H;
伪指令、程序开始、中断入口地址
LJMPMAIN
ORG0003H
LJMPZHD1
LJMPZHD2
ORG0013H
LJMPZHD3
ORG1000H
;
主程序
MAIN:
MOVTMOD,#01H;
设工作方式
MOVTL0,#0F0H;
设初值,单片机晶振12M,定时10ms
SETBEA;
开放总中断
SETBET0;
开放T0中断
SETBTR0;
启动T0定时
SETBEX0;
开放外中断0
SETBEX1;
开放外中断1
SETBIT0;
设外中断0为边沿触发
CLRIT1;
设外中断1为低电平有效
CYCLE:
MOVR0,#60;
AB方向绿灯显示时间
MOVR1,#65;
CD方向红灯显示时间
MOVR2,#25;
为延时1秒而用
CD红灯AB绿灯
LOOP1:
SETBP3.4
MOVP1,#01H
SETBP1.7;
点亮红灯
SETBP1.4;
点亮绿灯
LCALLDISPLAY;
调用显示程序
DJNZR2,LOOP1
MOVR2,#25
DECR1
DJNZR0,LOOP1
MOVR0,#3;
AB方向黄灯显示时间
CD红灯AB黄灯
LOOP2:
MOVP1,#01H
SETBP1.3;
点亮黄灯
LLJ:
CPLP1.3
DJNZR2,LLJ
DJNZR0,LOOP2
MOVR0,#40;
AB方向红灯显示时间
CD红灯AB红灯
LOOP3:
SETBP1.2;
DJNZR2,LOOP3
DECR0
DJNZR1,LOOP3
MOVR1,#35;
CD方向绿灯显示时间
CD绿灯AB红灯
LOOP4:
SETBP1.5;
DJNZR2,LOOP4
DJNZR1,LOOP4
MOVR1,#3;
CD方向黄灯显示时间
CD黄灯AB红灯
LOOP5:
SETBP1.6;
LLJ1:
CPLP1.6
DJNZR2,LLJ1
DJNZR1,LOOP5
LJMPCYCLE
键盘中断程序
ZHD1:
LCALLDISPLAY
JBP3.6,Q2
INCR1
INCR0
CJNER1,#99,TIAO2
MOVR1,#00H
TIAO2:
CJNER0,#99,TIAO3
MOVR0,#00H
TIAO3:
LCALLDISPLAY
JNBP1.0,Z2
Q2:
JBP3.7,WAIT1
CJNER1,#00H,TIAO
MOVR1,#99
TIAO:
CJNER0,#00H,TIAO1
MOVR0,#99
TIAO1:
LCALLDISPLAY
WAIT1:
JNBP1.0,Z2
WAIT:
Z2:
RETI
时间中断程序
ZHD2:
应急通道中断程序
ZHD3:
MOVP1,#85H
MOVP0,#30H
MOVP2,#30H
JNBP3.3,ZHD3
数显显示
DISPLAY:
MOVA,R0;
AB方向时间的显示
MOVB,#10
DIVAB;
把要显示的数的十位存放在A中,个位存放在B中
ADDA,#10H;
位选通十位
MOVP0,A;
显示十位数字
TI0:
JNBP3.4,TT
SJMPTI0
TT:
SETBP3.4
MOVA,B
ADDA,#20H;
位选通个位
显示个位数字
TI1:
JNBP3.4,TT1
SJMPTI1
TT1:
CD方向的显示
MOVA,R1;
CD方向时间的显示
DIVAB
MOVP2,A;
TI2:
JNBP3.4,TT2
SJMPTI2
TT2:
TI3:
JNBP3.4,TT3
SJMPTI3
TT3:
RET
参考文献:
1、《单片微机原理与接口技术》主编:
曾一红副主编:
刘虹、李寿强
2、《数字电子技术》蒋正萍、刘虹、张松、李小平编著
3、
后记:
在做本实验期间遇到了诸多的问题:
1、从P1口连接出来的那一个数码管无法显示数字,解决:
通过询问老师,了解到P1口内部不存在上拉电阻,输出的电流较小,无法驱动数码管显示。
2、在对数码管的显示时间做设置时,进入设置状态后,二个数码管只有一个数显亮了,经过对软硬件的多方调试,最终发现在进入设置状态时,没有对二个数码管进行循环显示。
3、黄灯无法闪烁,解决问题:
首先我对软件的显示程序进行不同的设置,对显示部分每循环一次就对黄色对应单片机口求反,而此时出现了黄灯显示后一直无法熄灭。
而最终我把显示部分的程序改为只循环一次,而增加了主程序中的循环次数。
4、这是最重要的一步,也就是首先提出在做此实验时要完成的目标四。
到目前为此,我就还无法找出如何用PC机去控制单片机。
附录
附录Ⅰ:
交通灯硬件线路图
附录Ⅱ:
软件流程图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 交通灯 设计 报告 程序 汇编语言