当前位置:文档之家› 微机原理及应用课程设计_数码管交通灯教材

微机原理及应用课程设计_数码管交通灯教材

南京工程学院课程设计任务书课程名称微机原理及应用A 院(系、部、中心)专业班级姓名学号起止日期 2013.12.23~2013.12.26指导教师目录1.设计要求 (3)1.1设计目的 (3)1.2设计内容 (3)1.3功能要求 (3)1.4难度要求 (3)2.方案说明 (4)2.1硬件系统工作原理说明 (4)2.1.1电路接线方案 (4)2.1.2定时问题 (4)2.1.3工作状态 (4)2.2参考流程图说明 (5)2.2.1流程图设计思想 (5)2.2.2实验流程图 (6)3源程序清单 (7)4.调试过程和结果 (11)4.1总接线图 (11)4.2 LED模拟的交通灯显示情况 (12)4.3数码管模拟的交通灯倒计时 (13)5.心得体会 (13)6.参考文献 (14)1.设计要求1.1设计目的通过课程设计加深理解课堂教学内容,掌握微机原理的基本应用方法。

通过实验熟悉微机基本接口芯片的外型、引脚、编程结构,掌握汇编语言程序设计和微机基本接口电路的设计、应用方法,做到理论联系实际1.2设计内容利用STAR ES598PCI实验仪的硬件资源设计一个“带时间显示的交通信号灯迷你控制系统”。

所有输入该装置的信号均采用STAR ES598PCI实验仪上的状态输入开关输入,东西,南北方向的红绿黄灯均采用实验仪上的LED发光二极管模拟,东西,南北方向的信号灯变化,通行倒计时时间用数码管显示。

1.3功能要求(1)假设在一个A道(东西方向)和B道(南北方向)交叉的十字路口安装有自动信号灯。

当A道和B道均有车辆要求通过时,A道和B道轮流放行。

A道放行7秒,B道再放行5秒,依次轮流。

绿灯转换红灯时黄灯亮1秒。

(2)一道有车,另一道无车时(实验时用开关K5和K6控制),交通控制系统能立即让有车道放行。

(3)有紧急车辆要求通过时,系统要能禁止普通车辆通过,A、B道均为红灯,紧急车辆用K7开关来模拟控制,有紧急车辆时另有一红灯闪烁。

(4) 当A道和B道均有车辆要求通过时,A道和B道轮流放行。

A道放行30秒,B道再放行20秒,依次轮流。

每个绿灯的最后5秒黄灯闪烁。

1.4难度要求(1)基本要求:采用8255A输出控制信号灯,8255A输入K5、K6、K7控制开关信号,用循环程序软件定时实现功能要求。

(60分)(2)中级要求:采用8255A输出控制信号灯,8255A输入K5、K6、K7控制开关信号,用8253硬件定时、软件查询方式实现功能要求。

(80分)(3)高级要求:在中级要求的基础上,增加用8255A输出驱动LED数码显示器显示绿灯倒计时的秒数,黄灯时不显示时间。

(100分)2.方案说明2.1硬件系统工作原理说明2.1.1电路接线方案设计任务中的A道代表东西方向,B道代表南北方向交通信号灯由实验仪的LED发光二极管模拟,由8255A-PA输出控制,见下表:带时间显示的交通信号灯模拟控制系统8255A输入/输出信号一览表(供参考)带时间显示的交通信号灯模拟控制系统及8255A输入/输出信号一览表8255A-PB输出方式PCH输入方式8255A-PA输出方式PCL输出方式引脚输出信号引脚输入信号引脚输出信号引脚输出信号PB7驱动数码管字形PC7 K7 PA7 东西绿灯PB6 PC6 K6 PA6 东西黄灯PB5 PC5 K5 PA5 东西红灯PB4 PC4 8253-OUT2 PA4PB3 PA3 南北绿灯PC3 PB2 PA2 南北黄灯PC2 PB1 PA1 南北红灯PC1PB0 PA0 紧急车辆闪光PC0 数码管的位码选择2.1.2定时问题用8253#2工作方式0进行500ms定时,CLK2接125kHz时钟信号,GA TE2接高电平,OUT2接8255-PC4。

