1绪论 ............................................................................................................................ 1
1.1交通灯概述....................................................................................................... 1 1.2设计思想及基本功能....................................................................................... 1 2总体方案设计 ............................................................................................................ 2
2.1方案设计........................................................................................................... 2 2.2 方案比较.......................................................................................................... 3 2.3方案选取........................................................................................................... 3 3硬件电路设计 ............................................................................................................ 3
3.1 总体设计电路.................................................................................................. 3 3.2交通灯电路....................................................................................................... 3 3.3倒计时显示电路............................................................................................... 4 3.4 按键控制电路设计.......................................................................................... 5 4系统程序设计 ............................................................................................................ 6
4.1 主程序软件设计.............................................................................................. 7 4.2 中断服务程序设计.......................................................................................... 9 4.3 显示子程序设计 …………………………………………………………10 4.4 按键子程序设计 …………………...……………………………………11 5系统的调试与检测 .................................................................................................. 12 总结 ............................................................................................................................. 13 参考文献 ..................................................................................................................... 14 附录 ............................................................................................................................. 14
附录A系统原理图............................................................................................... 15 附录B 系统模拟图 ............................................................................................. 15 附录C 程序代码 ................................................................................................. 16
单片机系统课程设计 1绪论
1.1交通灯概述
近年来,随着我国国民经济的快速发展,我国机动车辆发展迅速,而城镇道路建设由于历史等各种原因相对滞后,交通拥挤和堵塞现象时常出现。如何利用当今计算机和自动控制技术,有效地疏导交通,提高城镇交通路口的通行能力,减少交通事故是很值得研究的一个课题。目前,国内的交通灯一般设在十字路口,在醒目位置用红、绿、黄三种颜色的指示灯加上一个倒计时的显示器来控制行车。 图1.1所示为交通灯:
图1.1交通灯
1.2设计思想及基本功能
思想:
1、通过交通信号灯控制系统的设计,掌握80C51传输数据的方法,以控制发光二极管的亮与灭以及数码管的显示;
2、用80C51作为输出口,控制十二个发光二极管熄灭,模拟交通灯管理. 3、通过单片机控制设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高动脑和动手的能力;
4、完成控制系统的硬件设计、软件设计、仿真调试。 功能:
1、控制的主、支干道交替通行,通行时间可设定;
单片机系统课程设计 2、绿灯变红灯时,黄灯先亮并闪烁,并倒计时5秒;; 3、十字路口每个方向设有数字显示时间提示; 4、紧急开关K1,智能开关K2K3;
2总体方案设计
2.1方案设计
根据查阅的资料和现实生活中的应用,我认为用两种方案可实现交通灯的功能:
方案(一)采用plc系统进行控制 原理框图如图2-1
图2-1 方案(一)的原理框图
方案(二)采用51单片机做控制器,设计出定时交通灯系统,原理框图如图2-2。
复位电路 数据信号 交通灯 AT89C51 振荡电路 单片机 LED段码 调时、紧急情况处理 片选 数码管
单片机系统课程设计
图2-2 方案(二)的原理框图
2.2 方案比较
方案(一)plc主要用于强电方面的工业控制,或者整条流水线控制。虽然系统稳定,但是造价太高,功耗较大。
方案(二)由51单片机芯片作为控制器,通过软件来控制一些引脚来驱动数码管的显示。这样的系统稳定性较好,精度较高,性价比较高,且和本学期学习课程关系密切。
2.3方案选取
对于生活上的简单应用而言,方案2完全符合应用要求,况且性价比高,有实际的研究意义,故选择方案(二)。
3硬件电路设计
1.总体设计电路 2. 交通灯电路 3. 倒计时显示电路 4. 按键控制电路设计
3.1总体设计电路
总体设计电路如图3-1。
单片机系统课程设计
图3-1 总体设计电路图
3.2交通灯电路
为了方便实验,可以用发光二极管作为交通灯来使用,单片机的I/O接口直接和交通灯(发光二极管)连接。在十字路口的四组红、黄、绿三色交通灯中,东西方向道路上的两组同色灯连接在一起,南北方向道路上的两组同色的灯也彼此连接在,受单片机P1.0~P1.5控制。单片机的I/O接口与交通灯电路的具体连接方式为:P1.0~P1.2分别接东西方向的红、黄、绿共6个放光二极管,P1.3~P1.5分别接南北方向的红、黄、绿共6个发光二极管。12个发光二极管采用了共阳极的连接方式,因此I/O口输出低电平时,与之相连的发光二极管会亮,I/O口输出高电平是,相应的发光二极管会灭。 上述设计原理图如图3-2,
单片机系统课程设计
图3-2交通灯电路
3.3倒计时显示电路
有序AT89C51单片机的I/O作为输出时,具有较强吸收电流能力,因此我
们可以选用共阳型数码管,这样由单片机的I/O就可以直接驱动,从而简化硬件电路的设计。四个路口倒计时显示被置在同一时刻显示相同的数字,期中P0口
单片机系统课程设计 用来显示时间的十位,P2口用来显示时间的个位;东西南北四个方向共四个路口,令DS1和DS2是一组,DS3和DS4是一组,DS5和DS6是一组,DS7和DS8是一组。考虑到AT89C51 单片机所能提供I/O接口的数量以及该控制系统所需要的I/O的个数并结合我们的实际能力,数码管在本系统采用的是静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的数码管恒定地导通或截止。采用静态显示时。占用CPU的资源较少,单片机只要把要显示的字符代码发送到接口电路即可,直到要显示新的数据时,再发送新的字形码。显示电路原理图如图3-3。
图3-3 显示电路的电路图
3.4 按键控制电路设计
该系统的K1、K2、K3三个按键分别于单片机的P3.0、P3.1、P3.6相接, 按键控制电路原理图如图3-4。
单片机系统课程设计
图3-4 按键控制电路图
4系统程序设计
系统程序设计主要包括主程序,中断控制程序,显示子程序,按键子程序。本章节系统介绍倒交通灯的主程序和子程序的设计流程,具体的程序代码见附录。
4.1 主程序软件设计
十字路口的交通灯控制电路,要求东西方向(主干道)车道和南北方向(从干道)车道两条交叉道路上的车辆交替运行,时间可设置修改。在绿灯转为红灯时,要求黄灯闪烁5s,才能变换运行车道。紧急情况发生,如消防车、救护车等紧急车辆通过时,要求四个路口同时加亮黄灯闪烁,并且倒计时显示装置关闭,四个路口的信号灯全部变成红灯。图4-1为主程序流程图
单片机系统课程设计 开始 系统初始化 东西,南北方向换向 有键按下 Y 东西准行,南北禁行 扫描键盘 东西亮绿灯,南北亮红灯 显示子程序 显示子程序 东西亮绿灯,南北亮红灯同时黄灯进行闪烁 N 有键按下 东西准行,南北禁行 调用键盘子程序 扫描键盘 Y 调用键盘子程序
图4-1 主程序流程图
4.2 中断服务程序设计
按下K1,东西南北四个方向全红,也就是说,东西南北四个通道都不能通车,这是紧急情况,但救护车等特殊车辆可以通过。
50ms中断计算方法(适用于12MHz晶振): T0的计数初值:X0=M-计数值
=M-Tc/TP =M-(Tc×fosc)/12
=65536-(50ms×1SMHz/12) =15536 ≈15535 =3CB0H
其中4E.0H单元存放3s钟控制标志位,4F.0H单元存放1s控制标志位;4D.0单元存放0.5秒控制标志位
60H和61H单元分别存放产生1s和3s的中断次数,当它们单元中的值为零
单片机系统课程设计 时,分别表示1s和3s到,对4E.0H单元和4F.0H单元进行置1,62H单元用于产生0.5秒由于采用工作模式1,所以每次中断后,一定在中断程序中重装记数初值.图4-2为中断服务程序流程图。
开始 定时器初始化 设定中断的循环次数 定时开始 N 返回 定时时间到 Y 产生中断 显示子程序 循环次数减一 N 循环次数=1? 重新给循环次数赋初值 给定时器赋初值 Y
图4-2 中断服务程序流程图
单片机系统课程设计 4.3显示子程序设计
该交通灯控制系统在正常情况下,每60s循环一次,为方便提示路上行人及车辆交通灯转换的剩余时间,专门为控制系统设计了一个倒计时显示装置。该显示装置选用七段数码管来显示交通灯转换的剩余时间,根据控制要求,每个路口需要两个数码管,这样四个路口就要求八个数码管。图4.3 为显示子程序流程图 。
开始 取倒计时数值 提取倒计时数据的十位数 获取十位数字型码并送到P0口 提取倒计时数据的个位数 获取个位数字型码并送到P2口 调用1s延时子程序 返回
图4.3 显示子程序流程图
单片机系统课程设计
4.4按键子程序设计
键盘上的k1,k2,k3它们可以在特殊的交通情况下使用。例如,当有紧急情况发生时,如消防车、救护车等紧急车辆通过时,按下K1键,四个路口同时加亮黄色信号灯并进行闪烁(闪烁时间为5秒)。并且倒计时显示装置关闭,黄灯5s闪烁完成后,四个路口的信号灯全部变成红灯,从而保证紧急车辆的及时通过,待紧急车辆通过后,松开K1键,紧急情况消除,交通灯控制系统恢复正常工作;按下K2键,四个路口同时加亮黄色信号灯并进行闪烁(闪烁时间为5秒),并且倒计时显示装置关闭,黄色等5s闪烁完成后,只允许东西方向车辆准行、南北方向车辆禁行,松开K2键,交通灯控制系统又开始正常工作;按下K3键,四个路口同时加亮黄色信号灯并进行闪烁(闪烁时间为5秒),并且倒计时显示装置关闭,黄色等5s闪烁完成后,只允许南北方向车辆准行、东西方向车辆禁行,松开K3键,交通灯控制系统又开始正常工作。图4.4为按键子程序流程图
单片机系统课程设计 开始 键盘扫描 有键按下? K1键按下? 关闭倒计黄灯进行5s东西南北均变红灯 K2键按下? 关闭倒计黄灯进行5s东西变绿灯南北变红灯 K3键按下? 关闭倒计黄灯进行5s南北变绿灯东西变红灯 K1键按下? K2键按下? K3键按下? 返回
单片机系统课程设计 图4.4按键子程序流程图
5系统的功能测试
5.1.硬件检测:
第一步:目测,检查外部的各种元件或则电路是否有断点;
第二步:用万用表测试。先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象;
第三步:加电检测。给板加电,检测所有的插座或是器件的电源端是否符合要求的值;
第四步:是联机检查。因为只有用单片机开发系统才能完成对用户系统的调试。 5.2.软件调试:
软件调试是通过对用户程序的汇编、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。程序后,编辑,查看程序是否有逻辑的错误。
单片机系统课程设计
总 结
通过这两周的单片机课程设计,运用所学的知识,利用单片机控制原理设计了一个交通灯控制系统,我对单片机有了更深的体会。我了解和掌握了一些简单的编程思想和对I/O口的使用。这次课设通过单片机的I/O口来控制交通灯。实现一些具体的功能和对特殊情况的处理。
通过这次的实践,我对单片机的I/O口的使用的条件有更深的理解,对单片机的各个管脚功能的理解也加深了,以及在常用编程设计思路技巧,特别是汇编语言的掌握方面都能向前迈了一大步。这次的课程设计让我把单片机的理论知识用在实践中,实现了理论和实践相结合,从中更懂得理论是实践的基础,实践有着能检验理论的正确性,让我受益非浅,对我们以后参加工作或者继续学习将会产生巨大的帮助和影响。自己以前只知道理论知识,对其如何在实践中应用并不了解,这次课程设计很好的将理论和实践结合起来让我收获很多。我也发现了自己的很多不足,比如在编程时发现自己的知识是那么的薄弱,靠翻课本、查资料才行,对单片机各个接口的功能和结构的理解并不是非常深入。经过这次实验我的编程技巧和对单片机的理解都有所增加。
在课设过程中遇到的硬件和软件问题都通过询问老师、同学和去图书馆、上网得到了解决。
参 考 文 献
[1].《单片机原理与应用技术》 余发山主编 中国矿大出版社 2007 [2].《微型计算机控制技术》赖寿宏主编 机械工业出版社 2002 [3].《单片机原理及应用》 丁元杰主编 机械工业出版社 2001 [4].《单片机中级教程》 张迎春主编 北京航空航天出版社 2004
单片机系统课程设计 附 录
附录A 交通灯系统原理图
单片机系统课程设计 附录B 系统模拟调试图
南北通行
东西通行
单片机系统课程设计 黄灯闪烁
附录C 程序代码
ORG 0000H LJMP MAIN ORG 001BH LJMP IINT1 ORG 0100H ;********; ;*主程序*; ;********; MAIN:
MOV SP,#60H MOV TMOD,#10H MOV TH1,#9EH MOV TL1,#58H SETB EA SETB ET1 SETB TR1
;开中断系统总开关 ;开定时器T1中断开关 ;启动定时器T1
;定时器T1工作在方式1
;主程序入口
;定时器T1中断入口
;给定时器T1赋初值
单片机系统课程设计 HERE:
MOV 88H,#15H MOV 33H,#3DH MOV P1,#0F3H
MOV R7,#37H MM: LCALL DISP MOV A,P3
CJNE A,#0FFH,READKEY DJNZ R7,MM MOV P1,#0E1H MOV 20H,#02H NN: MOV A,P3
CJNE A,#0FFH,READKEY SETB P1.1 SETB P1.4 LCALL DISP CLR P1.1 CLR P1.4 LCALL DISP DJNZ 20H,NN SETB P1.1 SETB P1.4 LCALL DISP MOV P1,#0DEH MOV R7,#37H PP:
LCALL DISP
;设置中断循环次数 ;设置倒计时显示数值
;使交通灯东西绿,南北红
;键盘扫描
;交通灯东西绿,南北红同时加亮黄灯;黄灯进行5秒闪烁
;调显示子程序
;交通灯南北绿,东西红
单片机系统课程设计 MOV A,P3
CJNE A,#0FFH,READKEY DJNZ R7,PP MOV P1,#0CCH
MOV 20H,#02H QQ: MOV A,P3
CJNE A,#0FFH,READKEY SETB P1.1 SETB P1.4 LCALL DISP CLR P1.1 CLR P1.4 LCALL DISP DJNZ 20H,QQ SETB P1.1 SETB P1.4 LCALL DISP LCALL QW QW: SJMP HERE RET
;****************; ;*1秒延时子程序*; ;****************; DELAY:MOV R1,#0AH DELAY0:MOV R2,#0C8H DELAY1:MOV R3,#0F8H NOP
;交通灯南北绿,东西红同时加亮黄灯
;扫描P3口
单片机系统课程设计 DELAY2:DJNZ R3, DELAY2 DJNZ R2,DELAY1 DJNZ R1,DELAY0 RET
;***************; ;键盘扫描子程序; ;***************; READKEY: MOV A, #0FFH MOV P3, A
MOV A, P3 JNB ACC.0,K1 JNB ACC.1,K2 JNB ACC.3,K3
RET K1: MOV P0, #0FFH
MOV P2, #0FFH
LCALL XX LCALL YY SJMP READKEY K2: MOV P0, #0FFH
MOV P2, #0FFH
LCALL XX LCALL YY1 SJMP READKEY K3: MOV P0,
#0FFH
;判断K1键是否按下 ;判断K2键是否按下 ;判断K3键是否按下
;关断倒计时显示装置
;关断倒计时显示装置
;关断倒计时显示装置
单片机系统课程设计 MOV P2, #0FFH
LCALL XX
LCALL YY2 SJMP READKEY XX:
MOV 20H,#03H LCALL BB RET
;******************; ;*黄灯进行5秒闪烁*; ;******************; BB: SETB P1.1 SETB P1.4 LCALL DELAY CLR P1.1 CLR P1.4 LCALL DELAY DJNZ 20H,BB RET YY: MOV P1,
#0F6H
MOV A, #0FFH MOV P3, A
MOV A,P3 JNB ACC.0,YY
LCALL QW YY1: MOV P1,
#0F3H
;四个路后均变成红灯
;判断K1键是否仍然按下
;东西方向亮绿灯,南北方向亮红灯
单片机系统课程设计 MOV A, #0FFH MOV P3, MOV A, P3 A
JNB ACC.1,YY1
LCALL QW YY2: MOV P1,
#0DEH
MOV A, #0FFH MOV P3, A
MOV A, P3 JNB ACC.3,YY2
LCALL QW RET
;****************; ;*中断处理程序*; ;****************; ORG 0200H
Liu: DEC 88H MOV A,88H CJNE A,
#01H,BN
MOV 88H,#15H
LCALL DISP BN:
MOV TH1,#9EH MOV TL1,#58H RETI
;************; ;*显示子程序*;
;判断K2键是否仍然按下
;南北方向亮绿灯,东西方向亮红灯;判断K3键是否仍然按下
;中断程序入口地址
;判断循环次数是否为1
;重新给循环次数赋值
;重新给定时器T1赋初值
单片机系统课程设计 ;************; DISP: DEC 33H MOV A,33H CJNE A,
#01H,DIR1
;重新给倒计时数赋初值
MOV 33H,#3DH DIR1: MOV B,#0AH DIV AB
;提取出倒计时数值的十位数和个位数
;字形表的入口地址
MOV DPTR,#TAB
MOVC A, @A+DPTR MOV 30H,A MOV A,B
MOVC A, @A+DPTR MOV 31H,A MOV A,30H MOV P0,A MOV A,31H MOV P2,
A
;查表获取十位数的字型码
;查表获取个位数的字型码
;将十位数字型码送到P0口
;将个位数字型码送到P2口
LCALL DELAY RET
TAB:DB 0C0H,0F9H,0A4H,0B0H,099H,092H,082H,0F8H,080H,090H;字形表 END
因篇幅问题不能全部显示,请点此查看更多更全内容