单片机手动交通灯课程设计
交通信号灯单片机课程设计

交通信号灯单片机课程设计一、设计背景交通信号灯是城市道路上的重要设施,它能够指引行车和行人的方向,维护交通秩序和安全。
而现代交通信号灯则采用了单片机技术,使其更加智能化、可靠化和节能环保。
二、设计目标本课程设计旨在通过学习单片机原理和应用知识,掌握交通信号灯的设计与实现方法,并实现以下目标:1. 理解单片机工作原理及其应用;2. 掌握基本的电子元器件和电路知识;3. 学会使用Keil C51集成开发环境编写程序;4. 能够独立完成交通信号灯系统的设计与实现。
三、设计内容1. 系统硬件设计系统硬件主要由单片机、LED等元器件组成。
其中,单片机采用AT89C52型号,具有强大的计算能力和丰富的外设接口;LED则是光电转换元件,可将电能转换为光能进行显示。
2. 系统软件设计系统软件主要由Keil C51集成开发环境编写。
具体步骤如下:(1)编写程序框架:包括头文件引用、全局变量定义、主函数等;(2)编写延时函数:通过循环语句实现时间延迟,用于控制交通信号灯的闪烁和变换;(3)编写状态转换函数:根据交通信号灯的状态进行相应的控制操作,包括红灯、黄灯、绿灯等状态;(4)调试程序:通过单片机仿真器或实际硬件进行程序调试,确保程序运行正确。
四、设计步骤1. 系统硬件设计步骤:(1)确定系统功能需求和性能指标;(2)选取单片机和LED元器件,并进行电路原理图设计;(3)进行PCB布线和焊接工作,完成系统硬件设计。
2. 系统软件设计步骤:(1)安装Keil C51集成开发环境,并创建工程文件;(2)编写程序框架和延时函数,并测试其正确性;(3)编写状态转换函数,并测试其正确性;(4)将程序下载到单片机中,并进行实际运行测试。
五、设计成果展示经过以上步骤,我们成功地完成了交通信号灯系统的设计与实现。
下面是系统运行效果展示:当交通信号灯处于红灯状态时,车辆需停车等待;当交通信号灯处于黄灯状态时,车辆需减速慢行;当交通信号灯处于绿灯状态时,车辆可正常行驶。
51单片机交通灯毕业设计方案

51单片机交通灯毕业设计方案
以下是一个基于51单片机的交通灯设计方案:
1. 硬件设计:
- 使用51单片机作为主控制器。
- 使用红黄蓝三个LED作为信号灯的显示器件。
- 使用按钮作为手动触发信号灯切换的输入设备。
- 使用数码管显示当前信号灯状态的计时器。
- 使用适当的电阻、电容、继电器等连接单片机和LED、按钮、数码管等。
2. 软件设计:
- 配置51单片机的I/O口,将LED、按钮和数码管连接到正
确的引脚。
- 编写主程序,设置中断或轮询等方式读取按钮状态,并根
据按钮状态切换信号灯状态。
- 通过控制LED引脚的输出电平,实现红黄蓝三个信号灯的
闪烁、亮灭和切换。
- 使用定时器计时,实现信号灯的定时控制。
根据交通规则,红灯、黄灯、绿灯的显示时间可以根据需要设定。
- 使用数码管显示当前信号灯的状态和剩余时间,方便车辆
和行人了解交通灯变化。
3. 功能设计:
- 根据交通规则,设置交通灯的变换顺序和时间,确保道路
的交通流畅和安全。
- 根据需要加入手动触发信号灯切换的功能,允许人工控制,
例如紧急情况下的交通调节。
- 可以考虑加入流量检测、车辆和行人优先等功能,提高交
通效率和安全性。
- 可以通过串口或无线通信模块,实现与其他设备的联动,
例如与车载导航系统、交通监控系统等的数据交换和协同控制。
以上是一个基本的51单片机交通灯设计方案,可以根据具体
需求进行进一步调整和优化。
单片机交通灯课程设计【完成】