主程序通过查询8255-PC4的状态,获知准确的定时信息。

也可以采用软件延时,500ms延时子程序参见实验一。

2.1.3工作状态根据设计任务功能要求,依K5、K6、K7的状态分为四种工作状态:状态0:K5、K6、K7均断开(1电平)或K5、K6均闭合K7断开,A、B道交替通行;状态1:仅K5闭合,A道有车、B道无车;状态2:仅K6闭合,A道无车,B道有车;K5和K6均闭合,A、B道都有车,A、B 道交替通行;状态3:K7闭合,有紧急车辆通行。

2.2参考流程图说明2.2.1流程图设计思想1、主程序每0.5秒循环一次,每次查询三个开关状态,及时响应开关状态的变化。

其中CNT0和CNT3分别用于记录状态0和状态3工作进程的进程计数器,可以用寄存器或内存变量实现。

2、常用的工作状态0是A、B道交替通行,一个周期用时14秒。

用CNT0以0.5秒为单位进行加1计数,从0到27循环计数,CNT0/2就可知本周期进行到第几秒了。

根据设计任务功能要求,第0秒,A道红灯、B道黄灯;第1~7秒,A道绿灯、B道红灯;第8秒,A道黄灯、B道红灯;第9~13秒,A道红灯、B道绿灯。

3、工作状态3中,CNT3只有2种状态(0和0FFH),用于控制紧急车辆的灯光闪烁。

4、时间显示采用实验仪的数码管显示。

只用一个数码显示器显示绿灯通行倒计时,A 道显示数=8-CNT0/2,B道显示数=14-CNT0/2。

参考流程图2。

5、如果用2个数码显示器分别显示A道、B道的倒计时,则需要用到动态显示扫描技术,难度较大,定为加分项目。

在500ms延时子程序中循环调用动态显示扫描子程序,定时器的定时周期应缩短到5ms。

参考流程图3。

此功能难度较大,定为加分项目。

2个数码管的位码选择(低电平有效)有8255的PC3、PC0来确定,接线到数码管选择脚接口JP41(注意JP41的接插方法:JP41只接插一半,用PCL接JP41的1-4引脚。

如果PCL与JP41完全连接,PC4对应位会显示倒计时数码)。

显示内容由8255的B口接线到数码管段码接口JP42。

2.2.2实验流程图主程序CALL 500ms K7有效?K5有效?K6有效?CNT0+1CNT0=14*2?CNT0=0CNT0/2=0?输出A 红,B 黄,关数码CNT0/2<8?输出A 绿,B 红,8-CNT0/2,转换字型码→PB 输出CNT0/2=8?输出A 黄,B 红,关数码输出A 红B 绿,14-CNT0/2,转换字型码→PB 输出K7K5K6YYYNNNYNYNYNYNCNT3=0LP输出A 绿,B 红输出B 绿,A 红关数码显示器K7输出A 红,B 红,闪光灯亮CNT3=0?输出A 红,B 红,闪光灯灭LP CNT3取反YN关数码显示器500ms 子程序8253#2方式0重装500ms 定时常数OUT2=0?500ms 时间到,返回YN8255初始化:PA 、PB 、PCL 输出方式0,PCH 输入8253初始化:;#2方式0,CLK2=125kHz,GATE2=1,OUT2接PC4变量初始化:CNT0=0,CNT3=0CNT0=0,CNT3=0CNT0=0流程图2L1L2L3L0LPK71K72DELAYK56K6有效?YN3源程序清单.MODEL TINYCOM_ADD EQU 0F003H ;8255A片选地址PA_ADD EQU 0F000HPB_ADD EQU 0F001HPC_ADD EQU 0F002HCOM_ADDR EQU 0B003HT0_ADDR EQU 0B000HT1_ADDR EQU 0B001HT2_ADDR EQU 0B002H.STACK 200.DATASHU_DATA DB 00111111BDB 00000110BDB 01011011BDB 01001111BDB 01100110BDB 01101101BDB 01111101BDB 00000111BCNT0 DB ?CNT3 DB ?.CODESTART: MOV DX,COM_ADD ;8255初始化MOV AL,88H ;PA、PB、PCL输出方式0, PCH输入 OUT DX,ALMOV DX,PA_ADDMOV AL,0FFHOUT DX,ALMOV DX,PC_ADDIN AL,DXAND AL,0F0H ;保留高位,低位为0OR AL,01H ;保留高位,低位全部为1OUT DX,ALMOV DX,COM_ADDR ;8253初始化MOV AL,0B0H ;1011 0000BOUT DX,ALMOV CNT0,0 ;状态0: A,B交替MOV CNT3,0 ;状态3: 紧急时LEA BX,SHU_DATALP: CALL DL500MSMOV DX,PC_ADDIN AL,DXTEST AL,80H ;AL AND 1000 0000B,检测K7JNZ K7 ;如果PC7=0,结果为0,ZF=1,不执行K7。

