微机系统接口课程设计——交通灯

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

微机系统接口课程设计题目:交通灯系部名称:计算机系班级:学号:指导教师:学生姓名:时间2009-6-1—2009-6-12微机系统接口课程设计一实习的目的本次实习是基于微机原理与微机接口技术的实践课程设计。1,通过实习熟悉并掌握接口芯片8253、8255、8259的原理、功能和应用2,对微机原理知识的熟悉和巩固,了解微机工作基本原理。二硬件课程设计题目1,十字路口交通信号灯控制系统设计三对题目的简单分析(用到哪些芯片及作用)(1)十字路口交通信号灯控制系统设计8253计数控制,用于交通信号灯的时间控制8255数码管显示,用于倒计时时间的显示8259突发事件的控制及信号灯的切换四以下是三个题目分别的实习报告(一)十字路口交通信号灯控制系统设计一硬件课程设计题目交叉路口交通信号灯控制系统设计二设计任务编写一个交通灯控制程序,实现东西路口与南北路口状态灯的转换,并设置紧急键,能使交通灯实现紧急处理。利用中断程序实现多次循环调用电风扇工作子程序,并在显示器上提示进入中断服务程序的信息。具体实现如下:1.用试验台提供的发光二极管(红绿黄各两支,共六支)作为南北路口(红绿黄各一支)和东西路口(红绿黄各一支)的模拟交通灯。如图:D7,D5,D3作为南北路口的交通灯与A7,A5,A3相连,D6,D4,D2作为东西路口的交通灯与A6,A4,A2相连。编程使六个灯按交通灯变化规律燃灭B7B6B5B4B3B2B1B0A7A6A5A4A3A2A1A0C3C2C1C0C4C58255AABCDEFGDPX2X1LEDOUT0CLK0GATE0CSCS8254红红绿绿黄黄白白D7D6D5D4D3D2D1D0二极管K3(东西紧急)K1(夜间紧急)K2(南北紧急)IOY01KHZ+5VIOY2硬件连接图:2.用可编程并行接口芯片8255A控制模拟交通灯的亮与灭和数码管的倒计时显示。3.用可编程定时器/计数器芯片8253实现模拟交通灯亮与灭的时间延迟控制。4.用数码管作为模拟交通灯亮与灭的时间延迟控制的倒计时显示。5.用汇编语言编程使六个灯按交通灯变化规律“亮/灭”。交通灯变化规律要求:南北绿灯,东西红灯同时亮30秒,且数码管30秒倒计时显示。南北黄灯闪烁5秒,同时东西路红灯继续亮,且数码管5秒倒计时显示。南北路红灯,东西路绿灯同时亮30秒,且数码管30秒倒计时显示。南北路红灯继续亮,同时东西路黄灯闪烁5秒,且数码管5秒倒计时显示。转①重复按压“东西紧急键”,则东西方向绿灯,南北方向红灯;再次按压“东西紧急键”,解除东西紧急通行状态。按压“南北紧急键”,则南北方向绿灯,东西方向红灯;再次按压“南北紧急键”,解除南北紧急通行状态。按压“夜间紧急键”,则东西南北中黄灯闪烁;再次按压“夜间紧急键”,解除夜间紧急状态。8259主从级联两片,中断请求端口IRQ接时钟脉冲每秒检测中断请求输入端。开中断,检测到有中断请求时,初始化PCI板卡寄存器,保护现场,设置屏蔽字,执行中断处理,设置中断信号量keep_int,并传递到主程序,返回断点。主程序中检测中断信号量,与预设中断条件符合,则执行红绿灯中断变化主程序。三设计目的通过可编程并行接口芯片8255A和可编程定时器/计数器芯片8253实现十字路口交通灯的模拟控制,进一步掌握并行接口和定时器/计数器及数码管控制的实际应用。四课程设计的环境(使用的硬件环境,设备等)TDN-CM+计算机组成原理教学实验系统一台,排线若干五硬件和软件设计1、硬件部分通过8253计数,每1ms刷新一次,CX计数不为零,计数值减1,刷新1000次,持续一秒钟(其中,输入始终脉冲为1KHZ)。PA7~PA0控制二极管的亮灭,PB7~PB0控制数码管的显示。通过设置控制字,使8255的C口高四位输出,低四位输入,PC4和PC5对数码管进行位控,让两位十进制数同时显示,PC3、PC2和PC1分别连接K3和K2,分别代表东西紧急键和南北紧急键。红绿灯转换中检测PC3~PC1的状态,判断是否有紧急键按下。在黄灯显示的时候,通过判断使黄灯亮时灭,灭时亮,以此设置黄灯闪烁。8255连接端口IOY0,A口输出发光二极管;B口输出接数码管;C0~C3输入,C0接8254的OUT端,C1~C3接紧急键;C4~C7输出,对数码管进行位控。8254的CLK0接1KHz,OUT0接8255的C0。整体实验设计思想如下图所示:连线/接图如下所示:写控制字:00110001B写低八位写高八位8254初始化:从C口读入紧急键状态东西紧急?南北紧急?夜间紧急?初始化82540.5秒计完?检查灯的状态,若黄灯亮,让其灭;若黄灯灭,则让其亮夜间紧急解除?东西红,南北绿,数码管不显东西绿,南北红,数码管不显YNYNNYNYNY紧急键处理:CX减1PC4为0,高位数码管有效PC5为0,低位数码管有效CX送AX,AX除10,商送AL,余数送AHLED段首地址送BX,XLAT查表显示延时AH送ALLED段首地址送BX,XLAT查表显示显示:中断控制流程图:2软件部分;8255端口地址IYO0ADDR8255_AEQU1400H;A口ADDR8255_BEQU1401H;B口ADDR8255_CEQU1402H;C口ADDR8255EQU1403H;控制口;8253端口地址IYO2ADDR8253EQU1443HADDR8253_0EQU1440H;8253计数器口地址;数字段DATASEGMENTRUNDB'JIAOTONGDENGISRUNNING.......',0AH,0DH,'$';提示信息MESSDB'PRESSESCKEYTODOS.$'LEDBUFDB3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fhDATAENDS;代码段CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETRUN;显示提示信息MOVAH,09HINT21HMOVDX,OFFSETMESSMOVAH,09HINT21H;8255初始化A口接发光二极管;B口接数码管;C4-7out,C0-3inCALLINITIAL_8255;8253初始化初值1000CLKO接1KHOUT0接C0GATE0接+5V;计数通道0方式0先低8位后高8位BCD方式控制字:00110001BCALLINITIAL_8253;-------------------------------------------------E_W_RED_S_N_GRE:;在发光二极管上显示东西红灯亮,南北绿灯亮MOVDX,ADDR8255_AMOVAL,10011111BOUTDX,AL;计时秒MOVCX,31CALLDELAY_MIN1MOVDX,ADDR8255_A;从的A口读出灯的状态INAL,DXCMPAL,10011111BJEE_W_RED_S_N_YELCMPAL,0110111BJEE_W_GRE_S_N_YELCMPAL,11111111BJEE_W_RED_S_N_GRECMPAL,11110011BJEE_W_RED_S_N_GRE;查灯的状态;-------------------------------------------------E_W_RED_S_N_YEL:;在发光二极管上显示东西红灯亮,南北黄灯亮MOVDX,ADDR8255_AMOVAL,10110111BOUTDX,AL;计时秒MOVCX,6CALLDELAY_MIN2MOVDX,ADDR8255_A;从的A口读出灯的状态INAL,DXCMPAL,10011111BJEE_W_RED_S_N_YELCMPAL,0110111BJEE_W_GRE_S_N_YELCMPAL,11111111BJEE_W_RED_S_N_GRECMPAL,11110011BJEE_W_RED_S_N_GRE;查灯的状态;-------------------------------------------------E_W_GRE_S_N_RED:;在发光二极管上显示东西绿灯亮,南北红灯亮MOVDX,ADDR8255_AMOVAL,01101111BOUTDX,AL;计时秒MOVCX,31CALLDELAY_MIN1MOVDX,ADDR8255_A;从的A口读出灯的状态INAL,DXCMPAL,10011111BJEE_W_RED_S_N_YELCMPAL,0110111BJEE_W_GRE_S_N_YELCMPAL,11111111BJEE_W_RED_S_N_GRECMPAL,11110011BJEE_W_RED_S_N_GRE;查灯的状态;-------------------------------------------------E_W_GRE_S_N_YEL:;在发光二极管上显示东西黄灯亮,南北红灯亮MOVDX,ADDR8255_AMOVAL,01111011BOUTDX,AL;计时秒MOVCX,6CALLDELAY_MIN2MOVDX,ADDR8255_A;从的A口读出灯的状态INAL,DXCMPAL,10011111BJEE_W_RED_S_N_YELCMPAL,0110111BJEE_W_GRE_S_N_YELCMPAL,11111111BJEE_W_RED_S_N_GRECMPAL,11110011BJEE_W_RED_S_N_GRE;查灯的状态JMPE_W_RED_S_N_GREEXIT:MOVAH,4CHINT21H;******************************************************************;数码管显示DISPPROCPUSHAXPUSHBXPUSHDXPUSHCXDECCX;将CL中进制数转化为十进制数MOVDX,ADDR8255_CMOVAL,11101111BOUTDX,ALMOVAX,CXMOVCL,0AHDIVCLPUSHAXMOVBX,OFFSETLEDBUFXLAT;显示十位码MOVDX,ADDR8255_B;将AL中位码输出到B口,给LED显示器OUTDX,ALMOVCX,04FFFHDELAY:NOPLOOPDELAYMOVDX,ADDR8255_CMOVAL,11011111BOUTDX,ALPOPAXMOVAL,AHMOVBX,OFFSETLEDBUFXLAT;显示个位码MOVDX,ADDR8255_B;将AL中位码输出到B口,给LED显示器OUTDX,ALPOPCXPOPDXPOPBXPOPAXRETDISPENDP;***************************************************************DELAY_MIN1PROCPUSHAXPUSHDXPUSHCXLOOP1:CALLINITIAL_8253LOOP2:MOVAH,0BH;判断有无键按下INT21HCMPAL,0JNZEXIT;有键入则返回DOSMOVDX,ADDR8255_CINAL,DXTESTAL,00001110B;检测是否有紧急键按下JZL1CALLEMERGECY;有紧急键则转到紧急键处理JMPL2L1:CALLDISPL2:MOVDX,ADDR8255_C;检测1s是否计完INAL,DXTESTAL,000000001BJELOOP2;若1s没计数完,继续LOOPLOOP1;30s或1s计数完全?若没计数完,继续POPCXPOPDXPOPAXRETDELAY_MIN1ENDP;****************************************************************DELAY_MIN2PROCPUSHAXPUSHDXPUSHCXLOOP3:CALLINITIAL_8253LOOP4:MOVAH,0BH;有键盘输入,退出INT21HCMPAL,0JNZEXITMOVDX,ADDR

1 / 15
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功