1 任务及要求1.1设计任务十字路口的交通指示灯,在正常情况下,按表中要求进行点亮,当急救车到达时,两方向红灯亮10秒后,交通灯恢复以前的状态。
交通灯开始正常情况下交通灯运行规律东西方向红灯(3S)绿灯(10S)黄灯闪5次红灯(0.2S)红灯(10S)黄灯闪5次红灯(0.2S)南北方向红灯(3S)红灯(10S)绿灯(10S)1.2 设计要求利用AT89C51单片机的P1端口的接LED来模拟交通路口的红绿黄灯,用按键来模拟有急救车到来的情况。
P1端口的P1.0到P1.2所接的LED分别表示东西路口的红、黄、绿灯,P1.3到P1.5所接的LED分别表示南北路口的红、黄、绿灯。
P3.2接按钮,模拟产生外部中断。
正常情况下按照表格进行点亮。
当外部中断产生时,响应中断并转向中断程序,使两红灯同时亮10秒,完成后返回原程序。
2 设计思想2.1 硬件设计思想选用AT89C51作为控制部件,CAP,CAP-ELEC,CRYSTAL,RES组成最小系统。
LED-RED,LED-GREEN,LED-YELLOW模拟交通路口红、绿、黄灯。
用AT89C51的控制模块,加入按键等功能,并利用AT89C51的P1口输出控制信号,使得LED在软件的控制下工作。
2.2 软件设计思想采用汇编语言编写程序,程序由一个主函数,一个中断程序和多个延时子程序构成。
由主函数实现LED彩灯在正常情况下的点亮和关闭。
中断程序实现LED点阵LED彩灯中两个红灯点亮10秒。
3 电路原理与电路图3.1 电路原理单片机最小系统。
一个AT89C51单片机做为控制电路,运用其P1口来控制六个LED彩灯,通过P1给LED彩灯输入不同的电平信号,来实现LED彩灯按要求点亮。
P3口接中断按钮。
3.2 电路原理图4 流程图与算法描述4.1 流程图开始置口地址外部中断初始化两个红灯亮延时3秒东西路口绿灯亮,南北路口红灯亮延时10秒东西路口绿灯灭,南北路口红灯灭两路口黄灯闪烁5次两红灯亮延时0.2秒南北路口绿灯亮,东西路口红灯亮延时10秒南北路口绿灯灭,东西路口红灯灭两路口黄灯闪烁5次两红灯亮延时0.2秒中断入口有关寄存器入栈红灯全亮,黄绿灯全灭延时10秒取中断前所保存的数据输入,恢复原始状态有关寄存器出栈外部中断允许标志置位中断返回4.2 算法描述1、延时子程序。
单片机交通灯课程设计