如果PC7=1,ZF=1,执行K7,为特殊情况TEST AL,20H ;0010 0000B,检测PC5JNZ K51 ;如果PC5=0,结果为0,ZF=1,不执行K51。

如果相反,则执行K51TEST AL,40H ;0100 0000B ,检测PC6JNZ K61MOV CNT3,0MOV CH,CNT0SHR CH,1 ;CNT3=0,CH右移1位相当于CH/2CMP CH,5 ;比较CH/2和8JS GR ;CH/2〈8,标志SF=1,转GRCMP CH,10JS YRCMP CH,15JS RGJMP RYLAST: INC CNT0 ;CNT0=CNT0+1CMP CNT0,40 ;CNT0-28JNZ LPMOV CNT0,0JMP LPRG: MOV DX,PA_ADDMOV AL,0D7H ;1101 0111BOUT DX,AL ;A红B绿MOV DX,PB_ADDMOV AL,14 ;启动数码管SUB AL,CH ;AL-CH/2XLAT ;AL=AL+BXOUT DX,AL ;显示倒计时。

JMP LASTRY: MOV DX,PA_ADDMOV AL,0DBH ;1101 1011BOUT DX,AL ;A红B黄CALL DL200MSMOV DX,PA_ADDMOV AL,0DFHOUT DX,ALJMP LASTK51: JMP K5K61: JMP K6GR: MOV DX,PA_ADDMOV AL,7DH ;0111 1101OUT DX,AL ;A绿B红MOV DX,PB_ADD ;输出倒计时数字MOV AL,8SUB AL,CH ;AL=AL-CH/2=8-CH/2 XLAT ;AL=AL+BXOUT DX,ALJMP LASTK7: MOV CH,CNT3 ;CNT3=0,CH=0CMP CH,0JZ K71MOV DX,PA_ADDMOV AL,0DDHK72: MOV DX,PB_ADDMOV AL,00HOUT DX,ALNEG CH ;CH=1MOV CNT3,CH ;CNT3=1,K7灭MOV CNT0,0JMP LPYR: MOV DX,PA_ADDMOV AL,0BDHOUT DX,ALCALL DL200MSMOV DX,PA_ADDMOV AL,0FDHOUT DX,ALJMP LASTK71: MOV DX,PA_ADDMOV AL,0DCH ;1101 1100B, K8亮0.5s OUT DX,ALCALL DL200MSMOV DX,PA_ADDMOV AL,0DDH ;1101 1101B, K8灭0.5s OUT DX,ALJMP K72K5: MOV DX,PA_ADDMOV AL,7DH ;AL=0111 1101BOUT DX,AL ;亮A绿B红JMP K56K6: MOV DX,PA_ADDMOV AL,0D7H ;1101 0111BOUT DX,AL ;亮A红B绿K56: MOV DX,PB_ADDMOV AL,00HOUT DX,ALMOV CNT0,0MOV CNT3,0JMP LPDL500MS PROC NEARMOV DX,T2_ADDRMOV AX,62500 ;频率125KHz,62500*(1/125)=0.5sOUT DX,ALMOV AL,AHOUT DX,ALDELAY1: MOV DX,PC_ADDIN AL,DXTEST AL,10H ;设置"准备就绪"(ready)信息在D4位到PC4, TEST为AL AND 10HJE DELAY1 ;AND后PC4为0时,JE=1,执行DELAY。

相关主题