已阅读5页,还剩31页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南理工大学河南理工大学河南理工大学 单片机课程设计报告单片机课程设计报告 交通灯控制系统交通灯控制系统 姓 名: 张鹏举 学 号: 0401010428 专业班级: 电气 04-4 指导老师: 杨凌霄 所在学院:电气工程与自动化学院 2007 年 6 月 30 日 摘要摘要 这次设计的主要任务是设计一个单片机控制的交通灯控制系统的设计。交 通灯控制系统设计主要是利用 AT89C51 制作并仿真,由此来加深我们对单片机的 各种模块的理解和应用能力。本系统由单片机系统、键盘、LED 显示、交通灯 演示系统组成。系统包括人行道、左转、右转、以及基本的交通灯的功能。系 统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调 整信号灯的点亮时间以及根据具体情况手动控制等功能。 此次设计还要用到 wave 和 proteus 软件,对程序进行编译、调试、修改、 最终通过设计要求,在编写程序的过程采用了定时程序和时间调整程序对称的 编写方法。并且在时间的调整或设置过程中本设计采用了长按进行调时或调分 的选择,短按是进行在选择后进行加 1,每短按一次,该单位加 1.调整完毕以 后可以继续长按原设置键即可跳出设置循环,显示部分共阳极数码管显示 正常走时的时间。但是该程序在硬件的仿真过程中有点瑕疵。在仿真开始时警 示灯直接亮,必须通过闹钟定时键 K2 的闹钟设置以后时间才可以正常走时。 之后可以进行时间的调整或闹钟的重新调整。 这次设计让我学到了很多东西。通过自己设计、编程,不断的修改实践, 我进一步熟悉和掌握了单片机的内部结构和工作原理,了解了单片机应用系统 设计的基本方法的步骤;通过利用 MCS51 单片机,我理解了单片机在自动 化仪表中的作用以及掌握单片机的编程方法;通过设计交通灯模拟系统,掌握 了单片机仿真软件 proteus 的使用方法,加深了对所学知识的掌握,认识到实践 对理论学习的重要性。 目录目录 1 1、概述、概述3 3 1.1 设计背景 3 1.2 设计要求 3 1.3 设计目的 3 2 2 系统总体方案及硬件设计系统总体方案及硬件设计 5 5 21 交通信号灯的控制系统的基本工作原理图 .5 22 设计原理分析 .5 3 3 软件设计软件设计 9 9 4.4.系统仿真系统仿真1717 5.5.心得体会心得体会1919 6.6.参考文献参考文献1919 附附 1 1:源程序代码:源程序代码 2020 附附 2 2:系统原理图:系统原理图 3434 1 1、概述、概述 1.1 设计背景 随着社会经济的发展,城市交通问题越来越引起人们的关注。人、车、路 三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控 制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管 理系统,它是现代城市交通监控指挥系统中最重要的组成部分。 随着城市机动车量的不断增加,许多大城市如北京、上海、南京等出现了 交通超负荷运行的情况,这些城市纷纷修建城市高速道路,在高速道路建设完 成的初期,它们也曾有效地改善了交通状况。然而,随着交通量的快速增长和 缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。而 城市高速道路在构造上的特点,也决定了城市高速道路的交通状况必然受高速 道路与普通道路耦合处交通状况的制约。所以,如何采用合适的控制方法,最 大限度利用好耗费巨资修建的城市高速道路,缓解主干道与匝道、城区同周边 地区的交通拥堵状况,越来越成为交通运输管理和城市规划部门亟待解决的主 要问题。 1.2 设计要求 1A 道和 B 道上均有车辆要求通过时,A、B 道轮流放行。A 放行 5 分钟 (调试时改成 5 秒钟) ,B 道上放行 4 分钟(调试时改成 4 秒钟) 。 2一道有车而另一道无车(实验时用开关 K0 和 K1 控制) ,即当 A 道有车 B 道无车,按 K0 键可以控制交通灯系统让 A 道立即放行 B 道禁止;当 B 道有 车 A 道无车,按 K1 键可以控制交通灯系统让 B 道立即放行 A 道禁止。 3有紧急车辆通过时,按开关 K2 可以控制系统能禁止普通车辆通行,即 A、B 道均为红灯。 1.3 设计目的 1、进一步熟悉和掌握单片机的内部结构和工作原理,了解单片机应用系统 设计的基本方法和步骤; 2、通过利用 MC51 单片机,理解单片机在自动化仪表中的作用以及掌握 单片机的编程方法; 3、通过设计一个简单的交通灯模拟系统,掌握了单片机仿真软件 proteus 的使用方法; 4、掌握撰写课程设计报告的方法; 2 2 系统总体方案及硬件设计系统总体方案及硬件设计 21 交通信号灯的控制系统的基本工作原理图 时时 钟钟 系系 统统 89C52 显显 示示 系系 统统 控控 制制 系系 统统 22 设计原理分析 人行道 人行道 人行道 人行道 首先了解实际交通灯的变化情况和规律。假设一个十字路口如上图所以, 为东南西北走向。初始状态 0 为东西南北都红灯亮。然后转状态 1 东西绿灯通 车,南北红灯亮。过一段时间后,转状态 2,东西绿灯灭,黄灯闪几下,南北 还是红灯。再转状态 3,南北绿灯通车,东西红灯亮。过一段时间后转状态 4, 南北绿灯灭,闪几个黄灯,东西还是为红灯亮,一段时间后,又循环至状态 1。列出交通信号灯的状态表如下:(其中,1 代表灯亮,0 代表灯灭) 北北西西南南东东 状态 绿 黄 红绿 黄 红绿 黄 红绿 黄 红 0001001001001 1001100001100 2001010001010 3100001100001 4010001010001 对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组 的信号灯的显示情况是相同的,所以只要用两组就行了,因此,采用单片机内 部的 I/O 口上的 P1 口中的 6 个引脚即可来控制 6 个信号灯。通过编写程序,实 现对发光二极管的控制,来模拟交通信号灯的管理。每延时一段时间,灯的显 示情况都会按交通灯的显示规律进行状态转换。通过延时时间送显,可以在原 有的交通信号灯系统的基础上,增添其倒计时间的显示功能,实现其功能的扩 展。 2.3 复位电路模块 单片机系统的复位电路在这里采用的是上电+按钮 复位电路形式,其中电阻 R 采用 200 的阻值,电容采用电容值为 10 的电解 电容。具体连接电路如图示 1: C1 1nF R1 1k6 R12 1k6 图 1 2.4 时钟电路模块 为达到振荡周期是 12MHZ 的要求,这里要采用 12MHZ 的晶振,另外有两个 22P 的独石电容,两晶振引脚分别连到 XTAL1 和 XTAL2 振荡脉冲输入引脚。具体连接图如图 2 所示: C2 1nF C3 1nF X1 CRYSTAL 图 2 2.5 交通灯亮灭控制电路模块 交通灯总共有四种状态的来回变换, 即南北红灯东西绿灯、南北红灯东西黄灯、南北绿灯东西红灯、南北黄灯东西 红灯。有这四种状态按照特定的时间延迟循环变换就会形成我们在大街上时常 看到的交通灯的来回变换。按上图所示的连接电路,这四种状态可以通过单片 机 P1 口的四种不同的输出状态来 图 3 2.6 开关电路 设置绿灯,黄灯,红灯时间和处理紧急情况,可以通过 两个外部中断共同完成,也可以通过 I/O 口用查询方式实现。这里用四个按键 连接 P2 口的后四个口,连接 P2.4P2.6 的按键分别控制绿灯,黄灯,红灯的初 始时间的设定,每按一下其值加一并显示设置后的时间和点亮数秒设置的灯 (为分辨设置的是哪一灯的时间) ,连接 P2.7 口的按键按一下东西南北都亮红 灯表示有紧急情况发生,当紧急情况处理完后再按一下就会恢复正常。硬件电 路如下图所示: R9 1k6 R10 1k6 R11 1k6 GND R6 1k6 GND 图 4 3 3 软件设计软件设计 本系统的软件系统较大,全部采用汇编语言编写,除语法与逻辑差错外, 当确认程序没问题时,直接下载到单片机仿真调试。采取自下到上的方法,单 独做 好每一个模块,最后完成一个完整的系统调试,使单片机能够正常的安装 预定的当判断到一道有车一道无车时,程序就会跳转到相应的入口执行。当判 断结果是两道都有车或两道都没有车是程序还是会按顺序继续执行下去。在主 程序中就是这四个状态的来回顺序的转变,同时判断着这个标示位的情况,当 标示位符合条状条件时,发生跳转,到相应的程序段去执行。 另外 K1 中断程序里的,只要有中断请求就会马上保存中现场,跳转靠中断服务 程序里去执行。这个中断程序我设计的是一个死循环,因为紧急情况时谁也不 知道他会持续多长时间,所以当执行中断和系统就会陷入死循环一直到有人按 到复位键,程序才会从 0000H 开始执行程序。在主程序中,还有一部分程序段 虽然完成了数码管显示的工的能,但是并没有调用数码管显示字程序段。 31 总的流程图 初次设置闹 铃 间 CPU 等初始 化 设定闹铃时间 启动走时 有关量的初始 化 启动闹铃 定时设置程序 判断分时变化 调时调分 判断 1S 到 否 再次设置闹铃 否 闹铃时间到否 显示刷新 32 部分程序模块设计 1 为了便于程序的阅读,可以在程序的开头进行一些注释 定时器 T0,T1 溢出周期为 50ms T0 为计时用,T1 为调整闪烁用 由 P0 口送出七位段码 由 P2 口送出相应位码 由 P1 口送出 LED 显示码 P3 口作为按键输入口 显示数据放 70H-71,72-73H 计时单元为 78H-79H 2 主程序 START: MOV R0,#70H ;清显示缓存 MOV R7,#0FH ;高端 16 个单元专做显示用 CLEARDISP: MOV R0,#00H INC R0 DJNZ R7,CLEARDISP MOV GREENT1,#0AH MOV GREENT2,#0AH MOV LED1_RAM,#0AH ;存入预置时间 15S MOV LED2_RAM,#0FH MOV LED1_DIS,#00H ;预置显存 MOV LED2_DIS,#01H MOV LED3_DIS,#05H MOV LED4_DIS,#01H MOV R2,#00H ;状态标志置初值(分 0,1,2,3 四个状态) SETB STOPF MOV 20H,#00H ;20H 专做标志用 MOV 7AH,#0FFH ;放入不显示数据 MOV TMOD,#11H MOV TL0,#0B0H MOV TH0,#3CH MOV TL1,#0B0H MOV TH1,#3CH SETB EA SETB ET0 SETB TR0 MOV R4,#14H ;1 秒用初值 mov led,#1eh ;初始化 LED 显示 START1: LCALL DISPLAY JNB K1,SETTIME JNB K2,STOP SJMP START1 SETTIME: ACALL DISPLAY ACALL DISPLAY ACALL DISPLAY JB K1,START1 LJMP K1_INT STOP: ACALL DISPLAY ACALL DISPLAY ACALL DISPLAY JB K2,START1 NO6: JNB K2,OFF6 CLR STOPF ;设全闪烁标志 CLR ET0 ;关断定时器 T0 中断 CLR TR0 ;停止计数 SETB ET1 ;启动 T1 SETB TR1 MOV LED,#1bH ;送相应的灯显示,两路均红灯亮 GO: LCALL DISPLAY JNB K2,STOP_OUT CPL CH2 LCALL DISPLAY LCALL DISPLAY LJMP GO OFF6: LCALL DISPLAY AJMP NO6 STOP_OUT: LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY JB K2,GO NO7: JNB K2,OFF7 MOV LED1_RAM,GREENT1 MOV R0,#LED1_RAM LCALL BCD MOV A,GREENT1 ADD A,#05H MOV LED2_RAM,A MOV R0,#LED2_RAM LCALL BCD CLR 01H ;清调 LED1 标志 CLR 00H ;清调 LED2 标志 CLR 02H ;清闪烁标志 SETB STOPF CLR TR1 CLR ET1 SETB TR0 SETB ET0 MOV P1,#1eH LJMP START1 OFF7: LCALL DISPLAY AJMP NO7 3 状态转换程序 JMPN: MOV A,R2 RL A MOV DPTR,#JMPTAB JMP A+DPTR JMPTAB: AJMP J0 AJMP J1 AJMP J2 AJMP J3 J0: MOV P1, #1dH MOV LED1_RAM,LED2_RAM ;将第一路中红灯还剩时间给第二路黄灯 MOV R0,#LED1_RAM LCALL BCD INC R2 ;指向下一个状态 LJMP OUTT0 J1: MOV P1, #33H ;相应 LED 显示 MOV LED2_RAM,GREENT2 ;置第 2 路绿灯亮时间 MOV A,LED2_RAM ADD A,#05H ;置第 1 路红灯亮的时间(第一路绿灯亮时间+5 秒) MOV LED1_RAM,A MOV R0,#LED1_RAM LCALL BCD INC R2 ;指向下一个状态 LJMP OUTT0 J2: MOV P1, #2bH ;点亮相应 LED MOV LED2_RAM,LED1_RAM;将第二路中红灯还剩时间给第一路黄灯 MOV R0,#LED2_RAM LCALL BCD INC R2 LJMP OUTT0 J3: MOV P1, #1eH ;相应 LED 显示 MOV A,GREENT1 ;置第二路绿灯亮时间 MOV LED1_RAM,A ADD A,#05H MOV LED2_RAM,A LCALL BCD MOV R2,#00H ;状态标志位 ;* OUTT0: POP PSW POP ACC SETB ET0 ;开放 T0 中断 RETI ;中断返回 ;* INTT1: PUSH ACC ;中断现场保护 PUSH PSW MOV TL1,#0B0H MOV TH1,#3CH ;50ms DJNZ FLASHTIME,INTT1OUT ;0.3 秒未到,退出返回 MOV FLASHTIME,#06H ;重装 0.3 秒计时用初值 CPL 02H ;闪烁标志取反 JNB STOPF,STOPFLASH JB 02H,FLASH1 ;显示单元“熄灭“ MOV R0,#LED1_RAM;正常显示 LCALL BCD MOV R0,#LED2_RAM LCALL BCD INTT1OUT: POP PSW ;恢复现场,中断退出 POP ACC RETI FLASH1: JB CH2,FLASH2 ;转第二路时间闪烁显示 MOV 70H,#0AH MOV 71H,#0AH AJMP INTT1OUT FLASH2: MOV 72H,#0AH MOV 73H,#0AH LJMP INTT1OUT STOPFLASH: JB 02H,NODIS ;显示单元“熄灭“ MOV LED1_DIS,#0BH MOV LED2_DIS,#0CH MOV LED3_DIS,#0DH MOV LED4_DIS,#0EH AJMP INTT1OUT NODIS: MOV 70H,#0AH MOV 71H,#0AH MOV 72H,#0AH MOV 73H,#0AH AJMP INTT1OUT BCD: CJNE R0,#78H,DIS2 MOV A,R0 MOV B,#10 DIV AB MOV LED2_DIS,A MOV LED1_DIS,B INC R0 MOV A,R0 MOV B,#10 DIV AB MOV LED4_DIS,A MOV LED3_DIS,B DIS2: MOV A,R0 MOV B,#10 DIV AB MOV LED4_DIS,A MOV LED3_DIS,B DEC R0 MOV A,R0 MOV B,#10 DIV AB MOV LED2_DIS,A MOV LED1_DIS,B RET 4 4.系统仿真系统仿真 这个交通灯模拟控制系统,可以实现所要求功能,具体操作办法是: (1) 当有紧急车辆通过时,按下 K1 键,A 道、B 道都为红灯; (2) 当 A 道有车,B 道没车的时候,首先按下 K1 键,然后按下 K2 键,便可 以使 A 道绿灯变亮,B 道红灯变亮; (3) 当 B 道有车,A 道没车的时候,首先按下 K1 键,然后按下 K3 键,便可 以使 B 道绿灯变亮,A 道红灯变亮; 当 B 道有车,A 道没车的时候 A 道有车,B 道没车的时候 A 道有车,B 道没车的时候 有紧急车辆通过时 5 5. .心得体会心得体会 通过这次的对交通灯的设计,使我对用单片机设计电路有了更深刻的理解 和掌握,更好的了解和掌握了一些编程思想和对 I/O 口的使用。这次实训通过 一个单片机的 I/O 口来控制交通灯,由于使用的是单片机 AT89C52 作为核心的控 制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统, 进行不同状态的组合和扩展。在编程的过程中主要是是模仿其它的编程思路,又 加了一些自己的思想,还是比较顺利的。 在我们设计和调试的过程中在这次交通灯设计中,我感触最深的就是电路 焊接的困难,原本简单明了的设计在焊接过程之中却会出现很多莫明其妙的错 误,以至于最后不得不重新设计一个更为简单的系统来完成任务,这让我了解 到制作与设计之间的差距,制作过程中远不可能达到设计所需要的完美条件, 今后我会更加重视动手能力的培养,只有把理论与实践结合起来,才能取得更 大的收获。 6.6.参考文献参考文献 1 李朝青.单片机原理及接口技术(修订版).北京:北京航空航天大学出版社, 1998.35-43 2 何立民.单片机应用技术大全.北京:北京航空航天大学出版社, 2000.78-100 3 李广弟.单片机基础.北京:北京航空航天大学出版社,1992 .86-102 4 谭浩强.单片机课程设计. 京:清华大学出版社,1989.32-45 5 张毅刚. 单片机原理及接口技术.哈尔滨:哈尔滨工业大学出版社,1990.25-36 6 余发山 单片机原理及应用技术 中国矿业大学出版社 2003.21-30 附附 1 1:源程序代码:源程序代码 ;* ;交通控制系统源程序 ;* ;定时器 T0,T1 溢出周期为 50ms ;T0 为计时用,T1 为调整闪烁用 ;由 P0 口送出七位段码 ;由 P2 口送出相应位码 ;由 P1 口送出 LED 显示码 ;P3 口作为按键输入口 ;* ;显示数据放 70H-71,72-73H ;计时单元为 78H-79H ;* ;常量定义 ;* LED EQU P1 LED_SEG EQU P0 LED_BIT EQU P2 K1 EQU P3.2 K2 EQU P3.1 K3 EQU P3.0 LED1_DIS EQU 70H LED2_DIS EQU 71H LED3_DIS EQU 72H LED4_DIS EQU 73H LED1_RAM EQU 78H LED2_RAM EQU 79H GREENT1 EQU 7CH GREENT2 EQU 7DH FLAG BIT 2FH FLASHTIME EQU 6EH CH1 BIT 00H ;调第一路时闪烁标志 CH2 BIT 01H ;调第二路时闪烁标志 FLASHFLAG BIT 02H ;闪烁标志 STOPF BIT 03H ;* ;中断入口程序 ;* ORG 0000H ;程序开始地址 LJMP START ORG 0003H ;外部中断 0 程序入口 RETI ORG 000BH ;定时器 T0 中断入口 LJMP INTT0 ORG 0013H ;定时器 T1 中断入口 RETI ORG 001BH ;外部中断 1 程序入口 LJMP INTT1 ORG 0023H ;串行中断 RETI ;* ; 主程序 ;* START: MOV R0,#70H ;清显示缓存 MOV R7,#0FH ;高端 16 个单元专做显示用 CLEARDISP: MOV R0,#00H INC R0 DJNZ R7,CLEARDISP MOV GREENT1,#00H MOV GREENT2,#00H MOV LED1_RAM,#00H ;存入预置时间 15S MOV LED2_RAM,#00H MOV LED1_DIS,#00H ;预置显存 MOV LED2_DIS,#00H MOV LED3_DIS,#00H MOV LED4_DIS,#00H MOV R2,#00H ;状态标志置初值(分 0,1,2,3 四个状态) SETB STOPF MOV 20H,#00H ;20H 专做标志用 MOV 7AH,#0FFH ;放入不显示数据 MOV TMOD,#11H MOV TL0,#0B0H MOV TH0,#3CH MOV TL1,#0B0H MOV TH1,#3CH SETB EA SETB ET0 SETB TR0 MOV R4,#01H ;1 秒用初值 mov led,#0e1h ;初始化 LED 显示 绿 红 START1: LCALL DISPLAY JNB K1,SETTIME JNB K2,STOP SJMP START1 SETTIME: ACALL DISPLAY ACALL DISPLAY ACALL DISPLAY JB K1,START1 LJMP K1_INT STOP: ACALL DISPLAY ACALL DISPLAY ACALL DISPLAY JB K2,START1 NO6: JNB K2,OFF6 CLR STOPF ;设全闪烁标志 CLR ET0 ;关断定时器 T0 中断 CLR TR0 ;停止计数 SETB ET1 ;启动 T1 SETB TR1 MOV LED,#0e4H ;送相应的灯显示,两路均红灯亮 GO: LCALL DISPLAY JNB K2,STOP_OUT CPL CH2 LCALL DISPLAY LCALL DISPLAY LJMP GO OFF6: LCALL DISPLAY AJMP NO6 STOP_OUT: LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY JB K2,GO NO7: JNB K2,OFF7 ;- MOV LED1_RAM,GREENT1 MOV R0,#LED1_RAM LCALL BCD MOV A,GREENT1 ADD A,#00H MOV LED2_RAM,A MOV R0,#LED2_RAM LCALL BCD CLR 01H ;清调 LED1 标志 CLR 00H ;清调 LED2 标志 CLR 02H ;清闪烁标志 SETB STOPF CLR TR1 CLR ET1 SETB TR0 SETB ET0 MOV P1,#0e1H;A 红 B 绿 ;- LJMP START1 OFF7: LCALL DISPLAY AJMP NO7 ;* ; 1 秒计时程序 T0 中断服务子程序 ;* INTT0: PUSH ACC ;保护现场 PUSH PSW CLR ET0 ;关 T0 中断允许 CLR TR0 ;关闭定时器 T0 MOV A,#0B7H ;中断响应时间同步修正 ADD A,TL0 ;低 8 位重置 MOV TL0,A MOV A,#3CH ;高 8 位修正 ADDC A,TH0 MOV TH0,A SETB TR0 ;重启定时器 DJNZ R4,OUTT0 SUBSS: MOV R4,#14H ;20 次中断到重赋初值 MOV R0,#LED2_RAM ;指向第 1 路计时单元 MOV A,R0 JZ JUDGE1 MOV R0,#LED1_RAM MOV A,R0 JZ JUDGE2 MOV R0,#LED1_RAM DEC R0 ACALL BCD MOV R0,#LED2_RAM DEC R0 ACALL BCD LJMP OUTT0 JUDGE1: MOV R0,#LED1_RAM DEC R0 ACALL BCD LJMP JMPN JUDGE2: MOV R0,#LED2_RAM DEC R0 ACALL BCD LJMP JMPN ;* ; 状态转换子程序 ;* JMPN: MOV A,R2 RL A MOV DPTR,#JMPTAB JMP A+DPTR JMPTAB: AJMP J0 AJMP J1 AJMP J2 AJMP J3 J0: MOV P1, #0e2H MOV LED1_RAM,#01H ;将第一路中红灯还剩时间给第二路黄灯 MOV R0,#LED1_RAM LCALL BCD INC R2 ;指向下一个状态 LJMP OUTT0 J1: MOV P1, #0ccH ;相应 LED 显示 MOV LED2_RAM,GREENT2 ;置第 2 路绿灯亮时间 MOV A,LED2_RAM ADD A,#05H ;置第 1 路红灯亮的时间(第一路绿灯亮时间+5 秒) MOV LED1_RAM,A MOV R0,#LED1_RAM LCALL BCD INC R2 ;指向下一个状态 LJMP OUTT0 J2: MOV P1, #0d4H ;点亮相应 LED A 黄 B 红 MOV LED2_RAM,LED1_RAM;将第二路中红灯还剩时间给第一路黄灯 MOV R0,#LED2_RAM LCALL BCD INC R2 LJMP OUTT0 J3: MOV P1, #0e1H ;相应 LED 显示 绿红 MOV A,GREENT1 ;置第二路绿灯亮时间 MOV LED1_RAM,A ADD A,#05H MOV LED2_RAM,A LCALL BCD MOV R2,#00H ;状态标志位 ;* OUTT0: POP PSW POP ACC SETB ET0 ;开放 T0 中断 RETI ;中断返回 ;* INTT1: PUSH ACC ;中断现场保护 PUSH PSW MOV TL1,#0B0H MOV TH1,#3CH ;50ms DJNZ FLASHTIME,INTT1OUT ;0.3 秒未到,退出返回 MOV FLASHTIME,#06H ;重装 0.3 秒计时用初值 CPL 02H ;闪烁标志取反 JNB STOPF,STOPFLASH JB 02H,FLASH1 ;显示单元“熄灭“ MOV R0,#LED1_RAM;正常显示 LCALL BCD MOV R0,#LED2_RAM LCALL BCD INTT1OUT: POP PSW ;恢复现场,中断退出 POP ACC RETI FLASH1: JB CH2,FLASH2 ;转第二路时间闪烁显示 MOV 70H,#00H MOV 71H,#00H AJMP INTT1OUT FLASH2: MOV 72H,#00H MOV 73H,#00H LJMP INTT1OUT STOPFLASH: JB 02H,NODIS ;显示单元“熄灭“ MOV LED1_DIS,#0BH MOV LED2_DIS,#0CH MOV LED3_DIS,#0DH MOV LED4_DIS,#0EH AJMP INTT1OUT NODIS: MOV 70H,#00H MOV 71H,#00H MOV 72H,#00H MOV 73H,#00H AJMP INTT1OUT BCD: CJNE R0,#78H,DIS2 MOV A,R0 MOV B,#10 DIV AB MOV LED2_DIS,A MOV LED1_DIS,B INC R0 MOV A,R0 MOV B,#10 DIV AB MOV LED4_DIS,A MOV LED3_DIS,B DIS2: MOV A,R0 MOV B,#10 DIV AB MOV LED4_DIS,A MOV LED3_DIS,B DEC R0 MOV A,R0 MOV B,#10 DIV AB MOV LED2_DIS,A MOV LED1_DIS,B RET ;* ;时间调整子程序 ;* K1_INT: SETB STOPF MOV LED,#0e4H ;使两个方向均红灯亮,视具体电路送值 CLR ET0;关断定时器 T0 中断 CLR TR0 ;停止计数 MOV LED1_RAM,GREENT1 MOV LED2_RAM,GREENT2 LCALL BCD LCALL DISPLAY MOV FLASHTIME,#06H ;赋闪烁定时初值 SETB ET1 ;启动 T1 SETB TR1 SET2: JNB K1 ,SET1 ;等待键释放 SETB CH1 ; 设置 K1 调整标志 CLR CH2 ;赋闪烁标志 SET4: JNB K2,K1_K2 JNB K3,K1_K3 JNB K1,K1_NEXT LCALL DISPLAY AJMP SET4 SET1: LCALL DISPLAY;键释放等待时调用显示子程序,防止键按下时无显示 LJMP SET2 K1_K2: LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY JB K2,SET4 NO1: JNB K2,OFF1 ;等待按键释放 ;INC GREENT1 MOV LED1_RAM,GREENT1 MOV R0,#LED1_RAM LCALL BCD LCALL DISPLAY LJMP SET4 OFF1: mov p1,#22H LCALL DISPLAY AJMP NO1 K1_K3: LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY JB K3,SET4 ;调用显示消除干扰 NO2: JNB K3,OFF2 ;等待按键释放 ;DEC GREENT1 MOV LED1_RAM,GREENT1 MOV R0,#LED1_RAM LCALL BCD LCALL DISPLAY LJMP SET4 OFF2: mov p1,#14H LCALL DISPLAY LJMP NO2 K1_NEXT: JNB CH1,K1_OUT LJMP SET2_NEXT K1_OUT: LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY JB K1,SET4 NO3: JNB K1,OFF3 LJMP SETOUT OFF3: LCALL DISPLAY LJMP NO3 ;- SET2_NEXT: JNB K1 ,SET1_NEXT ;等待键释放 CLR CH1 ; 设置 K1 调整标志 SETB CH2 SET4_NEXT: JNB K2,K1_K2_NEXT JNB K3,K1_K3_NEXT JNB K1,K1_NEXT LCALL DISPLAY AJMP SET4_NEXT SET1_NEXT: LCALL DISPLAY;键释放等待时调用显示子程序,防止键按下时无显示 LJMP SET2_NEXT K1_K2_NEXT: LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY JB K2,SET4_NEXT NO1_NEXT: JNB K2,OFF1_NEXT ;等待按键释放 INC GREENT2 MOV LED2_RAM,GREENT2 MOV R0,#LED2_RAM LCALL BCD LCALL DISPLAY LJMP SET4_NEXT OFF1_NEXT: LCALL DISPLAY AJMP NO1_NEXT K1_K3_NEXT: LCALL DISPLAY LCALL DISPLAY LCALL DISPLAY JB K3,SET4_NEXT ;调用显示消除干扰 NO2_NEXT: JNB K3,OFF2_NEXT ;等待按键释放 DEC GREENT2 MOV LED2_RAM,GREENT2 MOV R0,#LED2_RAM LCALL BCD L
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 60153-2:2025 EN-FR Hollow metallic waveguides - Part 2: Relevant specifications for ordinary rectangular waveguides
- 【正版授权】 ISO/TR 18155:2025 EN Railway applications - Principles of train detection for operations and services
- TCECS 1797-2024 大跨屋盖结构抗震设计标准
- 校招三方协议后合同
- 服装的出口合同范本
- 村民办民宿合同范本
- 农村厨房转让协议书
- 出库免责协议书模板
- 教育部做好2025届全国普通高校毕业生就业创业工作(全文)易考易错模拟试题(共500题)试卷后附参考答案
- 个人演出协议书范本
- 高空曲臂车安全操作规程
- 2025年粉尘涉爆培训题库及答案
- 第4章 学前儿童膳食卫生与保健【教学课件】
- DL-T 1476-2023 电力安全工器具预防性试验规程
- (高清版)DZT 0399-2022 矿山资源储量管理规范
- 智慧售电方案
- 数字化人力资源管理系统建设
- 国有企业投资公司绩效考核管理办法
- 模板支撑系统大样图
- T-CAPDA 006-2020 丙酰芸苔素内酯原药
- 家族财富传承法商
评论
0/150
提交评论