单片机交通灯课程设计一、课程介绍:本课程名为“单片机交通灯课程设计”,旨在通过教授单片机的基本原理和应用,使学员能够设计和实现一个简单的交通灯控制系统。
课程将围绕单片机的硬件组成、编程语言、接口技术等方面展开,使学员深入了解单片机的运作机制,掌握交通灯控制系统的原理和设计方法。
通过本课程的学习,学员将能够独立设计和实现一个交通灯控制系统,提高他们的实践能力和创新能力。
二、学习者分析:目标受众为具有一定电子工程或计算机科学背景的大学生,他们的年龄一般在18-25岁之间,学历水平主要为本科或研究生。
他们对电子技术和编程语言有一定的了解,具备一定的逻辑思维能力和问题解决能力。
先备知识方面,学员应掌握基本电路原理、C语言编程和微控制器的基本概念。
三、学习目标:1.认知目标:学生应该了解单片机的硬件组成、工作原理和编程语言;掌握交通灯控制系统的原理和设计方法。
2.技能目标:学生应该能够使用单片机开发工具进行程序编写和调试;能够设计和实现一个简单的交通灯控制系统。
3.情感目标:学生应该培养对电子技术的兴趣和热情,提高他们的问题解决能力和创新意识。
四、课程内容:1.模块/单元划分:将课程内容划分为以下几个模块:模块一:单片机基础知识;模块二:C语言编程;模块三:单片机接口技术;模块四:交通灯控制系统设计。
2.内容描述:模块一将介绍单片机的硬件组成、工作原理和编程环境;模块二将教授C语言的基本语法和编程技巧;模块三将讲解单片机接口技术的原理和应用;模块四将引导学员设计和实现一个简单的交通灯控制系统。
3.核心概念:每个模块中都包含关键概念或理论,如单片机的硬件组成、C语言的编程语法、接口技术的原理等。
这些核心概念是课程的重点,学员需要深入理解和掌握。
五、教学策略:为了达到本课程的学习目标,我们将采用多种教学方法、活动设计和技术的整合。
1.教学方法:我们将结合讲授、讨论、合作学习和实验等方法。
讲授法用于向学生传授单片机和C语言的基础知识;讨论法用于激发学生的思考,解决学习过程中遇到的问题;合作学习使学生在团队中共同完成项目,培养沟通和协作能力;实验法让学生亲手操作,加深对知识的理解和应用。
单片机课程设计-交通灯

目录目录第一章课程设计内容与要求分析 (1)1.1 课程设计内容 (1)1.2 课程设计要求分析 (2)1.2.1 系统单元电路组成 (2)第二章控制系统程序设计 (4)第三章单片机原理及应用课程设计总结 (18)参考文献 (19)附录 (20)第一章课程设计内容与要求分析1.1 课程设计内容本题目以89C51单片机为核心器件组成交通灯控制系统,采用定时中断实现精确定时;利用提供的单元模块构成硬件系统。
交通灯控制系统的设计要求:1)基本功能:要求在一般工作方式下,十字路口为A、B道(A、B道交叉组成十字路口),每道设置红、绿、黄三盏灯,在灯的控制下各道轮流放行。
通行的流程是:B道红灯亮40秒,同时A道绿灯亮30秒,闪烁5秒,A道黄灯亮5秒;然后切换A道红灯亮40秒,同时B道绿灯亮30秒,闪烁5秒;B道黄灯亮5秒。
如此循环。
在A、B道红、绿、黄灯依次点亮时,A、B道对应的两位数码管分别倒计时显示本道红、绿、黄灯点亮的时间。
2)扩展功能:设置自动流量控制功能:即当一道有车而另一道无车(用按键开关S1、S2模拟车辆检测功能)时,使有车车道放行。
设置优先控制功能:当有紧急车辆通过时,用开关S0进行控制,将A、B 道均设定为红灯,第二次按下开关S0后,回复正常运行状态。
1.2 课程设计要求分析1.2.1 系统单元电路组成图1 交通灯外围电路图2 交通灯运行时电路图3 交通灯运行时电路第二章控制系统程序设计#include <reg51.h>unsigned char code dtab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};//共阳极接法的数字0~9段码表unsigned char code selec[4]={0xFE,0xFD,0xFB,0xF7};//动态显示位选码表unsigned char disp[4];//定义4个显示缓冲单元unsigned char aa[25];sbit Key1=P1^4;//定义四个独立按键sbit Key2=P1^5;sbit Key3=P1^6;sbit Key4=P1^7;sbit YL_ledR=P3^0;//定义Y轴方向左转的红绿黄灯sbit YL_ledY=P3^1;sbit YL_ledG=P3^2;sbit YG_ledR=P3^3;//定义Y轴方向直行的红绿黄灯sbit YG_ledY=P3^4;sbit YG_ledG=P3^5;sbit XL_ledR=P2^0;//定义X轴方向左转的红绿黄sbit XL_ledY=P2^1;sbit XL_ledG=P2^2;sbit XG_ledR=P2^3;//定义X轴方向直行的红绿黄sbit XG_ledY=P2^4;sbit XG_ledG=P2^5;unsigned char flag=13,move_flag; //定义标志位unsigned char XGR,XGY,XGG;unsigned char XLR,XLY,XLG;unsigned char YGR,YGY,YGG;unsigned char YLR,YLY,YLG;unsigned char YYRR,XXRR;unsigned char num;void Delayms(unsigned int x) //定义xms延时函数,x就是形式参数{unsigned int i;unsigned char j;for(i=x;i>0; i--)for(j=110;j>0;j--);}/**************************************************************函数功能:定时器0中断服务函数,显示矩阵按键值**************************************************************/void Time0(void) interrupt 1//"interrupt"声明函数为中断服务函数{unsigned char count;TH0=(65536-50000)/256; //定时器T0的高8位赋初值TL0=(65536-50000)%256;//定时器T0的低8位赋初值if(++count>=20){count=0;YGG--; //Y轴绿灯时间减一XXRR--; //X轴红灯时间减一disp[2]=XXRR%10; //X轴数码管显示Y轴绿灯时间disp[3]=XXRR/10;disp[0]=YGG%10; //Y轴数码管显示X轴红灯时间disp[1]=YGG/10;if(YGG==0) //如果Y抽绿灯时间减为零,Y轴的黄灯开始亮,X轴的数码管显Y轴黄灯时间{disp[0]=YGY%10;disp[1]=YGY/10;YGG=1;YGY--;YG_ledG=1;//Y轴的绿灯熄灭YG_ledY=0;if(YGY==0XFF) //当Y轴黄灯闪烁时间变为零,Y轴红灯亮,黄灯灭,Y数码管显示X轴绿灯时间{ //同时X轴的绿灯亮,红灯灭,X轴数码管显示Y轴红灯时间disp[0]=YLG%10;disp[1]=YLG/10;YGY=0;YLG--;YL_ledG=0;YG_ledR=0;YG_ledY=1;YL_ledR=1;if(YLG==0XFF)//当X轴绿灯时间为零,X轴的绿灯灭,黄灯开始闪烁。
单片机课程设计报告1 交通灯

