ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:216.84KB ,
资源ID:7525155      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-7525155.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(交通信号灯模拟控制系统.docx)为本站会员(b****5)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

交通信号灯模拟控制系统.docx

1、交通信号灯模拟控制系统 哈尔滨工程大学课程设计任务书课程名称: 交通信号灯模拟控制系统 院: 电气工程学院 专 业: 电子信息工程 班 级: 电子101 学 号: 学生姓名: 指导教师: 职 称: 2013年7月10日一题目3二课程设计的性质和目的3三设计任务3四设计内容3五硬件电路图14六系统实现16七C语言程序代码22八汇编语言程序代码31九遇见的问题及解决办法31十课程设计心得体会32参考文献33 一、题 目:交通信号灯模拟控制系统设计二、课程设计的性质和目的 本课程设计的主要目的是通过对电子技术及单片机原理的学习,综合掌握电子电路综合设计的过程,设计要求和具体的设计方法。通过设计更好的

2、复习、理解模拟电子、数字电子和单片机等课程内容,使得理论和实际相结合,加强学生的动手能力以及查阅相关资料解决实际问题的能力,培养学生从事设计工作的整体观念。三、设计任务1、完成交通灯的变化规律,即一个十字路口为东西向和南北向,四个路口均有红黄绿三灯和两个LED数码显示管。交通灯上电以后进入初始状态即东西红灯,南北红灯。5s后转状态1:南北绿灯亮通车,东西红灯亮,禁止通行,持续30s;30s后转状态2:南北绿灯灭转黄灯闪亮,延时5秒,东西仍然红灯;5s后转状态3:东西绿灯亮通车,南北转红灯,持续30s;30s后转状态4:东西绿灯灭转亮黄闪灯,延时5秒,南北仍然红灯。最后循环至状态1。2、用8个L

3、ED数码管(各个方向均有两个LED数码管,分别表示个位和十位),显示倒计时。倒计时用于提醒驾驶员或行人信号灯发生改变的时间,以便他们在“停止”和“通行”两者作出合适的选择。3、在紧急状态下,通过K1键手动设置,将所有路口的灯变为红灯。四、设计内容1.设计思路工具使用AT89C51单片机控制四组数码管,12个发光二极管的亮暗,用pretues和keil软件进行仿真。硬件选取对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,所以只要用两组就行了,因此,采用单片机内部的I/O口上的P1口中的6个引脚即可来控制6个信号灯。 用延时程序进行状态的转换。信号灯状态

4、选取初始状态0:为东西绿灯亮,南北红灯亮;5s后转状态1:南北绿灯亮通车,东西红灯亮,禁止通行,持续30s;30s后转状态2:南北绿灯灭转黄灯闪亮,延时5秒,东西仍然红灯;5s后转状态3:东西绿灯亮通车,南北转红灯,持续30s;30s后转状态4:东西绿灯灭转亮黄闪灯,延时5秒,南北仍然红灯。最后循环至状态1。假设数码管为共阴极,0表示灯灭,1表示灯亮,列出交通灯的状态表如下: 交通灯状态表 状态 东 西 南 北说明 时间绿 黄 红绿 黄 红绿 黄 红绿 黄 红 00 0 10 0 10 0 10 0 1东西南北都红 5s10 0 10 0 11 0 01 0 0东西红南北绿 30s20 0 1

5、0 0 10 1 00 1 0东西红南北黄 5s31 0 01 0 00 0 10 0 1东西绿南北红 30s40 1 00 1 0 0 0 10 0 1东西黄南北红 5s2.软硬件介绍及其分配器件介绍 AT89C51AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。AT89C51的引脚图如下主要特性:与MCS-51 兼容 ;4K字节可编程闪烁存储器 ;寿命1

6、000写/擦循环数据保留时间10年;全静态工作0Hz-24Hz;三级程序存储器锁定;128*8位内部RAM;32可编程I/O线;两个16位定时器/计数器;5个中断源 ;可编程串行通道;低功耗的闲置和掉电模式;片内振荡器和时钟电路 管脚说明: VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻

7、的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址

8、数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输

9、入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MO

10、VX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

11、XTAL2:来自反向振荡器的输出。数码管工作原理2位8段数码管电路采用“共阴”连接,阴极公共端(COM)由晶体管推动。如图4-3所示:段码和位码,段码即段选信号 SEG,它负责数码管显示的内容,图中 ag、dp组成的数据(a 为最低位,dp 为最高位)就是段码。位码即位选信号 DIG,它决定哪个数码管工作,哪个数码管不工作。当需要某一位数码管显示数字时,只需要先选中这位数码管的位信号,再给显示数字的段码。LED显示中的发光二极管共有两种连接方法:a. 共阳极接法:把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不亮。

