交通指示灯

交通指示灯具体的原理是怎样的?... 交通指示灯具体的原理是怎样的? 展开
 我来答
hjcxqx
2011-07-06 · TA获得超过4812个赞
知道小有建树答主
回答量:1037
采纳率:0%
帮助的人:1039万
展开全部
  电路设计的思路:
  1、计时功能实现逻辑:
  通过8253计数器0和计数器1级联实现准确定时;用8255的A口低六位控制东西、南北路口交通灯的状态;灯的亮灭可直接由8086输出0,1控制。用8259A管理可屏蔽中断即开机初始化。
  采用两个计数器级联的方式, 并且计数器0工作于方式3用于产生方波信号,计数器1工作方式0,计数到时高电平信号。计数器1的输出端OUT1接入8255芯片的PC0口,通过查询8255的C口的值,以完成计时功能。将计数器0的输出OUT0接到计数器1的输入端CLK1,而CLK0的输入采用1.19MHZ的时钟频率, 计数器0计数初值为59499=0E86BH,则OUT0=20HZ, 即计数器1的时钟频率为20HZ。
  当计数器1的记数初值为9时,0.5S后OUT1输出一高电平。8086通过读取8255C口的值,来决定对A口写入的数据。因此每隔0.5秒8086变换灯的状态,持续6次即完成3秒的闪烁功能。
  当计数器1的记数初值为899时,45S后OUT1输出一高电平。通过查询8255的C口PC0的状态改变,达到延时45秒的作用。同理计数器1的计数初值分别为59、799时,分别为3、40秒的延时。
  2、 译码电路设计
  通过分析8259、8253、8255各端口地址,设计合理的地址译码电路。8259的地址为20H、21H,8253的地址为40H、41H、42H、43H,8255的端口地址为0F0H、0F1H、0F2H、0F3H。故芯片的地址只与8086的地址的低8位有联系,不妨设高十二为全为1将它们相与后作为38译码器的始能信号E3。再分析发现8259、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译码器构成译码电路。
  程序代码:
  *****************************************************************
  MY8259_ICW1 EQU 20H ;实验系统中 8259的ICW1端口地址
  MY8259_ICW2 EQU 21H ;实验系统中8259的ICW2端口地址
  MY8259_ICW3 EQU 21H ;实验系统中8259的ICW3端口地址
  MY8259_ICW4 EQU 21H ;实验系统中8259的ICW4端口地址
  MY8259_OCW1 EQU 21H ;实验系统中8259的OCW1端口地址
  MY8259_OCW2 EQU 20H ;实验系统中8259的OCW2端口地址
  MY8259_OCW3 EQU 20H ;实验系统中8259的OCW3端口地址
  MY8253_COUNT0 EQU 40H ;实验系统中8253计数器0端口地址
  MY8253_COUNT1 EQU 41H ;实验系统中8253计数器1端口地址
  MY8253_COUNT2 EQU 42H ;实验系统中8253计数器2端口地址
  MY8253_MODE EQU 43H ;实验系统中8253控制寄存器端口地址
  MY8255_A EQU 0F0H ;实验系统中8255的A口地址
  MY8255_B EQU 0F1H ;实验系统中8255的B口地址
  MY8255_C EQU 0F2H ;实验系统中8255的C口地址
  MY8255_MODE EQU 0F3H ;实验系统中8255的控制寄存器地址
  *****************************************************************
  DATA SEGMENT
  CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量
  IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量
  DATA ENDS
  CODE SEGMENT
  ASSUME CS:CODE ,DS:DATA
  START: MOV AX,DATA
  MOV DS,AX
  MOV AX,3508H
  INT 21H
  MOV IP_BAK, ES ;保存INTR原中断处理程序入口偏移地址
  MOV CS_BAK, BX ;保存INTR原中断处理程序入口段地址
  MOV AX,SEG INITIAL
  MOV DS,AX
  MOV DX,OFFSET INITIAL
  MOV AX,2508H
  INT 21H ;设置中断向量
  MOV DX,MY8259_ICW1 ; 初始化实验系统中8259的ICW1
  MOV AL,13H ;边沿触发、单片8259、需要ICW4
  OUT DX,AL

  MOV DX, MY8259_ICW2 ;初始化实验系统中8259的ICW2
  MOV AL,08H ;IR0中断类型号
  OUT DX,AL

  MOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4
  MOV AL,03H ;自动结束EOI
  OUT DX,AL

  MOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1
  MOV AL,0FEH ;打开IR0的屏蔽位
  OUT DX,AL
  MOV AL,00H
  MOV DX, MY8259_OCW2 ;初始化实验系统中8259的OCW2,完成8259的初始化
  OUT DX,AL
  QUERY: MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令
  MOV AL,0CH
  OUT DX,AL
  IN AL,DX ;读出查询字
  TEST AL,80H ;判断中断是否已响应
  JZ QUERY ;没有响应则继续查询
  AND AL,01H
  CMP AL,00H
  JNE QUERY ;若不是IR0请求,继续查询
  L4: INT 08H ;调用08H中断程序
  CALL DELAY3S ;延时3秒
  MOV DX,MY8255_A ;写8255的A口
  MOV AL,12H
  OUT DX,AL ; L2、L5亮
  CALL DELAY45S ;延时45秒

  MOV CX, 03H ;周期1S,循环三次完成灯闪烁
  L2: MOV DX,MY8255_A ;写8255的A口
  MOV AL,02H
  OUT DX,AL ; L2亮 、L5灭
  CALL DELAYHALFS ;延时0.5秒
  MOV DX,MY8255_A
  MOV AL,12H
  OUT DX,AL ; L2、L5亮
  CALL DELAYHALFS ;延时0.5秒
  DEC CX
  JNZ L2 ;L2亮,L5闪烁

  MOV DX,MY8255_A ;写8255的A口
  MOV AL,06H
  OUT DX,AL ; L2、L3亮
  CALL DELAY3S ;延时3秒

  MOV DX,MY8255_A ;写8255的A口
  MOV AL,21H
  OUT DX,AL ; L1、L6亮
  CALL DELAY45S ;延时40秒

  MOV CX,03H ;周期1S,循环三次完成灯闪烁
  L3: MOV DX,MY8255_A ;写8255的A口
  MOV AL,01H
  OUT DX,AL ; L1亮 、L6灭
  CALL DELAYHALFS ;延时0.5秒
  MOV DX,MY8255_A ;写8255的A口
  MOV AL,21H
  OUT DX,AL ; L1、L6亮
  CALL DELAYHALFS ;延时0.5秒
  DEC CX ;L1亮,L6闪烁
  JNZ L3

  MOV DX,MY8255_A ;写8255的A口
  MOV AL,09H
  OUT DX,AL ; L1、L4亮
  CALL DELAY3S ;延时3秒
  JMP L4 ;循环一次完成,跳到L4重新开始循环

  MOV AH,4CH
  INT 21H ;返回DOS

  INITIAL PROC ;中断类型号08H的中断子程序
  MOV DX,MY8253_MODE ;对8253初始化
  MOV AL,36H
  OUT DX,AL
  MOV AX, 0E86BH
  MOV DX,MY8253_COUNT0
  OUT DX,AL
  MOV AL,AH
  OUT DX,AL ;计数器0工作方式3 ,OUT0为频率20HZ的方波
  MOV DX, MY8255_MODE
  MOV AL,89H
  OUT DX,AL ;8255初始化完成 A口输出,C口输入
  MOV DX,MY8255_A
  MOV AL,03H
  OUT DX,AL ;两个红灯L1、L2亮,灯初始化完成
  IRET
  INITIAL ENDP ;开机初始化完成

  DELAY3S PROC ;延时3S子程序
  MOV AL,51H
  MOV DX,MY8253_MODE
  OUT DX,AL
  MOV AL,59H
  MOV DX,MY8253_COUNT1
  OUT DX,AL ;计数器1工作方式0 ,计数初值为59
  L1: MOV DX, MY8255_C
  IN AL,DX
  CMP AL,01H
  LOOPNZ L1
  RET
  DELAY3S ENDP

  DELAY45S PROC ;延时45S子程序
  MOV AL,71H
  MOV DX,MY8253_MODE
  OUT DX,AL
  MOV AX,0899H
  MOV DX,MY8253_COUNT1
  OUT DX,AL
  MOV AL,AH
  OUT DX,AL ;计数器1工作方式0 ,计数初值为899
  L5: MOV DX, MY8255_C
  IN AL,DX
  CMP AL,01H
  LOOPNZ L5
  RET
  DELAY45S ENDP

  DELAYHALFS PROC ;延时0.5S子程序
  MOV AL,51H
  MOV DX,MY8253_MODE
  OUT DX,AL
  MOV AL,09H
  MOV DX,MY8253_COUNT1
  OUT DX,AL ;计数器1工作方式0 ,计数初值为9
  L6: MOV DX, MY8255_C
  IN AL,DX
  CMP AL,01H
  LOOPNZ L6
  RET
  DELAYHALFS ENDP

  DELAY40S PROC ;延时40S子程序
  MOV AL,71H
  MOV DX,MY8253_MODE
  OUT DX,AL
  MOV AX,0799H
  MOV DX,MY8253_COUNT1
  OUT DX,AL
  MOV AL,AH
  OUT DX,AL ;计数器1工作方式0 ,计数初值为799
  L7: MOV DX, MY8255_C
  IN AL,DX
  CMP AL,01H
  LOOPNZ L7
  RET
  DELAY40S ENDP
  CODE ENDS
  END START
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式