交通灯设计-8255-8254(附连线图和源代码)(共27页).docx





《交通灯设计-8255-8254(附连线图和源代码)(共27页).docx》由会员分享,可在线阅读,更多相关《交通灯设计-8255-8254(附连线图和源代码)(共27页).docx(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上西安郵電學院硬件课程设计报告题 目:微机原理与接口课程设计院系名称: 计算机学院 专业名称: 软件工程班 级: 软件0802 学生姓名: 王晶晶学号(8位): 指导教师: 刘军设计起止时间:2011年05月23日2011年05月27日一、设计目的通过可编程并行接口芯片8255A和可编程定时器计数器芯片82538254以及中断控制器 8259实现十字路口交通灯的模拟控制,进一步掌握并行接口和定时器计数器及数码管控制的实际应用。二、设计内容1用试验台提供的发光二极管(红绿黄各两支,共六支)作为南北路口(红绿黄各一支)和东西路口(红绿黄各一支)的模拟交通灯。2用可编程并行接
2、口芯片8255A控制模拟交通灯的亮与灭和数码管的倒计时显示。3用可编程定时器计数器芯片8253实现模拟交通灯亮与灭的时间延迟控制。4用数码管作为模拟交通灯亮与灭的时间延迟控制的倒计时显示。5用汇编语言编程使六个灯按交通灯变化规律“亮/灭”。交通灯变化规律要求: 南北路口的绿灯,东西路口的红灯同时亮30秒,且数码管30秒倒计时显示。 南北路口的黄灯闪烁3秒(三亮三灭),同时东西路口的红灯继续亮,且数码管3秒倒计时显示。 南北路口的红灯,东西路口的绿灯同时亮20秒,且数码管20秒倒计时显示。 南北路口的红灯继续亮,同时东西路口的黄灯闪烁3秒(三亮三灭),且数码管3秒倒计时显示。 转重复 按压“东西
3、紧急键”,则东西方向绿灯,南北方向红灯;再次按压“东西紧急键”,解除东西紧急通行状态。(“东西紧急键”可是键盘键,亦可是逻辑开关键) 按压“南北紧急键”,则南北方向绿灯,东西方向红灯;再次按压“南北紧急键”,解除南北紧急通行状态。(“南北紧急键”可是键盘键,亦可是逻辑开关键) 按 键退出程序。备注:1、按键用 8255A 芯片的 PC 口实现或用键盘模拟实现。2、8253定时到可以通过8259,用中断的方式实现定时器。3、也可以用软件监测8253计数状态实现定时。4、也可以用纯软件延时方式实现本题目。三、概要设计 由于本设计要使用到8254和8255。因此对其分块实现。1. 流水灯设计:做该设
4、计是为了熟悉编程环境,并借此熟悉8255的基本工作原理。功能模块图:流水灯LED灯循环点亮图3-1 流水灯功能模块功能描述:使SW-LED UNIT的D0-D7循环被点亮。2. 用8255与LED KEYBOARD UNIT相连实现八段数码管的静态显示。功能模块图八段数码管静态显示数码管上显示在程序中给定的数值图3-2 LED静态显示功能描述:在程序中给定一位数值,将其显示在LED数码管上。3. 用8255与LED KEYBOARD UNIT相连实现八段数码管的动态显示功能模块图:八段数码管动态显示程序给定初值NUM在LED上显示NUMNUM!=0NUM-1NUM=0结束 图3-3 LED动态
5、显示功能描述:给定一个数值,使其在LED灯上显示,并且是显示两位(视觉效果),然后将该数减一显示,直到减为0。4. 交通灯控制(软延时)交通灯控制功能模块图:东西,南北紧急键先LED灯显示的同时,数码管显示对应的倒计时LED灯东西,南北方向红、黄、绿灯按一定规则交替显示图3-4 交通灯控制功能描述:模拟交通灯的实现,是SW-LED上的灯模拟红绿灯,数码管模拟倒计时显示器,先是南北路口绿灯亮,东西路口红灯亮,倒计时30秒,南北路口黄灯亮,东西路口红灯亮,倒计时5秒,南北路口红灯亮,东西路口绿灯亮,倒计时30秒,南北路口红灯亮,东西路口黄灯亮,倒计时5秒,然后不停的循环这四种状态。可按任意键退出该
6、程序,K0键为东西紧急键,K1为南北紧急键。按动K0(K0=1)后东西方向一直为绿灯,南北方向一直为红灯,直到再次搬动K0使K0=0时,南北绿灯,东西红灯,恢复上述四种状态的循环。按动K1使K1=1时,南北一直绿灯,东西一直红灯,知道再次按动K1,使K1=0,使南北红灯,东西绿灯,恢复上述四种状态的循环。在SW-LED UNIT中D7、D5、D3分别表示东西方向的红、绿、黄灯,D6、D4、D3分别表示南北方向的红、绿、黄灯。5. 交通灯控制(8254)这部分的功能模块图与功能描述与上述交通灯控制(软延时)相同,只是实现方式有所不同。四、详细设计1、用8255实现流水灯,熟悉8255的使用和工作
7、原理。在该试验中使8255的A口、B口、C口均工作在输出状态下,让B口与SW-LED UNIT的D0-D7相连,给B口得初值为FE并输出在LED灯上显示,然后让该值循环右移并显示,在每次输出时,使用软件延时,使灯的每次变换间隔大约为1秒数据流程图为:开始初始化8255给B口送初值FE。使D0亮B口的值循环右移,使灯循环点亮图4-1 流水灯数据流程图2、用8255与LED KEYBOARD UNIT相连实现八段数码管的静态显示。实验线路图如下图4-2所示: XD7XD6XD5XD4XD3XD2XD1XD0XA1XA0XIOWXIORIOY3ABCDEFGDPLED KEYBOARD UNITD7
8、 PB0D6 PB1D5 PB2D4 PB3D3 PB4D2 PB5D1 PB6D0 PB78255UNITA1A0 WR RD CS低电平X1X2X3X4图4-2 静态显示实验的连线图共阴极LED数码管字形代码如下表4-2所示:表4-3 共阴极LED数码管字形显示字形共阴极字形代码字形共阴极字形代码字形共阴极字形代码03FH67DHC39H106H707Hd5EH25BH87FHE79H34FH96FHF71H466HA77H灭00H56DHb7CH实验步骤:设计实验线路图如上图4-2所示,完成连接。编写程序实现将给定数值用LED的前两位显示出来:8255初始化: MOV DX, 1463H
9、 MOV AL, B ;初始化A,B,C口都工作在方式0,都为输出口 OUT DX, AL LED显示数NUM: MOV BX, OFFSET TABLE1 ;取八段数码管表的首地址 MOV AL, NUM XLAT ;查表,找出NUM对应的共阴极字形代码 MOV DX, 1461H OUT DX, AL ;将该代码送到B口打开试验箱电源,进入纯DOS环境运行程序,观察LED数码管显示情况。开始将8255的B口设为输出口,A,C口任意给出一个要显示的数值查表求出对应的段码将段码经8255的B口输出结束实验流程图如下图4-4所示图4-4 静态显示程序数据流程图3. 用8255与LED KEYBO
10、ARD UNIT相连实现八段数码管的动态显示实验连线图如下图4-5所示: D7 PB0D6 PB1D5 PB2D4 PB3D3 PB4D2 PB5D1 PB6D0 PB78255UNITA1A0 WR PA0RD PA1 CSLED KEYBOARD UNITABCDEFGDPX1X2XD7XD6XD5XD4XD3XD2XD1XD0XA1XA0XIOWXIORIOY3 图4-5 动态显示实验的连线图实验步骤:设计实验连线图如上图4-5所示,完成连线。编写程序实现用LED数码管动态显示3000,先使用软件延时,使其实现30秒得倒计时。8255初始化: MOV DX, 1463H MOV AL,
11、B ;初始化A,B,C口都工作在方式0,都为输出口 OUT DX, ALLED动态显示30秒得倒计时:DISPLY PROC MOV NUM, 25 ;使十位数与个位数循环交替显示25次 MOV BX, OFFSET TABLE1 SHOW: MOV AL, NUM1 ;显示十位数 XLAT ;查表 MOV DX, 1461H OUT DX, AL ;将该数的LED数码管字形代码送到B口 MOV DX, 1460H ;接通8段代码管的第一位,在LED上显示十位数 MOV AL, 0FEH OUT DX, AL CALL DELAY MOV AL, 0FFH OUT DX, AL MOV AL,
12、 NUM2 ;显示个位数 XLAT MOV DX, 1461H OUT DX, AL MOV DX, 1460H ;接通8段数码管的第二位 MOV AL, 0FDH OUT DX, AL DEC NUM JNZ SHOW JMP GWSUB ;该数字显示完,对其减一软延时函数为:DELAY PROC NEAR ;该函数延时次数为500*65535,使用双层循环 MOV CX, 500DELAY0: MOV NUM3, 65535DELAY1: DEC NUM3 JNZ DELAY1 LOOP DELAY0 RETDELAY ENDP数值减一操作的代码段为:GWSUB: ;倒计时时各位的递减 C
13、MP NUM2, 0 JE SWSUB ;如果各位减为0,则减十位,再使个位为9 DEC NUM2 JMP DISPLY ;显示该数SWSUB: ;倒计时时十位的递减 DEC NUM1 CMP NUM1, -1 JE LEDCHANGE MOV NUM2, 09H JMP DISPLY ;显示该数软延时解释:因为LED灯同一时刻只有一个LED灯可显示,而且显示时间很短以至于用人眼无法察觉其变化,因此显示完十位数和个位数之后延时,同一个数个位十位循环交替显示25次,产生视觉停留效果,使人看起来十位和个位同时显示。动态显示程序流程图如下图4-6所示:开始将8255设为A、B口输出送位码0FEH到A
14、口个位数的段码至B口十位数的段码至B口送位码0FDH到A口延时延时,NUM减一显示数值减一NUM=25NUM=0NUM=1 图4-6 动态显示程序流程图4.交通灯控制(软延时)实验连线图如下图4-7所示:D7 PB0D6 PB1D5 PB2D4 PB3D3 PB4D2 PB5D1 PB6D0 PB7 PA0A1 PA1A0 8255UNIT PC7WR PC6RD PC5CS PC4 PA7 PA6 PA5 PA4 PA3 PA2 PC3 PC2 PC1 PC0LED KEYBOARD UNITSW-LED UNITABCDEFGDPX1X2D7D6D5D4D3D2D1D0XD7XD6XD5X
15、D4XD3XD2XD1XD0XA1XA0XIOWXIORIOY3 图4-7 交通灯控制(软延时)连线图实验步骤:设计实验连线图如上图4-7所示,完成连线。编写程序实现交通灯控制,具体实现的功能。交通灯的四种状态的循环显示:LEDCHANGE: ;红,绿,黄灯交替显示 DEC CONTROL ;CONTROL=04H,用来控制灯得状态 CMP CONTROL, 03H JE LEDYR ;南北黄,东西红 CMP CONTROL, 02H JE LEDRG ;南北红,东西绿 CMP CONTROL, 01H JE LEDRY ;南北红,东西黄 CMP CONTROL, 00H JE LEDGR ;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 交通灯 设计 8255 8254 线图 源代码 27

限制150内