单片机课程设计报告1 交通灯1. 引言本文档是单片机课程设计的报告,主题为交通灯。
交通灯是城市交通管理的重要组成部分,合理的交通灯设置可以提高交通效率、保障交通安全。
本文将介绍交通灯的设计方案、实现过程以及遇到的问题及解决方法。
2. 设计方案2.1 总体设计思路本次交通灯设计采用的是基于单片机的控制系统。
通过在单片机上编程设计,控制交通灯的状态和时间,实现交通灯的自动切换,并保证交通流畅。
2.2 硬件设备本次设计所需的硬件设备包括:•单片机:采用STC89C52型单片机•交通灯信号灯模块:包括红灯、黄灯、绿灯三个灯泡及控制电路板•电源模块:用于提供电力供给2.3 软件设计本次设计的软件部分主要包括:•交通灯控制程序:通过编写程序控制单片机,实现交通灯的自动切换3. 实现过程3.1 准备工作在开始设计之前,我们首先进行了一些准备工作。
包括准备好所需的硬件设备,如单片机、交通灯信号灯模块和电源模块;同时也对单片机进行了初始化配置,以及编写好了交通灯控制程序的框架。
3.2 硬件连接我们将单片机与交通灯模块进行连接。
具体的连接方式如下:1.将单片机的IO口与交通灯模块的各个灯泡的控制引脚相连,以实现对灯泡亮灭的控制。
2.将电源模块与单片机进行连接,以提供电力供给。
3.3 软件设计与编程在硬件连接完成后,我们开始着手进行软件设计和编程。
主要的步骤包括:1.定义交通灯的状态:根据交通灯的信号变化规律定义交通灯状态,如红灯亮、黄灯亮、绿灯亮等。
2.编写控制程序的逻辑:根据交通灯的状态定义,编写控制程序的逻辑,实现不同状态之间的切换和持续时间的控制。
3.编程实现:根据以上设计,在单片机上编写程序,并通过烧录将程序烧录到单片机上。
3.4 测试与调试在程序编写完成后,我们进行了测试与调试。
通过在交通灯工作状态下的观察与测试,我们可以判断出程序是否符合设计要求,并进行必要的调试。
4. 遇到的问题与解决方法在设计与实现过程中,我们遇到了一些问题,具体包括:•问题1:单片机与交通灯模块的连接出现问题,导致交通灯无法正常工作。
单片机交通灯设计(课程设计)

