微机接口课程设计--交通灯设计.doc_第1页
微机接口课程设计--交通灯设计.doc_第2页
微机接口课程设计--交通灯设计.doc_第3页
微机接口课程设计--交通灯设计.doc_第4页
微机接口课程设计--交通灯设计.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机原理与接口技术课程设计说明书交通灯设计起止日期: 2013年6月17日 至 2013年6月28日学生姓名徐梦云班级计算机103班学号10408100335成绩指导教师(签字) 计算机与通信学院2013年 6月 28日课题名称微机原理与接口技术课程设计人 数5组 长徐梦云同组人员张钰苑、杨宵、窦亚娟、何刘根课题的主要内容和要求一、设计的主要技术参数用2位数码管显示红绿灯时间, 用红、绿、黄LED灯表示红绿灯。使用的主要元器件:8253A、8255A、8259A、数码管。二、设计任务1、主要内容:利用8255A驱动双数码管和6个LED灯,其中3个LED灯为1组,共2组,每组假定有红、黄、绿3色。由2组LED灯模拟交通灯,数码管显示灯亮的时间倒计数值,其中1个方向是:红灯:30秒,黄灯3秒,绿灯50秒。利用接口实验箱完成。2、主要任务:(1) 完成电路设计。(2) 完成8255A程序设计。三、设计工作量2周完成具体任务我的任务包括以下内容:了解交通灯管理的基本工作原理,熟悉8255A并行接口的各种工作方式和应用,和同组成员分析讨论如何实现多位LED的显示,之后根据进行任务分配及设计,最后将各组员编写的程序段综合连接起来,从而实现数码交通灯的设计。时间安排与完成情况起止日期工作内容6月17日-6月18日分组、任务分配、课题理解6月19日-6月26日功能分析、程序设计、电路设计6月26日-6月28日实验验证和测试6月28日总结、书写实验报告30送入中,1000送入档SS0选通个位显示将89送入端口延时1选通十位显示将89送入端口延时一基本思想1用实验系统8255A实现对信号灯的控制(所用端口:A端口, B端口,C端口);2位数码LED显示用8255A实现控制。2. 用程序段以实现要求的60秒钟、3秒钟和40秒的定时。3. 用实验系统的发光二极管模拟红绿黄灯。注:8255A的端口地址为:端口A-300H、端口B-301H、端口C302H、 控制端口-303H二技术原理1.本实验用到了8255A芯片,它是Intel系列中的并行接口芯片。由于它是可编程的,可以通过软件来设置芯片的工作方式,所以,用它连接外部设备时,通常不需要再附加外部电路。2. 8255A有三个8位的端口,端口,端口。在方式0下工作时,它们都是基本的输入输出口,要注意该方式下是单向传输的。8255A的控制字如下图(图1)所示1D6D5D4D3D2D1D0图1其中:D6D5是A组方式选择,00为方式0,01为方式1,1为方式2D4表端口工作方式,0为输出,1为输入D3表示PC7-PC4,1为输入,0为输出D2表B组方式选择,0为方式0,1为方式1D1表端口B工作方式,1为输入,0为输出D0表示PC3-PC0,1为输入,为输出本实验中用到了8255A的端口A,端口C、端口C它们都工作在方式0下,因此控制字为80。端口B与数码管相连用来作交通灯的倒计时,而端口用来控制数码管是否被选中,端口A用来表示交通灯的二极管是否亮。具体电路连接图如下图2、图3所示。 图2PA0 PB0PA1 PB1PA2 PB2PA3 PB3PA4 PB4PA5 PB5PA6 PB6PA7 PB7IRQ10 PC4 PC5 PC68255abcdedgdpppppABC74LS138红黄绿红黄绿Out2 图3 3.实验台上的七段数码管为共阴型接法,段码采用同相驱动方式,输入端加高电平时被选中的数码管亮,位码加反相驱动器,位码输入端为高电平表示该位被选中。如图4和表1所示就是我们实验要用到的七段数码管的字型对应的代码表,在程序中通过查这个字型代码表就可以将八进制的代码顺利转换成十六进制的代码。 表1显示字形gefdcba段码001111113fH1000011006H21010115bH310011114fH4110011066H511011016dH611111017dH7000011107H811111117fH911011116fHA111011177HB11111007CHC011100139HD10111105EHE111101179HF111000171H 图44.如何通过8255控制多位的LED显示计时来显示红绿灯(要求以秒倒计时,延时尺度的把握要恰到好处). 解决方法: (1)采用循环“扫描”技术,具体实现是这样的:将需要扫描的时间数据分成个位十。先让个位数在第一个数码管显示,进行适当延时,再让十位数在第二个数码管显示,进行适当延时。然后再跳回继续执行上述程序,直到中断到达,执行中断服务程序。 (2)如何分开显示时间数据的个位和十位:定义一个数据段dispnum,通过以下程序将时间数据分开,十位和个位数分别存进此数据段的第一位和第二位。 MOV AL,REMAIN MOV AH,0 MOV BL,10 DIV BL MOV dispnum,AL MOV dispnum+1,AH然后分别取出数据段的第一位,第二位分别显示就好了。例如: MOV DX,301H MOV AL,dispnum MOV AH,0 MOV DI,AX MOV AL,Segtable+DI OUT DX,AL三、提出问题与解决问题:问题1:如何实现一秒的定时?解决:利用8253将1MHZ的脉冲分频为1HZ的脉冲,送给8259实现1秒中断。问题2:如何实现各状态之间的跳转?解决:在中断服务程序中,当时间减到“0”时,取出8253的A(300H)端口的数据,依次判断彩灯的状态,根据此数据确定需要跳转的下一个状态。 问题3:如何将时间数据,个、十位分开?解决: 利用DIV 10命令,可以将AX中的数据,个,十位分开分别送入AH,AL中。四、主程序流图详细说明:1东西方向车辆放行60秒钟。即东西方向的绿灯和南北方向的红灯同时点亮60秒钟;60秒钟后,东西方向的黄灯亮3秒钟,以警示车辆将切换红绿灯。此时南北方向仍维持红灯点亮。在南北方向亮红灯期间,在2位数码管上显示计数值(每秒减1),从60减为0。2东西方向的黄灯闪烁3秒钟后,转为南北方向放行40秒钟。即东西方向的红灯和南北方向的绿灯同时点亮43秒钟;40秒钟后,南北方向的黄灯亮3秒钟,以警示车辆将切换红绿灯。此时东西方向仍维持红灯点亮。在东西方向亮红灯期间,在2位数码管上显示计数值(每秒减1),从40减为0。如此循环重复。主程序流图如下图5所示:图5五、心得体会通过二星期微机接口的课程设计,加强了我的动手、思考和分析解决问题的能力。我对微机接口芯片有了更进一步的了解。在整个设计过程中,我们按照老师给出的总体方案使用了8259A中断控制器、8253计数器、8255可编程并行接口实现了对南北、东西方向交通的分别计时、分别控制。通过查阅各方面资料我们编写了程序代码,并通过了调试,最终证实了该系统方案确实可行。在设计过程中,了解了芯片的功能,并且对于其在电路中的使用有了更多的认识。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做,难免会遇 到过各种各样的问题,同时也在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。这次课程设计使我懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,才能够真正掌握理论知识,从而提高自己的实际动手能力和独立思考的能力。附件(程序清单): STACK1 SEGMENT STACK DW 200 DUP(?)STACK1 ENDSDATA SEGMENT Segtable db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh dispnum db 6,0 REMAIN DB 60 INT0A_OFF DW(?) INT0A_SEG DW(?) DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX;# MOV AL,67H ;初始化8253,输出1HZ的脉冲 MOV DX,307H OUT DX,AL MOV AL,10H MOV DX,305H OUT DX,AL MOV AL,0A7H MOV DX,307H OUT DX,AL MOV AL,10H MOV DX,306H OUT DX,AL;# MOV DX,303H ;初始化8255 MOV AL,80H OUT DX,AL MOV DX,300H ;LED灯熄灭 MOV AL,00H OUT DX,AL MOV DX,300H ;进入状态0 MOV AL,0DEH OUT DX,AL ;# ;中断开始 MOV AX,3572H ;获取原中断向量 INT 21H MOV INT0A_OFF,BX ;保存原中断向量 MOV BX,ES MOV INT0A_SEG,BX CLI ;关中断 MOV AX,2572H MOV DX,SEG LEDCON ;设置新的中断向量 PUSH DS MOV DS,DX MOV DX,OFFSET LEDCON INT 21H POP DS STI ;开中断 IN AL,0A1H ;打开IRQ10 AND AL,0FBH OUT 0A1H,AL IN AL,21H ;打开IRQ2 AND AL,0FBH OUT 21H,AL;#NEXT0: ;数码管显示 MOV DX,301H MOV AL,0 OUT DX,AL MOV DX,302H ;位选十位 MOV AL,10h; OUT DX,AL MOV DX,301H MOV AL,dispnum MOV AH,0 MOV DI,AX MOV AL,Segtable+DI OUT DX,AL CALL DELAY MOV DX,301H MOV AL,0 OUT DX,AL MOV DX,302H ;位选个位 MOV AL,00; OUT DX,AL MOV DX,301H MOV AL,dispnum+1 MOV AH,0 MOV DI,AX MOV AL,Segtable+DI OUT DX,AL CALL DELAY JMP NEXT0;# EXIT: MOV AX,2572H ;恢复中断向量 MOV DX,INT0A_SEG PUSH DS MOV DS,DX MOV DX,INT0A_OFF INT 21H POP DS IN AL,0A1H ;屏蔽IRQ10 OR AL,04H OUT 0A1H,AL IN AL,21H ;屏蔽IRQ2 OR AL,04H OUT 21H,AL MOV AX,4C00H ;程序退出 INT 21H LEDCON PROC FAR ;中断服务程序 PUSH SI PUSH AX PUSH DX PUSH BX CLI ;关中断 ;# CMP REMAIN,0 JNZ REMAINPRO ;*-* MOV DX,300H IN AL,DX ;读取当前的亮灯状态 CMP AL,0DEH ;0状态/东西绿60s,南北红60s JZ STATE1 MOV DX,300H IN AL,DX CMP AL,0BEH ;东西黄3s,南北红3s JZ STATE2 MOV DX,300H IN AL,DX CMP AL,7BH ;东西红40s,南北绿40s JZ STATE3 MOV DX,300H IN AL,DX CMP AL,7DH ;东西绿60s,南北红60s JZ STATE0STATE0: MOV AL,0DEH ;东西绿60s,南北红60s MOV DX,300H OUT DX,AL MOV REMAIN,60 ;/ JMP REMAINPRO STATE1: MOV AL,0BEH ;东西黄3s,南北红3s MOV DX,300H OUT DX,AL MOV REMAIN,3 JMP REMAINPROSTATE2: MOV AL,7BH ;东西红40s,南北绿40s MOV DX,300H OUT DX,AL MOV REMAIN,40 JMP REMAINPROSTATE3: MOV AL,7DH ;东西红3s,南北黄3s MOV DX,300H OUT DX,AL MOV REMAIN,3 JMP REMAINPRO;*-* REMAINPRO: DEC REMAIN MOV AL,REMAIN MOV AH,0 MOV BL,10 DIV BL MOV dispnum,AL MOV dispnum+1,AH;#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论