单片机系统课程设计报告专业:自动化073班学生姓名:XXXX XXX学号:2007023323 2007023328指导教师:XXXX XXXX完成日期:2010年7月7日目录1 设计任务和性能指标 (1)1.1设计任务 (1)1.2性能指标 (1)2 设计方案 (2)2.1任务分析 (2)2.2方案设计 (2)3 系统硬件设计 (3)3.1单片机的最小系统 (3)3.2电源电路 (4)3.3数码管显示时间电路设计 (4)3.4信号灯控制电路设计 (5)4 系统软件设计 (5)4.1主程序设计 (5)5 调试及性能分析 (6)5.1调试分析 (6)5.1.1 软件调试 (6)5.1.2 硬件调试 (6)5.1.3 系统功能调试 (6)6 心得体会 (6)参考文献 (8)附录1 系统原理图 (9)附录2 系统仿真图 (10)附录3 程序清单 (11)1 设计任务和性能指标1.1设计任务利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
用红、绿、黄发光二极管作信号灯。
如图上图所示。
设东西向为主干道,南北为支干道。
1.2性能指标(1)处于常允许通行的状态,支干道有车来时才允许通行。
主干道亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。
(2)干道均有车时,两者交替允许通行,主干道每次放行60秒,支干道每次放行40秒,设立60秒、40秒计时、显示电路。
南 北东西(3)绿灯亮到红灯亮的转换过程中,要亮5秒黄灯作为过渡。
黄灯亮时,原红灯按1Hz 的频率闪烁。
(4)支干道通行时间及黄灯亮的时间均可在0~99秒内任意设置。
2 设计方案2.1任务分析模拟交通灯控制器就是使用单片机来控制一些LED 和数码管,模拟真实交通灯的功能。
红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等2.2方案设计根据设计的要求可知,系统的硬件原理框图如下图所示。
单片机键盘LED 显示三色指示灯系统硬件框图单片机可选用AT89C51,它与8051系列单片机全兼容,但其内部带有4KB 的FLASH ROM ,设计时无需外接程序存储器,为设计和调试带来极大的方便。
南北向和东西向各采用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.6 P3.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] 闫胜利.Altium Designer 6.X中文版使用教程电子工业出版社2007.6附录3 程序清单;------------------------------------;程序实现功能;西南北路口直行与转弯交替通行,数码管显示直行通行倒计时,红绿黄灯显示包括人行道在内的道路交通状态。
;某一方向道路拥挤时,可以人工控制调节东西南北方向通行时间。
;紧急情况时,各路口交通灯显示红灯,数码管保持数据不变。
;工作寄存器及存储单元分配;1.工作寄存器;R2设置为定时器定时中断次数,R6、R7用于延时程序中的寄存器;2.片内存储单元;30H、31H作为两组数码管显示数据存储单元;32H、33H作为交通灯初始状态存储单元;40H、41H作为交通灯显示数据存储单元;3.标志位;00H:南北通行标志位; 01H:东西通行标志位;02H:紧急事件标志位;-----------------------------------SNF EQU 00H ;;;南北通行标志位EWF EQU 01H ;;;东西通行标志位URF EQU 02H ;;;紧急事件标志位ORG 0000HLJMP MAIN ;;;上电转主程序ORG 000BH ;;;定时中断入口LJMP DSZDORG 0003H ;;;紧急中断入口LJMP URZDORG 0030HMAIN: LCALL INIT ;;;调用初始化子程序LOOP: LCALL DIS ;;;循环执行显示子程序AJMP LOOP;///////////初始化程序INIT: SETB SNFSETB EWFSETB URFMOV R2,#20 ;;;定时器中断20次为1sMOV TMOD,#01H ;;;初始化定时器MOV TL0,#0B0HMOV TH0,#3CHSETB EA ;;;开定时中断与紧急中断SETB ET0SETB TR0SETB EX0SETB IT0 ;;;设置中断程控方式MOV DPTR,#TAB ;;;数值首地址放入DPTR中MOV 40H,#40 ;;;东南西北通行时间设置MOV 41H,#40MOV 30H,#40 ;;;通行时间初始化MOV 31H,#60MOV P0,#4CH ;;;初始化时南北通行并把交通灯状态分别放在32H和33H 中MOV 32H,#4CHMOV P2,#15HMOV 33H,#15HRET;////////////显示子程序DIS: MOV P3,#0DFH ;;;选中南北方向的十位数码管MOV A,30H ;;;把显示数据送人数码管显示MOV B,#10DIV ABMOVC A,@A+DPTRMOV P1,A ;;;LCALL D1MSMOV P3,#0EFH ;;;选中南北方向的个位数码管MOV A,B ;;;送入数码管显示MOVC A,@A+DPTRMOV P1,ALCALL D1MSMOV P3,#7FH ;;;选中第东西方向的十位数码管MOV A,31H ;;;送入数码管显示MOV B,#10DIV ABMOVC A,@A+DPTRMOV P1,ALCALL D1MSMOV P3,#0BFH ;;;选中第东西方向的个位数码管MOV A,BMOVC A,@A+DPTRMOV P1,ALCALL D1MSSETB P3.0SETB P3.1JNB P3.0,DIS_S ;;;查询是否第一个按键按下JNB P3.1,DIS_E ;;;查询是否第二个按键按下AJMP DIS_R ;;;没有键按下则返回DIS_S:LCALL D5MS ;;;按键去抖JNB P3.0,DIS_SNAJMP DIS_RDIS_SN:MOV 40H,#50 ;;;对通行时间从新分配,南北通行时间加长MOV 41H,#30AJMP DIS_RDIS_E:LCALL D5MS ;;;按键去抖JNB P3.1,DIS_EWAJMP DIS_RDIS_EW:MOV 40H,#30 ;;;东西通行时间加长MOV 41H,#50DIS_R:RET;///////定时中断处理程序DS_C: LJMP DS_R ;;;接力跳转DSZD: PUSH ACC ;;;保护现场PUSH PSWCLR TR0 ;;;关定时器及中断标志位并重新赋值CLR TF0MOV TL0,#0B0HMOV TH0,#3CHDJNZ R2,DS_C ;;;判断1m时间是否到达MOV R2,#20 ;;;到达重新赋值DEC 30H ;;;南北方向通行时间减一MOV A,30H ;;;把减一后的时间送入显示存储单元;;;;;;;南北通行到达最后4秒时黄灯闪烁DS_10:CJNE A,#4,DS_11 ;;;如果通行时间剩余4秒JNB SNF,DS_11 ;;;判断是否是南北通行MOV P0,#8AHMOV 32H, #8AH ;;;把交通灯状态存入存储单元(后面类似)DS_11:CJNE A,#3,DS_12 ;;;不是剩余3秒,返回JNB SNF,DS_12 ;;;不是南北通行时间,返回MOV P0,#88HMOV 32H, #88HDS_12:CJNE A,#2,DS_13JNB SNF,DS_13MOV P0,#8AHMOV 32H, #8AHDS_13:CJNE A,#1,DS_14JNB SNF,DS_14MOV P0,#88HMOV 32H, #88H;------------------------DS_14:JNZ DS_NE ;;;通行时间没有结束转向改变东西方向的数码管CPL SNF ;;;如果通行时间结束则对标志位取反JNB SNF,DS_1 ;;;判断是否南北通行MOV 30H,40H ;;;是,点亮相应的交通灯MOV P0,#4CHMOV 32H,#4CH ;;;存储交通灯状态MOV P2,#15HMOV 33H, #15H ;;;存储交通灯状态DS_NE:DEC 31H ;;;东西方向通行时间减一MOV A,31H ;;;把通行剩余时间送入显示存储单元;;;;;;;;东西方向通行时间剩余4秒钟黄灯闪烁(程序注释与南北方向类似略)DS_20:CJNE A,#4,DS_21JB EWF,DS_21MOV P0,#51HMOV 32H, #51HDS_21:CJNE A,#3,DS_22JB EWF,DS_22MOV P0,#41HMOV 32H, #41HDS_22:CJNE A,#2,DS_23JB EWF,DS_23MOV P0,#51HMOV 32H, #51HDS_23:CJNE A,#1,DS_24JB EWF,DS_24MOV P0,#41HMOV 32H, #41H;-----------------------------DS_24:JNZ DS_R ;;;东西方向时间没有结束,返回CPL EWF ;;;对通行状态取反JNB EWF,DS_2 ;;;东西方向通行时间到来,跳转MOV 31H,#80 ;;;东西方向通行结束,重新显示时间MOV P0,#89H ;;;点亮相应的交通灯MOV 32H, #89HMOV P2,#29HMOV 33H, #29HAJMP DS_RDS_1: MOV 30H,#80 ;;;南北通行时间结束,重新对显示存储单元赋值MOV P0,#89H ;;;执行转弯状态1MOV 32H, #89HMOV P2,#26HMOV 33H, #26HAJMP DS_NEDS_2: MOV 31H,41H ;;;东西方向开始通行,赋值予显示存储单元MOV P0,#61H ;;;点亮相应的交通灯MOV 32H, #61HMOV P2,#15HMOV 33H, #15HDS_R: SETB TR0POP PSW ;;;恢复现场POP ACCRETI;/////////////紧急中断处理程序URZD: PUSH ACC ;;;保护现场PUSH PSWCLR IE0 ;;;清除中断标志位CLR TR0 ;;;关定时器CPL URF ;;;紧急事件标志位JB URF,UR_CON ;;;紧急结束;跳转MOV P0,#49H ;;;各路口灯全显示红灯亮MOV P2,#15HAJMP UR_RUR_CON:SETB TR0 ;;;恢复正常交通MOV A,32HMOV P0,AMOV A,33HMOV P2,AUR_R: POP PSW ;;;恢复现场POP ACCRETI;////////////查表指令TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH DB 7DH, 07H, 7FH, 6FH;//////////延时5ms与1msD5MS: MOV R7,#5D1MS: MOV R7,#10MOV R6,#50L1: DJNZ R6,$DJNZ R7,L1RETEND。