1、第三组基于8253的交通信号控制器的设计合肥学院自动化专业微机原理课程设计报告课题名称:基于8253的交通信号控制器的设计姓 名:符 勇 0705074027 耿在光 0705074033 马典波 0705074037 专 业:07自动化(2)班 指导老师:刘 伟 林泽坤 论文题目基于8253的交通信号控制器的设计指导教师刘伟 林泽坤学生班级07自动化2班学生姓名符勇 耿在光 马典波设计内容分析论证(可加附页)见附页设计条件要求首先必须了解交通路灯的亮灭规律。设有一个十字路口,1、3为南,北方向, 2、4为东,西方向,初始态为4个路口的红灯全亮。 之后, 1、3路口的绿灯亮, 2、4路口的红灯
2、亮, 1、3路口方向通车。 延迟一段时间后, 1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁。闪烁若干次后, 1、3路口的红灯亮, 同时2、4路口的绿灯亮, 2、4路口方向开始通车。 延迟一段时间后, 2、4路口的绿灯熄灭,而黄灯开始闪烁。闪烁若干次后,再切换到1、3路口方向。 之后,重复上述过程。利用8253和74LS244完成.设计进程安排第一周设计任务:(1):明确课题对程序功能,运算精度等方面的要求及硬件条件(2):把复杂问题分解为若干模块,确定各模块处理方法,画出流程图。(3):存储器资源分配第二周设计任务:(4):编制程序,根据流程图精心选择合适的指令和寻址方式来编制源程序(5)
3、:对程序进行汇编,调试和修改,直到程序运行结果正确为止。文献资料准备微型计算机原理及接口技术中国科技大学出版社 吴秀清 周荷琴编著16-32位微型计算机技术及应用清华大学出版社 戴梅萼 史嘉权 编著汇编语言程序设计南京大学出版社 姚君遗编著汇编语言程序设计教程清华大学出版社 杨记文编著微型计算机原理及接口技术实验指导书开题批注摘 要 此次微机原理与接口技术课程设计我们小组所选择的题目是基于8253的交通信号控制器的设计,主要是运用8253定时芯片以及学校给我们提供的实验箱去模拟交通信号的控制过程,实验中我们还用到了8255,用以检测以及驱动LED灯,实验硬件主要分为电源模块,定时模块,8255
4、驱动模块以及LED灯显示,经过两个星期的小组合作,加上老师的辛勤指导,最终完成了此次设计,以下是这次设计的具体方案,可能设计中仍有一些缺陷和不足,望老师可以批评指出。关键字: 设计 交通控制 8253 8255 合作 目 录一 绪论 11.1本课题设计研究意义 1二 课程设计的目的和要求 22.1课程设计的目的 22.1.1 掌握微机系统的设计步骤 22.1.2 掌握8253、8255的用法 21. 8253的基本用法 22. 8255的基本用法 22.1.3 掌握汇编程序的设计 22.2设计的任务与要求 2三 总体设计 33.1交通灯的工作过程 33.2发光二极管的应用 33.3定时/计数器
5、的选择 3四 硬件设计 34.1硬件电路的模块构成 34.2设计中所用到的8255、8253,其结构和功能如下 44.2.1可编程8255的芯片结构及工作原理 44.2.2 8255具有两类控制字 51 方式选择控制字 52 C口复位/置位控制寄存器 54.2.3 8253定时器/计数器的结构及功能 51 8253计数器的结构 52 8253定时/计数器的功能 63 8253定时/计数器的实现方法及其特点 64.2.4 设计中具体实现 7五 软件设计 85.1程序的主要组成 85.1.1存储单元的分配、标志位的含义 85.2程序的流程以及实现 95.2.1 主程序的流程图 95.2.2 延时子
6、程序的实现 10六 系统操作说明 116.1 连接8255并行口实验控制交通灯实验电路 116.2 连接8253定时/计数器实验电路 116.3 把上面几个实验电路全部连接起来,就是硬件控制的交通灯控制系统 126.4 写程序代码 126.5 装载程序 126.6 调试程序 126.7 调试成功,结束 12七 结束语 12附录 1 14附录 2 15一 绪论1.1本课题设计研究意义随着社会经济的发展,城市交通问题越来越引起人们的关注。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据检测、交通信号灯控制与交通疏通的计算机综合管理系统,它是现代
7、城市交通监控指挥系统中最重要的组成部分。对于我们此次研究的目的,主要是:1)研究交通灯的控制原理及控制过程,运用所学的知识,用8086,8253定时器芯片,8255芯片以及74LS244缓冲器来实现。2)通过这次设计,我想可以加强我们理论与实际相结合的能力,也同时提高了我们的设计能力以及知识运用能力。3)了解并掌握汇编语言开发的一般流程及方法。二 课程设计的目的和要求2.1课程设计的目的2.1.1 掌握微机系统的设计步骤本系统的设计步骤可以分为总体设计、硬件设计和软件设计。2.1.2 掌握8253、8255的用法1. 8253的基本用法 8253内部有三2个独立的16位减计数器(0#,1#,2
8、#),每个均可单独设置工作方式。每个计数器可用6种模式工作,在初始化时首先写控制字,选择工作方式,然后要正确地写入计数初值。最常用的0、1、2、3四种方式。2. 8255的基本用法8255作为并行接口芯片,有3种工作方式:方式0,方式1,方式2,方式0相当于可作无条件输入/输出方式,方式1和方式2将PC口的一些线作为状态线使用,相当于工作在查询方式或中断方式。8255的PC口具有位控制功能,可以用指令将某条线单独置1或清0,利用此功能也可串行接收或发送数据。注意:8255有2条单元选的地址线,有4个端口地址,要能正确地完成与CPU的地址线、数据线、控制线的连接。2.1.3 掌握汇编程序的设计汇
9、编语言是一门涉及硬件的程序设计语言,汇编语言程序设计是计算机专业的一门重要的专业基础课。汇编语言一般与某一种CPU提供的机器指令相对应,人们可以用它直接控制硬件系统进行工作,可以直接访问计算机系统内部各资源,汇编语言程序具有实时性强、执行速度快、代码效率高等优点。2.2设计的任务与要求首先必须了解交通路灯的亮灭规律。设有一个十字路口,1、3为南,北方向, 2、4为东,西方向,初始态为4个路口的红灯全亮。 之后, 1、3路口的绿灯亮, 2、4路口的红灯亮, 1、3路口方向通车。 延迟一段时间后, 1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁。闪烁若干次后, 1、3路口的红灯亮, 同时2、4路
10、口的绿灯亮, 2、4路口方向开始通车。 延迟一段时间后, 2、4路口的绿灯熄灭,而黄灯开始闪烁。闪烁若干次后,再切换到1、3路口方向。 之后,重复上述过程。利用8253和8255完成。三 总体设计3.1交通灯的工作过程 因在设计的任务与要求中已经阐述,故在此不再叙述。3.2发光二极管的应用 在设计中采用8个发光二极管来模拟2个路口的黄红绿灯,其中为了方便控制,左边的四个模拟1、3路口,第一个为绿灯、第二个为黄灯、第三、四个为红灯。右边四个模拟2、4路口,第五个为绿灯、第六个为黄灯、第七、八个为红灯。3.3定时/计数器的选择 根据前面的介绍,本设计硬件由定时模块、发光二极管模块、电源模块组成,8
11、255模块。定时模块采用硬件定时和软件定时相结合的方法,用8253定时/计数器定时500ms,再用软件计时实现所需的定时。发光二极管模块由8255控制发光二极管来实现。四 硬件设计4.1硬件电路的模块构成本课题的设计我们是通过实验平台上的一些功能模块电路组成,由于各模块电路内部已经连接,用户在使用时只要设计模块间电路的连接,因此,硬件电路的设计及实现相对简单。硬件电路由定时模块、发光二极管模块、驱动模块和电源模块组成。系统硬件结构框图如下:3.系统结构图 如图3图34.2设计中所用到的8255、8253,其结构和功能如下4.2.1可编程8255的芯片结构及工作原理4.2.2 8255具有两类控
12、制字1 方式选择控制字2 C口复位/置位控制寄存器4.2.3 8253定时器/计数器的结构及功能1 8253计数器的结构2 8253定时/计数器的功能可编程定时器芯片可以产生精确的时间间隔,形成各种脉冲序列,灵活性强。依所需时间间隔,设置计数器的时间常数,在一外部脉冲驱动下进行减1计数,计数值为0时,产生输出信号,供系统使用。8253的每个通道均可以通过编程选择6种工作方式之一,这6种工作方式是:方式0: 计数到零产生中断请求;方式1: 硬件可重复触发的单稳态触发器; 方式2: 分频器;方式3: 方波发生器(用得最多的方式); 方式4: 软件触发选通;方式5: 硬件触发选通; 在实际过程中我们
13、采用的是方式0和方式2,通道0为方式2作为分频器,来作为通道1的clck1信号。通道1为方式0产生高电平,作为定时结束的标志。3 8253定时/计数器的实现方法及其特点软件定时: 利用CPU执行某一指令需要一定机器周期的原理,在软件编程时循环执行一段指令,从而产生累积的定时。优点是不需要增加硬件。缺点是耗费CPU资源,故软件定时只适用于短时定时。而且,不同CPU的时钟频率不同,同一段软件延时程序在不同的机器上运行,可能结果不同,即兼容性不强。硬件定时和计数:以硬件计数器构成,计数脉冲触发硬件计数器计数,如果计数脉冲的周期固定,则计数同时产生定时。优点是不占用CPU资源,定时精确,定时范围大。缺
14、点是增加一些硬件开销。4.2.4 设计中具体实现 设计中我们主要是用试验箱实现的,用到的芯片和器件有PCI板,8253定时芯片,8255驱动芯片已经LED发光二极管。它们之间的连接如下图所示:说明:1.试验中的数据缓冲器和PCI板未在图中显示,数据缓冲器74LS244接在8086数据总线的低八位。2.8253的CLK0接入2MHZ的脉冲信号。3.8253的通道0工作于方式2,输出OUT0作为通道CLK1的输入。4.通道1的输出OUT1接8255的PC7作为检测信号,当8253通道1的内部寄存器减为0时。此时OUT1的输出由低电平变为高电平,此时8255的PC7脚检测到高电平,表示此时计数结束即
15、定时500ms结束。5.其中GATE0和GATE1要接高电平触发。6.片选信号的接法未在图中标出。7.8255点亮LED灯。各种不同情况时8255的PA的各输出电平为:1、3,2、4路口红灯亮: 0CCH (1100 1100)1、3路口的绿灯亮,2、4路口的红灯亮: 7CH (0111 1100)1、3路口的黄灯亮,2、4路口的红灯亮: 0BCH (1011 1100)1、3路口的黄灯灭,2、4路口的红灯亮: 0FCH (1111 1100)1、3路口的红灯亮,2、4路口的绿灯亮: 0C7H (1100 0111)1、3路口的红灯亮,2、4路口的黄灯亮: 0CBH (1100 1011)1、
16、3路口的红灯亮,2、4路口的黄灯灭: 0CFH (1100 1111)五 软件设计5.1程序的主要组成本程序由主程序和定时子程序组成。主程序主要负责系统初始化和具体功能的实现。定时子程序主要起延时作用。8253计数结束时输出由低电平变为高电平,8255的PC7脚来检测此脚的输出,当输出为高电平时表示此时计时结束,程序转而去执行相应的操作,实行相应的功能。5.1.1存储单元的分配、标志位的含义8253有两条片内寄存器地址寻址线A0、A1可寻 4 个片内寄存器。u控制(命令)字地址 A1 = 1、A0 = 1u计数器 0 的R/W地址A1 = 0、A0 = 0u计数器 1 的R/W地址A1 = 0
17、、A0 = 1 u计数器 2 的R/W地址A1 = 1、A0 = 05.2程序的流程以及实现5.2.1 主程序的流程图5.2.2 延时子程序的实现DL500ms PROC NEAR PUSH AX PUSH DX MOV AL,00110101B MOV DX, COM_ADDROUT DX,AL ;计数器T0设置在模式2状态,BCD码计数MOV AL,00H MOV DX,T0_ADDROUT DX,ALMOV AL,20H MOV DX,T0_ADDROUT DX,AL ;CLK0/2000即输出周期为1msMOV AL,01110001B MOV DX,COM_ADDROUT DX,AL
18、 ;计数器T1为模式0状态,BCD码计数MOV AL,00H MOV DX,T1_ADDROUT DX,ALMOV AL,5H MOV DX, T1_ADDROUT DX,AL ;CLK1/500即输出周期为500ms J9: MOV DX,PC_ADD ;检测Pc口的状态IN AL,DXMOV BL,ALCMP BL,80H ;若PC7为低电平,转移至J9处,若为高电平退出调用JNE J9POP DX POP AX RET DL500ms ENDP六 系统操作说明6.1 连接8255并行口实验控制交通灯实验电路运行并使其成功能通过软件控制其交通灯控制系统6.2 连接8253定时/计数器实验电
19、路运行并使其能定时/计数器功能。6.3 把上面几个实验电路全部连接起来,就是硬件控制的交通灯控制系统6.4 写程序代码6.5 装载程序6.6 调试程序6.7 调试成功,结束七 结束语本次课程设计是由我们小组三人共同完成,通过两个星期微机接口的课程设计,我们对微机接口芯片有了更进一步的了解。这次实验通过使用了8253计数器、8255可编程并行接口实现了对南北、东西方向交通的分别计时、分别控制。对于微机这门课程,本人个人认为有点难度,特别是程序的编写,在实验过程中,我们也遇到不少的问题,例如不能循环控制,难以实现中断。所以在做这个设计时,我们还温习了8253计数器、8255可编程的实验,对这些芯片
20、有了更进一步的理解。然后通过网上查阅了一些资料,再加上老师的指导,总算了解了8253计数器、8255可编程等芯片的操作方式,通过我们自己反复的调试,修改,在我们小组的共同努力下,最后有了圆满的结果。通过本次课程设计我们学到了很多课堂没有涉及到的知识,极大地拓宽了我们的知识面,锻炼了能力,综合素质得到较大提高,我们感到收获不小。同时也发现了大量问题,有些在设计过程中已经解决,有些还要待今后慢慢学习,只要学习就会有更多的问题,有更多的难点,但也会有更多的收获。最后在此感谢我们小组的成员,我们的共同努力有了回报,也感谢在设计过程中给予我们帮助的老师!同时也感谢学校给我们提供这样的学习平台。谢谢!参考
21、文献微型计算机原理及接口技术中国科技大学出版社 吴秀清 周荷琴编著16-32位微型计算机技术及应用清华大学出版社 戴梅萼 史嘉权 编著汇编语言程序设计南京大学出版社 姚君遗编著汇编语言程序设计教程清华大学出版社 杨记文编著微型计算机原理及接口技术实验指导书附录附录 1 硬件图说明:由于Protel学的有限,所以在绘图的过程中省略了一些,望老师可以见谅。附录 2源程序:.MODEL TINYPCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址,也为DMA & 32 BIT RAM板卡上的8237提供基地址)Vendor_ID EQU 10EBH ;厂商ID号Device_
22、ID EQU 8376 ;设备ID号.STACK 100 .DATACOM_ADDR DW 00B3HT0_ADDR DW 00B0HT1_ADDR DW 00B1HIO_Bit8_BaseAddress DW 0000Hmsg0 DB BIOS不支持访问PCI $msg1 DB 找不到Star PCI9052板卡 $msg2 DB 读8位I/O空间基地址时出错$COM_ADD DW 00F3H;控制口偏移量PA_ADD DW 00F0H ;PA口偏移量PB_ADD DW 00F1H ;PB口偏移量PC_ADD DW 00F2H ;PC口偏移量.CODESTART: MOV AX,DATAMO
23、V DS,AXNOPCALL InitPCICALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址MOV AL,10001011B ;PA、PB、PC为基本输出模式MOV DX,COM_ADD OUT DX,AL MOV DX,PA_ADD MOV AL,0CCH ;1、3和2、4口的红灯亮OUT DX,ALCALL DL500ms ;延时500msDAXUNHUAN: MOV DX,PA_ADDMOV AL,7CH ;1/3口绿灯亮,2/4口红灯亮OUT DX,ALMOV CX,60 ;1/3口绿灯亮30s,2/4口红灯亮30sJ1: CALL DL500ms
24、 ;延时DEC CXJNZ J1MOV CX,8 ;1、3口的黄灯闪烁四次,每次间隔500sJIANCE2: MOV DX,PA_ADD MOV AL,0BCH ;记时30秒,1、3口的黄灯亮0.5秒,2、4口的红灯亮OUT DX,AL CALL DL500ms ;延时MOV DX,PA_ADD MOV AL,0FCH ;记时30秒,1、3的黄灯灭0.5秒,2、4口的红灯还亮OUT DX,AL DEC CXCALL DL500ms ;延时DEC CXJNZ JIANCE2MOV DX,PA_ADD MOV AL,0C7H ;1、3路口的红灯亮,2、4口的绿灯亮30sOUT DX,ALMOV C
25、X,60J2: CALL DL600ms ;延时DEC CXJNZ J2 MOV CX,8;1、3的黄灯闪烁4次,2、4口的红灯还亮EJIANCE2: MOV DX,PA_ADD MOV AL,0CBH ; 1、3的黄灯亮0.5秒,2、4口的红灯还亮OUT DX,AL CALL DL500ms ;延时MOV DX,PA_ADD MOV AL,0CFH ;1/3的黄灯灭0.5秒,2/4口的红灯还亮OUT DX,AL DEC CXCALL DL500ms ;延时DEC CXJNZ EJIANCE2 JMP DAXUNHUAN DL500ms PROC NEAR PUSH AX PUSH DX MO
26、V AL,00110101B MOV DX, COM_ADDROUT DX,AL ;计数器T0设置在模式2状态,BCD码计数MOV AL,00H MOV DX,T0_ADDROUT DX,ALMOV AL,20H MOV DX,T0_ADDROUT DX,AL ;CLK0/2000即输出周期为1msMOV AL,01110001B MOV DX,COM_ADDROUT DX,AL ;计数器T1为模式0状态,BCD码计数MOV AL,00H MOV DX,T1_ADDROUT DX,ALMOV AL,5H MOV DX, T1_ADDROUT DX,AL ;CLK1/500即输出周期为500ms
27、 J9: MOV DX,PC_ADD ;检测Pc口的状态IN AL,DXMOV BL,ALCMP BL,80H ;若PC7为低电平,转移至J9处,若为高电平退出调用JNE J9POP DX POP AX RET DL500ms ENDP InitPCI PROC NEARMOV AH,00HMOV AL,03HINT 10H ;清屏MOV AH,0B1HMOV AL,01HINT 1AHCMP AH,0JZ InitPCI2LEA DX,msg0InitPCI1: MOV AH,09HINT 21HJMP ExitInitPCI2: MOV AH,0B1HMOV AL,02HMOV CX,De
28、vice_IDMOV DX,Vendor_IDMOV SI,0INT 1AHJNC InitPCI3 ;是否存在Star PCI9052板卡LEA DX,msg1JMP InitPCI1InitPCI3: MOV DI,PCIBAR3MOV AH,0B1HMOV AL,09HINT 1AH ;读取该卡PCI9052基地址JNC InitPCI4LEA DX,msg2JMP InitPCI1InitPCI4: AND CX,0FFFCHMOV IO_Bit8_BaseAddress,CXRETInitPCI ENDPModifyAddress PROC NEARADD COM_ADDR,CXADD T0_ADDR,CXADD T1_ADDR,CX ADD COM_ADD,CX ADD PA_ADD,CX ADD PB_ADD,CX ADD PC_ADD,CX RET ModifyAddress ENDPRETExit: MOV AH,4CHINT 21HEND START