1设计任务功能说明及总体方案介绍1.1 设计任务设计一个具有特定功能的十字路口交通灯。
该交通灯上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
按开始键则开始工作,按结束键则返回“P.”状态。
要求甲车道和乙车道两条交叉道路上的车辆交替运行,甲车道为主车道,每次通车时间为60秒,乙车道为次车道,每次通车时间为30秒,要求黄灯亮3秒,并且1秒闪烁一次。
有应急车辆出现时,红灯全亮,应急车辆通车时间10秒,同时禁止其他车辆通过。
1.2功能说明本次课程设计所做的交通灯所实现的功能有:1、在系统上电或按键复位后显示“P.”,进入进入准备工作状态。
2、按开始键开始工作,按结束键则返回“P.”状态。
3、甲车道和乙车道两条交叉道路上的车辆交替运行,且甲为主车道,乙为次车道;其中主车道通行时间为60s,次车道通行时间为30s;黄灯亮三秒,并闪烁1s。
4、出现紧急车辆时,要求红灯全亮,紧急车辆通车时间为10s,同时禁止其他车辆出行。
1.3总体方案介绍及工作原理本设计采用一主(甲)车道(东西方向),一次(乙)车道(南北方向)的路口,主车道的通行时间为60s(为次车道的2倍)。
在正常情况下,两车道的交通灯按表1.1进行转换,并以倒计数的方式将剩余时间显示在每个干道对应的两位LED 上;另发挥部分主要有:1. 当按下开始键后,系统才开始工作;2.当按结束键时,系统返回P.状态,结束键松开则恢复原来状态;3.当出现紧急情况时,路口的交通灯全为红灯,控制码为CF,时间为10s,紧急情况解除时,恢复到原来的状态。
表1.1 交通灯状态表2 硬件系统的设计2.1硬件系统各模块功能简要介绍2.1.1 时钟电路模块时钟电路由一个晶体振荡器12MHz和两个33pF的瓷片电容组成。
时钟电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。
单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地作。
单片机交通灯课程设计