12、b.共阴极接法:把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地。这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不亮。 十进制数字形代码如下表: 十进制数字形代码表字型共阳极代码共阴极代码字型共阳极代码共阴极代码0C0H3FH990H6FH1F9H06HA88H77H2A4H5BHB83H7CH3B0H4FHCC6H39H499H66HDA1H5EH592H6DHE86H79H682H7DHF8EH71H7F8H07H灭FFH00H880H7FH 控制数码管驱动级的控制电路有静态式和动态式两类:a.静态驱动:它是指每个数码管都要用一个译码器译码驱动。b.动态驱动:它是

13、所的数码管使用一个专门的译码驱动器,使各位数码管逐个轮流显示,它的扫描速度极快,因此显示效果与静态驱动相同。采用动态数码管显示,可以大幅度地降低硬件成本和电源的功耗,因为某一时刻只有一个数码管工作,就是所谓的分时显示,显示所需要的硬件电路可分时复用。 发光二极管 用来显示亮灯情况 相关寄存器 与定时器/计数器相关的寄存器有定时器/计数器工作方式寄存器(TMOD)、定时器/计数器控制寄存器(TCON)。 a.定时器/计数器工作方式寄存器(TMOD),字节地址89H,不可进行位寻址。定时器/计数器工作方式寄存器(TMOD)的8位分为两组,高4位控制T1,低4位控制T0。TMOD每一位的功能如下。G

14、ATE:门控位。GATE0,仅由运行控制位TRX(X0,1)1来启动定时器/计数器运行;GATE1,由运行控制位TRX(X0,1)1和外部中断引脚上的高电平共同来启动定时器/计数器运行。C/T:定时器模式和计数器模式选择位。C/T0,为定时器模式;C/T1,为计数器模式。M1、M0:工作方式选择位。M1、M0的4中编码对应4种工作方式b.TCON为定时器/计数器的控制寄存器,字节地址为88H,可位寻址,TCON寄存器中与中断系统有关的各标志位的功能如下: TF1:片内定时器/计数器T1的溢出中断请求标志位。当启动T1计数器后,定时器/计数器T1从初值开始加1计数,当最高位产生溢出中断时,由硬件

15、使TF置1,向CPU申请中断。CPU响应TF1中断时,TF1标志由硬件自动清0,TF1也可由软件清0。 TF0:片内定时器/计数器T0的溢出中断请求标志位,功能与TF1类似。 IE1:外部中断请求1的中断请求标志位。 IE0:外部中断请求0的中断请求标志位。 IT1:选择外部中断请求1为跳沿触发方式还是电平触发方式。 IT1=0,为电平触发方式,加到INT1上的外部中断请求输入信号为低电平有效,并把IE置1。转向中断服务程序时,则由硬件自动把IE1清零。 IT1=1,为跳沿触发方式,加到INT1上的外部中断请求输入信号电平从高到低的负跳变有效,并把IE置1。转向中断服务程序时,则由硬件自动把I

16、E1清零。IT0: 选择外部中断请求0为跳沿触发方式还是电平触发方式,其意义与IT1类似。c.IE 中断允许寄存器AT89C51的CPU对各中断源的开放或屏蔽,是由片内的中断允许寄存器IE 所控制的,IE 中各位的功能如下;EA:中断允许总开关控制位。EA=0,所有的中断请求被屏蔽;EA=0,所有的中断请求被开放;ES:串行口的中断允许位;ES=0,禁止串行口中断;ES=1,允许串行口中断。ET1:定时器/计数器T1的溢出中断允许位。ET1=0,禁止T1溢出中断。ET1=1,允许T1溢出中断。EX1:外部中断1中断允许位。EX1=0,禁止外部中断1中断。EX1=1,允许外部中断1中断。ET0:

17、 定时器/计数器T0的溢出中断允许位。ET0 =0,禁止T0溢出中断。ET0=1,允许T0溢出中断。EX0:外部中断0中断允许位。EX1=0,禁止外部中断0中断。EX1=1,允许外部中断0中断。d.IP中断优先级寄存器PS:串行口中断优先级控制位。PS=1,串行口中断为高优先级。PS=0,串行口中断为低优先级。PT1:定时器T1中断优先级控制位。PT1=1,定时器T1中断为高优先级。PT1=0,定时器T1中断为低优先级。PX1:外部中断1中断优先级控制位。PX1=1,外部中断1中断为高优先级。PX1=0,外部中断1中断为低优先级。PT0:定时器T0中断优先级控制位。PT0=1,定时器T0中断为

18、高优先级。PT0=0,定时器T0中断为低优先级。PX0:外部中断0中断优先级控制位。PX0=1,外部中断0中断为高优先级。PX0=0,外部中断0中断为低优先级。软件构思交通灯的基本功能大致可分为两部分,一部分为信号灯的控制,另一部分为数码管时间的显示。另外还有通过按键来终止灯的显示。a.定时中断子程序:中断服务程序的主要功能是进行计时操作,设计一个以1秒为周期的中断子程序。流程图如下: 中断程序流程图void timer(void) interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; t0+; if(t0=20) t0=0; mu

