南京工程学院Array课程设计说明书(论文)题目带数码管显示的交通灯模拟控制系统设计课程名称微机原理及应用院系专业班级学生姓名学号设计地点指导教师设计起止时间:2013年12月23日至2017年12月27日目录一、方案说明 (2)1、硬件设计 (2)1.1、硬件接线图 (2)1.2、主机接线说明 (3)2、软件设计 (3)2.1、程序流程图 (4)二.源程序清单 (5)三、调试现象 (10)四、心得体会 (12)一、设计说明硬件方面:8253产生1HZ的方波,脉冲到8259的IR1端,产生中断,调中断服务子程序。
在加入紧急车道后,单脉冲()连到8259的IRO端,产生一个高级的中断请求信号。
软件方面:主程序先对各个硬件初始化,在开CPU中断,然后空操作,等待中断。
执行低级中断(IR1)时,8255的PA口负责选数码管,PB口负责显示数字,用查表法可查到0~9的数码管编码。
采用循环扫描方法,人眼即可看到连续的二位数。
当倒计时减到零时,对红绿灯取反。
若手动上下拨动单脉冲()一次,则产生一个高级中断(IR0),程序转而执行此中断处理程序,处理完后返回继续执行低级中断(IR1)。
1、硬件设计1.1、硬件接线图1.2连线说明:C5区:CS、A0、A1————A3区:CS3、A0、A1C5区:OUT0————C5区:CLK1C5区:GATE0、GATE1————C1区:VCCC5区:CLK0————B2区:2MC5区:OUT1————B3区:IR1B3区:CS、A0————A3区:CS2、A0B3区:INT、INTA————ES8688:INTR、INTAB3区:IR0————B2区:单脉冲() B4区:CS、A0、A1————A3区:CS1、A0、A1B4区:PA口、PB口————G5区:C口、B口B4区:PC口———— G6区:JP65(LED灯)1.3实物连线图2、软件设计1、程序流程图2.设计思路①8255交通信号灯的灯光变化和数码显示通过8255实现控制。
8255是一种具有多种功能的可编程并行通信接口电路芯片。
芯片包括A、B、C三个数据端口、A组控制部件、B组控制部件、读写逻辑控制电路、数据总线缓冲器。
8255有三种工作方式,其中方式0是基本输入/输出方式,适用于无条件传送和查询方式的接口电路。
本设计中,PA口用于输出信号控制灯光的变化(D6D5=00,D4=0),PB口用于输出信号控制数码管的显示(D2=0,D1=0),PC0用于输入K8的控制开关信号,PC1用于输入用于硬件延时的方波信号(D0=1)。
PC7用于输出控制数码管工作/不工作的信号(D3=0)。
故写入方式控制字为。
8255A输入/输出信号接线方案如下表所示:a.灯光显示:送低电平则灯亮,送高电平则灯灭。
东西绿灯,南北红灯:PA0~PA7应输出01111101B=7DH东西闪灯,南北红灯:黄灯亮,红灯亮PA0~PA7应输出黄灯灭,红灯亮PA0~PA7应输出东西红灯,南北绿灯:PA0~PA7应输出东西红灯,南北黄闪:红灯亮,黄灯亮PA0~PA7应输出H红灯亮,黄灯灭PA0~PA7应输出②8253交通信号灯亮、灭的时间及数码管的倒计时间隔都通过8253控制。
8253可编程定时/计数器是Intel公司生产的通用外围接口芯片,它有三个独立的16位计数器,计数范围为0~2MHz。
8253有6种工作方式,其中方式三是方波发生器方式。
本设计中选用通道0,CLK0接1953HZ的时钟信号,GATE0接高电平VCC,OUT0接8255的PC1。
因为需要产生周期为0.5s的方波,即产生2Hz的方波而固有频率为1953Hz,故分频系数N=1953/2=976。
由于选用了通道0(SC1 SC0=00),工作在方式3(M2 M1 M0=011),对计数器进行读写/操作时,先送低8位,再送高8位(RW1 RW0=11),计数器的数值采用10进制(BCD=1),故初始化时命令字为00110111B=37H。
4、运行情况和结论(1)实际情况运行时的图片(2)结论①本设计基本完成了任务书中所要求的功能。
a.白天模式:①东西方向和南北方向各放行10秒。
绿灯转红灯前黄灯闪烁4秒。
②LED数码显示器显示倒数计时,从9倒数到0;倒数到4时黄灯亮。
②有待改进之处:a.夜间模式能在1s内切换到白天模式。
但在白天模式必须等一个循环结束后才能切换。
b.1s延时程序不精确,最大存在0.5s的误差。
C.东西南北放行时间不准确,数码管显示时间存在误差5、系统调试中的问题和解决办法遇到的问题:不能立刻从白天模式切换到夜晚模式解决的方法:修改了代码,在白天每次灯闪烁的后面判断是否切换,如果切换就跳到黄灯循环模式,由于程序长度限制,需要每隔一段设置一个中间点jmp.二.源程序清单.MODEL TINYCOM_ADDR EQU 0B003HT0_ADDR EQU 0B000HT1_ADDR EQU 0B001HT2_ADDR EQU 0B002H COM_ADD EQU 0F003H PA_ADD EQU 0F000H PB_ADD EQU 0F001H PC_ADD EQU 0F002H.STACK 300.DATADB 00111011B SHUMA DB 01111111B DB 00000110B DB 01011011BDB 01001111B DB 01100110B DB 01101101B DB 01111101B DB 00000111B DB 01111111B CNT0 DB ?CNT3 DB ?.CODESTART: MOV AX,@DATAMOV DS,AXMOV DX,COM_ADD MOV AL,88HOUT DX,ALMOV DX,COM_ADDR MOV AL,0B0HOUT DX,ALMOV DX,PC_ADD IN AL,DXAND AL,0FEH OR AL,01HOUT DX,ALMOV CNT0,0MOV CNT3,0 LP: CALL DL500ms MOV DX,PC_ADD IN AL,DXTEST AL,80HJZ K7JMP JMP1K7: MOV CH,CNT3CMP CH,0JZ RRSRRM: MOV AL,5XLATMOV DX,PA_ADDOUT DX,ALJMP LAST0RRS: MOV AL,4XLATMOV DX,PA_ADDOUT DX,ALCALL DL500msMOV AL,5XLATMOV DX,PA_ADDOUT DX,ALLAST0: MOV DX,PB_ADDMOV AL,00HOUT DX,ALXOR CH,0FFHMOV CNT3,CHMOV CNT0,0JMP LPJMP1: MOV DX,PC_ADD IN AL,DXTEST AL,20HJNZ JMP2MOV DX,PC_ADDIN AL,DXTEST AL,40HJNZ K5JMP JMP3K5: MOV AL,1XLATMOV DX,PA_ADDOUT DX,ALMOV DX,PB_ADDMOV AL,00HOUT DX,ALMOV CNT0,0MOV CNT3,0JMP LPJMP2: MOV DX,PC_ADD IN AL,DXTEST AL,40HJZ K6JMP JMP3K6: MOV AL,3XLATMOV DX,PA_ADDOUT DX,ALMOV DX,PB_ADDMOV AL,00HOUT DX,ALMOV CNT0,0MOV CNT3,0JMP LPLP1: JMP LPJMP3: MOV CNT3,0MOV CH,CNT0SHR CH,1LEA BX,LED_DataCMP CH,0JZ RYCMP CH,8JB GRCMP CH,8JZ YRJMP RGRG: MOV AL,3XLATMOV DX,PA_ADD OUT DX,ALPUSH BXLEA BX,SHUMA MOV AL,14SUB AL,CHXLATMOV DX,PB_ADD OUT DX,ALPOP BXLAST: INC CNT0CMP CNT0,28 JNZ LP1MOV CNT0,0JMP LP1RY: MOV AL,0XLATMOV DX,PA_ADD OUT DX,ALMOV DX,PB_ADD MOV AL,00HOUT DX,ALJMP LAST GR: MOV AL,1XLATMOV DX,PA_ADDOUT DX,ALPUSH BXLEA BX,SHUMA MOV DX,PB_ADD MOV AL,8SUB AL,CH XLATMOV DX,PB_ADD OUT DX,ALPOP BXJMP LAST YR: MOV AL,2XLATMOV DX,PA_ADD OUT DX,ALMOV DX,PB_ADDMOV AL,00HOUT DX,ALJMP LASTDL500ms PROC NEARMOV DX,T2_ADDR MOV AL,24HOUT DX,ALMOV AL,0F4HOUT DX,ALDELAY: MOV DX,PC_ADD IN AL,DXTEST AL,10HJZ DELAYRETDL500ms ENDPEND START三、调试现象1.调试现象程序调试时,交通信号灯系统初始状态为所有红灯闪烁4次,数码管此时不显示;系统初始状态之后东西向车行道绿灯亮,南北向车道红灯亮;当数码管数字减为0时,东西向、南北向红绿灯交换亮,即南北向车行道绿灯亮,东西向车道红灯亮,数码管数字减为0秒后,红绿灯再次交换,如此循环重复。
当道路发生紧急状况时,可拨单脉冲,使调试状态重新进入初始化,此时数码管停止计时(灭),初始化状态结束后,继续从刚刚被停止时刻开始计时,红绿灯状态仍为停止时刻的状态。
四、心得体会一个星期的微机原理课程设计终于结束了。
在整整一星期的日子里,从刚开始的完全迷惑到最后的豁然开朗,真是经历了很多,但是却让我们学到很多的东西,不仅可以巩固了课上所学过的理论知识,而且学到了很多在书本上所没有学到过的知识。
以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图画出来,但是我开始总觉得这样做没必要,很浪费时间。
但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,画程序方框图是很有必要的。
因为通过程序方框图,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,而且在程序测试的过程中也有利于查错。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。