华东交通大学单片机课设目录第一章设计说明………………………………………………………31.1设计内容…………………………………………………31.2主要设备与器材…………………………………………………………31.3设计要求………………………………………………………3第二章硬件方案………………………………………………………32.1设计思路…………………………………………………………32.2原理电路图………………………………………………………32.3主要元件功能说明………………………………………………42.3.18255A的主要功能……………………………………………52.3.2ADC0809的主要功能…………………………………………52.4工作原理阐述……………………………………………………5第三章软件方案………………………………………………………3.1分析论证…………………………………………………………63.2程序流程图……………………………………………………63.3交通灯硬件线路图……………………………………………………63.2交通灯主程序………………………………………………………7第四章设计总结……………………………………………………20参考文献………………………………………………………………20华东交通大学单片机课设3第一章设计说明1.1设计内容设计用单片机控制的十字路口交通灯及撞红灯报警控制系统,并实现这些功能。1.2主要设备与器材计算机、51单片机最小系统板、并行接口芯片8255A一片或8155(自选),发光二极管红、绿、蓝各4只,2只LED数码管,显示时间秒,ADC0809一片)其他器件任选。1.3设计要求(1)设计接口电路,将这些外设构成一个简单的单片机应用系统,画出接口的连接图。1、(2)编写程序实现下列功能:用红、绿、黄三支共两组发光二极管表示交通信号灯,利用单片机模拟有时间显示的定时交通信号灯控制管理。信号灯的变化规律可如下:①放行线:绿灯亮放行25秒,黄灯亮警告5秒,然后红灯亮禁止。②禁示线:红灯亮禁止30秒,然后绿灯亮放行。③当某一方向的红灯亮时,若该方向有车通过,则用扬声器声报警。(撞红灯信号可用3-5V模拟量表示)④同时用2位数码管进行30秒钟递减时间显示。第二章硬件方案2.1设计思路本系统硬件上采用8051单片机和并行接口芯片8255A,分别控制图2所示的四个组合。8051单片机具有MCS-51内核,片内有128字节的SRAM作为片内数据存储器使用,字节地址为00H~7FH.。还有21个特殊功能寄存器用于各种编程控制。它还有4KB的片内程序存储器(掩膜ROM),地址为0000H~0FFFH。最高工作频率可达24MHz,完全可以满足本系统的需要;与其他控制方法相比,所用器件可以说是比较简单经济的。1、电源提供方案为使模块稳定工作,须有可靠电源。我们考虑了两种电源方案方案一:采用独立的稳压电源。此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。方案二:采用单片机控制模块提供电源。改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。综上所述,我们选择第二种方案。2、显示界面方案该系统要求完成。基于上述原因,我们考虑了三种方案:方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字苻,无法胜任题目要求。方案二:完全采用点阵式LED显示。这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。方案三:采用数码管与点阵LED相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现的复杂度。权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。华东交通大学单片机课设43、输入方案:题目要求系统能手动设灯亮时间、紧急情况处理,我们讨论了两种方案:方案一:采用8155扩展I/O口及键盘,显示等。该方案的优点是:使用灵活可编程,并且有RAM,及计数器。若用该方案,可提供较多I/O口,但操作起来稍显复杂。方案二:直接在IO口线上接上按键开关。因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是K1、K2、K3、K4。由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O口就可实现,且本身的计数器及RAM已经够用,故选择方案二。2.2原理电路图说明:8255A由个8为的并行的I/O端口,分别是PA口、PB口、PC口,这些端口可以通过控制软件编程来改变它们的工作方式,并且8255A可以与MCS-51单片机直接接口。用8255A驱动3种颜色的12只发光二极管,用软件使它们模拟十字路口交通灯的功能。而某一辆车的撞红灯,则用一个输入脉冲来实现。用ADC0809实现撞红灯信号的采集并转换成数字量。华东交通大学单片机课设5图1是一个十字路口示意图。分别用1、2、3、4表明四个流向的主车道,用A、B、C、P分别表示各主车道的左行车道、直行车道、右行车道以及人行道。用a、b、c、p分别表示左转、直行、右转和人行道的交通信号灯,如图2所示。交通灯闪亮的过程:路口1的车直行时的所有指示灯情况为:3a3b2p绿3c红+4a4b4c3p全红+1c绿1a1b4p红+2c绿2a2b1p红路口2的车直行时的所有指示灯情况为:4a4b3p绿4c红+1a1b1c4p全红+2c绿2a2b1p红+3c绿3a3b2p红故路口3的车直行时的所有指示灯情况为:1a1b4p绿1c红+2a2b2c1p全红+3c绿3a3b2p红+4c绿4a4b3p红故路口4的车直行时的所有指示灯情况为:2a2b1p绿2c红+3c3a3b2p全红+4c绿4a4b3p红+1c绿1a1b4p红图1:十字路口交通示意图华东交通大学单片机课设6图2:十字路口通行顺序示意图图3:十字路口交通指示灯示意图2.3主要元件功能说明2.3.18255A的主要功能8255引脚图和引脚功能资料8255引脚功能:单片机系统里常用的8255芯片是一个典型的可编程通用并行接口芯片,用来扩展单片机的端口,它具有3个8位的并行口,有三种工作方式,可作为单片机与各种外部设备连接的接口电路!下面介绍8255的引脚图及引脚功能。PA3--140--PA4GND--734--D0PA2--239--PA5A1--833--D1PA1--338--PA6A0--932--D2PA0--437--PA7PC7--1031--D3RD--536--WRPC6--1130--D4华东交通大学单片机课设7PC5--1229--D5PC4--1328--D6PC0--1427--D7PC1--1526--VCCPC2--1625--PB7PC--1724--PB6PB0--1823--PB5PB1--1922--PB4PB2--2021--PB38255引脚功能说明:RESET:复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。PA0~PA7:端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。PB0~PB7:端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。PC0~PC7:端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。CS:片选信号线,当这个输入引脚为低电平时,表示芯片被选中,允许8255与CPU进行通讯。RD:读信号线,当这个输入引脚为低电平时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。华东交通大学单片机课设8WR:写入信号,当这个输入引脚为低电平时,允许CPU将数据或控制字写8255。D0~D7:三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。表48255芯片的引脚信号说明引脚信号引脚号引脚名称Vcc26电源的+5V端GND7电源的0端RESET35复位信号输入端。使内部各寄存器清除,置A,B,C口为输入口36写信号输入端,使CPU输出的数据或者控制字到8255A5读信号输入端。使8255A输出数据或者状态信息到CPU6片选端A1,A08,9地址总线的最低2位。用于决定断口地址:如A1A0为00,是A口:A1A0为01,是B口:A1A0为10,是C口:A1A0是11,是控制字寄存器D7~D027~34双向数据总线PA7~PA037~401~4A口的8位I/O引脚PB7~PB025~18B口的8位I/O引脚PC7~PC010~1317~14C口的8位I/O引脚数据总线缓冲器:是一个8位的双向三态驱动器,用于与单片机的数据总线相连。读/写控制逻辑:根据单片机的地址信息(A1A0)与控制信息(RDWRRESET),控制片内的数据,CPU控制字,外设状态信息的传送。控制电路:根据CPU送来的控制字所管I/O口按一定的方式工作。对C口甚至可按位实现置位或者复位。控制电路分为两组:A组控制电路控制A口及C口的高四位(PC7~PC4),B组控制电路控制B口及C口的低四位(PC3~PC0)。三个并行I/O端口:A口可编程为8位输入,或者8位输出,或者双向输出:B口可编程为8位输入,或者8位输出,但是不可以双向传输;C口分为两个4位口,用于输入或者输出,也可以用作A口,B口的状态控制信号。3.4.28255的操作方式华东交通大学单片机课设91)读/写控制逻辑操作选择由单片机输出的地址A1,A0及控制信号,来选择口的操作状态。口的操作状态如表5所示表58255的口操作状态A1A0输入操作(读)00010A口——数据总线01010B口——数据总线10010C口——数据总线输出操作(写)00100数据总线——A口01110数据总线——B口10100数据总线——C口11100数据总线——控制口禁止操作————1数据总线为三态11010非法状态——010数据总线为三态2)8255的三种工作方式方式0(基本输入/输出方式):这种工作方式不需要任何选通信号。A口,B口及C口的两个4位口中任何一个端口都可以由程序设定为输入或者输出。作为输出口时,输出数据被锁存:作为输入口,输入数据不锁存。方式1(选通输入/输出方式):在这种工作方式下,A,B,C三个口分为两组。A组包括A口和C口的高四位,A口可由编程设定为输入口或者输出口,C口的高四位则是用来作为A口输入/输出操作的控制和同步信号:B组包括B口和C口的低四位,B口可由编程设定为输入口或者输出口,C口的低四位则是用来作为B口输入/输出操作的控制和同步信号。A口和B口的输入或者输出的数据都被锁存。华东交通大学单片机课设10方式2(双向传送方式)在这种方式下,A口可以用于双向传送,C口的PC3~PC74用来作为输入/输出的控制同步信号。应该注意的是,只有A口允许用作双向传送,这时B口和PC0~PC2则可编程为方式0或者方式1工作。3)编程控制字8255A的编程选择是通过对控制口输入控制字的方式实现的。控制字有方式选择控制字和C口置位/复位控制字。方式选择控制字:其格式如下表6所示:C口置位/复位控制字:C口具有位操作功能,把一个置位/复位控制字送入送入8255A的控制寄存器(控制口)就能把C口的某一位置1或者清0而不影响其他位的状态。C口置位/复位控制的格式与定义如表7所示。表6方式选择控制字D7D6D5D4D3D2D1D0A组B组控制字标志1=方式控制字方式选择00=方式001=方式11*=方式2A口1=输入0=输出上C口1=输入0=输出方式选择00=方式0,01=方式1B口1=输入0=输出下C口1=