当前位置:首页 > 行业资料 > 交通运输 > 基于at89c51的交通灯设计
1/10河南职业技术学院毕业设计(论文)题目基于AT89C51的交通信号灯模拟控制系统系(分院)机械电工程系学生姓名郭景贤学号07115012专业名称电子信息工程技术指导教师王香丽2010年11月17日2/10基于AT89C51的交通信号灯模拟控制系统郭景贤摘要:通过总体设计交通灯原理接线图,综合应用单片机原理、微机原理、接口技术等方面的知识,结合单片机仿真机系统的使用方法,通过软硬件结合,使用89C51单片机来设计出符合要求的交通灯控制系统。完成由单片机AT98C51、LED灯、开关、部分电阻、电容及晶振组成的交通灯控制系统。关键词:单片机交通灯红绿灯LED一原件介绍:1.单片机简介:单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。其中89C51使我们目前较常用的一种型号.2.AT98C51主要引脚及功能:P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的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”时,它利用内部上拉优势,当对外部八位地址数据存储3/10器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2/INT0(外部中断0)P3.3/INT1(外部中断1)P3.4T0(记时器0外部输入)P3.5T1(记时器1外部输入)P3.6/WR(外部数据存储器写选通)P3.7/RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。单片机主控制电AT98C51外形及主要接口如下:4/10图一:AT98C51外形及主要接口图二、设计目的1、通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力。2、通过交通信号灯控制系统的设计,掌握定时/计数器的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。三、设计任务和要求任务:设计一个能够控制十二盏交通信号灯的模拟系统要求:利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用由P0.0~P0.7、P2.0~P2.3提供控制信号,实现如下控制过程,如图二所示。四、设计原理分析5/10图二:实现控制过程图三:十字路口1.首先了解实际交通灯的变化情况和规律。假设一个十字路口如上图所以,为东南西北走向。初始状态0为东西南北都LED灯全灭。然后转状态1南北绿灯通车,东西红灯亮。过30s后,转状态2,南北绿灯灭,黄灯闪5下,东西还是红灯。再转状态3,东西绿灯通车,南北红灯亮。过30s后转状态4,东西绿灯灭,闪几个黄灯,南北还是为红灯亮,一段时间后,又循环至状态1。控制引脚与灯的对应关系如下表1所示:表1控制引脚与灯的对应关系位置灯颜色控制引脚(字符名)北口红P0.3(BRD)黄P0.4(BYD)绿P0.5(BLD)南口红P2.1(NRD)黄P2.2(NYD)绿P2.3(NLD)东口红P0.0(DRD)黄P0.1(DYD)绿P0.2(DLD)西口红P0.6(XRD)黄P0.7(XYD)绿P2.0(XLD)2.通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。五软件设计编程人行道人行道人行道人行道北口、南口:红灯亮35s东口、西口:绿灯亮30s,黄灯闪动5s北口、南口:绿灯亮30s,黄灯闪动5s东口、西口:红灯亮35s6/101.软件设计基本思想:有定时器产生0.05s定时,软件计数得到秒信号,设30s计数器,30s计数器满,绿灯灭、黄灯闪烁5次,黄灯灭、红灯亮;同时,另两路口红灯灭、绿灯亮。总流程图如下图所示:NNYNN开始南北绿灯亮东西红灯亮30s计时器清030s时间到?南北黄灯闪5次闪完?30s计时器清05次闪完?30s时间到?南北红灯亮东西绿灯亮灯全灭东西黄灯闪7/102.系统资源占用分配:定时器T0工作在方式1,产生0.05s定时。P0口及P2口的低四位输出控制信号。30s计时器的地址为40H。3.程序清单如下:;====================================================;预定义部分;====================================================BRDEQUP0.3BYDEQUP0.4BLDEQUP0.5NRDEQUP2.1NYDEQUP2.2NLDEQUP2.3DRDEQUP0.0DYDEQUP0.1DLDEQUP0.2XRDEQUP0.6XYDEQUP0.7XLDEQUP2.0NHBBIT00H;南北红灯标志DHBBIT01H;东西红灯标志S30EQU40H;30s计数器BUFEQU41H;0.05s计数器;==================================================;初始化及主程序;==================================================ORG0000HLJMPMAINORG000BHJLMPT0LOCK;0.05s终端服务程序MAIN:MOVSP,#30H;堆栈指针ClRA;A=00HMOVBUF,A;0.05s计时器清0MOVS30,A;30s计时器请0MOVTMOD,#01H;定时器T0工作在方式1MOVTH0,#3CH;T0用于时钟定时,0.05s定时初值MOVTL0,#0B0HSETBEA;开中断8/10SETBET0SETBTR0;启动定时NOPMOVP0,#0FFH;四路口灯全灭MOVP2,#0FFHNOPDEN-0:CLRNLD;南绿灯亮CLRBLD;北绿灯亮CLRDRD;东红灯亮CLRXRD;西红灯亮MOVS30,#00H;30s定时器清0DEN-1:MOVA,#S30CJNEA,#30,DEN-1;不到30s等待SETBNLD;南绿灯灭SETBBLD;北绿灯灭MOVR1,#05H;闪烁次数计时器DEN-2:CLRNYD;南黄灯亮CLRBYD;北黄灯亮ACALLDEL05S;调用0.5s延时子程序SETBNYD;南黄灯灭SETBBYD;北黄灯灭ACALLDEL05S;调用0.5s延时子程序DJNZR1,DEN-2CLRNRD;南红灯亮CLRBRD;北红灯亮CLRDLD;东绿灯亮CLRXLD;西绿灯亮MOVS30,#00H;30s计数器清0DEN-3:MOVA,S30CJNEA,#30,DEN-3;不到30s等待SETBDLD;东绿灯灭SETBXLD;西绿灯灭MOVR1,#05H;闪烁次数计时器DEN-4:CLRDYD;东黄灯亮CLRXYD;西黄灯亮ACALLDEL05S;调用0.5s延时子程序SETBDYD;东黄灯灭SETBXYD;西黄灯灭9/10ACALLDEL05S;调用0.5s延时子程序DJNZR1,DEN-4LJMPDEN-0=====================================================T0中断服务程序======================================================T0CLOCK:MOVTH0,#3CH;重装初值MOVTL0,#0B7HPUSHPSWPUSHACCINCBUF;BUF+1MOVA,BUFCJNEA,#20,TCHU;累计20次为1sMOVBUF,#00H;1s到,计数器请0MOVA,S30;修改30s计时器INCAMOVS30,ACJNEA,#31,TUHU;计数器不到30s返回MOVS30,#00H;计数器超30s清0TUHU:POPACCPOPPSWRETI=====================================================0.5s延时子程序======================================================DEL05S:MOVTH0,#3CHMOVTLO,#0B7HPUSHPSWPUSHACCINCBUFMOVA,#10,TCHU;累计10次为0.5sMOVBUF,#00HRETI八、调试运行1、接硬件图接线,确保东西南北红黄绿灯能够对应显示。S/P区CLR接/SP插孔2从00BH单元开始连续运行,观察六个LED灯是否与交通显示情况对应,如果有偏差,则单步运行或断点运行,进行调试,直至满足设计要求。10/103整体运行,观察灯显示和时间显示是否都符合要求,如果不符合,则再调试。直至满足要求。九、设计心得体会通过单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新,是要我们学会将理论很好地联系实际,并不断地去开动自己的大脑,从为人类造福的意愿出发,做自己力所能及的,别人却没想到的事。使之不断地战胜别人,超越前人。同时,更重要的是,我在这一设计过程中,学会了坚持不懈,不轻易言弃。设计过程,也好比是我们人类成长的历程,常有一些不如意,也许这就是在对我们提出了挑战
本文标题:基于at89c51的交通灯设计
链接地址:https://www.777doc.com/doc-2568764 .html