《[毕业设计精品]单片机交通灯课程设计.doc》由会员分享,可在线阅读,更多相关《[毕业设计精品]单片机交通灯课程设计.doc(31页珍藏版)》请在三一办公上搜索。
1、摘 要单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。科技越发达,智能化的东西就越多,使用的单片机就越多。看来学单片机是社会发展的需求。 据统计,我国的单片机年容量已达13亿片,且每年以大约16%的速度增长
2、,但相对于世界市场我国的占有率还不到1%。特别是沿海地区的玩具厂等生产产品多数用到单片机,并不断地辐射向内地, 这说明单片机应用在我国才刚刚起步,有着广阔的前景。培养单片机应用人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。 面对着学习单片机一个终生受用的职业,不受年龄的限制。同时面对着生活的现代化,我们衣、食、住、行也就越来越依赖各式各样的“高科技”了,也就有很多地方都用到高集成电路IC和单片机。关键词 单片机;交通灯;AT89S52;LED显示ABSTRACTSCM penetrate into all areas of our lives, almost difficult
3、 to find which areas there is no trace of microcontrollers. Missiles, navigation devices, in-flight control of a variety of instruments, computer network communications and data transmission, industrial automation, real-time process control and data processing, widely used in a variety of smart IC c
4、ards, civil luxury cars security system, video recorder, cameras, automatic washing machine control, and program-controlled toys, electronic pets, etc., which are inseparable from the microcontroller. Not to mention the field of robotic automation, intelligent instrumentation, medical devices had. T
5、herefore, the MCU learning, development and applications will be a large number of computer applications and intelligent control of the scientists, engineers. The more developed science and technology, the more intelligent things, using the more microcontroller. It seems science of social developmen
6、t needs of SCM.According to statistics, Chinas annual capacity has reached 1-3 microcontroller 100 million, and an annual growth rate of about 16%, but compared to the world market share in China is less than 1%. Especially in coastal areas of production such as a toy factory in the majority of prod
7、ucts used in single and continuous radiation to the mainland, indicating SCM application in China has just begun, has broad prospects. SCM application training personnel, especially in the engineering and technical personnel in the popularization of knowledge of SCM has important practical significa
8、nce.The face of a lifetime to learn microcontroller profession, no age restrictions. At the same time the face of modern life, we have clothing, food, shelter, thus increasingly dependent on a wide range of high tech, and also there is a lot of high integrated circuits used in IC and MCU.Key words s
9、cm;traffic lights;at89s52;led display目 录1 设计要求及总体方案介绍 41.1 设计课题任务41.2 功能要求说明41.3 设计总体方案介绍及工作原理说明52 硬件系统的设计 72.1 硬件系统各模块功能介绍72.2 电路原理图 102.3 电路PCB图 102.4 元器件布局图 102.5 元器件清单 103 软件系统的设计113.1 单片机的使用资源情况 113.2 软件模块功能介绍 123.3 程序流程图 123.4 程序清单 144 设计总结154.1 使用说明 154.2 仿真结果 154.3 误差分析 174.4 设计体会 184.5 教学建议
10、 18参考文献 20致 谢 21附 录 22附录一 电路原理图22附录二 电路PCB图23附录三 元器件布局图24附录四 元器件清单25附录五 程序清单261 设计要求及总体方案介绍1.1 设计课题任务设计一个具有特定功能的十字路口交通灯。该交通灯上电或按键复位后能自动显示系统提示符“P.”, 进入准备工作状态。按开始键则开始工作,按结束键则返回“P.”状态。要求甲车道和乙车道两条交叉道路上的车辆交替运行,甲车道为主车道,每次通车时间为60秒,乙车道为次车道,每次通车时间为30秒,要求黄灯亮5秒,并且1秒闪烁一次。有应急车辆出现时,红灯全亮,应急车辆通车时间10秒,同时禁止其他车辆通过。1.2
11、 功能要求说明本次课程设计在硬件方面的接法如下:P2口接二极管,P2.0、P2.1、P2.2口线分别来控制东西方向的绿灯、黄灯和红灯;P2.3、P2.4、P2.5口线分别控制南北方向的红灯、黄灯和绿灯。P0口作为数码管的位控(这里只用到了P0.0、和P0.1两根口线),P1口作为数码管的段控,P3口作为输入部分(这里用到了P3.0、P3.1、P3.2口线),控制数码管的显示情况和二极管的亮灭情况。当交通灯上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。当按下启动按钮K1并释放后,数码管显示将会从“55”开始倒计时,每隔一秒减1,此时南北方向开始一直亮绿灯,东西方向一直亮红灯,直
12、到显示为“00”时,数码管将会从“05”开始倒计时,每隔一秒减1,此时南北方向每隔一秒黄灯就闪烁一次,东西方向亮一直红灯,直到显示为“00”时,数码管将会从“25”开始倒计时,此时南北方向一直亮红灯,东西方向一直亮绿灯,直到显示为“00”时,数码管又将从“05”开始倒计时,此时南北方向一直亮红灯,东西方向每隔一秒黄灯就闪烁一次;当没有其他键按下时,交通灯将这样一直循环下去。当按下结束键K2并释放后,数码管将显示“P.”,东西南北方向无灯亮。当按下紧急键K3并释放后,数码管将显示“09”,并且每隔一秒就减1,东西南北方向全部红灯亮。单片机采用AT89S52,fosc=12MHZ。其按键功能如表1
13、.1所示。 表1.1 按键功能按键键名功能P3.4K1键启动键P3.7K2键结束键P3.6K3键紧急键1.3 设计总体方案介绍及工作原理说明1.3.1 总体方案介绍该交通灯电路由单片机AT98S52、键盘接口电路、显示接口电路、发光二极管控制电路、时钟电路和复位电路构成,原理框图如图1.1所示。 图1.1 原理框图(1) 电源提供方面采用独立的稳压电源,此方案的优点是稳定可靠,且有各种成熟电路可供使用。(2) 显示方面完全采用数码管显示,用来显示有限符号和数码字符。(3) 键盘输入方面直接在I/O口线上接按键开关,因为设计时精简和优化了电路,所以剩余的口资源还比较多。我们共用到了4个按键,分别
14、为:K0、K1、K2、K3。1.3.2 工作原理首先时钟电路产生单片机工作时所需要的时钟信号,这是单片机能够正常工作的前提,而单片机有无定时的基础以及定多长的时间,这些还需要我们人为的确定。我是采用10ms延时程序来反复调用来定时,在我们的硬件电路中,按键的键功能程序在中断服务中,在正常情况下会不断运行主程序,当有键按下时,CPU去转去执行中断程序,而中断程序可以执行三种键功能:第一个是十秒倒计时紧急红灯亮;第二个是结束倒计时,显示P.;第三个是重新开始倒计时。其原理是INTO=P3.4&P3.6&P3.7,当有键按下时,外部中断0口线就会变成低电平,通过键扫程序来具体判断到底是哪个键按下,C
15、PU才会去执行中断里面的某个键功能。12个发光二极管是由P0口控制的,P0口与二极管之间串接一个限流电阻使二极管不易烧坏,采用送低电平有效。2 硬件系统的设计2.1 硬件系统各模块功能介绍2.1.1 显示及显示驱动电路在本次课程设计中,为了使硬件电路更简单化,为了节省口线,我们采用的是二位一体共阳数码管,显示原理跟单个LED的显示原理完全相同, 由于七段数码显示器在显示字形代码时需要有足够的功率,所以需在显示器上加显示驱动,本设计的显示驱动是采用74LS245芯片作为驱动,并且,无论是位控线上还是段控线上都串接一个电阻,以提高其输出功率,在这里采用220欧母电阻。显示及驱动电路图如图2。 图2
16、.1 显示及驱动电路2.1.2 指示灯控制电路 本次课程设计采用P2口控制二极管的发光情况,口线送低电平有效,具体设计如下:P0.2控制东西方向的绿灯,P0.3口控制东西方向的黄灯,P0.4控制东西方向的红灯,P0.5控制南北方向的红灯,P0.6控制南北方向的黄灯,P0.7控制南北方向的绿灯。如图2.2所示。 图2.2 指示灯控制电路2.1.3 键盘控制电路键盘是最常用的输入设备,是实现人机对话的纽带。按其结构形式可分为非编码键盘和编码键盘。编码键盘采用硬件方法产生键码。每按下一个键,键盘能自动生成键盘代码,键数较多,且具有去抖动功能。这种键盘使用方便,但硬件较复杂。非编码键盘仅提供按键开关工
17、作状态,其键码由软件确定,这种键盘键数较少,硬件简单,广泛应用于各种单片机应用系统,在单片机控制电路中,可把单片机使用的键盘分为独立式和矩阵式两种。独立式实际上就是一组独立的按键,这些按键可直接与单片机的I/O口连接,即每个按键独占一条口线,这种接法简单。矩阵式键盘也称行列式键盘,因为键的数目较多,所以键按行列组成矩阵。本设计中键盘数目较少,且为安装方便,因此在本设计中采用独立式接法。如图2.3所示。图2.3 键盘控制电路按从一个键到键的功能被执行主要应包括两项工作:一是键的识别,即在键盘中找出被按的是哪个键,另一项是键功能的实现。第一项工作是使用接口电路实现的,而第二项工作则是通过执行中断服
18、务程序来完成。具体来说,键盘接口应完成以下操作功能:(1) 键盘扫描,以判定是否有键被按下(称之为“闭合键”)。(2) 键识别,以确定闭合键的行列位置。(3) 产生闭合键的键码。(4) 排除多键、串键(复键)及去抖动。以上这些内容通常是以软硬件结合的方式来完成的,即在软件的配合下由接口电路来完成。但具体哪些由硬件哪些由软件完成,要看接口电路的情况。总的原则是,硬件复杂软件就简单,硬件简单软件就得复杂一些。2.1.4 时钟电路时钟电路用来产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地按时序进行工作。通过在芯片的
19、外部XTAL1和XTAL2两个引脚跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡电路。时钟电路为单片机产生时钟脉冲序列,本设计中采用的晶振频率为12MHz,电容为33pF。 2.1.5 复位电路复位电路用于产生复位信号,通过RST引脚送入单片机,复位是单片机的初始操作,其主要功能是:为一些专用寄存器设置初始状态、程序状态字PSW清0、程序计数器PC被赋值为0000H等,除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需安装复位键以重新启动。RST引脚是复位信号的输入端,复位信号是高电平有效,完成复位操作共需要24个状态周期,复位
20、结束后,单片机从地址0000H单元开始执行程序,SP为07H,其它寄存器大多数被置为00H,本设计使用频率为12MHz的晶振,所以复位信号持续时间应超过2s才能完成复位操作。复位电路分为上电复位、按键复位、按键脉冲复位三种,本次课程设计采用的是按键复位。2.2 电路原理图电路原理图见附录一所示。2.3 电路PCB图电路PCB图见附录二所示。2.4 元器件布局图元器件布局图见附录三所示。2.5 元器件清单元器件清单见附录四所示。3 软件系统的设计3.1 单片机的使用资源情况3.1.1 硬件资源使用说明l P0口为二极管的控制端l P1口用作地址/数据总线l P2口用作地址/数据总线l P3.4、
21、P3.6、P3.7口线作为键盘输入端l 采用了INTO外部中断既在AT89S52的P0口用来接十二个发光二极管的阴极,控制其亮与灭,P1口和P2口外接由2个LED数码管(LED1、LED0)构成的显示器,用P2口作LED的段码输出口(P2.0P2.7对应于LED的adp),P1口作LED的位控输出线(P1.1、P1.0分别对应于LED1、LED0),其中在P1的串行口外接2个三极管作为显示驱动,显示为2个数码管(LED0LED1)进行动态显示。P3口外接三个个按键K1、K2、K3(分别对应于P3.4、P3.7、P3.6口)用于调整显示接口电路。 3.1.2 交通灯的分配表 交通灯的口线分配如表
22、3.1所示,“1”表示送高电平,“0”表示送低电平。表3.1 交通灯分配表P0.2东西绿灯1101P0.3东西黄灯1110P0.4东西红灯0011P0.5南北红灯1100P0.6南北黄灯1011P0.7南北绿灯0111控制码6FHAFHDBHD7H状态说明南北放行,东西禁止南北警告,东西禁止南北禁止,东西放行南北禁止,东西放行3.2 软件模块功能介绍主程序模块的主要任务是程序的初始化显示“P.P.”,当没任何键按下时,显示模块将一直不变,交通灯全部是熄灭的,当K0键按下并松开后开始倒计时,其中在时间显示的过程中判断是否有K0、K1和K2键按下,当再次按下K0时,显示将重新开始倒计时,如果是K1
23、按下,将显示“P.P.”,并且发光二极管全部熄灭,如果是K2按下,数码管将开始十秒倒计时,并且东西南北全部亮起红灯。显示模块包括送缓冲区模块,BCD码转换和送显示等,通过这些模块完成了显示的功能,并能按照我们所熟悉的时钟时间进行显示。3.3 程序流程图主程序的流程图如图3.1所示,按键判断程序流程图如图3.2所示 图3.1 主程序流程图图3.2 判断按键程序流程图3.4 程序清单程序清单详见附录五 4 设计总结4.1 使用说明本实验主要是利用单片机AT89S52、数码管和发光二极管组成,整个电路结构比较简单,它能实现以下几个功能:l 时间的显示。l 红黄绿灯的发光与熄灭。具体操作说明如下: 当
24、交通灯上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。当按下启动按钮K1并释放后,数码管显示将会从“55”开始倒计时,每隔一秒减1,此时南北方向开始一直亮绿灯,东西方向一直亮红灯,直到显示为“00”时,数码管将会从“05”开始倒计时,每隔一秒减1,此时南北方向没隔一秒黄灯就闪烁一次,东西方向亮一直红灯,直到显示为“00”时,数码管将会从“25”开始倒计时,此时南北方向一直亮红灯,东西方向一直亮绿灯,直到显示为“00”时,数码管又将从“05”开始倒计时,此时南北方向一直亮红灯,东西方向每隔一秒黄灯就闪烁一次;当没有其他键按下时,交通灯将这样一直循环下去。当按下结束键K2并释放后,
25、数码管将显示“P.”,东西南北方向无灯亮,当有其它键按下时,就退出,去执行该键的键功能。当按下紧急键K3并释放后,数码管将显示“10”,并且每隔一秒就减1,东西南北方向全部红灯亮,当没亮到显示“00”就有其它键按下时,就退出,执行该键的键功能,当显示到“00”时,就会自动退出中断继续完成主程序。4.2 仿真结果当交通灯上电复位后,数码管显示“P.”,仿真结果如图4.1所示;当按下开始键K1后,南北方向就开始亮绿灯,东西方向开始亮红灯,显示器并开始从60s倒计时,仿真结果如图4.2所示;当按下紧急键K3后,南北方向和东西方向均亮红灯,显示器并开始从10s倒计时,其仿真结果如图4.3所示;当按下结
26、束键K2后,显示器重新显示“P.”,南北方向和东西方向的灯全部熄灭,其仿真结果如图4.4所示。 图4.1 上电显示 图4.2 按下开始键后的显示 图4.3 按下紧急键后的显示 图4.4 按下结束键后的显示4.3 误差分析本次课程设计的误差就在于显示时间,我采用的是调用延时程序来让显示器上数字共显示一秒钟,而循环一次的时间并不仅仅只是2次调用延时程序的时间,其间CPU还执行其它指令,例如说将缓存区的内容送给累加器A、查表指令、将段控码送给P2口等等,因为它们都是微秒级的,而延时程序是毫秒级的,因此在计算的过程中就可以省略了,每次循环除两次调用延时程序外,所用时间为22微秒,而显示一秒钟共循环了5
27、0次,因此在显示器上只需要显示1秒数字,事实上多显示了1100微秒,误差率=1.1%。4.4 设计体会我们经过一个多星期的时间,终于完成了这次的课程设计,在这期间,通过同组成员的努力配合以及其他同学们的帮助,并提出了许多宝贵的意见,使这次设计终于完满成功了。 我觉得这次课程设计的难点就在于时间的定时,我原本是想用计数/定时器来定时100ms,再通过几次循环就可以使显示每个数在数码管上显示一秒,可是程序编了很多遍,最后还是没有成功,所以我采用延时的方法,让数码管上的数字显示一秒再递减,我延时的方法如下:先送个位上的数到显示器,然后调用延时程序(用的是10ms的延时),再送上十位上的数到显示器,然
28、后再调用这个延时程序,因为这两个数一共要显示1秒钟时间,而我送上去只花了20ms,所以我用了一个循环显示程序,让它循环显示50次即可。这种方法没有采用定时器精确,不能用在较正式的场合。关于交通灯的设计,我认真查阅资料,比如说要了解89S52各个芯片的引脚功能,怎样使用这个可编程芯片并行接口芯片,在上学期理论学习的基础上,又下了一次苦功夫,算是明白了设计一个系统的过程,也让我体会到要成功的设计出某个东西,光靠专业知识是不够的,必须要系统的知识,无论在哪个方面都要有个明白的概念,知道哪些是需要的资料。对于这次的实物,我们采用的单面板制作,但是我们是做了两次才成功的,第一次的问题主要是线设置的比较细
29、,容易断掉,排列的比较紧,给人的感觉就是不美观,当我第二次再画PCB时,我就特意注意了这些细节,重新排了一下版,调整了元器件之间的距离,并加大了线的宽度,加大了焊孔的内外直径。虽然过程是辛苦的,但在这一个多星期的时间里我也学到了很多。并让我对单片机产生了更大的兴趣。 参考文献 李广弟,朱月秀.单片机基础M.北京:北京航空航天大学出版社,2007.100154 Li Guangdi, Zhu Yue-Xiu. Microcontroller-based M. Beijing: Beijing University of Aeronautics and Astronautics Press, 20
30、07.100 154 张毅坤.单片微型计算机原理及应用M.西安:西安电子科技大学出版社,1998.125130 ZHANG Yikun. Single Chip Microcomputer Principle and Application M. Xian: Xidian University Press, 1998.125 130 李光飞.单片机课程设计实例指导M.北京:北京航空航天大学出版社,2004.5563 Li Guangfei. Microcontroller examples to guide curriculum design M. Beijing Beijing Univer
31、sity of Aeronautics and Astronautics Press, 2004.55 63 谢自美.电子线路设计实验测试M.武汉:华中大学出版社,2006.242247 Xie Zimei. Electronic circuit design Experimental Test M. Wuhan: Huazhong University Press, 2006.242 247 李东生,张勇,许四毛.protel99s电路设计与应用M.北京:电子工业出版社,2004.78110 Li Dongsheng, Zhang Yong, Xu Simao. Protel99s circ
32、uit design and application M. Beijing: Electronic Industry Press, 2004.78 110 涨红润,马平安,张亚凡.单片机原理及应用M.北京:科学出版社,2002. 113118 Zhang Hongrun, Ma Pingan, Ya-who. Microcontroller Theory and Application M. Beijing: Science Press, 2002.113118致 谢经过近三个星期的设计,通过这次设计学会了分析问题、处理问题的方法,可以说达到了举一反三的目的。为以后工作、学习都打下了比较坚实的
33、基础。在此我要向我尊敬的王韧老师表示最衷心的感谢,让我系统学习了有关单片机知识,并能结合具体应用完成交通灯的课程设计。他严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;他循循善诱的教导和不拘一格的思路给予我无尽的启迪。同样我也很感谢和我一组的同学,也谢谢其他同学的帮助和支持。? 附 录附录一 电路原理图附录二 PCB图 附录三 元器件布局图附录四 交通灯元器件清单名称规格数量电阻2202电阻1K1电阻4.7K1电阻2001电解电容22F1陶瓷电容33pF2晶振12MHz1单片机待添加的隐藏文字内容3AT89S5212口插座CON2下载1按钮SW SPST4二极管NPN1二位一体共阳七段数码
34、显示器HS-3461AS11发光二极管普通发光二极管13附录五 程序清单本程序的相关设定: 显示器的设定:P0.0P0.1控制显示器的个位和十位的位选码 P1.0P1.7控制显示器的段选码按键的设定: P3.0P3.2控制交通灯的开启准备,返回准备,紧急事件状态A_BIT EQU 60H ;数码管个位数存放内存位置 B_BIT EQU 61H ;数码管十位数存放内存位置 TEMP EQU 62H ;计数器数值存放内存位置 ORG 0000H LJMP MAIN MAIN: MOV 79H, #11H ;程序开始 MOV 7AH, #10H;准备状态 MOV P2, #00H;交通灯全部灭 YY
35、: LCALL DIS;调用准备状态显示 LCALL KEY LJMP YY;无按键返回开始;#准备状态显示程序# DIS: MOV R0, #79H;显示程序 MOV R3, #01H MOV A, R3 LDD: MOV P0, A MOV A, R0 MOV DPTR, #TABLE MOVC A, A+DPTR DIR1: MOV P1, A LCALL DL ;延时1ms INC R0 MOV A, R3 JB ACC.1, LDD1 RL A MOV R3, A LJMP LDD LDD1: RET ;*延时1ms子程序* DL: MOV R5, #5 ;延时1ms程序 DDL1:
36、 MOV R6, #100 DDL2: DJNZ R6, DDL2 DJNZ R5, DDL1 RET ;%数据列表% TABLE: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H DB 80H, 90H, 88H, 83H, 0C6H, 0A1H, 86H, 8EH, 0FFH, 0CH ;#按键扫描子程序# KEY: MOV P3, #0FFH MOV A, P3 ANL A, #0FFH CPL A JZ EKEY ;A=00H时无键按下,A00H时有键按下 LCALL DEL10 ;去抖动,调用10ms延时程序 MOV A, P3 ANL
37、A, #0FFH CPL A JZ EKEY MOV B, A KEY2: MOV A, P3 ANL A, #0FFH ;判键是否释放 CPL A JNZ KEY2 LCALL DEL10 MOV A, B CPL A YY2: JNB ACC.0, PKEY1 ;k1键按下 JNB ACC.1, PKEY2 ;k2键按下 JNB ACC.2, PKEY3 ;K3键按下 EKEY: RET ;*按键2的功能* PKEY2: LJMP MAIN ;*按键3的功能* PKEY3: MOV TEMP, #10 ;初始化计数器,从10开始 MOV P2, #00H SETB P2.2 SETB P2
38、.5 JINJI: MOV R0, #12 LCALL DISPLAY1 DEC TEMP ;对计数器减1 MOV A, TEMP CJNE A,#0, JINJI ;判断计数器是否满0? MOV R0, #12 LCALL DISPLAY1 MOV P2, #00H LCALL MAIN ;*按键1的功能* PKEY1:MOV TEMP, #55 ;初始化计数器,从60开始 SETB P2.0 ;南北方向红灯亮 SETB P2.5 ;东西方向绿灯亮 STLOP1: MOV R0, #12 ACALL DISPLAY1 ;调用显示子程序 DEC TEMP ;对计数器减1 MOV A, TEMP ; CJNE A,#0, STLOP1 ;判断计数器是否满0? CLR P2.0 ;南北方向红灯灭