基于51单片机做简易的交通灯
基于51单片机控制交通灯

目录1 绪论 (1)1.1 课题研究目的 (1)1.2 研究现状 (2)1.3 本文的主要工作 (3)2 系统方案设计 (3)2.1 总体方案设计与分析 (3)2.2 主控制器方案 (4)2.3 显示方案 (5)3 系统电路设计 (5)3.1 主控制器电路 (5)3.1.1 单片机电路 (5)3.1.2 晶振电路 (7)3.1.3 复位电路 (7)3.2 显示电路 (8)3.3 按键电路 (8)3.4 交通灯电路 (9)4 系统硬件设计 (9)4.1 主程序软件设计 (9)4.2 子程序软件设计 (11)4.2.1 显示软件设计 (11)4.2.2 按键扫描软件设计 (13)5 系统测试 (13)5.1 系统调试 (13)5.2 故障检查 (16)6硬件组装与调试 (16)6.1 系统组装 (17)6.2 上电后调试 (18)总结 (19)参考文献 (20)致谢 ...................................................................................................................错误!未定义书签。
附录 (21)附录1:成品图 (21)附录2:原理图 (22)1 绪论1.1 课题研究目的19世纪的时候,英国就出现了世界上首个交通信号灯,因为他的能源来自于煤气的交通信号灯,这种方案在后期的设备运行中很容易产生爆炸,所以后来此种交通信号灯设备就没有在出现了。
到了20世纪的时候,美国的克利夫兰市又有了交通灯设备,然而此次的能源设计方案是电力信号灯。
1930年德国有人开发了选取自动化的设计方案去操作的交通灯,这种设计标志着交通自动操作的起步。
20世纪开始,发达国家第一次选取车辆感应方案处理信号,车辆传感器的主要特点为,此设计能够按照交通拥堵的具体情况去操作交通灯运行的时间参数,这样来解决交通十字路口的拥堵问题,使得车辆可以很快的通过路口,此方案被很多地区进行使用。
基于-51单片机的交通灯设计

4.1 基本原理
主体电路:交通灯自动控制模块。这部分电路主要由80C51单片机的I/O端口、定时计数器等组成。
本设计先是从普通三色灯的指示开始进行设计,用P1口作为输出。程序的初始化是东西南北方向的红灯全亮。然后南北方向红灯亮,东西方向绿灯亮,60秒后东西方向黄灯闪亮5秒后南北方向绿灯亮,东西方向红灯亮。重复执行。倒计时用到定时器T0,用P2口作为LED的显示。二位一体的LED重复执行60秒的倒计时。作为突发事件的处理,本设计主要用到外部中断EX0。用一模拟开关作为中断信号。实际中可以接其它可以产生中断信号的信号源。
1.单片机最小系统
图3.1 51单片机最小系统版
2. 数码管显示电路:由8位共阴LED数码管即驱动芯片74HC573组成,单片机控制两片锁存器是使能端,通过不停打开关闭使能端达到单片机一个8位I/O口控制8位数码管显示的效果。数码管显示电路如图3.2所示。
图3.2数码管显示电路
3.12位LED灯:由12个LED小灯排列起来,加上限流电阻就组成了12位交通灯。12位流水灯的阴极接在单片机的I/O端口,以灌电流输进单片机从而驱动LED。交通LED灯的原理图如图3.3所示。
师大学
电气工程及自动化
实习报告
姓 名:
班 级:
学 号:
实习科目:单片机实训
指导教师:
实习时间:
智能交通信号灯
摘 要
本设计是在熟练掌握单片机及其仿真系统使用方法基础上,综合应用单片机原理、微机原理等课程方面的知识,设计一个采用STC89C52单片机控制的交通灯控制电路。该设计结合实际情况给出了一种简单低成本城市交通灯控制系统的硬件及软件设计方案、各个路口交通灯的状态循环显示,并对程序流程图进行详细讲解分析。交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。根据给出的要求设计交通灯东西、南北两干道交于一个十字路口各干道有一组红、黄、绿三色的指示灯指挥车辆和行人安全通行。红灯亮禁止通行绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换且黄灯亮的时间为东西、南北两干道的公共停车时间。
基于51单片机设计的交通灯报告书

