单片机交通灯课程方案报告Word文档格式.docx
- 文档编号:22589272
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:19
- 大小:321.89KB
单片机交通灯课程方案报告Word文档格式.docx
《单片机交通灯课程方案报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机交通灯课程方案报告Word文档格式.docx(19页珍藏版)》请在冰豆网上搜索。
如图上图所示。
设东西向为主干道,南北为支干道。
1.2性能指标
<
1)处于常允许通行的状态,支干道有车来时才允许通行。
主干道亮绿灯时,支干道亮红灯;
支干道亮绿灯时,主干道亮红灯。
2)干道均有车时,两者交替允许通行,主干道每次放行60秒,支干道每次放行40秒,设立60秒、40秒计时、显示电路。
3)绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡。
黄灯亮时,原红灯按1Hz的频率闪烁。
4)支干道通行时间及黄灯亮的时间均可在0~99秒内任意设置。
2设计方案
2.1任务分析
模拟交通灯控制器就是使用单片机来控制一些LED和数码管,模拟真实交通灯的功能。
红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等
2.2方案设计
根据设计的要求可知,系统的硬件原理框图如下图所示。
系统硬件框图
单片机可选用AT89C51,它与8051系列单片机全兼容,但其内部带有4KB的FLASHROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。
南北向和东西向各采用2个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。
键盘系统可以根据系统的需要设置不同的键的个数,可以选择线式键盘或矩阵式键盘,若单片机的IO口不够用时,可以考虑扩展8255或8155满足系统的要求。
2.软件方案
根据设计要求,程序框图如图1所示。
软件可由汇编语言完成,也可由C语言完成。
软件设计可以分为以下几个功能模块:
主程序:
初始化及键盘监控。
计时程序模块:
为定时器的中断服务子程序,完成0.1秒<
或其他时间)和1秒的时间定时。
显示程序模块:
完成60个发光二极管<
实际上只需驱动30个)和8个LED数码管的显示驱动。
程序流程图
3系统硬件设计
3.1单片机的最小系统
ATMEL公司生产的AT89C52单片机它是硬件电路的核心部分,时钟电路晶振使用12MHz,复位电路采取按键复位方式。
具体连接图3.1和图3.2。
单片机系统的时钟电路
单片机系统的复位电路
3.2电源电路设计
电源用5V直流变压器直接供电。
3.3数码管显示电路
显示电路采用8个共阴数码管,P1口作为数码管的输入,P3.4、P3.5、P3.6P3.7分别作为东西南北四路数码管的位选端。
数码管显示电路
3.4信号灯控制电路
应急电路
4系统软件设计
4.1主程序设计
系统程序流程图
5调试及性能分析
5.1调试分析
5.1.1软件调试
软件调试主要是利用proteus仿真软件完成电路的搭建,运行以发现设计中的错误及时改正。
5.1.2硬件调试
硬件调试主要是检测硬件电路是否有短路、断路、虚焊等。
具体步骤及测试结果如下:
1)检查电源与地线是否全部连接上,用万用表对照电路原理图测试各导线是否完全连接,对未连接的进行修复。
2)参照原理图,检查各个器件之间的连接是否连接正确,是否存在虚焊,经测试,各连接不存在问题。
3)以上两项检查并修复完后,给该硬件电路上电,电源指示灯点亮。
5.1.3系统功能调试
通过软件仿真显示,系统基本能完成要求,因为设计思路出现问题,键盘没有正确的做出来,没有键盘电路,紧急情况也可以通过一个按钮来采取相关的动作。
6心得体会
这次单片机课程设计历时一个学期的时间,在这次设计过程里我们体验了从设计、画板、编程、焊板到调试的整个过程。
对于交通灯这个题目,因为以前学单片机这个课程时,做过类似相关的实验,觉得这个比较简单而且做出的东西也比较直观,在确定题目之后,查阅了大量的资料,初步完成了电路设计方案。
接着就是用AD6这个软件来画电路板,这个软件的应用上学期也学过了,但是学的时候感觉很简单,但是到了具体设计的时候,问题不断的出来,比如有的器件库里面没有封装,要自己花封装,这时候就很容易出问题,比如焊盘的大小,有的器件上焊盘大小不一样,有个别大的是用来固定的,这个很容易被忽略。
下来就是程序的设计了,虽然感觉交通灯程序没什么难的,就是数码管倒计时显示加几个闪烁的二极管就完事,但是也许是起初想的太简单,设计时到了细节处,也出了不少问题,而且很难被检查出来,但是最后经过我们的不断努力,还是写出来正确的代码。
上周学校终于把板子给做回来了,怀着紧张的心情一个器件一个器件的完成板子的焊接,最后通过串口线把程序下载到板子上,但是板子却没有意料中的效果,而且没一点现象,用万用表检查单片机的电压差不多为零,查出了问题所在松了口气,后来在网上查资料知道原来变压器的接口那三个引脚,两个GND必须短接,要不就不能正常供电,本以为短接后就正常了,但是数码管还是没反应,二极管基本可以正常显示,这时候真是一种煎熬,差了很久找不到原因,后来对照着原理图一个个的检查,最后发现原来是数码管封装错了,板子上的数码管公共极是3、8两个引脚,但是原理图上封装的事1、6,当时也没有注意,以为只要是共阴管就没问题了,没想到软件本身就存在错误。
通过这次课设,对以前学过的知识进行了巩固,加深了理解,提高了应用的能力,而且提高了我们的发现、分析、解决问题的能力。
经历了从最初的设计到最后做出产品的开发过程,提高了对专业的认识及兴趣,对于我们工科来说,对以后就业有及其重大的影响。
参考文献
[1]徐维祥.单片微型机原理及应用大连理工大学出版社,2006.12
[2]胡汉才.单片机原理与接口技术[M].北京:
清华大学大学出版社,2004.1-505.
[3]闫胜利.AltiumDesigner6.X中文版使用教程 电子工业出版社 2007.6
附录1系统原理图
附录2系统仿真图
附录3程序清单
。
------------------------------------
程序实现功能
西南北路口直行与转弯交替通行,数码管显示直行通行倒计时,红绿黄灯显示包括人行道在内的道路交通状态。
某一方向道路拥挤时,可以人工控制调节东西南北方向通行时间。
紧急情况时,各路口交通灯显示红灯,数码管保持数据不变。
工作寄存器及存储单元分配
1.工作寄存器
R2设置为定时器定时中断次数,R6、R7用于延时程序中的寄存器
2.片内存储单元
30H、31H作为两组数码管显示数据存储单元。
32H、33H作为交通灯初始状态存储单元。
40H、41H作为交通灯显示数据存储单元
3.标志位
00H:
南北通行标志位。
01H:
东西通行标志位。
02H:
紧急事件标志位
-----------------------------------
SNFEQU00H。
南北通行标志位
EWFEQU01H。
东西通行标志位
URFEQU02H。
紧急事件标志位
ORG0000H
LJMPMAIN。
上电转主程序
ORG000BH。
定时中断入口
LJMPDSZD
ORG0003H。
紧急中断入口
LJMPURZD
ORG0030H
MAIN:
LCALLINIT。
调用初始化子程序
LOOP:
LCALLDIS。
循环执行显示子程序
AJMPLOOP
///////////初始化程序
INIT:
SETBSNF
SETBEWF
SETBURF
MOVR2,#20。
定时器中断20次为1s
MOVTMOD,#01H。
初始化定时器
MOVTL0,#0B0H
MOVTH0,#3CH
SETBEA。
开定时中断与紧急中断
SETBET0
SETBTR0
SETBEX0
SETBIT0。
设置中断程控方式
MOVDPTR,#TAB。
数值首地址放入DPTR中
MOV40H,#40。
东南西北通行时间设置
MOV41H,#40
MOV30H,#40。
通行时间初始化
MOV31H,#60
MOVP0,#4CH。
初始化时南北通行并把交通灯状态分别放在32H和33H中
MOV32H,#4CH
MOVP2,#15H
MOV33H,#15H
RET
////////////显示子程序
DIS:
MOVP3,#0DFH。
选中南北方向的十位数码管
MOVA,30H。
把显示数据送人数码管显示
MOVB,#10
DIVAB
MOVCA,@A+DPTR
MOVP1,A。
LCALLD1MS
MOVP3,#0EFH。
选中南北方向的个位数码管
MOVA,B。
送入数码管显示
MOVCA,@A+DPTR
MOVP1,A
MOVP3,#7FH。
选中第东西方向的十位数码管
MOVA,31H。
MOVP3,#0BFH。
选中第东西方向的个位数码管
MOVA,B
SETBP3.0
SETBP3.1
JNBP3.0,DIS_S。
查询是否第一个按键按下
JNBP3.1,DIS_E。
查询是否第二个按键按下
AJMPDIS_R。
没有键按下则返回
DIS_S:
LCALLD5MS。
按键去抖
JNBP3.0,DIS_SN
AJMPDIS_R
DIS_SN:
MOV40H,#50。
对通行时间从新分配,南北通行时间加长
MOV41H,#30
AJMPDIS_R
DIS_E:
JNBP3.1,DIS_EW
DIS_EW:
MOV40H,#30。
东西通行时间加长
MOV41H,#50
DIS_R:
RET
///////定时中断处理程序
DS_C:
LJMPDS_R。
接力跳转
DSZD:
PUSHACC。
保护现场
PUSHPSW
CLRTR0。
关定时器及中断标志位并重新赋值
CLRTF0
DJNZR2,DS_C。
判断1m时间是否到达
到达重新赋值
DEC30H。
南北方向通行时间减一
把减一后的时间送入显示存储单元
南北通行到达最后4秒时黄灯闪烁
DS_10:
CJNEA,#4,DS_11。
如果通行时间剩余4秒
JNBSNF,DS_11。
判断是否是南北通行
MOVP0,#8AH
MOV32H,#8AH。
把交通灯状态存入存储单元<
后面类似)
DS_11:
CJNEA,#3,DS_12。
不是剩余3秒,返回
JNBSNF,DS_12。
不是南北通行时间,返回
MOVP0,#88H
MOV32H,#88H
DS_12:
CJNEA,#2,DS_13
JNBSNF,DS_13
MOVP0,#8AH
MOV32H,#8AH
DS_13:
CJNEA,#1,DS_14
JNBSNF,DS_14
------------------------
DS_14:
JNZDS_NE。
通行时间没有结束转向改变东西方向的数码管
CPLSNF。
如果通行时间结束则对标志位取反
JNBSNF,DS_1。
判断是否南北通行
MOV30H,40H。
是,点亮相应的交通灯
MOVP0,#4CH
MOV32H,#4CH。
存储交通灯状态
MOV33H,#15H。
DS_NE:
DEC31H。
东西方向通行时间减一
把通行剩余时间送入显示存储单元
东西方向通行时间剩余4秒钟黄灯闪烁<
程序注释与南北方向类似略)
DS_20:
CJNEA,#4,DS_21
JBEWF,DS_21
MOVP0,#51H
MOV32H,#51H
DS_21:
CJNEA,#3,DS_22
JBEWF,DS_22
MOVP0,#41H
MOV32H,#41H
DS_22:
CJNEA,#2,DS_23
JBEWF,DS_23
DS_23:
CJNEA,#1,DS_24
JBEWF,DS_24
-----------------------------
DS_24:
JNZDS_R。
东西方向时间没有结束,返回
CPLEWF。
对通行状态取反
JNBEWF,DS_2。
东西方向通行时间到来,跳转
MOV31H,#80。
东西方向通行结束,重新显示时间
MOVP0,#89H。
点亮相应的交通灯
MOV32H,#89H
MOVP2,#29H
MOV33H,#29H
AJMPDS_R
DS_1:
MOV30H,#80。
南北通行时间结束,重新对显示存储单元赋值
执行转弯状态1
MOVP2,#26H
MOV33H,#26H
AJMPDS_NE
DS_2:
MOV31H,41H。
东西方向开始通行,赋值予显示存储单元
MOVP0,#61H。
MOV32H,#61H
MOV33H,#15H
DS_R:
SETBTR0
POPPSW。
恢复现场
POPACC
RETI
/////////////紧急中断处理程序
URZD:
CLRIE0。
清除中断标志位
关定时器
CPLURF。
JBURF,UR_CON。
紧急结束;
跳转
MOVP0,#49H。
各路口灯全显示红灯亮
AJMPUR_R
UR_CON:
SETBTR0。
恢复正常交通
MOVA,32H
MOVP0,A
MOVA,33H
MOVP2,A
UR_R:
RETI
////////////查表指令
TAB:
DB3FH,06H,5BH,4FH,66H,6DH
DB7DH,07H,7FH,6FH
//////////延时5ms与1ms
D5MS:
MOVR7,#5
D1MS:
MOVR7,#10
MOVR6,#50
L1:
DJNZR6,$
DJNZR7,L1
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 交通灯 课程 方案 报告