单片机课程设计报告-交通灯模拟系统设计.doc_第1页
单片机课程设计报告-交通灯模拟系统设计.doc_第2页
单片机课程设计报告-交通灯模拟系统设计.doc_第3页
单片机课程设计报告-交通灯模拟系统设计.doc_第4页
单片机课程设计报告-交通灯模拟系统设计.doc_第5页
免费预览已结束,剩余19页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河南理工大学单片机课程设计报告交通灯模拟系统设计各项内容均要在横线的中央姓 名: 学 号: 专业班级: 自动化06-2 指导老师: 所在学院: 电气工程与自动化学院 2009年06月15日 河南理工大学本科课程设计报告 摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。本设计是交通灯用于十字路口的设计,是单片机控制的简易系统,结构很简单,我采用的是at89c52作为芯片,采用一些相应的简单外围电路都是书本上的,比如外围的时钟晶振电路,复位电路等等,在硬件电路的设计方面,主题思想是用一片单片机加上输出的led显示器和trafficlights作为输出结果,通过按键来控制交通灯的输出,采用一个中断作为特殊车辆的控制位,采用p1口作为输入控制口即a道和b道的控制口,其为双向io口同时作为交通灯的输出口,采用p0口作为led的输出口,但p0口做输出口时需要接上拉电阻,其显示的是红绿黄灯的切换时间,在软件程序的设计方面,本设计采用了c语言作为编辑语言,其结构简单,语言方便,实现起来比较容易,作为特殊车辆,采用的是外部中断0即int0作为它的控制口,我的程序大体的分为四部分,主程序和两个子程序即显示程序和延时程序,和一个宏定义。对于定时器,我采用了定时器0,主程序是一些程序的初始化比较简单,主要是开中断,开定时器和方式选择等等,遇到中断,和有按键按下就调用显示程序,程序的开始是宏定义,定义管脚的作用和名称,然后是延时程序中断程序和显示程序,在显示程序中字形码对应的是led的输出(其为共阴极显示),应该特别注意的是在理想电路设计中我没注意电阻和电容的选择,其不影响仿真输出,但在实际电路中电阻和电容如果选择不正确可能影响输出结果。在仿真电路中使用总线形式用来节省空间。关键词:at89s52 、交通灯、控制器目录1、概述- 3 -2、设计任务- 4 -21设计的任务- 4 -22设计要求- 4 -3、系统总体方案及硬件设计- 5 -总体设计方案:- 5 -电路设计方案:- 5 -3.1电源电路- 7 -3.3红黄绿灯显示电路- 8 -3.4按键控制电路- 9 -4、软件系统设计- 10 -4.1软件设计概述- 10 -4.2主函数的设计- 10 -5、 实验仿真- 15 -6、课程设计体会- 16 -参考文献- 17 -附1 源程序代码- 18 -附2 系统原理图- 23 -1、概述交通灯控制系统的结构框图如下图1所示。总体设计方案共有五个部分组成,分别是:单片机89c52、发光二极管电路、led数显电路、晶振及复位控制电路、控制与调时开关电路。在进行伟福仿真器调试过程中,程序运行正确,五个部分就同时工作,从而实现了交通灯的基本功能及调时功能。2、设计任务21设计的任务设计一个交通灯控制交通灯控制系统的设计22设计要求1. a道和b岛上均有车料要求通过时,a b道轮流放行。a道放行五秒钟(调试时改为五秒钟),b道放行四分钟(调试时改为四秒钟)。2. 一道有车而另一道无车(实验室用开关k0和k1控制),交通灯控制系统能立即让有车道放行。3. 有紧急车辆要求通过时,系统能禁止普通车辆通行,a b均为红灯,紧急车辆由开关k2开关控制。4. 绿灯转换为红灯时黄灯亮1秒。3、系统总体方案及硬件设计总体设计方案:1.分析交通管理 十字路口为南北走向与东西走向。需用到4组灯,每组要有红黄绿各一盏。初状态0为东西红灯,南北红灯。然后状态1东西绿灯通车,同时南北红灯暂停。延时一段时间之后,东西红灯、南北绿灯灭,同时黄灯闪几下。再转状态3,南北绿灯通车,东西红灯。过一段时间转状态4,南北绿灯、东西红灯灭,黄灯闪几秒。最后循环到状态1。(但由于实验箱上的端口有限,本实验只用了两组灯东、南方向)2本实验同时用了数码管显示红灯的时间倒计时。在红黄绿灯转换是用了黄灯闪烁来提示。3智能控制为了实现智能控制,本实验增加了一个功能,即在任何时候有外部环境影响一定时间时(本程序设计成40秒)时东西方向自动切换成红灯,而南北方向则切换成绿灯,或者反之。而这里的外部环境是如果南北方向绿灯,但没人通过1,而此时东西为红灯但等待通过的人很多0,如果这种状态保持一定时间(本程序设计成5秒)则两通行方向状态自动转换,由于实验设备有限本实验用两个开关来作为外不状态的控制。4资源的分配东、南方向的绿黄红灯分别接单片机的p1.0p1.6。电路设计方案:交通灯总体设计电路如书后附图所示,该图是利用protel 99画图工具绘制出来的接线图。系统上电之后,南北路处于禁止通行的状态,东西路处于允许通行的状态。南北路亮红灯时,东西路亮绿灯;南北路亮绿灯时,东西路亮红灯。南北路亮红灯时,东西路亮绿灯;当绿灯时间减完之后,东西路换为黄灯,南北路仍为红灯。这样东西路与南北路的时间同时减完。减完之后,东西路换为红灯,南北路换为绿灯,再经过一个绿灯时间,南北路换为黄灯,东西路仍为红灯。这时东西路与南北路时间相同,同时减完。减完后,南北路为红灯,东西路为绿灯。如此循环下去。利用89c52单片机控制交通灯系统工作。其中p0口接数据输出口,与外部数码管连接,p2口与数码管的com口连接,用于选择数据输出的地址,这样就可以实现时间的动态显示,并且节省了端口数。p1口作为红黄绿灯的控制口,通过上拉电阻将红黄绿灯的正极接高电平,负极接在p1口上,我们可以利用控制单片机的p1口的输出数据控制红黄绿灯的亮灭。调时可以利用外部中断int0申请中断。当int0为低电平时,单片机的pc指向int0的中断入口地址,从而转向中断服务程序。此时我们可以通过判断外部开关量的状态来对红黄绿灯的显示时间进行修改。同时当int0为低电平时,东西南北方向的都送红灯亮,实现紧急情况下禁止通行。然后通过判断int0的状态来决定中断是否返回,当int0为低电平时,说明开关又一次按下,这是退出中断服务程序,继续执行主程序。3.1电源电路电源电路有传统的变压器电路和开关电源组成。电源电路是最基本,最必须的电源部分安装,任何电路都离不开电源部分,单片机系统也不例外,而且我们应该高度重视电源部分,不能因为电源部分电路比较简单而有所忽略,其实有将近一半的故障或制作失败都和电源有关,电源部分做好才能保证电路的正常工作。at89c52实验开发板提供了一个6-9v伏400毫安的外接交流电源,通过整流滤波稳压电源输出的直流电压通过专门的电源插座把直流电压引入实验开发板,左边两个是5伏的电源滤波电容,一般大电容旁边并联一个小电容的目的是降低高频内阻,因为大的电解电容一般采用卷绕工艺制造,所以等效电感较大,小电容可以提供一个小内阻的高频通道,降低电源全频带内阻。通过三端稳压芯片7805稳压成5伏直流电源提供给单片机系统使用,右边两个电容是5伏电源的滤波电容,电阻和绿色的led组成5伏电源的工作指示电路,只要电源部分正常,绿色的led1就会点亮,我们可以根据这个led来判断整个电源部分是否工作正常。这个在实际电路中常常见的3.2晶振电路mcs-52单片机单片机内部的振荡电路是一个到增益反相放大器,引线 xtal1和xtal2分别为 反向振荡放大器的输入及内部时钟工作电路的输入和来自反向振荡器的输出,该反向放大器可以配置为片内振荡器。单片机内部虽然有震荡电路,但要形成成时钟,外部还需要附加电路。石晶振荡和陶瓷振荡均可采用.有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。51单片机的时钟产生方式有两种,分别为:内部时钟方式和外部始终方式。利用其内部的震荡电路xtal1和xtal2引线上外接定时元件,内部震荡电路便产生自激震荡,用示波器可以观察到xtal2输出的时钟信号。在mcs-51单片机一般常用内部时钟方式,也就是在xtal1和xtal2之间连接晶体震荡器与电容构成稳定的自激震荡器。3.3红黄绿灯显示电路红黄绿灯显示电路如下图5所示。二极管的正极通过上拉电阻接+5v的电源vcc,负极分别接89c52单片机的外部接口p1.0、p1.1、p1.2、p1.3、p1.4、p1.5口,我们可以通过控制单片机p1口的数据输出来控制二极管的亮灭。例如为p1口送值为#0deh,则南北红灯亮禁止通行,东西绿灯亮允许通行。南 北vccp1.2p1.3p1.4p1.5p1.6p1.7东 西数码管只要是用于数字的显示。数码管有共阴和共阳的区分,单片机都可以进行驱动,但是驱动的方法却不同。两位数码管循环电路是由1k的电阻和数码管组成,电源+5v通过560的电阻直接给数码管的7个段位供电,p00-p07对应了两个接数码管的a,b,c,d,e,f,g和小数点位,p21-p24接显示个位数的数码管的3、8引角,当相应的端口变成低电平时,驱动相应的三极管会导通给数码管相应的位供电,这时只要p0口送出数字的显示代码,数码管就能正常显示需要的数字。实验电路开始工作时,七段数码管开始从红灯和绿灯时间倒计时,计时起始信号由主控电路给出,定时结束信号也输入到主控芯片,由主控芯片启、闭三色信号灯或启动另一计时电路。在这里正确的程序是核心,应该完成一个时序电路的工作。其状态表(1)为:南北路东西路绿灯红灯黄灯红灯绿灯黄灯 表13.4按键控制电路 按键控制电路是本设计的应急措施,当有紧急车辆通过时,按下相应的按键可以控制道路的交通状态4、软件系统设计4.1软件设计概述该交通灯控制系统的软件系统主要是用c编的单片机程序,在程序中嵌套使用了汇编语言。在程序中设一个计数器,当从0计至两个红灯时间时,为一个周期,对其清零,从新下一个周期。从图上也可以看出,在一个周期内,有四个特殊时间点,这四个特殊时间点是需要换向的,当计数器里的数和四个特殊点相同时,说明至少有一路信号被减到0,需要重新对数据区送数,而且还要把红绿灯的状态换一下 在处理按键时,因为按键的一次动作不仅包含按下,还包含弹开,所以在处理按键,我不仅考虑按下,还考虑弹开,当可靠按下,一边调显示子程序,一边等待键松开,当可靠松开后,才退出子程序。这样每按下一次键只会有一次动作,而且就是键被按下不松开,也不会也现数码管没有显示的现象4.2主函数的设计该软件的主程序采用外部0中断方式,其流程图如下图所示,主函数见附1。 中断程序保护现场开中断延时关中断恢复现场开中断南北或东西通行中断返回关中断开始程序初始化东西绿灯南北红灯延时5秒东西黄灯南北绿灯延时1秒东西红灯南北绿灯延时4秒东西红灯南北黄灯延时1秒在该主函数中,为了减小定时误差,采用汇编语言进行初始化外部0中断。其初始化语句如下:intt0: push a push psw a1: jnb p3.5 , ints jnb p3.6 , ew jnb p3.7 , ns jnb p3.0 , a2 ljmp a1 ints: mov p1, #11011011b mov 44h, #00h mov 45h, #00h lcall disp jnb p3.5 , ints ljmp a1 ew: mov p1, #01111011b mov 44h, #00h mov 45h, #00h lcall disp jnb p3.6, ew ljmp a1 ns: mov p1, #11001111b mov 44h, #00h mov 45h, #00h lcall disp jnb p3.7 , ns ljmp a1 a2: pop psw pop a ljmp start reti intt1: push a push psw mov p1, #11011011b mov 40h,#00h mov 42h,#00h mov 44h, #00h mov 45h,#00h mov 63h,#00h a3: lcall disp jnb p3.5, ewblue jnb p3.6, yellowplus jnb p3.7, nsblue jnb p3.0, x1 ljmp a3 x1: ljmp jend ewblue: mov 44h,40h mov 45h,40h lcall disp mov a, 40h inc a mov 40h,a cjne a, #30h, ddd mov 40h, #0h mov a, 40h add a,42h mov 43h ,a ddd: mov 44h, 40h mov 45h, 40h lcall disp jnb p3.0, x1 jnb p3.6, yellowplus jnb p3.7, nsblue jnb p3.5, ddd ljmp a3 yellowplus: mov 44h, 42h mov 45h, 42h lcall disp mov a, 42h inc a mov 42h,a mov a, 42h cjne a, #0ah, ddd1 mov 42h, #0h ddd1: mov 44h,42h mov 45h,42h lcall disp jnb p3.0, x2 jnb p3.5, ewblue jnb p3.6, ddd1 jnb p3.7, nsblue ljmp a3 x2:ljmp jend nsblue: mov 44h,63h mov 45h,63h lcall disp mov a, 63h inc a mov 63h,a mov 61h,a cjne a, #30h, ddd2 mov 63h, #0h mov 61h,#00h ddd2: mov 44h, 61h mov 45h, 63h lcall disp jnb p3.0, jend jnb p3.6, yellowplus jnb p3.7, ddd2 jnb p3.5, x3 ljmp a3 x3:ljmp ewblue jend: pop psw pop a ljmp start reti5、 实验仿真图1 东西显示红灯,南北显示绿灯图2 南北显示红灯,东西显示绿灯6、课程设计体会 通过这一周的单片机课程设计,我学到了许多知识,由于单片机学习并不是很好,只好选择用c语言做课程设计,初做程序,里面有好些错误,经过查阅质料和寻求同学的帮助一一解决了这些问题。在设计过程中和完成之后,我认真总结,有以下体会:1此次课程设计是在上学期单片机原理及技术的基础上进行的,整个实验设计过程相对比较熟悉,是把以前学习的零碎的内容系统的学习。2本实验的难点在与显示部分、计时部分、外加功能部分。其中显示用了串行口的知识,而计时则完全用定时器计时。3程序调试时,应该将各个功能的子程序、模块单独调试,提高调试的速度。4本实验要充分了解交通灯的实际运行规则,依照现实生活的应用进行设计。5. 在经过一周的设计过程中,通过大量的查阅资料,认真研究教材,并向指导老师请教很多问题,自己对单片机有了更为深刻的理解。我认真研究原理,画出程序流程图,通过源程序,做出电路图,在仿真中发现很多问题,通过仔细研究,不但解决了问题,我也学到了在平时的学习中学不到的东西。参考文献1余发山单片机原理及应用技术中国矿业大学出版社2003年12月第一版.2谭浩强c程序设计(第二版)清华大学出版社1999年12月.3彭小军用单片机实现电子时钟新余高等专科学报,20044黄正谨综合电子设计与实践东南大学出版社2002-35高峰. 单片机应用系统设计及实用技术,北京机械工业出版社,2004附1 源程序代码 org 0000h ljmp main org 0003h ljmp int0 org 000bh ljmp time0 org 0013h ljmp int1 org 0040h main: mov sp, #70h mov 40h, #20h ; 东西绿灯显示时间 mov 41h, #20h ; 南北绿灯显示时间 mov 42h, #06h ;黄灯闪烁时间 start: mov a, 41h add a, 42h mov 43h, a ;红灯时间 mov tmod, #01h ;开始正常工作状态 mov th0, #3ch mov tl0, #0b0h ;定时50ms setb ea ; 开始计时 setb et0 ; 开t0中断 setb tr0 ; 启动定时器t0 setb ex0 setb int0 setb int1 setb ex1status1: mov p1, #01111011b ;东西绿灯,南北红灯 mov 44h, 40h mov 45h, 43h j11: mov r4, #14h j0: lcall disp mov a, r4 jnz j0 dec 44h dec 45h mov a, 44h jnz j11status2: ;东西黄灯闪,南北红灯亮 mov p1, #10111011b mov r3, 42h j22: mov 44h, r3 mov r4, #0ah j20: lcall disp mov a, r4 jnz j20 mov p1, #11111011b mov r4, #0ah j21: lcall disp mov a, r4 jnz j21 mov p1, #10111011b lcall disp dec 44h dec 45h djnz r3, j22 status3: ; 东西红灯,南北绿灯 mov p1, #11001111b mov 44h, 43h mov 45h, 41h j31: mov r4, #14h j30: lcall disp mov a, r4 jnz j30 dec 44h dec 45h mov a, 45h jnz j31status4: ; 东西红灯亮,南北黄灯闪 mov p1, #11010111b mov 45h, 42h j42: mov r4, #0ah j40: lcall disp mov a, r4 jnz j40 mov p1, #11011111b mov r4, #0ah j41: lcall disp mov a, r4 jnz j41 mov p1, #11010111b lcall disp dec 44h djnz 45h, j42 jmp start ret disp: mov a, 44h ;显示 mov b, #0ah div ab mov 46h, a mov 47h, b mov a, 46h mov dptr, #tab movc a, a+dptr mov 46h, a mov a, 47h mov dptr, #tab movc a, a+dptr mov 47h, a mov a, 45h mov b, #0ah div ab mov 48h, a mov 49h, b ;46h,47h 东西显示的十位、个位 mov a, 48h mov dptr, #tab movc a, a+dptr mov 48h, a mov a, 49h mov dptr, #tab movc a, a+dptr mov 49h, a mov p0, 46h mov p2, #11110111b lcall delay mov p2, #0ffh mov p0, 47h mov p2, #11111011b lcall delay mov p2, #0ffh mov p0, 48h mov p2, #11111101b lcall delay mov p2, #0ffh mov p0, 49h mov p2, #11111110b lcall delay mov p2, #0ffh reti delay: mov r7, #06h here: djnz

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论