单片机 交通灯课程设计一、课程目标知识目标:1. 理解单片机的基本原理,掌握交通灯控制器的设计方法;2. 学会使用编程软件进行单片机程序设计,实现交通灯控制功能;3. 了解交通灯系统的基本构成和运行原理,提高对电子工程实践的认识。
技能目标:1. 能够运用所学知识,独立完成单片机交通灯控制器的硬件搭建;2. 掌握基本的编程技巧,实现交通灯的定时切换和异常处理功能;3. 提高动手实践能力,培养团队协作和问题解决能力。
情感态度价值观目标:1. 培养学生对单片机及电子工程的兴趣,激发创新意识;2. 培养学生的责任心和敬业精神,使其在项目实践中体会工程实践的重要性;3. 增强学生的环保意识,理解交通灯系统在节能减排方面的作用。
课程性质:本课程为实践性较强的课程,结合单片机原理与应用,让学生在实际操作中掌握知识,提高技能。
学生特点:学生具备一定的电子基础和编程能力,对单片机有一定了解,但实践经验不足。
教学要求:注重理论与实践相结合,充分调动学生的积极性,培养其动手实践和团队协作能力。
通过课程学习,使学生能够独立完成单片机交通灯控制器的设计与实现。
1. 单片机基础理论:回顾单片机的组成、工作原理和编程基础,重点讲解I/O 口控制、定时器及中断系统等知识点。
教材章节:第二章 单片机原理与应用。
2. 交通灯控制器设计:介绍交通灯系统的基本构成、工作原理及设计要求,分析控制器硬件设计方法,包括电路图绘制、元器件选型等。
教材章节:第三章 交通信号灯控制系统设计。
3. 程序设计:结合单片机编程语言,讲解交通灯控制程序的编写方法,包括主程序、定时器中断服务程序等。
教材章节:第四章 单片机编程与应用。
4. 硬件搭建与调试:指导学生进行交通灯控制器硬件的搭建、程序烧录及系统调试,分析并解决实际问题。
教材章节:第五章 单片机系统调试与优化。
5. 项目实践:组织学生分组进行项目实践,要求每组完成一个具有定时切换和异常处理功能的单片机交通灯控制器设计。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、介绍交通灯
本设计是根据单片机原理就交通灯的系统作出的,由于车辆的增多,所以交通灯在现代道路交通中起着越来越重要的作用。
为了解决这些问题,我们更应该提高交通控制和管理水平,合理使用现有交通设施,充分发挥其能力,提高交通效率,促进和谐交通的建立。
1.1交通灯的重要作用
交通灯在城市交通中起着重要的作用,它与人们日常生活密切相关,是人们出行的安全保障。
如今随着人们生活水平的提高,对交通管制也提出了更高的要求,因此提供一个可靠、安全、便捷的多功能交通灯控制系统有着现实的必要性。
该设计在熟练掌握单片机原理及其应用技术的使用方法基础上,综合应用单片机原理、微机原理、微机接口技术、Proteus软件等课程方面的知识,设计一个采用AT89S51单片机控制的交通灯控制电路。
能方便的对交通灯进行控制,使交通更和谐。
1.2该交通灯系统的特点
本系统结构简单,操作方便;可实现手动控制,具有一定的智能性;对优化城市交通故障处理具有一定的意义。
本设计将各任务进行细分包装,使各任务保持相对独立;能有效改善程序结构,便于模块化处理,使程序的可读性、可维护性和可移植性都得到进一步的提高。
二、系统设计
根据设计功能及要求,我们可得系统的原理框图如图1。
图1系统原理图
三、硬件电路设计
1、复位电路
复位电路采用上电+按钮电平复位是上电复位与按钮复位的组合,当振荡频率是12MHz时,电容C取22UF3取1KΩ,R2取200Ω左右。
上电瞬间复位端(RST)的电位与VCC相同,随着充电电路电流的减少,RST的电位下降,
最后为0V,当按钮按下后,电源VCC通过电阻R,施加在单片机复位端RST
图2 复位电路
2、时钟电路
本系统采用内部时钟产生方式:在和两端跨接陶瓷谐振器,与内
部反相器构成稳定的自激振荡器采。
晶振采用12MHz的振荡频率和两个30Pf瓷片电容C1、C2,两个电阻对频率有微调作用,如图3。
图3 时钟电路
3、控制电路
本系统采用两个外部外部控制电路,即直流电路。
每个电路由一个电阻和开关组成,电路的一端接地,一端连接到AT89S51单片机上的P3.1和P3.2接口,当按下其中一个开关时,那么对应的接口的就变成低电平,断开开关接口又变成高电平,这样就可以有效的对端口的电平进行控制,继而对交通灯进行变灯控制,如图4所示。
4、交通灯接口电路
采用红黄绿三种颜色的发光二极管共12个4分为组代表路口的交通灯(电路图中用两组示意).其中每两组控制一个路口,具体时间如表1和指示灯电路图5。
表1各交通灯亮的情况
图5 交通灯接口电路
在图中可以看出上面三个指示灯表示南北方向的红绿黄灯,而下面的表示东西方向。
D1为南北方向的绿灯,D2为东西方向绿灯, D3为东西方向的红灯,D4为南北方向的红灯,D5为东西方向的黄灯, D6为南北方向的黄灯。
将六个指示灯与P1口相接(从P1口接收数据)。
5、AT89S51
AT89C51主要特点是:
1、4k Bytes Flash片内程序存储器;
2、128 bytes的随机存取数据存储器(RAM);
3、32个外部双向输入/输出(I/O)口;
4、5个中断优先级、2层中断嵌套中断;
5、6个中断源;
6、2个16位可编程定时器/计数器;
7、2个全双工串行通信口;
8、看门狗(WDT)电路;
9、片内振荡器和时钟电路;
10、与MCS-51兼容;
11、全静态工作:0Hz-33MHz;
12、三级程序存储器保密锁定;
13、可编程串行通道;
14、低功耗的闲置和掉电模式。
最突出优点是把快擦写存储器应用于单片机中,这使得系统在开发过程中修改十分容易,大大缩短了系统的开发周期。
AT89S51管脚图如图6
图6 AT89S51管脚图
6、单片机控制交通灯的系统总图
1、程序流程图
图8 程序流程图2、程序分析
S1 EQU P3.1
S2 EQU P3.2
SN_R BIT P1.0
SN_Y BIT P1.1
SN_G BIT P1.2
EW_R BIT P1.3
EW_Y BIT P1.4
EW_G BIT P1.5
ORG 0000H
LJMP MAIN
MAIN : MOV P3,#0FFH ;设P3口为输入CLR SN_R
CLR SN_Y
CLR SN_G
CLR EW_R
CLR EW_Y
CLR EW_G
LCALL DEL3S
SETB SN_R
SETB SN_Y
SETB SN_G
SETB EW_R
SETB EW_Y
SETB EW_G
SETB SN_R
CLR SN_G
CLR EW_R
SETB EW_G
MAIN2: JB S1,FF1 ;检查是否按过S1键
LCALL DEL10ms ;延时10 ms去键抖动
JB S1,FF1 ;如果又变为1,说明刚才是干扰信号
JNB F0,BACK
CLR F0
LCALL FF11 ;如果为0,说明确实按过S1键,则按照
第一种发光方式运行
FF1: JB S2,MAIN2 ;检查是否按过S2键LCALL DEL10ms ;延时10ms去键抖动
JB S2,MAIN2 ;如果又变为1,说明刚才是干扰信号
JB F0,BACK
SETB F0
LCALL FF22 ;如果为0,说明确实按过S2键,则按照第二
种发光方式运行
BACK: SJMP MAIN2
FF11: SETB SN_R ;第一种发光方式
SETB EW_G
CLR SN_Y
CLR EW_Y
LCALL DEL3S
SETB SN_Y
SETB EW_Y
CLR SN_G
CLR EW_R
RET
FF22: SETB SN_G ;第二种发光方式
SETB EW_R
CLR SN_Y
CLR EW_Y
LCALL DEL3S
SETB SN_Y
SETB EW_Y
CLR SN_R
CLR EW_G
RET
DEL10ms:MOV R0,#10
DL2: MOV R1,#250 ;1ms延时的预定值
DL1: NOP
NOP
DJNZ R1,DL1 ;延时循环
DJNZ R0,DL2
RET
DEL3S: MOV R4,#12
DLL3: MOV R3,#250
DLL2: MOV R2,#250 ;1ms延时的预定值
DLL1: NOP
NOP
DJNZ R2,DLL1 ;延时循环
DJNZ R3,DLL2
DJNZ R4,DLL3
RET
END ;结束
五、Proteus仿真过程显示
图9 检验二极管是否都能正常工作
图10 南北绿灯亮、东西红灯亮
图11 南北方向黄灯亮
图12 南北方向红灯亮、东西方向绿灯亮。