课程设计(论文)-基于51单片机的交通灯控制设计.doc_第1页
课程设计(论文)-基于51单片机的交通灯控制设计.doc_第2页
课程设计(论文)-基于51单片机的交通灯控制设计.doc_第3页
课程设计(论文)-基于51单片机的交通灯控制设计.doc_第4页
课程设计(论文)-基于51单片机的交通灯控制设计.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

皖 西 学 院课程设计报告系 别: 机电学院 专 业: 学 生 姓 名 : 学号: 课程设计题目: 基于51单片机的交通灯控制设计 起 止 日 期 : 06月13日06月25日 课程设计地点: 指 导 教 师 : 目录1 概述31.1 设计的意义31.2 设计的思想31.3 设计满足的基本功能42 系统方案及硬件设计42.1 系统方案的确定42.2 显示部分电路设计42.3 时钟部分电路设计52.4 复位部分电路设计63 软件设计73.1 应用系统软件设计要求73.2 主程序模块的设计73.3 功能实现模块的设计83.4 延时程序模块的设计84 proteus软件仿真84.1 具体仿真结果显示85 课程设计体会9参考文献9附1: 源程序代码10附2: 系统原理图15摘要:本设计是关于单片机控制的交通灯模拟系统的设计。主要内容有交通灯模拟系统设计方案,主要功能,各功能模块的介绍,电路设计,硬件部分设计,软件部分设计,模拟系统的仿真调试,设计方法以及课程设计的心得体会等等。该设计中用光二极管来模拟信号灯。要求使at89s51定时/计数器0作为定时器,要求对通行时间进行倒计时,从p0 口输出,在led上显示并进行递减,以此来实现十字路口交通灯的指示功能。为了节省元件,使仿真图看起来一目了然,复位部分采用加电直接复位。根据交通灯系统所需要实现的功能要求,先画出程序部分的流程图和主程序流程图,然后根据流程图写出其子程序。从而通过模拟系统的仿真来实现该设计所要求的功能。本系统由单片机系统、键盘、led 显示、交通灯演示系统组成。最后,系统要求实现如下的交通灯的功能:1)东西方向(主干道)车道和南北方向(支干道)车道两条交叉道路上的车辆交替运行,主干道每次通行时间都设为80秒、支干道每次通行间为60秒,时间可设置修改。2)在绿灯转为红灯时,要求黄灯先亮3秒钟,才能变换运行车道;关键字 : 单片机 交通灯系统 led显示 1概述1.1设计意义交通的发达,标志着城市的发达,相对交通的管理则显得越来越重要。交通灯是城市交通中的重要指挥系统,它与人们日常生活密切相关随着人们生活水平的提高,对交通管制也提出了更高的要求,因此提供一个可靠、安全、便捷的多功能交通灯控制系统有着现实的必要性。对于复杂的城市交通系统,为了确保安全,保证正常的交通秩序,十字路口的信号控制必需按照一定的规律变化,以便于车辆行人能顺利地通过十字路口。单片机自问世以来,性能不断提高和完善,其资源又能满足很多场合的应用,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、性能可靠、价格低廉,其易于产品化、抗干扰能力强、可在各种恶劣环境下可靠的工作等特点。特别是它强大的面向控制能力,使它在工业控制领域,智能仪表、外设控制、家用电器、机器人、军事装置等方面得到了广泛的应用。考虑到单片机具有物美价廉、功能强、使用方便灵活、可靠性高等特点,拟采用mcs - 51系列的单片机来实现十字路口交通信号灯的控制。 正常情况下,十字路口的红绿灯应交替变换,考虑紧急情况下,如有救护车或警车到来时,应优先让其通过。另外,单片机课程设计是电气自动化本科学生的必修课程。通过交通灯模拟系统的设计可以进一步认识单片机在控制系统中的重要性。在完成理论学习和必要的实验后,学生掌握了单片机的基本原理和各种基本功能的应用,但对单片机的硬件实际应用设计和单片机完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。交通灯模拟系统的课程设计既让学生巩固了课本学到的理论,还让学生学习了单片机硬件电路设计和用户程序设计的整个过程,同时学习了查阅资料、参考资料的方法。单片机的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试用户程序,来加深对单片机的认识,充分发挥学生的个体创新能力。1.2 设计的思想该设计在熟练掌握单片机及其仿真系统的使用方法基础上,综合应用单片机原理、微机原理、微机接口技术等课程方面的知识,设计一个采用at89s51单片机控制的交通灯控制电路。根据设计功能及要求,我们可得系统的原理框图如图所示。上电复位电路89s51数据信号led数码管段码调时电路振荡电路片选交通灯根据系统的原理框图,分别分析各部分电路的元器件的功能以及选择合适的元件。具体设计思路如下:收集并整理资料,硬件设计,软件设计,proteus仿真,设计体会与总结。1.3 设计满足的基本功能1)东西方向(主干道)车道和南北方向(支干道)车道两条交叉道路上的车辆交替运行,主干道每次通行时间都设为80秒、支干道每次通行间为60秒,时间可设置修改。2)在绿灯转为红灯时,要求黄灯先亮3秒钟,才能变换运行车道;2 系统方案及硬件设计2.1 系统方案的确定交通灯在安全行车过程中起着十分重要的作用,现在交通灯一般设在十字路口,在醒目位置用红、绿、黄三种颜色的指示灯, 加上一个倒计时的显示计时器来控制行车, 对于一般情况下的安全行车、车辆分流发挥着作用, 但根据实际行车过程中出现的情况, 如何全面有效地利用交通灯指示交通情况,我们尝试用单片机来控制交通灯,在软、硬件方面采取一些改进措施,,使交通灯在控制中灵活而有效。硬件系统是指构成单片机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。该交通灯拟系统的硬件部分主要由键盘、显示和运算部分组成。按照题目的设计要求,本课题需要使用led数码管显示和扩展 键盘。在该交通灯系统的设计中采用at89s51单片机。2.2 显示部分电路设计led显示器有两中工作方式:静态显示方式和动态显示方式。静态显示的特点是每个数码管必须接一个8位锁存器用来锁存待显示的字型码。送入一次字型码显示自行一直保持,直到送入新字型码为止。这种方法的优点是占用cpu时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。各数码管在显示过程中持续得到显示信号,与各数码管接口的i/o口是专用的。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。各数码管在显示过程中轮流得到显示信号,与各数码管接口的i/o口是共用的。该设计采用如下所示的数码管,分别显示南北和东西灯的剩余时间。片选部分和数码段显示部分,分别接单片机管脚的p2口和p0口。其中,a到g为码段控制端口,1,2为片选端口。2.3 时钟部分电路设计 时钟电路用于产生mcs-51单片机工作时所必须的时钟控制信号。其内部电路在时钟信号控制下,严格地按时序执行指令进行工作。在执行指令时,cpu首先要到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定操作。本设计采用12mhz晶振和两个33pf瓷片电容,他们构成一个稳定的自激振荡器。该电容的大小影响振荡器频率的高低、振荡器的稳定性和起振的快速性。为单片机提供标准时钟。其中两个瓷片电容起微调作用。 如图所示:时钟电路2.4 复位部分电路设计复位引脚rst通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的s5p2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。 复位电路通常采用上电自动复位和按钮复位两种方式。该设计采用加电直接复位,复位电容采用10uf,电阻10000欧,为了节省元件,没有采用上电加按键模式。加电瞬间,res管脚为高电平。通过电阻回路放电,使电压逐渐降为零,从而实现了复位功能。其连接图如下图所示: 复位电路3 软件设计3.1 应用系统软件设计要求在进行应用系统的总体设计时,软件设计与硬件设计应统一考虑,相结合进行。当系统的电路设计定型以后,软件的任务也就明确了。一般来说,软件的功能可分为两大类。一类是执行软件,它能完成各种实质性的功能,如测量计算、显示、打印、输出控制等;另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织协调角色。我们设计时,应从以下几个方面考虑:1)根据软件功能的要求,将系统软件分为若干个相对独立的部分。设计出合理的软件总体结构,使其清晰、简捷、流程合理。2)各功能程序实行模块化、子程序化。3)在编写应用软件之前,应绘制出程序流程图。 4)要合理分配系统资源,包括rom、ram、定时器/计数器、中断源等。 本设计采用了模块化设计,主要由主程序模块、功能实现模块两大部分模块组成。3.2 主程序模块的设计主程序流程图如下图a所示:该交通信号灯控制系统的四中工作状态(东西方向的交通灯为例):(1)东西方向a车道绿灯亮,南北方向b车道红灯亮。表示南北方向b车道上的车辆禁止通行,东西方向a车道允许通行。绿灯亮足规定的时间隔时,控制器发出状态信号,转到下一工作状态。(2)东西方向a车道黄灯亮,南北方向b车道红灯亮。表示东西方向a车道上未过停车线的车辆停止通行,已过停车线的车辆继续通行,南北方向b车道禁止通行。黄灯亮足规定时间间隔时,控制器发出状态转换信号,转到下一工作状态。(3)东西方向a车道红灯亮,南北方向b车道绿灯亮。表示东西方向a车道上的车辆禁止通行,南北方向b车道允许通行,绿灯亮足规定的时间间隔时,控制器发出状态转换信号,转到下一工作状态。(4)东西方向a车道红灯亮,南北方向b车道黄灯亮。表示东西方向a车道禁止通行,南北方向b车道上未过限停车线的车辆停止通行,已过停车线的车辆继续通行。黄灯亮足规定的时间间隔时,控制器发出状态转换信号,系统又转换到第(1)种工作状态。控制灯程序流程图如下:置a道放行标志0f0a道放行时间送 r4缓冲3?a道亮绿灯,b道亮红灯a道黄灯b道红灯b道亮绿灯a道亮红灯b道黄灯a道红灯b时间已走完?a已走完?缓冲3?3.3 延时程序模块的设计延迟程序块是要生成一定的是时间延时,这在数码管显示模块中会用到延迟程序,以满足足动态扫描时数码管的闪亮能产生视觉效果。4 proteus软件仿真4.1 proteus软件系统仿真如硬件系统图所示接线,图中,在十字路口的红,黄,绿交通灯中a道的两组同色灯连在起,b上的也互联,受mcs-51的p1.0-p 1.5控制。打开keil软件调试环境,把已经编好的程序输入,保存为“.asm”格式的,然后编译,系统自动生成“.hex”文件。设置好仿真器后,编译程序无误后调试执行程序,结果显示符合要求。具体仿真结果见protues里仿真图形。5 课程设计体会这次课程设计经过一个假期的反复琢磨与修改,终于完成了。从查资料,整理资料到读程序,写程序,改程序,仿真直至通过老师的验收,一切都充满了刻苦与艰辛,其间充满了挫折可是同时又伴随着欢乐。令我感触最深的就是同学们倾心的帮助,由于我的单片机原理与应用技术学的并不是很好,所以对某些知识点并不是很清楚,可是同学们总是不厌其烦的给我一遍又一遍的讲解,直到我弄清楚为止!他们的知识阅历另我打开眼界,他们的无私精神更另我感动不已!另外,在重复修改与设计的过程中,我又重新把单片机原理与应用技术这本书仔细的看了一下,弄懂了一些以前一知半解的东西,进一次加强和巩固了我的理论知识。在此次课程设计过程中,我把单片机的理论知识用于实践中,使理论与实践相结合,使我的理论知识的到了巩固,在查资料翻阅资料的过程中也丰富了我的知识跟阅历。参考文献 1 张毅刚.新编mcs-51单片机应用设计(第3版).哈尔滨工业大学出版社,2006 2 马家辰.mcs-51单片机原理及接口技术(修订版)哈尔滨工业大学出版社民2001 3 何立民.mcs-51系列单片机应用系统设计. 北京:北京航空航天大学出版社1990 4侯玉宝,基于protues的51系列单片机设计与仿真. 北京:电子工业出版社 2009附1 源程序代码 ;.数字显示代码. org 0100h tab: db 3fh,6h,5bh,4fh,66h,6dh,7dh,7h,7fh,6fh;主程序 org 0300h main: mov 26h,#80 ; 东西通行时间初始值,存到26h单元 mov 25h,#60 ; 南北通行时间初始值,存到25h单元 mov sp,#40h ; 堆栈选址 clr p3.0 ; mov tmod,#66h ; t0、t1都计数方式,工作模式2 ,启动方式tri确定 mov tl0,#255 ; 计数器0初值 低8位 mov th0,#0 ; 计数器0初值高8位 mov tl1,#255 ; 计数器1初值 低8位 mov th1,#0 ; 计数器1初值高8位 setb it0 ; 外部中断一边沿触发 setb it1 ; 外部中断二边沿触发 mov ie,#8fh ; 开中断 setb tr0 ; t0开始计数 setb tr1 ; t1 开始计数;.东西绿灯南北红灯 . dxld: clr p3.0 ; mov r3,26h ; 东西通行80秒 (26h)=80, (dxld即东西绿灯) dxld1: mov p2,#33h ; 点亮东西绿灯南北红灯 mov 24h,r3 ; 为东西方向显示时间做准备 mov a,r3 ; add a,#3 ; 黄灯的时间差 mov 23h,a ; 为南北方向显示时间做准备 lcall disp3 ; 时间显示 ,其中有0.5秒延时 lcall disp3 ; 凑够1秒时间 djnz r3,dxld1 ; 判断80秒是否已完;.南北红灯东西黄灯闪.shanhd1: mov r2,#3 ; 转入黄灯闪亮3秒 hd1: mov 22h,r2 ; 为显示做准备 mov p2,#2bh ; 点亮南北红灯东西黄灯 lcall disp2 ; 显示时间,并延时0.5秒 mov p2,#3bh ; 点亮南北红灯关闭东西黄灯 lcall disp2 ; 显时,且再延时0.5秒以便凑够1秒 djnz r2,hd1 ; 判断5秒是否到,若未到继续闪灭东西黄灯 ajmp nbld; .南北绿灯东西红灯. nbld: clr p3.0 ; mov r1,25h ; 南北通行时间60秒(25h)=60,(nbld即东西绿灯) nbld1: mov p2,#1eh ; 点亮南北绿灯东西红灯 mov 20h,r1 ; 为南北方向显示时间做准备 mov a,r1 ; add a,#3 ; mov 21h,a ; 为东西方向显示时间做准备 lcall disp1 ; 显示通行所剩时间,其中有0.5秒延时 lcall disp1 ; 再次显示以便数码管不闪,且再延时0.4秒以便凑够一秒 djnz r1,nbld1 ; 判断30秒是否已完,若未完则从新显示、延时;.南北黄灯闪东西红灯.shanhd: mov r2,#3 ; 黄灯闪亮3秒 hd: mov p2,#1dh ; 点亮黄灯 mov 22h,r2 ; 为显示时间做准备 lcall disp2 ; 黄灯闪亮剩时显示 ,其中延时0.5秒 mov p2,#1fh ; 熄灭黄灯 lcall disp2 ; 显时,且再延时0.5秒以便凑够1秒 djnz r2,hd ; 判断5秒是否已完,若未完则从新闪灭、延时和显示 ; 主程序到此完 */ ;.延时程序. . delay: acall delay1 ; 10ms延时 acall delay1 ret delay1: mov r6,#50 ; 5ms延时 ,(5ms=50*50*2us) de6: mov r0,#50 de7: djnz r0,de7 djnz r6,de6 ret;.南北通行的时间显示子程序.(其中有0.5秒延时). disp1: mov p0,#0 ; 熄灭数码管 mov r7,#25 ; 以下调用四次5毫秒延时程序,故25*4*5毫秒=0.5秒 rp1: mov a,20h ; 南北方向要显示的时间移到寄存器a mov dptr,#tab ; 要显示的数字代码表首地址 mov b,#10 div ab ; 要显示的时间与10相除,求出十位和个位 movc a,a+dptr ; 找到十位的显示代码 mov p1,#00001110b; 选择南北数码管十位片 mov p0,a ; 送出十位显示代码 lcall delay1 ; 延时5ms以点亮数码管 mov a,b ; 把个位数移到寄存器a movc a,a+dptr ; 找到个位数显示代码 mov p1,#00001101b ; 选择南北数码管个位片 mov p0,a ; 送出个位数显示代码 lcall delay1 ; 延时5ms以点亮数码管 mov a,21h ; 东西方向要显示的时间移到寄存器a mov dptr,#tab ; 要显示的数字代码表首地址 mov b,#10 div ab ; 要显示的时间与10相除,求出十位和个位 movc a,a+dptr ; 找到十位的显示代码 mov p1,#00001011b; 选择东西数码管的十位片 mov p0,a ; 送出十位显示代码 lcall delay1 ; 延时5ms以点亮数码管 mov a,b ; 把个位数移到寄存器a movc a,a+dptr ; 找到个位的显示代码 mov p1,#00000111b ; 选择东西数码管的个位片 mov p0,a ; 送出个位显示码 lcall delay1 djnz r7,rp1 ; 是否已循环25次?(25次才够0.5秒) ret ;.黄灯的时间显示子程序. disp2: mov p0,#0 ; 熄灭数码管 mov r7,#25 ; 以下调用两次0.01秒延时程序,故25*0.02=0.5秒 rp2: mov a,22h ; 要显示的时间移到寄存器a mov dptr,#tab ; 要显示的数字代码表首地址 mov b,#10 div ab ; 要显示的时间与10相除,求出十位和个位 movc a,a+dptr ; 找到十位的显示代码 mov p1,#00001010b; 选择南北数码管十位片和东西数码管十位片 mov p0,a ; 送出十位显示代码 lcall delay ; 延时10ms以点亮数码管 mov p1,#00000101b ; 选择南北数码管个位片和东西数码管个位片 mov a,b ; 把个位数移到寄存器a movc a,a+dptr ; 找到个位数显示代码 mov p0,a ; 送出个位数显示代码 lcall delay ; 延时10ms一点亮数码管 djnz r7,rp2 ret ;.东西通行的时间显示子程序. disp3: mov p0,#0 ; 熄灭数码管 mov r7,#25 ; 以下调用两次0.01秒延时程序,故10*0.05=0.5秒 rp3: mov a,23h ; 要南北方向显示的时间移到寄存器a mov dptr,#tab ; 要显示的数字代码表首地址 mov b,#10 div ab ; 要显示的时间与10相除,求出十位和个位 movc a,a+dptr ; 找到十位的显示代码 mov p1,#00001110b; 选择南北数码管十位片 mov p0,a ; 送出十位显示代码 lcall delay1 ; 延时5ms以点亮数码管 mov a,b ; 把个位数移到寄存器a movc a,a+dptr ; 找到个位数显示代码 mov p1,#00001101b; 选择南北道数码管个位片 mov p0,a ; 送出个位数显示代码 lcall delay1 ; 延时5ms一点亮数码管 mov a,24h ; 要东西方向显示的时间移到寄存器a mov b,#10 div ab ; 要显示的时间与10相除,求出十位和个位 movc a,a+dptr ; 找到十位的显示代码 mov p1,#00001011b ; mov p0,a ; 送出十位显示代码 lcall delay1 ; 延时5ms以点亮数码管 mov a,b movc a,a+dptr mov p1,#00000111b ; 选择东西数码管个位片 mov p0,a ; 送出个位显示代码 lcall delay1 djnz r7,rp3 ret;.设定时间子程序.;根据哪个方向亮绿灯设定那个方向的通行时间,没有绿灯亮不能设定时间,中断;直接退出。; ./* int0: mov ie,#0 ; 关闭中断允许*/ mov a,p2 ; 读取交通灯状态 jnb acc.3,dxsj ; p2.3,dxsj ; dxsj(东西绿灯亮(p2.3=0)则设定东西通行时间 ) jnb acc.0,nbsj ; p2.0,nbsj ; nbsj (南北绿灯亮(p2.0=0)则设定南北通行时间 ) pop 28h ; pop 28h ; mov dptr,#nbld ; 如果不能调整时间(没有绿灯亮)则退出后从状态1开始,相当于复位。 push dpl ; push dph ; exit: mov ie,#8fh ; 恢复开中断 reti ; - - - - -南北通行时间设定 - - - - - nbsj: pop 28h ; pop 28h ; mov dptr,#nbld ; 此处设时为南北通行时间 push dpl ; 把断点换成南北绿灯(nbld)入口 push dph ; xssm1: mov a,25h ; 读取南北通行时间 mov 20h,a ; 为南北方向显示时间做准备 add a,#5 ; mov 21h,a ; 为东西方向显示时间做准备 lcall disp1 ; 显示时间 lcall delay1 mov a,p3 jnb p3.2,exit ; 判断有否按下设时确定按钮,若有则退出,若无接着判断加时和减时信号 jnb p3.3,jx ; 判断有否加时信号(p3.3所接按钮是否按下)若有跳转处理,无则扫描减时信号 jnb p3.5,jx1 ; 判断有否减时信号 ajmp xssm1 ; 从循环显示时间和扫描按键情况 jx: mov a,25h ; 读出之前设定的时间值(存储在25h单元) add a,#1 ; 在之前值基础上加1处理 mov 25h,a ; 回存到25h单元 mov 20h,a ; 为南北显示时间做准备 add a,#3 ; 黄灯时间 mov 21h,a ; 为东西方向显示时间做准备 lcall disp1 ; 显示处理后的时间值 ajmp xssm1 ; 从循环显示时间和扫描按键情况 jx1: mov a,25h ; 读出之前设定的时

温馨提示

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

评论

0/150

提交评论