报告书干路—支路口交通信号灯控制器项目目的:通过对模拟交通灯控制系统的操作,让我们掌握定时器和中断系统的综合应用,进一步熟练51单片机的应用.项目要求:本项目主要通过感应开关控制交通灯的切换显示,实现主干路与支路车辆的分流。
(1)在正常情况下,主干道交通灯绿灯一直亮着。
(2)当支路检测到有车辆,60秒后,主干道禁止通行,支路放行。
(3)支路放行30 秒后,恢复正常情况。
项目电路如图:按键S1、S2模拟支路的车辆检测,当S1、S2为高电平(不按下按键)时,表示正常情况。
当S1或S2为低电平(按下按键)时,表示支路上有车辆,将S1、S2接到P3.0、P3.1把信号送入到单片机。
程序设计:源程序代码:#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar time,second,n,m;sbit k1=P3^0;sbit k2=P3^1;Uchar code Tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x 80,0x90};//数码管显示0~9的段码表void delay(uint t){uchar i;while(t--)for(i=0;i<255;i++);}void shumaguan(uchar s){P2=0xfd;P0=Tab[s/10];delay(1);P2=0xfe;P0=Tab[s%10];delay(1);}void main(){IE=0x82;TMOD=0x01;TH0=(65536-50000)/16;TL0=(65536-50000)%16;while(1){ uchar j;P1=0xde;if(k1==0||k2==0){delay(500);if(k1==0||k2==0){time=40;TR0=1;for(second=60;second>0;)shumaguan(second);TR0=0;P2=0x00;P1=0xf3;delay(3000);for(j=0;j<2;j++){P1=0xfb;delay(200);P1=0xf3;delay(200);}P1=0xeb;delay(500);}}}}void ld() interrupt 1{TR0=0;time--;if(time==0){time=40;second--;if(second==5)P1=0xdf;if(second==4)P1=0xde;if(second==3)P1=0xdf;if(second==2)P1=0xdd;if(second==1)P1=0xdd;}TH0=(65536-50000)/16;TL0=(65536-50000)%16;TR0=1;}项目小结:本项目程序主要包括四部分:主函数、延时函数、数码管显示函数、中断函数。
基于51单片机的智能交通灯系统设计说明

十字路口交通灯控制系统的设计1.设计思路近年来,随着科技的飞速发展,电子器件也随之广泛应用,其中单片机也不断深入人民的生活当中。
本模拟交通灯系统利用单片机AT89C51作为核心元件,实现了通过信号灯对路面状况的智能控制。
从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。
系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。
本模拟系统由单片机硬/软件系统,两位8段数码管和LED灯显示系统。
和复位电路控制电路等组成,较好的模拟了交通路面的控制。
1.1 电源提供方案采用单片机控制模块提供电源。
1.2显示界面方案采用数码管显示。
这种方案只显示有限的符号和数码字符,简单,方便。
1.3 输入方案:直接在I/O口线上接上按键开关。
由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择该方案。
2 单片机交通控制系统总体设计2.1单片机交通控制系统的通行方案设计设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。
一共可以有四个状态。
通过具体的路口交通灯状态的分析我们可以把这四个状态归纳如下:(1)东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时80秒。
此状态下,东西向禁止通行,南北向允许通行。
(2)东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时3秒。
此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。
(3)南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时60秒。
此状态下,东西向允许通行,南北向禁止通行。
(4)南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时3秒。
此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。
用图表表示灯状态和行止状态的关系如下:表1交通状态及红绿灯状态灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。
基于51单片机的交通灯设计

