第二章 方案设计
2.1题目分析
2.1.1实验目的
通过实验确定某地方的交叉路口交通红绿灯的最佳控制方案,按照最佳控制方案进行控制,使得两条路总的车流速度为最大(前提条件:假定两条路的车流量是均衡的,两条路的车流量相等)。
2.1.2设计任务与要求
(1)设计一个十字路口的交通灯控制电路,要求甲车道和乙车道两条交叉道路上的车辆交替运行,每次通行时间都为16秒并可以调整。
(2)黄灯先亮3秒钟,才能变换运行车道。 (3)黄灯亮时,要求每秒闪亮两次。
(4)如果发生紧急事件, 例如救护车、警车经过, 则按下单脉冲按钮,使得东、西、南、北四个方向红灯亮。
(5)寻找最佳红绿灯持续时间。
2.2方案选择
方案一:主控系统采用AT89C51单片机作为控制器,由定时器1间接控制通行倒计时及南北和东西的通行。由按键开关完成禁止通行,东西通行,南北通行。
方案二:主控系统采用AT89C51单片机作为控制器,由延时函数完成信号灯 的相互转换,由定时器完成通行倒计时。由按键开关完成禁止通行,东西通行,南北通行。
方案比较:方案二由于信号灯的相互转换与倒计时显示用的是两种独立的方法完成,要把这两种方法运行的时间达到一致,这大大的增大了程序的难度,而方案一切采用了同一种方法。就是程序变得了简单。占用端口少,耗电也最小。统电源采用独立 的+5V稳压电源,有各种成熟电路可供选用,使此方案可靠稳定。该设计可直接在I/O口上接按键开关,精简并优化了电路。结合实际情况,显示界面采用LED数码管动态扫描的方 法,满足了倒计时的时间显示输出和状态灯提示信息输出的要求,减少系统的复杂度,既经济又简洁。所以选择方案一。
3
2.3方案组成部分
该交通灯有以下几个部分组成:紧急控制(按键电路)、复位电路、晶振电路、电源电路、单片机、led数码管显示、led信号指示灯。如图2.1所示:
图2.1交通灯的组成
晶振电路 电源电路 LED指示灯 复位电路 按键电路单LED数码显示管 片机 4
第三章 LED显示器与AT89C51
3.1LED显示器简介
通常所说的LED显示器由7个发光二极管组成因此也称之为七段LED显示器,其排列形状如图3.1所示。此外,显示器中还有一个圆点型发光二极管(在图中以dp表示),用于显示小数点。通过七个发光二极管亮暗的不同组合,可以显示多种数字、字母以及其他符号。LED显示器中的发光二极管共有两种连接方法:
(1) 共阳极接法
把发光二极管的阳极连在一起构成公共阳极。使用时公共阳极接+5V。这样阴极端输入低电平的段发光二极管就导通点亮,而输入高电平的则不点亮。
(2) 共阴极接法
把发光二极管的阴极连在一起构成公共阴极。使用时公共阴极接地,这样阳极端输入高电平的段发光二极管就导通点亮,而输入低电平的则不点亮。
图3.1显示器排列形状
使用LED显示器时要注意区分这两种不同的接法。为了显示数字或符号,要为LED显示器提供代码,这些代码是为显示字形的,因此称之为字形代码。七段发光二极管,再加上一个小数点位,共计八段。因此提供给LED显示器的字形代码正好一个字节。各代码位的对应关系如表3.1。
表3.1 代码对应关系表
代码位 显示段
D7 dp D6 g D5 f D4 e 5
D3 d D2 c D1 b D0 A
3.2单片机AT89C51
AT89C51是一种高效微控制器,它是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4Kbytes的可反复擦写的Flash只读程序存储器(FPEROM—Flash Programmable and Erasable Read Only Memory) 和128×8位的随机存取数据存储器(RAM),该器件采用ATMEL公司的高密度、非易失性存储技术生产,它与MCS-51系统产品兼容,AT89C51单片机功能强大,具有8Kb中央处理器(CPU)和4KbFlash程序存储器,性价比高,可应用于很多要求高性价比的场合,灵活地应用于各个控制领域。
3.2.1AT89C51的主要性能
内含4Kb可重编程的FPEROM; 与MCS-51产品指令系统完全兼容; 128×8位的内部RAM;
4个8位(32根)双向可位寻址的I/O端口; 2个16位的计数/定时器; 全双工方式的串行通道(UART); 6个中断源;
5个向量二级中断结构; 最高时钟振荡频率可达12MHz;
指令集中64条为单周期指令,支持6种寻址方式,共111条指令; 低功耗空闲和掉电方式; 片内振荡器和时钟电路。 3.2.2 AT89C51的引脚功能
AT89C51为双列直插(DIP)式封装的51单片机芯片,有40条引脚,其引脚示意及功能分类如图3.2所示。
6
图3.2 AT89C51单片机引脚图
各引脚功能说明如下: (1)主电源引脚
Vcc(40脚):接+5(1±20﹪)V电源正端; Vss(20脚):接地。 (2)I/O引脚
P0口(39~32脚):P0.0~P0.7统称为P0口。P0口是一组8位漏极开路型双向I/O口,分时复用为低8位地址总线和双向数据总线。作为输出口用时,每位能吸收电流的方式驱动8个逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存储器时,这组端口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在FLASH编程时,P0口作为原码输入口,当Flash进行校验时,P0口输出原码,此时P0外部必须被拉高。
P1口(1~8脚):P1.0~P1.7统称为P1口,可作为准双向I/O口使用。P1是一个带内部上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。P1口被外部下拉为低电平时,输出电流,是因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在Flash编程和校验时,P1口作为第八位地址接收。
P2口(21~28脚):P2.0~P2.7统称为P2口,一般作为准双向I/O使用。P2是一个带内部上拉电阻的8位双向I/O口。P2的输出缓冲器可驱动4个TTL逻辑门电路。当对P2端口写“1”时,内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,由于内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在接有片外存储器或扩展I/O口且寻址范围超过256B时,P2口用作高8位地址总线。当给出地址为“1”时,它就利用内部上拉优势,当对外部八位地址数据存储器进行读/写时,P2口便输出其特殊功能寄存器的内容。在
7