1 / 50

项目六 交通信号灯模拟控制

项目六 交通信号灯模拟控制. 任务一 交通信号灯的显示器控制及实现. 任务二 交通信号灯按键控制及实现. 任务一 交通信号灯的显示器控制与实现. ( 1 )硬件设备: 单片机开发系统、 PC 机等;. ( 2 )电路原理:电路原理如下图所示。. 南北方向信号灯. 东西方向信号灯. 具体设计要求:. ( 3 )任务要求. 该设计能控制东、西、南、北四个路口的红、黄、绿信号灯正常工作。 当东西方向放行、南北方向禁行时,东西方向绿灯亮 25s ,然后黄灯亮 5s ;南北方向红灯亮 30s 。

Download Presentation

项目六 交通信号灯模拟控制

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 项目六 交通信号灯模拟控制 任务一 交通信号灯的显示器控制及实现 任务二 交通信号灯按键控制及实现

  2. 任务一 交通信号灯的显示器控制与实现 (1)硬件设备:单片机开发系统、PC机等; (2)电路原理:电路原理如下图所示。

  3. 南北方向信号灯 东西方向信号灯

  4. 具体设计要求: (3)任务要求 • 该设计能控制东、西、南、北四个路口的红、黄、绿信号灯正常工作。 • 当东西方向放行、南北方向禁行时,东西方向绿灯亮25s,然后黄灯亮5s;南北方向红灯亮30s。 • 当南北方向放行、东西方向禁行时,南北方向绿灯亮25s,然后黄灯亮5s;东西方向红灯亮30s。 利用单片机实现对交通能信号灯控制,并能通过显示器进行时间的显示。

  5. (4)任务目的 1)交通信号灯的控制原理; 2)掌握显示器控制方法及编程实现; 3)提高知识综合应用能力。

  6. (5)源程序设计 1) 程序中使用的工作单元定义如下: R1——秒数个位字形码寄存器; R2——秒数十位字形码寄存器; R5——控制定时时间的重复次数 R6——显示位寄存器的初始值(右边一位) 50H——30s显示计数器。 2) 定时器/计数器的参数计算 设系统时钟脉冲频率为6MHZ,定时器T0实现100ms定时,计数器的初始值为: (TH0)=3CH,(TL0)=0B0H 模式控制寄存器TMOD中的控制字为: (TMOD)=01H

  7. 主程序MAIN ORG 3000H MAIN: MOV DPTR,#7F00H ;8155芯片初始化 MOV A,#0BH ;PA、PC口均为输出 MOVX @DPTR,A MOV 50H,#1FH ;设置时间显示初值 MOV P1,#33H ;A线放行,B线禁行 MOV R7,#19H ;延时秒数 MAIN1:LCALL DISP ;调1s延时、及显示子程序 DJNZ R7,MAIN1 MOV P1,#35H ;A线警告,B线禁行 MOV R7,#05H ;延时秒数

  8. MAIN2:LCALL DISP DJNZ R7,MAIN2 MOV 50H,#1FH ;设置时间显示初值 MOV P1,#1EH ;A线禁行,B线放行 MOV R7,#19H ;延时秒数 MAIN3:LCALL DISP DJNZ R7,MAIN3 MOV P1,#2EH ;A线禁行,B线警告 MOV R7,#05H ;延时秒数 MAIN4:LCALL DISP DJNZ R7,MAIN4 AJMP MAIN ;循环 延时、显示程序DISP: DISP:MOV R6,#01H ;设置显示位寄存器初值(右边一位) MOV TMOD,#01H ;定时器T0设置为定时方式的模式1 MOV R5,#0AH ;定时操作循环10次 DEL1:MOV TH0,#3CH ;定时100ms计数器的初始值 MOV TL0,#0B0H SETB TR0 ;启动定时器

  9. DEL2:DEC 50H ;显示秒数减1 MOV A,50H MOV B,#0AH DIV AB ;拆分秒数 ADD A,#2BH MOVC A,@A+PC ;查表个位数的字形码 MOV R1,A ;个位数字形码送R1 MOV A,B ADD A,#25H MOVC A,@A+PC ;查表十位数的字形码 MOV R2,A ;十位数字形码送R2 MOV A,R6 ;位控码 MOV DPTR,#7F03H MOVX @DPTR,A MOV A,R1 ;送个位数显示

  10. MOV DPTR,#7F01H MOVX @DPTR,A LCALL DELAY ;延时1ms MOV A,R6 RL A ;位控左移 MOV R6,A MOV DPTR,#7F03H MOVX @DPTR,A MOV A,R2 ;送十位数显示 MOV DPTR,#7F01H MOVX @DPTR,A LCALL DELAY ;延时1ms JNB TF0,$ ;检测100ms定时是否到 CLR TF0 DJNZ R5,DEL1 ;100ms的循环控制

  11. RET ;返回 TABLE:DB C0H,F9H,A4H,B0H,99H DB 92H,82H,F8H,80H,90H 延时1ms的子程序: DELAY:MOV R7,#02H DEL1:MOV R6,#0F9H DEL2:DJNZ R6,DEL2 DJNZ R7,DEL1 RET END

  12. (6)任务实现概述 本设计是在前续工作任务基础上的综合设计。其中应用了显示器(LED)控制的基本知识,显示器显示原理要从了解显示器基本结构开始。

  13. 1. LED显示器及其接口 显示器结构及分类 (a)符号与引脚 (b)共阴极连接 (c)共阳极连接

  14. 1. 单片机LED显示器接口 七段发光二极管各代码位的对应关系

  15. 1. 单片机LED显示器接口 七段字形代码

  16. 1. 单片机LED显示器接口 例1:显示数字“0”的字形码的确定方法。 共阳极接法中,要点亮的位为低电平,不点亮的位为高电平。 数字“0”的字形码为:C0H 共阴极接法中,要点亮的位为高电平,不点亮的位为低电平。 数字“0”的字形码为:3FH

  17. 1. 单片机LED显示器接口 静态显示器接口 位控端 段控端 LED显示器工作在静态方式时,共阴极或共阳极的公共端(位选线)连接在一起接地或接+5V,形成位控端; 每一位的段选线(a~dP)应与具有锁存功能的8位并行输出口相连,形成段控端。

  18. 1. 单片机LED显示器接口 动态显示器接口 段控:把所有显示器的同名段选线相互并接在一起,由同一个8位并行输出口控制 位控:各显示器的位选线则分别由不同输出口线控制

  19. 例2:LED显示器连接原理图如上页图,向显示缓冲区50H~56H输入要显示的数据1、2、3、4、5、6,使程序运行后显示“123456”。例2:LED显示器连接原理图如上页图,向显示缓冲区50H~56H输入要显示的数据1、2、3、4、5、6,使程序运行后显示“123456”。 源程序: ORG 2000H MOV DPTR,#7F00H ;8155的初始化 MOV A,#0DH ;设置8155控制字 MOVX @DPTR,A LOOP: LCALL DISP SJMP LOOP

  20. DISP:MOV R1,#50H ;置显示缓冲区首地址, 由R1指向 MOV R2,#20H ;置位码寄存器R2 初值(左边第一位) DISP0:MOV A,R2 ;位码初值 MOV DPTR,#7F03H ;位控地址 MOVX @DPTR,A ;输出位码 MOV DPTR,#7F01H ;段控地址 MOV A,@R1 ;取欲显示数据 ADD A,#0DH ;加数据表首址偏移量

  21. MOVC A,@A+PC ;查表取字型码 MOVX @DPTR,A ;输出字型码 ACALL DELAY ;延时1ms INC R1 ;修改指针 MOV A,R2 ;取位码 JB ACC.0,EXIT ;判断最低位 RR A ;不到,位码右移 MOV R2,A ;保存位码 AJMP DISP0 ;循环显示下一位 EXIT: RET DSEG: DB C0H,F9H,A4H,B0H,99H ;字形表 ;(0~F,P,U,R,Y)

  22. DB 92H,82H,F8H,80H,90H DB 88H,83H,C6H,A1H,86H DB 8EH,8CH,C1H,CEH,91H ORG 1100H DELAY: MOV R7,#02H ;延时1ms子程序 DEL1: MOV R6,#0F9H DEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 RET END

  23. 任务二 交通信号灯的按键控制与实现 (1) 任务要求 在定时交通信号灯控制的基础上,增加允许急救车优先通过的要求。当有急救车到达时,路口的信号灯全部变红,以便让急救车通过。 假定急救车通过时间为10s,急救车过后,交通灯恢复先前状态。

  24. (2) 实现方法 设定以按键K代表有急救车到来,并以中断方式进行处理。在P3.2连接按键K。当按键K按下,表示急救车到来,此信号申请中断,各路口的状态均为红灯,显示时间为10s。

  25. (3)任务目的 1)交通信号灯的控制原理; 2)掌握键盘控制方法及编程实现; 3)提高知识综合应用能力。

  26. ORG 0003H ;外部中断0的入口地址 LJMP INTER0 MAIN:SETB EA ;开中断 SETB EX0 .... 中断服务程序: INTER0:PUSH 50H ;保护现场 PUSH P1 MOV P1,#36H ;两线都禁止 MOV R7,#0AH ;延时10s INT0:LCALL DISP ;调显示 DJNZ R7,INT0 POP P1 ;恢复现场 POP 50H RETI ;中断返回 (4)源程序设计

  27. +5V 单片机 S P3.0 1. 键盘及接口 键盘的类型 触点式开关按键,如:机械开关式等 当按键S未被按下时,P3.0输入为高电平 当按键S按下时,P3.0输入为低电平 无触点开关按键,如:磁感应按键等

  28. 键输入原理:按键以开关状态设置功能或输入数据。键输入原理:按键以开关状态设置功能或输入数据。 当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设的功能。

  29. 由于机械开关触点的弹性作用,按键在闭合和断开的瞬间均伴随有一连串的抖动。由于机械开关触点的弹性作用,按键在闭合和断开的瞬间均伴随有一连串的抖动。 !为了保证键识别的准确性,需要进行去抖动处理 键抖动 去抖动电路

  30. 键盘的结构 独立式按键 独立式按键是直接用I/O口线构成的单个按键电路

  31. 例3. 如下图所示,P1口连接8位LED,P3.0连接按键K。当按键K按下时,8位LED被点亮。

  32. 源程序: ORG 1000H SETB P3.0 ;先置按键为断开状态, 即高电平(1) MOV C,P3.0 ;将P3.0的1状态送CY位 CPL C ;取反,使CY清零 ORL C,P3.0 ;判断是否有键按下 LP: JNB C ,LED0 ;当CY=0,键被按下 JMP LP ;无键按下,继续检测 LED0: MOV P1,#00H ;键被按下,点亮8位LED SJMP $ END

  33. P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 +5V 单片机 矩阵式按键 在键位数较多时,通常将键盘排列成行列矩阵形式来减少所占用I/O线的数目

  34. 判别有无键按下 • 扫描获取闭合键的行、列值 • 用计算法或查表法得到键值 • 判断闭合键释放否,如没释放则继续等待 • 保存闭合键号 键盘扫描子程序一般包括以下内容:

  35. ··· 00H 01H 02H 06H 07H ··· 08H 09H 0AH 0EH 0FH ··· 10H 12H 16H 17H 11H ··· 18H 19H 1AH 1EH 1FH 例4:4×8键盘编码方式 键号按从左到右、从下到下的顺序编排,各行的首键号依次是00H、08H、10H、18H;如列线按0~7的顺序,则键码的计算公式为: 键码=行首键号+列号

  36. 8155作键盘接口

  37. 开始 Y 有键按下吗? N 调延时 调延时 N 有键按下吗? Y 行扫描 计算键码 N 按键释放吗? Y 键码送A 返回 程序流程图

  38. 源程序: KEY1:MOV A,#01H ;8155初始化, PA口输出、PC口输入 MOV DPTR,#7F00H MOVX @DPTR,A ACALL KS1;调用判断有无键闭合的子程序 JNZ LK1 ACALL DELAY ;延时 AJMP KEY1

  39. LK1: ACALL DELAY ; ACALL KS1 ;再判断有无键被按下 JNZ LK2 ;有键按下,转LK2 ACALL DELAY ;延时 AJMP KEY1 LK2: MOV R2, #0FEH ;扫描初值送R2 MOV R4,#00H ;扫描列号送R4

  40. LK4:MOV DPTR,#7F01H ;建立PA口地址 MOV A,R2 MOVX @DPTR,A ;扫描初始值送PA口 INC DPTR INC DPTR ;指向PC口 MOVX A,@DPTR ;读PC口的状态 JB ACC.0,LONE ;ACC .0=1,第0行无键被按下, 转LONE MOV A,#00H ;装0行行首键号 AJMP LKP

  41. LONE: JB ACC.1,LTWO ;ACC.1=1,第一行无键 被按下,转LTWO MOV A,#08H ;装第一行的行首键号 AJMP LKP LTWO: JB ACC.2,LTHR ;ACC.2=1,第二行无键 被按下,转LTHR MOV A,#10H ;装第二行的行首键号 AJMP LKP

  42. LTHR: JB ACC.3,NEXT ;ACC.3=1,第三行无键 被按下,转NEXT MOV A,#18H ;装第三行的行首键号 LKP: ADD A,R4 ;计算键码 PUSH ACC ;保护键码 LK3: ACALL DELAY ;延时 ACALL KS1 ;测试键是否仍被按下, 若被按下再延时 JNZ LK3 POP ACC RET

  43. NEXT: INC R4 ;扫描列号加1(扫描下一列) MOV A,R2 JNB ACC.7 KND ;第七位为0,则扫描完, 转KND RL A ;循环右移一位 MOV R2,A AJMP LK4 ;进行下一列扫描 KND: AJMP KEY1 ;扫描完毕,开始新的一次扫描

  44. KS1: MOV DPTR,#7F01 MOV A,#00H MOVX @DPTR,A ;PA口送0——扫描口 INC DPTR INC DPTR ;指向PC口 MOVX A,@DPTR ;读PC口状态 CPL A ANL A,#0FH ;屏蔽高位 RET

  45. DELAY: MOV R7,#14H ;延时10ms的子程序: DEL1 : MOV R6,#0F9H DEL2 : DJNZ R6,DEL2 DJNZ R7,DEL1 RET END

  46. 例5: 8051单片机的P1口连接8位LED,当按键第0行第0列键被按下时,8位LED被点亮。 ORG 1000H MAIN: MOV A,#0BH ;8155初始化 MOV DPTR,#7F00H MOVX @DPTR,A ACALL KS1 ;判定是否有键按下 JNZ LK1 ;有键按下,转延时 ACALL DELAY AJMP MAIN

  47. LK1: ACALL DELAY ACALL KS1 ;延时之后再判定是否 有键按下(去抖) JNZ LK2 ;有键按下,确定键码 ACALL DELAY AJMP MAIN LK2: MOV R2,#0FEH ;定义0行0列键 MOV R4,#00H MOV DPTR,#7F01H ;建立PA口地址 MOV A,R2 MOVX @DPTR,A ;扫描初始值送PA口 INC DPTR

  48. INC DPTR ;指向PC口 MOVX A,@DPTR ;读PC口的状态 JB ACC.0,LONE ;ACC .0=1,第0行无键被按下, 转LONE MOV A,#00H ;装0行行首键号 ADD A,R4 PUSH ACC LK3: ACALL DELAY ACALL KS1 JNZ LK3 POP ACC

  49. LED0:MOV P1,#00H ;键被按下,点亮8位LED SJMP $ KS1: MOV DPTR,#7F01H MOV A,#00H MOVX @DPTR,A INC DPTR INC DPTR ;指向PC口 MOVX A,@DPTR ;读PC口状态 CPL A ANL A,#0FH RET

  50. DELAY: MOV R7,#14H ;延时10ms的子程序: DEL1: MOV R6,#0F9H DEL2: DJNZ R6,DEL2 DJNZ R7,DEL1 RET END

More Related