1、它主要由控制器、定时器、译码器和秒脉冲信号发生器等部分组成。秒脉冲发生器是该 系统中定时器和控制器的标准时钟信号源,译码器输出两组信号灯的控制信号,经驱动电路后驱动信号灯工作,控制器是系统的主要部分,由它控制定时器和译码器的工作。3.2 设计内容分析通过分析设计要求得出灯亮的规律如下:1.东西南北两个方向起始状态全为红,延续3秒。2.东西方向红灯亮,南北方向绿灯亮;延续6秒。3.东西方向红灯亮,南北方向转为黄灯亮;延续3秒。4.东西方向红灯亮,延续3秒;南北方向黄灯亮,以频率1HZ闪烁3秒。5.东西方向绿灯亮,南北方向红灯亮,延续6秒。6.东西方向黄灯亮,南北方向红灯亮;7.东西方向黄灯亮,以
2、频率1HZ闪烁3秒;南北方向红灯亮,延续3秒。8.东西方向红灯亮,南北方向绿灯亮,重复以上步骤 。9.每一个路口有一个紧急按键,可以中断当前的交通状态,使当前的路口为绿灯,经过12秒后恢复。通行分析灯的亮灭情况,总结出下表(1标示灯亮,0标示灯灭):状态时间东西红灯东西黄灯东西绿灯南北红灯南北黄灯南北绿灯无效12a0-6b6-12c12-18d21-24转换成控制码: 状态 状态时间段十六进制二进制状态a84H10000100B状态b88H10001000B状态c30H00110000B状态d18-2450H01010000B东西、南北分别在0-6,、6-12 、12-18 、18-24时间段
3、的亮灯情况比较: 四、电路设计思路通过并行接口芯片8255A和8086芯片的硬件连接,以及通过8253定时的方法,来实现十字路口交通灯的模拟控制。4.1 延时功能实现逻辑:8253芯片中数据总线缓冲存储器是由8为双向三态缓冲存储器构成,是CPU与8253之间交换信息的通道。读写/控制电路可以接收CPU送入的读/写控制信号,若计数器0设为1s定时中断,周期为0-24秒,可通过编程控制各个路灯的状态的转换,以及使得黄灯按时闪烁。8053内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD)计数,因此8253既是一个定时器也是一个计数器。读/写控制器接受CP
4、U送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。可接受的控制信号:(1)A1A0端口选择信号,由CPU输入。8253内部有3个独立的通道,和一个控制字寄存器,它们构成8253芯片的4个端口,CPU可对3个通道进行读/写操作,对控制字寄存器进行写操作。(2)CS片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。(3)RD、WR读/写控制命令,由CPU输入,低电平有效。RD有效时,CPU读取由A1A0所选定的通道内计数的内容。WR有效时,CPU将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。当某通道用
5、作计数器时,应将要求计数的次数预置到该通道的计数器中,被计数的事件以脉冲方式从CLKi端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”,OUTi端将有输出,表示计数次数到。当某通道用作定时器时,由CLKi端输入一定频率的时钟脉冲。根据要求定时的时间长短确定所需的计数值,并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”,待计数值计到“0”,OUT i端将有输出,表示定时时间到。控制字寄存器用来存放由CPU写入8253的方式选择控制字,由它来定义8253中各通道的工作方式。SC1、SC0位用来选择通道,RL1、RL0位用来定义对所选通道中的计数器的操作,BCD位用来定义是
6、采用二进制计数还是十进制计数,M2M1M0位用来定义所选通道的6种工作方式。 4.2 译码电路设计:74HC138是用CMOS门电路组成的3线-8线译码器,它有3个附加的控制端S1、S2和S3,这三个控制端也成为“片选”输入端,利用片选的作用可以将多片连接起来以扩展译码器的功能。只有当S1=1、S2+S3=0时译码器处于工作状态。8259的地址为20H、21H,8253的地址为40H、41H、42H、43H,8255的端口地址为0F0H、0F1H、0F2H、0F3H。故芯片的地址只与8086的地址的低8位有联系,不妨设高十二为全为1将它们相与后作为38译码器的始能信号E3。再分析发现8259、
7、8253、8255各端口地址的低八位其中D2、D3均为0,将8086的地址总线的D2、D3作为38译码器的始能信号E1、E2。将8086的地址总线的D0、D1分别与8253和8255的A0、A1连接,利用D4、D5、D6、D7构成译码电路。将8086的地址总线的D0与8259的A0连接,利用D2、D4、D5、D6、D7通过38译码器构成译码电路。4.3 控制电路设计:由于8255A与8086CPU是以低八位数据线相连接的,所以应该是8255A的A1、A0线分别与8086CPU的A2、A1相连,而将8086的A0线作为选通信号。如果是按8255A内部地址来看,则在图中它的地址是PA口地址即(CS
8、+000H),PB口地址为(CS+001H),PC口地址为(CS+002H),命令控制口地址为(CS+003H),其中,CS为8255片选信号的首地址;若是按8086CPU地址来看,则8255A的地址是PA口地址即(CS+000H),PB口地址为(CS+002H),PC口地址为(CS+004H),命令控制口地址为(CS+006H)。当CS0288H,则PA口地址为0288H,PB口地址为028AH,PC口地址为028CH,命令控制口地址为028EH。1)对8255A芯片的说明:8255A是一种可编程的芯片,内部有3个8位的I/0端口:A口、B口和C口。这三个端口也可以分为各有12位的两组:A组
9、和B组。A组包含A口8位和C口的高四位,B组包含B口8位和C口的低四位;A组控制和B组控制用于实现方式选择操作;读写控制逻辑用于控制芯片内部寄存器的数据和控制字经数据总线缓冲器送入各组接口寄存器中。由于8255A数据总线缓冲器是双向三态8位驱动器,因此可以直接和8086系统数据总线相连。8255A可为可为86系统微处理机提供3个独立的并行输入/输出端口。利用输出端口与数模转换器相连,可控制输出模拟量的大小,比如电压的高低、电流的大小、书读的快慢、温度的升降等,利用模数转换器又可将他们转换为数字量,通过并行输入端口送回微机系统中。本例检测空气温度和湿度,并及时给予反馈显示,就要运用此芯片的该模拟
10、量转换功能。8255A与8086接线原理图如下:2)对8259A芯片的说明:8259A为可编程中断控制器,它有8大部分组成。其中数据总线缓冲器是一个双向8位3态缓冲器,由它构成8259A与CPU之间的数据总线接口。读写控制用来接收来自CPU的读/写控制命令和片选控制信息。由于一片8259A只占两个I/O端口地址,可用末位地址码A0来选端口,端口其他的高位地址作为片选信号输入。一片8259A只能接收八级中断从IR7-IR0输入,当引入的中断超过8级时,可用多片8259A级联使用。3)对温度传感器介绍: 湿度传感器是把相对湿度的变化转换成电信号的器件。感湿特点:在基片涂覆材料形成感湿膜。空气中的水
11、蒸气吸附于感湿材料后,原件的阻抗、介电常数发生很大的变化,从而制成湿敏原件。工作原理:水分子具有很强的电子亲和力,易于在多孔性半导体陶瓷表面附着,并俘获电子,在半导体陶瓷表面形成空穴积累,导致半导体陶瓷的电阻率降低。晶胞间界水分子的电离。芯片内部结构如下:五、电路原理图六、程序流程图七、程序代码十字路口交通控制器DATA SEGMENT SETTIME DB 3 ;用户设置的通行时间 NOWTIME DB 3 ;当前计时时间 TIME1 EQU 10 TIMEOT1 DB TIME1 ;0.5秒定时单元 TIME2 EQU 2 TIMEOT2 DB TIME2 ;1秒定时单元 FLAG DB
12、1 ;闪烁标志 ONOFF DB 1 ;亮灭标志 LEFT DB 1 ;南北向和东西向标志 TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;09的显示码DATA ENDSSTACK SEGMENT STACK DW 64 DUP(6) ;定义堆栈段STACK ENDSCODE SEGMENT ;代码段定义 ASSUME CS:CODE,DS:DATA ;段指定START: MOV AX, DATA MOV DS, AX PUSH DS ;当前用户DS段入栈保存 MOV AX, 0000H MOV DS,AX ;修改DS=0000H,指向中断矢量表
13、所在段 MOV AX,OFFSET IRQ0 ;取出中断处理子程序的入口偏移地址(以0为基准) ADD AX,2000H ;修正,实际地址=装入地址的偏移量+相对于0起始偏移量 MOV SI,0020H ;IR0中断矢量号为08H,处于矢量表的20H23H MOV SI,AX ;将偏移地址装入矢量表 MOV AX,0000H MOV SI,0022H将段地址(0000H)装入矢量表 POP DS ;恢复用户数据段DS MOV AL,0FCH ;D1,D0位复位为0 OUT 21H,AL ;写入OCW1(IMR);开放8259A的IR1和IR0中断 MOV AL,34H ;设定8253通道0的工
14、作方式,00110100B OUT 43H,AL ;CH0采用先写低8位,后写高8位,方式2,二进制计数 MOV AX,59500 ;计数初值为59500,输出20HZ信号,定时0.05秒 OUT 40H,AL ;写入CH0 MOV AL,AH OUT 40H,AL STI ;开中断 MOV AL,88H ;写入8255A的方式控制字,设定工作方式为10001000B OUT 63H,AL ;即A口方式0输出,C口高4位输入,B口方式0输出,C口低4位输出 IN AL,62H ;循环读出C口的四个开关状态(PC4PC7) AND AL,0F0H ;高四位为0090秒 MOV SETTIME,A
15、L ;读取用户设定的通行时间 MOV NOWTIME,AL A1: MOV AL,FLAG TEST AL,01H JZ A2 ;不闪烁,则转显示 MOV AL,ONOFF ;闪烁标志为1,闪烁,则测试是亮,还是灭 TEST AL, 01H JNZ A2 ;为1,说明亮,则转A2 MOV AL, 0FH OUT 62H, AL MOV AL, 00H OUT 61H,AL ;灭,则关闭显示 JMP A3 A2: MOV AL,NOWTIME ;取出当前剩余时间的低位 AND AL, 0FH MOV BX, OFFSET TAB XLAT ;查表转换为显示码 OUT 61H, AL MOV AL
16、,05H ;PC0PC3为0101B,允许X2、X4数码管选通 OUT 62H, AL CALL DALEY MOV AL, NOWTIME MOV CL, 4 ROR AL, CL AND AL,0FH ;取出当前剩余时间的高位 XLAT MOV AL, 0AH OUT 62H,AL ;PC0PC3为1010B,允许X1、X3数码管选通 A3: MOV AL, LEFT JZ A5 ;测试是南北向通行,还是东西向通行 MOV AL,FLAG ;东西向通行 TEST AL,01H ;测试是否应让黄灯亮 JZ A4 ;不是东西向的黄灯亮,则转东西向绿灯亮(南北向红灯亮) MOV AL,ONOFF
17、 ;东西向黄灯亮(南北向红灯亮) TEST AL, 01H JNZ A4 ;测试亮灭 MOV AL,0FFH ;关指示灯 OUT 60H, AL JMP EXIT A4: MOV AL,77H ;东西向绿灯亮(南北向红灯亮) A5: MOV AL,FLAG ;南北向通行 JZ A6 ;不是南北向的黄灯亮,则转南北向绿灯亮(东西向红灯亮)南北向黄灯亮(东西向红灯亮) JNZ A6 ; OUT 60H, AL A6: MOV AL,0EEH ;南北向绿灯亮(东西向红灯亮) EXIT: JMP A1;8259A的IR0中断处理子程序(8253的CH0每来59500个脉冲后(定时0.05秒),则执行下
18、面的中断处理程序一次)IRQ0: PUSH AX MOV AL, TIMEOT1 DEC AL JZ IRTIME1 MOV TIMEOT1, AL JMP IREXIT ;不到0.5秒,则退出IRTIME1:MOV TIMEOT1,TIME1 ;0.5秒定时时间到,重装初值 MOV AL, ONOFF XOR AL, 01H MOV ONOFF,AL ;取反亮灭标志 MOV AL, TIMEOT2 DEC AL ;1秒定时单元减1 JZ IRTIME2 MOV TIMEOT2,AL ;1秒不到,保存,退出 JMP IREXITIRTIME2: MOV TIMEOT2, TIME2 SUB A
19、L,1 DAS CMP AL,0 JNZ IRTIME3 MOV AL, SETTIME MOV NOWTIME,AL ;重装通行时间 MOV AL, LEFT MOV LEFT,AL ;南北向与东西向通行转换 MOV FLAG,00H ;闪烁标志复位(不闪)IRTIME3: MOV NOWTIME, AL CMP AL,04H ;剩余时间小于4秒,则闪烁 JAE IRTIME4 MOV FLAG, 01HIRTIME4:MOV FLAG,00H ;3秒,则不闪烁IREXIT: MOV AL,20H ;常规EOI中断结束指令 OUT 20H,AL ;写入8259A的OCW2 POP AX IR
20、ET ;中断返回延时子程序DALEY: PUSH CX MOV CX,0010H ;置内循环次数DALEY1:LOOP DALEY1 ;共循环0010H次,以完成延时 POP CX RETCODE ENDS END START八、程序及硬件系统调试情况程序运行结果:1 东西路右拐和南北路左拐绿灯点亮12秒,直通到均为红灯2 12秒后,黄灯亮6秒钟,。此时南北方向仍维持红灯点亮。3 东西方向直通,为绿灯,南北 方向红灯4 黄灯再亮6秒之后,东西路左拐和南北路右拐绿灯点亮5 南北方向的黄灯亮6秒钟后,南北方向直通,延时6秒6 闭合A口开关,四个路口全红灯,表明紧急状态。九、设计总结与体会通过本次的
21、交通灯系统的设计,我再次拿起了微型计算机原理及应用,仔细复习以前学过的知识。由于本课程有些难学,所以当初学习的不太好,有很多知识都是一知半解。为了能够及时出色的完成本次设计任务,我就早早的开始复习,虽然在此过程中遇到了很多难题,但是通过同学们的帮助和查找资料,我对各个芯片的功能、编程及应用也有了更深层次的理解,对微机原理有了更进一步的认识。在理论学习的基础上,我又仔细思考本次设计内容及要求,结合各个芯片的功能,终于明白了设计一个系统的过程;也让我体会到要想成功地完成某个设计,除了学好专业知识外,还要灵活系统的运用知识,要有严谨的求知态度和严密的思考方法,只有这样才能使设计过程有序而正确的进行。
22、除此之外,编程语言一直是我头疼的事,此次在芯片初始化程序方面是我遇到的最大的困难,我只能借助参考资料,查每一条指令的作用与功能,最后终于攻克了这个难题。通过本次设计,激发了同学们学习的积极性,再次把学过的计算机编程原理的知识强化了,而且把课堂上学的知识通过自己设计的程序表示出来,加深了对理论知识的理解。很感谢学校领导及周老师给我们提供的这次锻炼的机会,让我们在加深汇编语言的同时,也增强了综合理解及运用知识的能力,动手能力也得到了相应的提高,这对我们的学习和生活都有很大帮助。十、参考文献1 郑学坚、周斌等编著.计算机原理及应用(第三版) 北京:清华大学出版社 20072 彭虎、周佩玲、傅忠谦.微机原理里与接口技术(第2版) M 北京:电子工业出版社 2008,149-1873 刘乐善. 微型计算机接口技术及应用M . 武汉: 华中科技大学出版, 2000.4 谭云福 IBM PC 8086/8088宏汇编语言程序设计及实验,北京:机械工业出版社,19935 杨润生 王敬觉.微型计算机及其应用(基础篇及应用篇).北京:机械工业出版社,19836 载梅萼.微型计算机技术及应用.北京:清华大学出版社,1991
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1