19、n-; b.黄灯闪烁5s是通过延时程序来实现的,每1s闪烁一次。延时函数:void delay(unsigned char x) unsigned char i,j; while(x-) for(i=250;i0;i-) for(j=4;j0;j-); 显示黄灯闪烁的函数:do redzhu=0; display(mun); yellowzhu=yellowzhu; delay(120); while(mun!=0);C.按键按下时交通灯停止显示是通过中断程序来实现的。设按键是aj,P16,P17分别接到了数码管的片选端,P10至P15接发光二极管,所以当扫描到aj=0时,说明按键被按下,应该

20、置P1=0e4H;当扫描到aj恢复为1时,应返回断点,执行原来的程序,交通灯继续正常显示。void int1(void) interrupt 2 if(aj=0) while(1) P1=0xe4; if(aj!=0) break; 硬件分配P00至P06接数码管的十位位选端,P20至P26接数码管的个位位选端,P16至P17分别接十位和各位的片选端。P10至P16分别接发光二极管。二极管方向东西南北P1.2 P1.1 P1.0P1.5 P1.4 P1.3红 黄 绿红 黄 绿定时/计数器T0用来产生1秒的定时P10至P15分别接发光二极管。 3.元件清单及简介元件清单: AT89S51单片机

21、1个; 发光二极管(红绿黄) 各4个; 共阴极数码管 8个; 12MHz晶振 1个; 2K电阻 1个; 1K排阻 1个; 500排阻 1个; 30pF电容 2个; 22pF电解电容 1个; 按键 1个; 开关 1个; +5V电源 导线若干 五硬件电路图1.电路连接图仿真结果:六系统实现使用keil C 51编写程序;. 将编好的程序“.C”文件用Keil C 51转换成“.hex”文件;. 画出设计系统仿真图; 打开proteus7.5,将画好的仿真图载入,鼠标右击图中的51单片机选择“编辑属性”,在Program File中载入之前的“.hex”文件,再点击“调试”中的“开始”或点击软件左下

22、角的“”,即仿真开始运行; 观察运行现象是否与设计结果相符。七C语言程序代码#include#define port1 P0#define port2 P2sbit greenzhi=P10;sbit yellowzhi=P11;sbit redzhi=P12;sbit greenzhu=P13;sbit yellowzhu=P14;sbit redzhu=P15;sbit ws=P16;sbit wg=P17;sbit aj=P33;unsigned char mun=5,t0=0,a=1;unsigned char code tab=0x3F,0x06,0x5B,0x4F,0x66,0x6

23、D,0x7D,0x07,0x7F,0x6F;void init_timer0(void) TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; ET0=1; EA=1; TR0=1; EX1=1; IT1=0;void timer(void) interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; t0+; if(t0=20) t0=0; mun-; void display(unsigned char x) unsigned char i,j; i=x/10; j=x%10

24、; port1=tabi; ws=0; port2=tabj; wg=0;void init(void) P1=0x00; init_timer0();void int1(void) interrupt 2 if(aj=0) while(1) P1=0xe4; if(aj!=0) break; void delay(unsigned char x) unsigned char i,j; while(x-) for(i=250;i0;i-) for(j=4;j0;j-); void main() init(); while(a) display(mun); redzhu=1; redzhi=1;

25、 greenzhu=0; greenzhi=0; yellowzhu=0; yellowzhi=0; if(mun=0) a=0;mun=35;while(1) do display(mun); greenzhi=0; redzhi=1; greenzhu=1; redzhu=0; while(mun!=5); if(mun=5) redzhi=1; greenzhi=0; yellowzhi=0; redzhu=0; greenzhu=0; do redzhu=0; display(mun); yellowzhu=yellowzhu; delay(120); while(mun!=0); i

26、f(mun=0) mun=35; yellowzhi=0; yellowzhu=0; do display(mun); greenzhi=1; redzhi=0; greenzhu=0; redzhu=1; while(mun!=5); if(mun=5) greenzhi=0; yellowzhu=0; redzhu=1; do redzhi=0; display(mun); yellowzhi=yellowzhi; delay(120); while(mun!=0); if(mun=0) mun=35; yellowzhi=0; yellowzhu=0; 八汇编语言程序代码 ORG 0000H LJMP START ORG 0003H LJMP IINT0 ORG 0013H LJMP IINT1 ORG 0030HSTART: MOV SP,#6FH ;系统初始化 MOV 61H,#20H MOV 60H,61HLIGHT: SETB EA SETB EX0 SETB EX1 CLR IT1 CLR IT0 MOV P1,#0F3H ;东西红,南北绿,计时时间为30s MOV 60H,61HA1: MOV R1,#75A2: ACALL BCD ACALL DISPCLK DJNZ R1,A2 MOV A,60H MOV R0,60H ADD A,#99H DA A

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2