1、数理与信息工程学院课 程 设 计目 录第 1 节 引 言11.1 设计的基本要求 11.2 本设计的主要任务及主要功能 1第 2 节 交通灯硬件设计2.1 硬件设计-电气结构框图 22.2 元件介绍3第 3 节 系统软件设计3.1 整个系统程序的代码73.2.键盘服务子程序流程图12参考文献 17交通灯设计报告第 1 节 引 言设计的目的、意义1目的本设计是单片机原理与应用课程综合训练,同学们可以通过理论学习,课题选择,资料查阅,软,硬件设计,系统调试等环节,巩固和提高所学的知识和应用水平。学会提出问题,观察和分析问题,得到最终的科学方法。培养严谨的工作作风,务实的工作态度。为今后的毕业设计,
2、及从事单片机控制系统的设计与维护奠定坚实的基础。2意义本设计的意义在于通过具体的控制系统的设计,掌握单片机控制系统设计的一般方法和处理问题的思路,特别是一些常用的技术手段。使我们能在实践教学环节中,积累设计经验,开拓思维空间,全面提高个人的综合能力。1.1 设计的基本要求1 巩固,加强对单片机原理与应用 ,课程基本理论的理解,并能应用所学知识解决实际问题。2 掌握常用接口芯片的电路设计与软件设计方法。3 掌握简单系统的总体设计一般方法。1.2 本设计任务及系统主要功能1. 设计中以单片机为主控器,作适当的存储器,键盘显示器, 、十二盏指示灯的扩展,形成一个路口灯火控制系统。2. 本 设 计 是
3、 在 车 辆 通 行 繁 忙 的 十 字 交 叉 路 口 设 置 的 灯 火 控 制 系 统 , 其 特 点 是 : 道 路较 窄 而 车 辆 通 行 较 多 , 支 线 、 干 线 的 车 辆 通 行 时 间 不 等 , 并 设 有 左 右 弯 道 通 行 时 间 ,允 许 人 工 监 控 或 修 改 各 线 通 行 时 间 , 同 时 设 有 道 路 应 急 控 制 。 具 体 的 情 况 是 : 在 正 常的 情 况 下 , 干 道 通 行 时 间 为 40 秒 , 其 中 左 右 弯 道 占 时 5 秒 , 直 道 通 行 时 间 为25 秒 , 其 中 左 右 弯 道 占 时 5 秒
4、 , 直 道 占 时 20 秒 。 并 且 能 够 在 人 工 监 控 状 态 下 ,干 道 、 支 道 通 行 时 间 通 过 键 盘 修 改 或 通 过 开 关 人 为 控 制 。第 2 节 交通灯硬件设计21 硬件设计-电气结构框图如下:1.硬件系统的设计还应满足以下原则:() 满足系统的设计要求,易于操作维护。() 系统功能灵活,便于扩展。() 具有自动诊断功能。2.硬件系统的设计主要包括下面的工作:a:扩展存储器:本系统设计中用到的是 62256EEPROM 即可做程序存储器又可做数据存储器。他跟 2 个 74LS373 地址锁存器相连,用到 A0A14 共 15 根地址线,所以他的
5、寻址范围 07FFFH。b. 配置位显示器:该显示器是双色显示器,它由一个红色的 LED 和一个绿色的LED 封装在一起红色管接正极,绿色管接负极显示红色,红色管接负极,绿色管接正极,则显示器显示绿色,都接正极则显示黄色,都接负极则不显示。在该系统中它是由 8255 的 A 口经过74LS240 连接的。c. 配置键键盘,其中“A” 为启动键,B 为停止键.扩展并行接口 8255A.c 键为修改键,e,f 键人工控制键。在该系统中列线用到的是 8279 的 SL 经过 74LS138 的 8 根列线中的 3 跟 Y0,Y1,Y5,行线是8279 的 RL8 根输出线。(2)软件设计在该系统的软
6、件设计中用到的是模块程序设计,主要的模块程序是键盘的模块程序,它包括、 、 、 、 、 、 ,显示的模块程序,它包括、 、 、 、 、 、 。通过软件的设计使系统有简易的监控功能,通过键盘可以修改通行时间和启动或停止人工控制的路口灯火控制系统.正常显示状态:动态显示车辆通行时间,其格式为支道通行时间显示位干道通行时间显示位监控状态显示修改时间;应急状态显示“PP” 。3总体设计与论证A: 首先根据该设计的特点,把出现的情况进行分析整理,得到以下几种情况:LED 显示器8051 I/O 接口存储器键盘交通指示灯(1)干道:左右弯道:占时 5 秒。显示如上图所示的第四位;直道:占时 35 秒,显示
7、如上图所示的高两为。(2)支道:左右弯道;占时 5 秒,显示如上图所示的二三位;直道:占时 25 秒,显示如上图所示的第0 位。(3)同时的几位灯在直道时那位亮,在弯道时那位亮。(4)在绿灯转红灯时,闪烁 3 次,变黄延时五秒变红灯。 B:根据以上的情况分析,经过思路的整理大家统一得到了整体的设计框架图,及程序流程图和硬件图。C:我门的的系统设计过程中,实验系统主要采用的是模块化设计。这次系统设计中用到的模块是:MODEL1-62256 存储器,ELMOD2-8279 键盘显示,ELMOD3138 译码电路,ELMOD4可编程并行接口 8225。这次系统设计过程中要将这几个模块按照逻辑与设计要
8、求把它们与 8031 做连接,实现以上特点。D:这次设计当中初步决定所需要的辅助芯片有:373 地址锁存器 2 个或 3 个。反向器若干,62256 存储器。E:硬件设计:电路图为附件。F:软件设计:包括键盘程序,显示程序,显示程序为主程序。子程序有延时程序延时为 0.1 秒。22 元件介绍1、可编程键盘,显示器接口Intel82798279 是 INTEL 开发的专用键盘显示器接口芯片,该芯片能对显示器实现自动扫描,能自动识别键盘型号,它大大减轻了 CPU 的负担,因此在单片机应用系统中,该芯片得到了广泛的应用。8279 的结构及引脚功能:下图为 8279 内部结构图。8279 由数据缓冲器
9、,I/O 控制逻辑,控制和定时寄存器及定时与控制电路,扫描计数器,回复缓冲器,键盘去抖动及控制电路,FIFO/传感器 RAM 及其他状态寄存器,显示 RAM 及显示地址寄存器等部分组成。(1) 数据缓冲器及 I/O 控制逻辑 数据缓冲器是一个双向缓冲器,它连接内部总线和外部总线,用于传送 CPU 和 8279 之间的命令,数据和状态。(2) 控制与定时寄存器以及定时与控制电路 8279 为一个可编程芯片,其工作方式等通过写入一些命令来设置。控制与定时寄存器用来寄存操作命令字,通过对命令字译码产生相应的控制信号,控制 8279 的各个部件的协调工作,完成相应的功能。(3) 扫描计数器 扫描计数器
10、有两种工作方式。一种为外部译码方式。计数器以二进制方式计数,4 位计数状态从扫扫描结 SL0SL3 输出,经外部译码后形成的16 位扫描信号;另一种为内部译码方式。(4) 回复缓冲器,键盘去抖动与控制电路 回复缓冲器缓冲并锁存来自 RL0RL7 8根回复线的回复信号。时钟复位 D07 IRQRD WR CS BDOUTA0-3 OUTB0-3 SL0-3 RL0-7 SHIET CNTL/STB(5) 数据缓冲器及 I/O 控制逻辑 数据缓冲器是一个双向缓冲器,它连接内部总线和外部总线,用于传送 CPU 和 8279 之间的命令,数据和状态。(6) 控制与定时寄存器以及定时与控制电路 8279
11、 为一个可编程芯片,其工作方式等通过写入一些命令来设置。控制与定时寄存器用来寄存操作命令字,通过对命令字译码产生相应的控制信号,控制 8279 的各个部件的协调工作,完成相应的功能。(7) 扫描计数器 扫描计数器有两种工作方式。一种为外部译码方式。计数器以二进制方式计数,4 位计数状态从扫扫描结 SL0SL3 输出,经外部译码后形成的16 位扫描信号;另一种为内部译码方式。(8) 回复缓冲器,键盘去抖动与控制电路 回复缓冲器缓冲并锁存来自 RL0RL7 8根回复线的回复信号。(9) FIFO/传感器 RAM 及其状态寄存器 FIFO/传感器 RAM 是一个双重功能的8X8RAM(10) 显示
12、RAM 各显示地址寄存器 显示 RAM 用来存储显示数据,容量为 16X8 位。38279 的工作方式:(1) 键盘工作方式显示地址寄存器16x8显示RAM控制与定时寄存器8x8FIFO/传感器RAM 键盘去抖动与控制电路数据缓冲器I/O 控制FIFO/传感器 RAM状态寄存器显示寄存器定时控制 扫描计数器回复缓冲器双键互锁方式N 键轮回方式(2) 显示器工作方式左端输入方式右端输入方式(3) 传感器矩阵方式(4) 选通输入方式48279 的引脚功能:8279 采用 40 脚引脚封装,其管脚,引线功能如下所示:8279CPU 扫描接口 信号显示数据注释:其中右图中大括号未标注的是:键盘数据。D
13、0-D7(数据总线):双向,三态总线,和系统数据总线 相连,用于 CPU 和 8279 间的数据/命令和状态的传送。CLK(系统时钟):输入线,为 8279 提供内部时钟的输入端。RESET(复位):输入线,当 RESET=1 时,8279 复位,其复位状态为:16 个字符显示,编码扫描键盘双重功能键琐定,程序时钟编程为 31。CS(片选):输入线,当 CS=0 时,8279 被选种时,允许 CPU 对其读,写,否则,被禁止。A0(数据选择):输入线,当 A0=1 时,CPU 写入数据为命令字,读出数据为状态字。A0=0 时,RL2 VCCRL3 RL1CLK RL0IRQ CNTL/STB
14、RL4 SHIFT RL5 SL3 RL6 SL2RL7 SL1RESET SL0RD OUTB0 WR OUTB1D0 OUTB2D1 OUTB3D2 OUTA0D3 OUTA1D4 OUTA2D5 OUTA3D6 BDGND A0IRQ RL7RL0SHIFTRD CNTL/STB WR SL3SL0CS OUTA3-OUTA0A0 OUTB3-OUTB0 RESET BDCLKCPU 读写的字节均为数据。RD,WR(读,写信号):输入线,低电瓶有效,来自 CPU 的控制信号,控制 8279 的读写操作。IRQ(中断请求)输出线,高电平有效。SL0-SL3(扫描线):输出线,用来扫描键盘和
15、显示器,他们可以编程设定为内部译码输出和外部译码输出。RL0-RL7(回复线):输入线,他们时键盘距阵和传感器距阵行或列信号输入线。SHIFT(移位信号):输入线,高电平有效, ,该输入信号时 8279 键盘数据的次高位(D0) 。通常用来扩充键开关的功能。可用作键盘上下挡的功能键。在传感器方式和选通方式中,SHIFT 无效。CNTL/STB(控制/选通):输入线,高电平有效。OUTA0OUTA3(A 组显示信号) ,OUTB0OUTB3(B 组显示信号):输出线,这两组引线都是显示数据输出线,与多位数字显示的扫描线 SL0-SL3 同步。两组可独立使用也可合并使用。BD(显示消隐):输出线,
16、低电平有效,在信号在数字切换显示或使用消隐命令时,将显示消隐。第 3 节 系统的软件设计软件设计 系 统 有 简 易 的 临 控 功 能 , 通 过 键 盘 可 以 控 制 机 械 手 的 启 动 , 停 止 , 回 零 等 运 行 动 作 ,对 路 径 和 作 业 时 间 进 行 编 程 。 显 示 器 能 显 示 每 个 工 位 作 业 时 间 , 出 错 时 能 显 示 报 警 信 号 “EE”以 及 在监 控 状 态 下 显 示 键 入 的 数 据 。31 整个系统的程序代码Z8279 EQU 0FF82H ;8279 状态/ 命令口地址D8279 EQU 0FF80H ;8279 数
17、据口地址LEDMOD EQU 00H ;左边输入八位字符显示;外部译码键扫描方式,双键互锁LEDFEQ EQU 2FH ;扫描速率LEDCLS EQU 0C1H ;清除显示 RAMLEDWR0 EQU 80H ;设定的将要写入的显示 RAM 地址 READKB EQU 40H ;读 FIFO RAM 地址 0 的命令字ORG 0000HMOV DPTR,#8406H ;8255 控制口地址 MOV A, #80H ;命令字传入控制口MOVX DPTR,ALJMP START ;开始程序 ORG 0040HSTART: MOV 16H,#35 ;设定显示秒数MOV SP,#30H LCALL S
18、TATUS0 ;调用初始状态全红灯CIRCLE: LCALL STATUS1 ;南北绿灯东西红灯LCALL STATUS2 ;南北绿灯闪转黄灯东西红灯LCALL STATUS3 ;南北红灯东西绿灯LCALL STATUS4 ;南北红灯东西绿灯闪转黄灯LJMP CIRCLESTATUS0:MOV DPTR , #8400H MOV A,#0FHMOVX DPTR, AMOV R2,#10 ;延时一秒LCALL DELAY RETSTATUS1: ;南北绿灯东西红灯MOV DPTR , #8400HMOV A,#96HMOVX DPTR, AMOV 11H,16HLCALL INIT8279 ;初
19、始化清屏 STA1: LCALL LC ;处理并调用显示的数据MOV 15H,#07H ;设定显示位数MOV 14H,#06HMOV R5,12HLCALL DISPLAY ;调用显示MOV R5, 13HMOV R2,#10LCALL DELAY ;延时LCALL FUWU ;调用键盘服务程序DJNZ 11H,STA1 RETSTATUS2: ;南北绿灯闪转黄灯东西红灯MOV DPTR , #8400HMOV R3,#03H ;闪烁三次FLASH:MOV A,#9FHMOVX DPTR,AMOV R2,#03HLCALL DELAYMOV A,#96HMOVX DPTR,AMOV R2,#0
20、3HLCALL DELAYDJNZ R3,FLASHMOV A,#06HMOVX DPTR,ALCALL INIT8279MOV 11H,#5 ;弯道时间STA2: LCALL LCMOV 14H,#4LCALL DISPLAYDJNZ 11H,STA2RETSTATUS3: ;南北红灯东西绿灯MOV DPTR , #8400HMOV A,#69HMOVX DPTR, AMOV 11H,#25 ;设定支道时间LCALL INIT8279STA3: LCALL LCMOV 15H,#03HMOV 14H, #02HLCALL DISPLAYDJNZ 11H,STA3RETSTATUS4: ;南北
21、红灯东西绿灯闪转黄灯MOV DPTR , #8400HMOV R3,#03HFLASH1:MOV A,#6FHMOVX DPTR,AMOV R2,#03HLCALL DELAYMOV A,#69HMOVX DPTR,AMOV R2,#03HLCALL DELAYDJNZ R3,FLASH1MOV A,#09HMOVX DPTR,AMOV 11H,#05HLCALL INIT8279STA4: LCALL LCMOV 14H,#00H ;让该位显示 0LCALL DISPLAYDJNZ 11H,STA4 RETINIT8279: ;初始化MOV DPTR,#Z8279 MOV A,#LEDMOD
22、MOVX DPTR,AMOV A,#LEDFEQMOVX DPTR,AMOV A,#LEDCLSMOVX DPTR,ALCALL DELAYRETDISLED: ;显示字符子程序PUSH DPH PUSH DPLPUSH ACCMOV A,#LEDWR0ADD A,R4MOV DPTR,#Z8279MOVX DPTR,AMOV DPTR,#LEDSEGMOV A,R5MOVC A,A+DPTRMOV DPTR,#D8279MOVX DPTR,APOP ACCPOP DPLPOP DPHRETDELAY: ;延时程序PUSH 0 ;延时 100msPUSH 1PUSH 2DELAY1: MOV 1,#0HDELAY2:MOV 0,#0B2HDJNZ 0,$DJNZ 1,DELAY2DJNZ 2,DELAY1 POP 2POP 1POP 0RETDISPLAY: ;显示字符程序