课程设计报告课程名称:单片机原理及应用课程设计系部:电气与信息工程学院专业班级:学生姓名:指导教师:完成时刻:报告成绩:目录No table of contents entries found.交通灯控制系统设计一、设计题目交通灯控制系统设计二、设计要求(1)设计一个十字路口的交通灯控制电路,要求当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。
时刻为60秒。
(2)黄灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换。
(3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。
时刻为80秒。
东西方向车流大通行时刻长。
(4)东西、南北方向车道除有红、绿、黄三色指示灯外,每一种灯亮的显示时刻都用显示器进行显示,采用计时的方式设计。
三、设计作用与目的最近几年来随着科技快速的进展,单片机的应用正在不断地走向深切,同时带动传统检测日新月异更新。
在实验检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来利用,针对具体应用对象的特点,配以其他器件来家以完善,伴随人口的日趋增加,那么十字路口车辆穿梭,如何才能让交通井然有序呢?靠的就是交通信号的自动指挥系统。
信号灯的出现,使交通得以有效的管制,对于交通流量、提高道路通行能力,减少交通事故有明显的效果。
绿灯是通行信号,面对绿灯信号的车辆能够直行,左拐弯和右拐弯,除非另一种禁止转向。
左右转弯车辆都必需让正在路口内直行的车辆和过人行横道行人优先通行。
红灯是禁止信号面对红灯的车辆必需停车。
黄灯是警告信号,面对黄灯信号的车辆不呢么好越过安全停车线,可是车辆十分接近停车线而不能安全停车时能够进入交叉路口。
本系统采用MSC-51系列单片机来设计交通灯控制器,实现各个方向车辆、行人通行功能,另外还设计了倒计时显示。
同时还具有南北、东西方向强制通行的功能。
城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的运算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部份。
基于51单片机的交通信号灯模拟控制系统

基于51单片机的交通信号灯模拟控制系统一、实验目的和要求1.掌握单片机基本资源使用。
2.掌握单片机电路原理图绘制和仿真。
3.掌握单片机C语言软件开发以及联合仿真。
二、实验内容和原理实验内容:1.根据题目绘制单片机电路原理图。
2.绘制程序流程图并编写C语言程序3.在仿真程序中进行联合仿真,最后提交实验报告三、主要仪器设备keilC,proteus。
四、操作方法与实验步骤4.1 题目要求用单片机设计一个十字路口交通灯模拟控制系统,要求东西、南北两个方向都通行20秒,警告3秒,禁止20秒,同时要考虑到东西、南北两个方向出现异常情况,出现异常情况器该方向通行60秒。
4.2 系统设计思路南北的绿红黄发光二极管与单片机AT89C51单片机的P1.0,P1.1,P1.2相连。
东西的绿红黄发光二极管与单片机AT89C51单片机的P1.4,P1.5,P1.6相连。
改变单片机P1口编码控制交通灯。
控制过程中会出现两种异常情况用外中断0和外中断1处理。
时间单位采用500ms信号,由定时/计数器0定时50ms,循环10次产生,定时/计数器0采用查询方式,主程序中设定定时/计数器0的工作方式:方式1。
4.2 电路图绘制(包含详细的参数选定文字和图像叙述)C1=1nF,C2=1nF,C3=1nF,R1=300,R2=300,R3=300,R4=300,R5=300,R6=300,R7=300,R8=300,R9=300,R10=300,R11=300,R12=300,R13=3004.3 C程序编制(包含详细的文字和程序流程图)4.3 仿真分析(包含文字和图像叙述)东西绿灯,南北红灯东西黄灯,南北红灯南北绿灯,东西红灯南北黄灯,东西红灯东西发生异常时,东西通行,南北禁止,东西方向绿灯闪,南北方向红灯闪南北发生异常时,南北通行,东西禁止,南北方向绿灯闪,东西方向红灯闪五、讨论和心得(不少于100字)通过这次对交通灯信号的模拟,了解了交通灯4种正常状态,2种异常状态,它们分别是:状态1,东西方向绿灯,南北方向红灯20秒。
基于51单片机的交通灯设计

基于51单片机的交通灯设计交通信号灯是指示人和交通工具在道路交通中行进方向或行为的一种交通设施。
在设计交通信号灯时,应考虑交通流量、车辆速度、交叉口结构等因素,以确保交通的顺畅和安全。
本文将基于51单片机设计一种交通信号灯系统,并详细介绍其原理和实现方法。
交通信号灯系统的设计目的是通过控制红、黄、绿三种不同颜色的灯,指示车辆和行人在交通路口安全行驶。
在单片机设计中,我们将使用三个LED灯分别代表红、黄、绿三种状态。
通过控制LED的亮灭,来实现交通信号灯的变换。
首先,我们需要选择适当的硬件设备进行交通信号灯的设计。
在51单片机设计中,可以选择STC89C51或者AT89C51等型号的单片机。
此外,还需要准备三个LED灯、电阻、电容、按键等器件。
接下来,我们将进行电路设计。
在设计电路时,首先将三个LED灯连接到单片机的三个IO口上,每个IO口通过一个电阻与正极连接,负极与GND连接。
此外,在单片机的一个IO口上连接一个按键,通过按下按键触发程序的执行。
在编写程序之前,首先需要确立交通信号灯的运行逻辑。
一般而言,交通信号灯的运行逻辑如下:1.全红状态:所有车辆和行人均停止,任何方向都不可行驶。
2.绿灯状态:一些方向的车辆和行人可以行驶,其他方向均不可行驶。
3.黄灯状态:信号灯将要变成红灯或绿灯,此时车辆和行人应注意刹车或等待。
接下来,我们将编写程序并烧录到单片机中。
在程序中,需要使用到定时器和中断来进行交通信号灯的控制。
具体步骤如下:1.在程序中定义三个LED灯所对应的IO口。
2.初始化定时器,并设置定时时间,用于控制信号灯的变化。
3.设置中断,用于按键的检测和处理。
4.在主循环中,不断检测按键状态,当按键按下时,切换信号灯的状态。
5.根据信号灯的状态,控制LED灯的亮灭。
在程序设计中,应充分考虑各种异常情况和执行顺序,以保证交通信号灯的正常运行。
此外,还可以增加一些辅助功能,如倒计时显示等,以提高交通信号灯的可视性和安全性。
基于51单片机的交通灯控制系统设计

一、摘要:随着科技的飞速发展,越来越多的控制功能强大的芯片出现在我们生活中,但8051系列单片机,因为其的廉价几成本,在我们生活中依然处于十分重要的地位。
在实时检测和自动控制的单片机应用系统中,单片机是作为一个核心部件来使用,但是仅单片机方面知识是不够的,还需要根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
作为交通控制的重要组成部份单片机。
因此,本人选择制作交通灯作为课题加以设计并实现。
交通管制应当以人性化、智能化为目的,做出相应的改善。
以此为出发点,本系统采用的单片机控制的交通信号灯。
系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广阔的应用前景。
关键词:交通灯,51单片机,数码管二、实习目的和意义1.学习51单片机的最小系统及硬件接口设计与应用2.熟练掌握电路原理图绘制软件DPX的使用。
3.熟练单片机的程序设计与调试。
4. 自主设计出具有实际意义的能用于生活的电路系统。
5. 本次课程设计对以后的毕业设计甚至工作打下了动手自己设计的基础。
三、实习要求1. 完成以8051系列单片机为核心处理器的模拟十字路口交通灯控制的硬件设计(在altium designer下画出硬件原理图)。
布线,印制电路板,并焊接原件搭载硬件电路,做出实物。
2. 完成交通灯控制系统的软件编程。
3. 软硬件综合调试,模拟实现对交通灯控制系统的控制。
4. 撰写实验报告:报告中给出硬件方案、软件流程图、软件关键代码四、实习内容1.设计题目:基于51单片机交通十字路口信号灯设计2.实现功能:具有红、绿、黄三种颜色彩灯,并有一个数码管进行倒计时显示倒计时时间为三十秒。
还应具有按键控制特殊情况下十字路口不需要红绿灯的显示(车流量很少的地段深夜可以不设红绿灯)。
五、系统实现1.电路设计:51单片机介绍:本实验使用的51单片机为STC89C52STC89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录摘要 (1)一、设计目的 (2)二、设计任务和要求 (2)三、设计原理分析 (2)四、硬件模块及功能 (3)1、个模块功能 (3)2、材料清单 (4)3、硬件图 (5)五、软件模块及功能 (6)1、个模块功能原理 (6)2、程序清单 (6)3、程序流程图 (9)六、调试运行 (10)1、程序编译链接 (10)2、观察模拟仿真 (11)七、心得体会 (12)参考文献 (12)致谢 (13)摘要:单片微型计算机(单片机)自问世以来,因其小巧灵活、成本低、控制能力强、易于产品化等优势,在社会各领域中得到广泛的应用。
根据89C52单片机的特点及交通灯在实际控制中的特点,本文提出一种利用单片机自动控制交通灯及时间倒计时显示的方法,将整个系统缩小在一块小小的单片机上,大大提高了产品的经济性和轻便性。
设计过程包括硬件电路设计和程序设计两大步骤。
硬件电路其结构比较简单,主要包括核心器件单片机、12只二极管组成的模拟交通灯、复位电路、振荡电路、显示数码管模块。
单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。
机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。
本文就用Keil编程,相比硬件设计程序设计较为复杂,必需同时考虑灯控制、时间显示、紧急开关等问题,并且具有一定的C语言基础和一定的思维能力及逻辑能力。
本文对十字路口状态预设为两种,一种是正常状态,即倒计时60秒,交通灯循环亮,另一种是故障或紧急状态,即无论交通灯处于何种状态只要按下紧急开关,就立即打开相应的绿灯,另一方向则亮红灯,当再按起开关则反向,并从60秒倒计时,恢复正常状态,分别用黄、红、绿色灯的不同组合来表示。
本系统采用单片机AT89C52为核心器件来设计交通灯控制器,模拟现实中的交通灯控制方法,具有较强的实用性。
关键词:89C51单片机;交通灯;自动控制;时间显示器;一、设计目的提高我们的动脑和动手的能力。
2、通过交通信号灯控制系统的设计,掌握定时/计数器、中断的使用方法,和简单程序的编写,最终提高我们的逻辑抽象能力。
二、设计任务和要求任务:设计一个能够控制十二盏交通信号灯及显示时间60秒倒计时的模拟系统要求:利用单片机的定时器定时和中断功能,令十字路口的红绿灯交替点亮和熄灭,并用共阳极数码管显示倒计时间。
三、设计原理分析1、根据实际交通灯的变化情况和规律。
假设一个十字路口如上图所以,为东南西北走向。
初始状态1东西绿灯通车,南北红灯亮。
过一段时间后,转状态2,东西绿灯灭,黄灯闪几下,南北还是红灯。
再转状态3,南北绿灯通车,东西红灯亮。
过一段时间后转状态4,南北绿灯灭,闪几个黄灯,东西还是为红灯亮,一段时间后,又循环至状态1。
2、对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,所以只要用两组就行了,因此,采用单片机内部3、通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。
每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。
4、通过延时时间送显,可以在原有的交通信号灯系统的基础上,增添其倒计时间的显示功能,实现其功能的扩展。
四、硬件模块及功能主要用到的硬件:P1口、P3口、P2口、LED数码管、发光二级管、定时器T0、外部中断0和外部中断1、复位开关1、个模块功能:发光二极管电路:根据发光二极管的特性,将二极管的正极与电源相接(+5V),其中与一个500欧姆的电阻串联。
而发光二极管的负极与单片机的P1的八个端口相接,这样只要P1口的某个端口出现低电平,即二极管导通发光。
复位电路:本电路采用的是按键电平复位,按复位键后复位端通过电阻与VCC电源接通,此时复位端由低电平变为了高电平,从而达到复位的效果。
复位电路关系到一个系统能否可靠地工作,一般由电阻、电容和门电路组成。
晶振电路:80C51系列单片机内部有一个高增益反相放大器,用于构成振荡器,但要形成时钟,外部需附加电路,引脚XTAL1是为反相放大器和时钟发生电路的输入端,XATL2为反相放大器的输入端。
本电路是由一个12M晶振和两个22pF的无极性电容组成。
数码管驱动显示电路:由于数码管是四位一体的,所以必须采用动态扫描方式,其基本原理是利用人眼的“视觉暂留”效应。
接口电路把所有显示器的8个笔端a—b分别并联在一起,本电路时接单片机的P2口。
每一个显示器的公共端COM各自独立地受I/O线控制,本电路采用的是单片机P0.0、P0.1、P0.2、P0.3。
CPU向字段输出口送出字型码时,所有的显示器都能接收到,再利用循环扫描的方式分时选通个显示器的公共极,是各个显示器轮流导通。
当扫描的速度达到一定程度时,人眼就分辨不出来了,认为各个显示器同时发光了。
紧急开关电路:紧急开关电路很简单,只需要两个开关。
为了便于中断想象的产生,开关一端接于P3.2P3.3口,因为其具有中断的功能,另一端接地就行。
当按键按下时相应的端口就会接受到低电平从而程序产生中断。
2、材料清单:3、硬件图五、软件模块及功能1、各模块功能及原理数码管显示:程序进入主程序后在显示程序中一直循环,通过定时器中断改变aa、bb的值,使得数码管显示不同的数字。
显示程序利用动态扫描原理:首先将共阳极编码送入P2口,同时打开P0口的第一个数码管关闭其他数码管,然后将下一个编码送入P2口,同时打开P0口的第二个数码管关闭其他数码管,以此类推。
让人的视觉产生误差,这样就看到了四位数码管同时显示并且不断变化。
定时器中断:本程序采用定时/计数器0,定时时间为50ms,让它50ms产生一次中断,进入中断后把(6000-5000)/256赋给高八位,把(6000-5000)%256赋给底八位,然后shu加1,判断shu的情况:如果shu等于1140即从开始到57s就将0XF5赋给P1口(南北点亮黄灯,东西依然红灯)。
如果shu等于1200即过了60s,将0xDE赋给P1口(南北亮红灯东西绿灯)。
如果shu等于2340即过了60+57s,就将0xEE赋给P1口(东西亮黄灯,南北红灯)。
如果shu等于2400即过了两分钟,就将0xF3赋给P1口(点亮南北绿灯,东西红灯),同时将shu、xianshi重新赋值并且进入下一阶段定时中断。
外部中断:本程序采用外部中断0和外部中断1,即P3.2和P3.3口,由于定时器中断0比外部中断2优先级高,所以初始化程序中将PX1=1设定外部中断1为高优先级,这样就可以达到紧急开关的作用,当按下紧急开关1时,即P3.2口由高电平变为低电平,程序立即进入中断程序,将东西方向变为绿灯,南北方向红灯,同时在中断程序中判断P3.2口是否有低电平信号,如果有(将开关按起)即将东西方向点亮绿灯南北方向红灯并且重新给shu、xianshi、aa、bb赋值,使得数码管从60秒重新倒计时。
紧急开关2与其相似。
2、程序清单:#include <reg52.h>#define uint unsigned int#define uchar unsigned charsbit P32=P3^2;sbit P33=P3^3;uint shu;uchar xianshi,xianshi2;uchar aa,bb;//带小数点的共阳极数码管的段编码0--9uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};void init()//初始化函数{shu=0;xianshi=60;bb=0;P0=0xff;P1=0;TMOD=0x01; //用定时器0方式1EA=1; //打开中断ET0=1; //打开定时器0中断TL0=15536/256;TH0=15536%256;EX0=1;//外部中断0EX1=1;//外部中断1IT0=0;//外部中断0电平触发IT1=0;//外部中断1电平触发PX1=1;//设定外部中断1为高优先级}void Delay(unsigned int i)//延时程序{unsigned int j;for(;i>0;i--)for(j=0;j<125;j++){;}}void display(uchar a,uchar b,uchar c,uchar d) {P2=table[a]; //北十位P0=0xfe;Delay(2);P2=table[b]; //北个位P0=0xfd;Delay(2);P2=table[c]; //西十位P0=0xfb;Delay(2);P2=table[d]; //西个位P0=0xf7;Delay(2);}void main(){init();TR0=1;//启动定时器0P1=0xf3;//点亮南北绿灯,东西红灯while(1){display(aa,bb,aa,bb);}}void timer0() interrupt 1 using 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;shu++;if(shu%20==0){xianshi--;xianshi2--;aa=xianshi/10;bb=xianshi%10;}if(shu==1140){P1=0xf5;//南北黄亮,东西依然红灯}if(shu==1200){P1=0xDE;//南北亮红灯,东西绿灯xianshi=60;}if(shu==2340){P1=0xee;//东西亮黄灯,南北红灯}if(shu==2400)//再过3s返回{shu=0;xianshi=60;P1=0xf3;//点亮南北绿灯,东西红灯}}void inter0() interrupt 0 using 2 //南北方向绿灯{P0=0xff;P1=0xf3;//南北绿东西红while(P32==0){};xianshi=60;shu=1200;aa=6;bb=0;}void inter1() interrupt 2 using 3 //东西方向绿灯{P0=0xff;P1=0xDE;// 东西绿南北红while(P33==0){};P1=0xf3;xianshi=60;shu=0;aa=6;bb=0;}3、程序流程图六、调试运行1、程序编译链接程序完成后,确保无误,然后进行编译链接。