微型计算机技术及应用课程设计-交通灯控制器_第1页
微型计算机技术及应用课程设计-交通灯控制器_第2页
微型计算机技术及应用课程设计-交通灯控制器_第3页
微型计算机技术及应用课程设计-交通灯控制器_第4页
微型计算机技术及应用课程设计-交通灯控制器_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

.石河子大学信息科学与技术学院微型计算机技术及应用课程设计 题 目: 交通灯控制器 姓 名: 学 号: 院 系: 信息科学与技术学院 专 业: 计算机科学与技术系 班 级: 指导教师: 目录一、设计题目:交通灯设计2二、设计目的2三、电路分析23.1主要内容23.2设计要求23.3具体分析3四、方案设计34.1模拟对象34.2芯片选择及仿真连线图44.3主要流程图5五、心得体会6六、参考文献7八、实验程序8一、设计题目:交通灯设计要求:1. 能实现红绿灯交替点亮;2. 显示点亮时间3. 在绿灯要灭的前3秒钟变成黄灯闪烁扩展功能:可以进行手动控制切换二、设计目的 1. 了解交通灯管理的基本工作原理2. 熟悉8255A并行接口的各种工作方式和应用3. 熟悉8253计数器/定时器的工作方式及应用编程,掌握利用软硬件相结合定时的方法4.了解其它芯片例如74HC373、74HC139、74HC154的功能作用三、电路分析3.1主要内容模拟十字路口交通灯(红、黄、绿三色)的显示控制。3.2设计要求(1)初始时东西方向南北方向都是红灯在亮,计数显示器上显示02/62来显示东西南北方向交通灯时间。并且数字不断减一。(2)当02减为零时,62刚好变为60,此时02减到0立即变为55,然后55/60递减一。(3)然后当55/60减为01/06时,下一个数字显示的是05/05用来显示原来为绿灯变为黄灯,持续时间为5秒。(4)当黄灯灭后就又初始原来值,回到(1)重复此过程。3.3具体分析在仿真图中利用8255实现交通灯的控制,8253实现计数,并通过8086的控制来在计数管上显示计数时间。用四个交通灯trafficlights来模拟四个路口的交通灯情况。四、方案设计4.1模拟对象图4.1 十字路口交通灯模拟图图4.2 实验仪器上的四个交通灯微机交通灯实时控制系统用于城市十字路口的交通管理。南北和东西路口各设红、黄、绿三个交通灯。南北向和东西向的交通灯定时55秒交换一次。每次交换前,最后5秒黄灯闪烁,供闪烁5次。4.2芯片选择及仿真连线图8253可编程定时器/计数器,发放方波脉冲信号实现一秒计时。8253与计数显示器相连,来控制计数的显示。8255A并行接口三个芯片, 其中用A口控制显示道路交通灯信息。B口与计数显示器连接。PB0PB78255APB0PB3 CLK28253AGATE2OUT2交通灯2-4译码器图4.3 主要芯片连接图4.3主要流程图初始化8253初始化8255开始图4.4 主要流程图计数开始并以此减一是否最后5秒黄灯闪烁5秒是否5秒后五、心得体会在这次的课程设计中,学到的知识有很多,收获也不小。可以从理论结合实际,可以把身边的一些所涉及到的编程工具自己也能够体会和学习一下。比如这次所做的计程车计价器。由于能力有限不能拿单片机或仿真的工具来做,只是用汇编基础的模拟了一下,其中也了解到了最基本的原理,锻炼了自己的基础知识水平。可以用到将来的实际应用当中。能够体会到其中的乐趣。但是这次也有许多的问题,首先是自己的编程水平不好,所以做起来速度很慢,需要以后多多练习,实验。有些功能还没有能够实现,所以还需要进一步的学习,要学的知识还有很多,还应该花更多的精力在这些方面,这样才能够提高自己的专业水平。汇编语言和微机接口原理也是最基层的计算机语言和最接近硬件的,只有了解了这里的本质,才能更有效准确的运用其他工具。六、参考文献1 IBM-PC汇编语言程序设计 沈美明 清华大学出版社 2001年8月第2版 2 IBM-PC汇编语言程序设计例题习题集沈美明 清华大学出版社 1991年6月第1版 3 微机系统和接口应用技术朱世鸿 著 清华大学出版社 2006年9月第1版 八、实验程序 CT_PORT EQU 006H A_PORT EQU 000H B_PORT EQU 002H C_PORT EQU 004H MY8253_CT EQU 19H CLOCK_0 EQU 01H ;000000101 CLOCK_1 EQU 09H ;0000 1001 CLOCK_2 EQU 11H ;00010001 DATA SEGMENT LED DB 0CH,09H,0AH,24H,14H TIME DB 02H,55H,05H,42H,07H;两个数字显示器上下对应显示 TIME_2 DB 62H,60H,05H,35H,05H TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH MM DW ? MM_1 DW ? MM_2 DW 01H MM_3 DB 57 MM_4 DB 35 N1 DB 00 N2 DB 10 TRY DB 00H DTIME DW 50H DATA ENDS STACK SEGMENT STACK;堆栈段 DW 50 DUP(?) TOP LABEL WORD STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA ;初始化 MOV DS,AX;放数据段 MOV AX,STACK MOV SS,AX;放堆栈段 MOV SP,TOP MOV AL,88H ; MOV DX,CT_PORT ;C口低四位输出,高四位输入 OUT DX,AL;把控制字放到8255的控制口 MOV AL,0CH ; MOV DX,A_PORT OUT DX,AL ;8253整个初始化过程 MOV DX,MY8253_CT ;8253初始化 MOV AL,00110111B ;计数器0工作在方式3 时钟频率1.8432MHz OUT DX,AL;把al中数字放入端口号为MY8253_CT MOV DX,CLOCK_0 MOV AL,00H ;送计数初值的低8位 OUT DX,AL MOV AL,10H ;送计数初值的高8位 OUT DX,AL JMP BEGIN ONESECOND MACRO MOV DX,MY8253_CT MOV AL,01110001B ;计数器1工作在方式0 OUT DX,AL MOV DX,CLOCK_1 MOV AL,00H ;送计数初值的低8位 OUT DX,AL MOV AL,10H ;送计数初值的高8位 OUT DX,AL ENDM HALFSECOND MACRO MOV DX,MY8253_CT MOV AL,01110001B ;计数器1工作在方式0 OUT DX,AL MOV DX,CLOCK_1 MOV AL,50H ;送计数初值的低8位 OUT DX,AL MOV AL,00H ;送计数初值的高8位 OUT DX,AL ENDM BUFFER MACRO LOCAL AGAIN MOV DX,MY8253_CT MOV AL,10110001B ;计数器2工作在方式0 OUT DX,AL MOV DX,CLOCK_2 MOV AL,00H ;送计数初值的低8位 OUT DX,AL MOV AL,10H ;送计数初值的高8位 OUT DX,AL MOV DX,C_PORT AGAIN: IN AL,DX TEST AL,20H JZ AGAIN ENDM DELAY MACRO LOCAL LOOPER MOV CX,DTIME LOOPER: LOOP LOOPER ENDM BEGIN: XOR SI,SI ;SI清零 JMP GIVE EMERGENCY: INC TRY MOV DX,A_PORT MOV AL,0CH OUT DX,AL REP: MOV DX,C_PORT ;选中数码管1 MOV AL,00H OUT DX,AL MOV DX,B_PORT ;从TAB中选中对应的东西方向倒计时十位数字,予以数码管显示 LEA BX,TAB MOV AX,MM PUSH CX MOV CL,04H SHR AL,CL XLAT OUT DX,AL POP CX ;DELAY BUFFER MOV DX,C_PORT ;选中数码管2 MOV AL,01H OUT DX,AL MOV DX,B_PORT ;从TAB中选中对应的东西方向倒计时个位数字,予以数码管显示 MOV AX,MM AND AL,0FH XLAT OUT DX,AL ;DELAY BUFFER MOV DX,C_PORT ;选中数码管3 MOV AL,02H OUT DX,AL MOV DX,B_PORT ;从TAB中选中对应的南北方向倒计时十位数字,予以数码管显示 LEA BX,TAB MOV AX,MM_1 PUSH CX MOV CL,04H SHR AL,CL XLAT OUT DX,AL POP CX ;DELAY BUFFER MOV DX,C_PORT ;选中数码管4 MOV AL,03H OUT DX,AL MOV DX,B_PORT ;从TAB中选中对应的南北方向倒计时个位数字,予以数码管显示 MOV AX,MM_1 AND AL,0FH XLAT OUT DX,AL ;DELAY BUFFER;意外事件 MOV DX,C_PORT IN AL,DX TEST AL,40H JZ RESTORE JMP EMERGENCY RESTORE: SUB TRY,00H JZ REP_ DEC SI LEA BX,LED ;从LED表中取出各状态东西南北灯亮的情况 MOV AX,SI XLAT MOV DX,A_PORT OUT DX,AL MOV TRY,00H INC SI REP_: MOV AX,MM_1 ;判断南北方向计时个位数是否为0,是则减去6 PUSH CX MOV CL,12 SHL AX,CL POP CX SUB AH,0F0H JZ SUB_6_1 MOV AX,MM ;判断东西方向计时个位数是否为0,是则减去6 PUSH CX MOV CL,12 SHL AX,CL POP CX SUB AH,0F0H JZ SUB_6 XOR AX,AX DEC MM_2 JNZ NEXT ONESECOND NEXT: MOV DX,C_PORT ;测试out1的电平是否变高 IN AL,DX TEST AL,10H JNZ DEC_1 ;变高说明时间到 JMP REP ;否则断续 SUB_6: XOR AX,AX ;东西方向计时减6程序 SUB MM,06H JMP REP SUB_6_1: XOR AX,AX ; 南北方向计时减6程序 SUB MM_1,06H JMP REP_ DEC_1: CMP SI,03H ;前三个状态通过东西方向的时间控制转换状态 JA DE_1 ;后两个状态通过南北方向的时间控制转换状态 DE_0: DEC MM_3 ;东西方向绿灯闪烁程序 CMP SI,02H ;东西绿,南北红为第二状态 JZ NS JMP NORM_1 NS: CMP MM_3,05H ;判定是否已到计时最后5秒 JNA CHO JMP NORM_1 CHO: MOV AL,MM_3 ;倒计时5秒,奇数码灭,偶数亮 MOV BL,02H DIV BL CMP AH,00H JZ HIGH_1 LOW_1: MOV DX,A_PORT ;南北方向红灯亮,东西方向熄灭 MOV AL,08H OUT DX,AL JMP NORM_1 HIGH_1: MOV DX,A_PORT ;正常,状态2 MOV AL,09H OUT DX,AL NORM_1: MOV MM_2,01H ;这里 DEC MM_1 DEC MM CMP MM,00H JZ GIVE ;某状态计时结束,重新赋计数值 JMP REP ;否则继续计数 DE_1: DEC MM_4 ;南北方向绿灯闪烁程序 CMP SI,04H JZ EW JMP NORM_2 EW: CMP MM_4,05H ;判定是否已到计时最后5秒 JNA CHO_2 JMP NORM_2 CHO_2: MOV AL,MM_4 ;倒计时5秒,奇数码灭,偶数亮 MOV BL,02H DIV BL CMP AH,00H JZ HIGH_2 LOW_2: MOV DX,A_PORT ;东西方向红灯亮,南北方向熄灭 MOV AL,04H OUT DX,AL JMP NORM_2 HIGH_2: MOV DX,A_PORT ;正常,状态2 MOV AL,24H OUT DX,AL JMP NORM_2 NORM_2: MOV MM_2,01H ;这里 DEC MM DEC MM_1 CMP MM_1,00H JZ GIVE ;某状态计时结束,重新赋计数值 JMP REP ;否则继续计数 GIVE_1: XOR SI,SI ;一次循环结束,各状态复位 MOV MM_3,57 MOV MM_4,35 GIVE: LEA BX,TIME ;从TIME表中取出南北方向各状态灯亮的时间 把time地址给 lea传送有效地址 MOV AX,SI XLAT MOV M

温馨提示

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

评论

0/150

提交评论