at89c51单片机-交通灯控制系统(含源码及仿真图)大全
- 格式:doc
- 大小:1.31 MB
- 文档页数:40
用单片机控制交通灯传统的交通灯控制电路一般由数字电路构成,电路复杂、体积大、成本高。
采用单片机控制交通灯不但可以解决上述问题,而且还具有时间显示功能,非常方便。
下面介绍一种用单片机控制交通灯的方法。
一、硬件硬件电路如附图。
AT89C2051的P1.7~P1.5和P1.3~P1.1直接驱动红、黄、绿灯,利用单片机的串口和二片74LS164串/并转换移位寄存器实现时间显示,七段数码管为共阴管,硬件电路极为简单。
二、软件交通灯有红、黄、绿三种。
红灯亮,停止通行;绿灯亮,允许通行;黄灯亮,作过渡。
红灯亮60秒,绿灯亮55秒,黄灯亮5秒。
每组灯的亮暗状态以2分钟为周期循环,故程序采用主、子程序方式,循环结构。
另外,为了简化电路,红、黄、绿灯采用低电平点亮。
源程序清单如下:ORG0000HSTART:MOVDRTR,#TABMOVSCON,#00HMOVP1,#6CH;点亮红、绿灯MOVR0,#0;R0清零LEFT:INCR0CJNER0,#55,LP0;R0<55,转LP0MOVP1,#6AH;R0=55,点亮红、黄灯LJMPLP1LP0:CJNER0,#60,LP1;R0<60,转LP1MOVP1,#0C6H;R0=60,点亮绿、红灯LJMPRIGHTLP1:LCALLDBDBLCALLDISPLJMPLEFT;20H为1,转LEFTRIGHT:DECR0CJNER0,#5,LP2;R0>0,转LP2MOVP1,#0A6H;R0=5,点亮黄、红灯LJMPLP3LP2:CJNER0,#0,LP3MOVP1,#6CH;R0=0,点亮红、绿灯LJMPLEFTLP3:LCALLDBDBLCALLDISPLJMPRIGHTDBDB:MOVA,R0MOVB,#10DIVABMOVR1,AMOVR2,BRETDISP:MOVA,R2MOVCA,@A+DPTRMOVSBUF,AJNBTI,$;查TI位CLRTIMOVA,R1MOVCA,@A+DPTRMOVSBUF,AJNBT1,$CLRTILCALLDEALYRETDELAY:MOVR3,#09HK1:MOVR4,#100K2:MOVR5,#250K3:DJNZR5,K3DJNZR4,K2KJNZR3,K1RETTAB:DB3FH,06H,5BHDB4FH,66HDB6DH,7DH,07HDB7FH,6FH三.实验电路及连线四.实验说明1.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。
模拟交通灯设计报告题目交通信号灯控制系统团队研发区第二组完成时间2011-11-31贵州民族学院开放实验室`目录一、项目名称 (1)二、选题背景 (1)2.1 课题背景 (1)2.2 交通灯的历史 (1)三、单片机简介 (2)3.1 单片机的发展历程 (2)3.2 单片机的特点: (3)3.3 AT89C52单片机简介 (4)四、设计基本要求和步骤 (5)4.1 基本要求 (5)4.2 设计步骤 (6)五、硬件和软件设计 (6)5.1 硬件电路图 (6)5.2 程序流程图 (8)主程序 (8)运行过程 (9)LED显示程序 (10)T0中断 (11)INT0中断 (11)5.3 P0、P1口显示状态编码表 (12)5.4 程序源代码 (12)5.5 程序运行效果图 (21)六、心得体会 (22)七、参考文献................................................................................. 错误!未定义书签。
模拟交通灯设计报告一、项目名称十字路口交通信号灯控制系统二、选题背景2.1 课题背景由于我国经济的快速发展从而导致了汽车数量的猛增,大中型城市的城市交通,正面临着严峻的考验,从而导致交通问题日益严重,其主要表现如下:交通事故频发,对人类生命安全造成极大威胁;交通拥堵严重,导致出行时间增加,能源消耗加大;空气污染和噪声污染程度日益加深等。
日常的交通堵塞成为人们司空见惯而又不得不忍受的问题,在这种背景下,结合我国城市道路交通的实际情况,开发出真正适合我们自身特点的智能信号灯控制系统已经成为当前的主要任务。
随着电子技术的发展,利用单片机技术对交通灯进行智能化管理,已成为目前广泛采用的方法。
2.2 交通灯的历史1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德·哈特设计、制造的灯柱高7米,身上挂着一盏红、绿两色的提灯--煤气交通信号灯,这是城市街道的第一盏信号灯。
摘要随着中国城镇化速度的较快,交通事故也日趋发生,所以合理的交通控制方法能有效的缓解交通拥挤、减少尾气排放及能源消耗、缩短出行延时,改善我国独有的交通问题。
而平面交叉口是城市交通的关键,它是整个城市道路的瓶颈地带,对其进行交通信号控制方法的研究具有重大意义。
所以交通信号灯是维护城市交通的主要设施,而我们本次复杂的十字路口交通灯控制系统设计主要是利用AT89C51制作并仿真.并且在单片机的选择上,考虑到电路的简单和成本的削减,我们选择性价比最好的AT89C51,而且能够使程序简单。
对紧急车辆通过的处理,采用中断的方法,由中断处理程序处理。
通过单片机控制交通灯不仅能提高我们理论联系实际的能力,而且能够熟练掌握汇编语言的编程方法,掌握定时/计数器的使用方法和简单程序的编写,最终提高逻辑抽象能力和动手能力。
关键字:AT89C51 中断交通信号控制目录1 概述 (1)2 原理及说明 (2)3 硬件电路设计 (3)3.1 单片机复位电路 (3)3.2 交通LED灯外围驱动电路 (3)3.3 单片机主电路 (4)3.4 整体电路图设计 (5)4 软件设计 (6)4.1 系统程序流程图设计 (6)4.2 系统程序设计 (6)总结 (10)感谢 (11)参考文献 (12)1 概述目前在世界范围内,一个以微电子技术、计算机和通信技术为先导的,以信息技术和信息产业为中心的信息革命方兴未艾。
为使我国尽快实现经济信息化,赶上发达国家水平,必须加速发展我国的信息技术和信息产业。
而计算机技术怎样与实际应用更有效的结合并有效的发挥其作用是科学界最热门的话题,也是当今计算机应用中空前活跃的领域。
本文主要从单片机的应用上来实现十字路口交通灯的管理,用以控制过往车辆的正常运作。
本设计从定时控制控制着手,解决交叉口信号控制中存在的问题:定时控制信号周期固定,不能根据实际的交通流状况随时调整信号控制参数,因此造成很多不必要的时间等待和资源浪费;对左转车辆较少的单交叉口一般采用有固定左转相位的定时控制方法,此信号控制中的左转车辆通行对直行车辆影响很大;行人过街信号与上游交叉口的不协调导致车辆通过上游交叉口后遇到行人过街而再次停车。
Proteus仿真原理图:Keil C源程序:#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit RED_DONGXI = P1^0;//南北方向红灯亮sbit YELLOW_DONGXI = P1^1;//南北方向黄灯亮sbit RED_NANBEI = P1^3;//东西方向红灯亮sbit GREEN_DONGXI = P1^2;//南北方向绿灯亮sbit YELLOW_NANBEI = P1^4;//东西方向黄灯亮sbit GREEN_NANBEI = P1^5;//东西方向绿灯亮sbit DXweixuan1 = P1^6;//南北方向数码管位选1sbit DXweixuan2 = P1^7;//南北方向数码管位选2sbit NBweixuan1 = P3^0;//东西方向数码管位选1sbit NBweixuan2 = P3^1;//东西方向数码管位选2sbit L1=P3^5;sbit L2=P3^6;sbit L3=P3^7;uint aa, bai,shi,ge,bb;uint shi1,ge1,shi2,ge2;uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uint code table1[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};void delay(uint z);void init(uint a);void display(uint shi1,uint ge1,uint shi2,uint ge2);void xtimer0();void init1();void init2();void init3();void init4();void init5();void xint1();void xint0();void LED_ON();void LED_OFF();void main(){P0=0xFF;P1=0xFF;P2=0x00;P3=0xFF;EA=1;EX0=1;IT0=0;init1();while(1){init2();//第2个状态init3(); //第3个状态init4(); //第4个状态init5();//第5个状态}}void init1()//第一个状态:东西、南北方向均亮红灯5S {uint temp;temp=5;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_DONGXI=0; //第一个状态东西、南北均亮红灯5SRED_NANBEI=0;GREEN_DONGXI=1;GREEN_NANBEI=1;YELLOW_DONGXI=1;YELLOW_NANBEI=1;if(aa==20)//定时20*50MS=1S{aa=0;temp--;}shi1=shi2=temp/10;ge1=ge2=temp%10;if(temp==0){temp=5;break;}display(ge1,shi1,ge2,shi2);}}void init2()//第二个状态:东西亮红灯30S~5S、南北亮绿灯25~0S;{uint temp;temp=26;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_DONGXI=1;RED_NANBEI=0;GREEN_DONGXI=0;GREEN_NANBEI=1;YELLOW_DONGXI=1;//第二个状态:东西亮绿灯25S、南北亮红灯YELLOW_NANBEI=1;if(aa==20)//定时20*50MS=1S{aa=0;temp--;shi1=(temp+5)/10;ge1=(temp+5)%10;shi2=temp/10;ge2=temp%10;if(temp==0){temp=26;break;}}display(ge1,shi1,ge2,shi2);}}void init3() //第三个状态:东西绿灯变为黄灯闪5次、南北亮红灯5S {uint temp;temp=6;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_NANBEI=0;GREEN_DONGXI=1;if(aa==20)//定时20*50MS=1S{aa=0;temp--;YELLOW_DONGXI=~YELLOW_DONGXI;shi1=temp/10;shi2=shi1;ge1=temp%10;ge2=ge1;}if(temp==0){temp=6;break;}display(ge1,shi1,ge2,shi2);}}void init4()//第四个状态:东西亮绿灯25~0S,南北方向亮红灯30~5S;{uint temp;temp=26;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_DONGXI=0;RED_NANBEI=1;YELLOW_DONGXI=1;//第一个状态东西、南北均亮红灯5SGREEN_NANBEI=0;if(aa==20){aa=0;temp--;shi1=temp/10;shi2=(temp+5)/10;ge1=temp%10;ge2=(temp+5)%10;if(temp==0){temp=26;break;}}display(ge1,shi1,ge2,shi2);}}void init5()//第五个状态:东西亮红灯、南北绿灯闪5次转亮黄灯5S {uint temp;temp=6;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_NANBEI=1;RED_DONGXI=0;GREEN_DONGXI=1;GREEN_NANBEI=1;if(aa==20){aa=0;temp--;YELLOW_NANBEI=~YELLOW_NANBEI;shi1=temp/10;shi2=shi2;ge1=temp%10;ge2=ge1;if(temp==0){temp=6;break;}}display(ge1,shi1,ge2,shi2);}}void display(uint shi1,uint ge1,uint shi2,uint ge2) {DXweixuan1=0;DXweixuan2=1;NBweixuan1=1;NBweixuan2=1;P0=table[ge1];delay(5);DXweixuan1=1;DXweixuan2=0;NBweixuan1=1;NBweixuan2=1;P0=table[shi1];delay(5);DXweixuan1=1;DXweixuan2=1;NBweixuan1=0;NBweixuan2=1;P0=table[ge2];delay(5);DXweixuan1=1;DXweixuan2=1;NBweixuan1=1;NBweixuan2=0;P0=table[shi2];delay(5);}void xint0() interrupt 0 {RED_NANBEI=0;RED_DONGXI=0;GREEN_NANBEI=1;GREEN_DONGXI=1;YELLOW_NANBEI=1;YELLOW_DONGXI=1;P0=0x00;NBweixuan1=0;NBweixuan2=0;DXweixuan1=0;DXweixuan2=0;delay(2);return ;}void xint1() interrupt 2 {RED_NANBEI=1;RED_DONGXI=1;GREEN_NANBEI=0;GREEN_DONGXI=0;YELLOW_NANBEI=1;YELLOW_DONGXI=1;P0=0x00;NBweixuan1=0;NBweixuan2=0;DXweixuan1=0;DXweixuan2=0;delay(2);return ;}void xtimer0() interrupt 1 {TH0=(65535-50000)/256;TL0=(65535-50000)%256;aa++;}void delay(uint z){uint x,y;for(x=0;x<z;x++)for(y=0;y<110;y++); }。
设计任务书设计要求和技术指标1、技术指标:设计一个十字路口的交通灯控制电路,每条道路上各配有一组红、黄、绿交通信号灯,其中红灯亮,表示该道路禁止通行;黄灯亮表示该道路上未过停车线的车辆禁止通行,已过停车线的车辆继续通行;绿灯表示该道路允许通行。
该电路自动控制十字路口两组红、黄、绿交通灯的状态转换,实现十字路口自动化。
2、设计要求(1)要求甲车道和乙车道上的车辆交替运行,每秒通行时间为25秒种;(2)要求黄灯先亮5秒种,才能变换车道;(3)黄灯亮时要求每秒闪亮一次;(4)要求绘出原理图,并用Protel画出印制板图;(5)根据设计要求和技术指标设计好电路,选好元件及参数;(6)拟定测试方案和设计步骤;(7)写出设计性报告。
录` 目一、项目名称................................................................................. 错误!未定义书签。
二、选题背景 (2)2.1 课题背景 (2)2.2 交通灯的历史 (2)三、单片机简介 (3)3.1 单片机的发展历程 (3)3.2 单片机的特点: (4)3.3 AT89C51单片机简介 (4)四、设计基本要求和步骤 (6)4.1 基本要求 (6)4.2 设计步骤 (7)五、硬件和软件设计 (7)5.1 硬件电路图 (7)5.2 程序流程图 (9)主程序 (9)运行过程 (10)LED显示程序 (11)T0中断 (12)INT0中断 (12)5.3 P0、P1口显示状态编码表 (13)5.4 程序源代码 (13)5.5 程序运行效果图 (18)六、心得体会 (20)七、参考文献 (21)摘要本系统由单片机系统、键盘、LED 显示、交通灯演示系统组成。
系统包括人行道、左转、右转、以及基本的交通灯的功能。
系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间、违规车辆检测以及根据具体情况手动控制等功能。
课程设计报告 题 目 十字路口交通灯控制系统设计课 程 名 称 单片机原理及应用课程设计 院 部 名 称 信息技术学院 专 业 电子信息工程 班 级 学 生 姓 名 X X X 学 号 XXXXXXXXXX 指 导 教 师目录一、设计题目 (2)二、设计目的 (2)三、设计任务 (2)四、设计思路 (3)4.1设计思路 (3)4.2系统总体框图 (3)4.3资源分配 (3)五、硬件原理图和连接图 (9)六、程序流程图 (13)七、设计心得 (14)八、参考文献 (15)九、附录 (15)一、设计题目十字路口交通灯控制系统设计二、设计目的系统功能要求:本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示,通行时间调整和紧急处理等功能。
此十字路口交通灯控制系统,分东西道和南北道,设南北道为A道,东西道为B道。
规定:首先,东西路口红灯亮,南北路口绿灯亮,同时开始30s倒计时,以7段数码管显示时间。
25s倒计时结束后开始5s倒计时,南北路口的绿灯闪烁,计时到最后2s时,南北路口黄灯亮。
完成1次这样的循环需要30s。
30s 结束后,南北路口红灯亮,东西路口绿灯亮,并重新30s倒计时,依次循环。
若有紧急车辆要求通过时,此系统应能禁止普通车辆,而让紧急车辆通过。
(1)倒计时显示倒计时显示可以提醒驾驶员在信号灯灯色发生改变的时间、在“停止”和“通过”两者间作出合适的选择。
驾驶员和行人普遍都愿意选择有倒计时显示的信号控制方式,并且认为有倒计时显示的路口更安全。
倒计时显示是用来减少驾驶员在信号灯色改变的关键时刻做出复杂判断的1种方法,它可以提醒驾驶员灯色发生改变的时间,帮助驾驶员在“停止”和“通过”两者间作出合适的选择。
(2)时间的设置本设计中可通过键盘对时间进行手动设置,增加了人为的可控性,避免自动故障和意外发生,并再紧急状态下,可设置所有灯变为红灯。
键盘是单片机系统中最常用的人机接口,一般情况下有独立式和行列式两种。
交通信号灯控制系统目录一、项目名称...................................................... 错误!未定义书签。
二、选题背景...................................................... 错误!未定义书签。
课题背景.................................................... 错误!未定义书签。
交通灯的历史................................................ 错误!未定义书签。
三、单片机简介.................................................... 错误!未定义书签。
单片机的发展历程............................................ 错误!未定义书签。
单片机的特点:.............................................. 错误!未定义书签。
AT89C51单片机简介........................................... 错误!未定义书签。
四、设计基本要求和步骤 ............................................ 错误!未定义书签。
基本要求.................................................... 错误!未定义书签。
设计步骤.................................................... 错误!未定义书签。
五、硬件和软件设计 ................................................ 错误!未定义书签。
硬件电路图.................................................. 错误!未定义书签。
程序流程图.................................................. 错误!未定义书签。
主程序 ................................................... 错误!未定义书签。
运行过程 ................................................. 错误!未定义书签。
LED显示程序.............................................. 错误!未定义书签。
T0中断................................................... 错误!未定义书签。
INT0中断................................................. 错误!未定义书签。
P0、P1口显示状态编码表...................................... 错误!未定义书签。
程序源代码.................................................. 错误!未定义书签。
程序运行效果图.............................................. 错误!未定义书签。
六、心得体会...................................................... 错误!未定义书签。
七、参考文献...................................................... 错误!未定义书签。
微机原理与接口技术专周报告一、项目名称十字路口交通信号灯控制系统二、选题背景课题背景由于我国经济的快速发展从而导致了汽车数量的猛增,大中型城市的城市交通,正面临着严峻的考验,从而导致交通问题日益严重,其主要表现如下:交通事故频发,对人类生命安全造成极大威胁;交通拥堵严重,导致出行时间增加,能源消耗加大;空气污染和噪声污染程度日益加深等。
日常的交通堵塞成为人们司空见惯而又不得不忍受的问题,在这种背景下,结合我国城市道路交通的实际情况,开发出真正适合我们自身特点的智能信号灯控制系统已经成为当前的主要任务。
随着电子技术的发展,利用单片机技术对交通灯进行智能化管理,已成为目前广泛采用的方法。
交通灯的历史1868年12月10日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德·哈特设计、制造的灯柱高7米,身上挂着一盏红、绿两色的提灯--煤气交通信号灯,这是城市街道的第一盏信号灯。
1914年,在美国的克利夫兰市才率先恢复了红绿灯,不过,这时已是“电气信号灯”。
稍后又在纽约和芝加哥等城市,相继重新出现了交通信号灯。
随着各种交通工具的发展和交通指挥的需要,第一盏名副其实的三色灯(红、黄、绿三种标志)于1918年诞生。
它是三色圆形四面投影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使城市交通大为改善。
中国最早的马路红绿灯,是于1928年出现在上海的英租界。
三、单片机简介单片机的发展历程单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。
在MCS-51系列单片机中,有两个子系列:51子系列和52子系列。
每个子系列有诺干中型号。
51系列有8051、8751和8031三个型号,后来经过改进产生了80c51、87c51、80c31三个型号;52系列有5021、8752、8032三个型号,改进后的型号是80c52/87c52、80c32。
改进后的型号更加省电。
52系列比对应的51系列增加了定时器T2并将内部程序存贮器增加到8KB。
Inter公司停止生产MCS-51系列单片机之后将生产权转让给了许多其他公司,于是出现了许多与Mcs-51兼容的单片机。
现在生产mcs-51兼容单片机的公司对其进行了不同程度的改进和提高。
我们现在使用比较的多的是AT89C51/AT89s51等。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗单片机的特点:(1)性价比高,开发周期短,易于产品化,(2)集成度高,可靠性好,抗干扰性强,(3)功能完善,接口多样,(4)低功耗、低电压一般电源供电电压在5~3V范围内单片机都能正常工作,供电的下限可达1~2V。
(5)总线多样,易于扩展单片机外部的典型三总线结构,方便系统构扩展,构成各种规模的应用系统。
外部总线增加了I2C及SPI等串行总线方式, 可根据需要进行并行或者串行扩展。
1AT89C51单片机简介AT89C51是一种带4K字节闪存可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
主要特性:·与MCS-51 兼容·4K字节可编程闪烁存储器·寿命:1000写/擦循环·数据保留时间:10年·全静态工作:0Hz-24MHz·三级程序存储器锁定·128×8位内部RAM·32可编程I/O线·两个16位定时器/计数器·5个中断源·可编程串行通道·低功耗的闲置和掉电模式·片内振荡器和时钟电路四、设计基本要求和步骤十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
2基本要求本系统需要采用MSC-51系列单片机AT89C51作为中心器件来设计交通灯控制器,实现以下功能:1.初始东西绿灯亮,南北红灯亮,东西方向通车。
2.延时27s,东西路口绿灯熄灭,黄灯闪烁3次。
3.黄灯闪烁后,东西路口红灯亮同时南北路口绿灯亮,南北方向开始通车。
4.延时27s,南北方向绿灯灭,黄灯闪烁3次,然后又切换成东西方向通车,如此重复。
5.当发生交通意外(中断产生)时,全部亮红灯,进行交通事故的处理。
当事故处理完毕(再次按中断键),重新按上述方式工作。
6.当南北路口的流量大时,可以增加南北路口亮绿灯的时间,当东西路口的流量大时,可以增加东西路口亮绿灯的时间,结束后调回正常状态。
设计步骤1.利用Proteus SP3仿真软件按下列要求绘制仿真实例用4个共阳极LED数码管的分别表示东、西、南、北四个方向路口,以数码管的上、中、下3个横段分别代表红、黄、绿3盏灯用P0、P1口分别输出控制模拟交通灯的状态显示的数码管和倒计时显示数码管的状态码P3^1、P3^2、P3^4~~~P3^7控制数码管的位选P2^0~~~P2^4接收中断信号并反馈给INT0接口进行中断处理2.按照基本要求编制程序实现相应功能。
五、硬件和软件设计硬件电路图硬件电路图通过Proteus SP3仿真之后如图1所示,其中:按钮K0连接P2^0端口实现红灯全亮,处理交通意外按钮K1连接P2^1端口实现南北方向亮灯时间+1s3按钮K2连接P2^2端口实现南北方向亮灯时间-1s按钮K3连接P2^3端口实现东西方向亮灯时间+1s按钮K4连接P2^4端口实现东西方向亮灯时间-1s整体实验连接电路如下图所示:图1 整体连接电路图4程序流程图578P0、P1口显示状态编码表程序源代码#define uchar unsigned char#include<>/**************************变量、控制位定义**************************/uchar code table[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//0~~9段选码uchar code table1[28]={0xF7,0xFE,0xF7,0xFE,0xBF,0xFE,0xBF,0xFE,0xFF,0xFE,0xFF,0xFE, 0xFE,0xF7,0xFE,0xF7,0xFE,0xBF,0xFE,0xBF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFE,0xFE,0xFE};/*各种状态下红绿灯段选码,状态(0-3):EW绿灯,SN红灯;状态(4-7):EW黄灯亮,SN红灯;状态(8-11):EW黄灯灭,SN红灯;状态(12-15):EW红灯,SN绿灯;状态(16-19):EW红灯,SN黄灯亮;状态(20-23):EW红灯,SN黄灯灭;状态(24-27):EWSN全红灯*/uchar code tab[4]={0x1E,0x2D,0x4E,0x8D};//数码管显示位选码uchar EW=30,SN=30,EW1=30,SN1=30;//初始化交通灯时间uchar count;//计时中断次数uchar i,j;//循环控制变量sbit Busy_Button=P2^0;//交通意外控制位sbit SN_Add=P2^1;//SN通行时间加按钮sbit SN_Red=P2^2;//SN通行时间减按钮sbit EW_Add=P2^3;//EW通行时间加按钮sbit EW_Red=P2^4;//EW通行时间减按钮char Time_EW;//EW方向计时char Time_SN;//SN方向计时/**************************延时子程序**************************/ void Delay(uchar a)//循环a次{uchar x;x=a;while(x--){;}}/*************************数码管显示子程序*************************/ void Display(uchar j)//j控制显示table中连续位的起始点{char h,l;if(j<11)//根据状态判定时间{h=Time_EW/10;//EW通行时间十位l=Time_EW%10;//EW通行时间个位}else if(j<23){h=Time_SN/10;//SN通行时间十位l=Time_SN%10;//SN通行时间个位}for(i=0;i<4;)//按位显示通行状况及时间{P0=table1[j];//通行状况显示P3=tab[i];//位选显示i++;j++;if(i%2)//两位计时显示{P1=table[l];Delay(400);}else{P1=table[h];Delay(400);}}Delay(5);}/***********************INT0外部中断服务程序***********************/ void EXINT0(void) interrupt 0//INT0外部中断{EX0=0;//关中断if(Busy_Button==0){P0=0xFE;//意外按钮按下全显示红灯for(;Busy_Button!=1;)//意外按钮弹起时恢复之前状态Display(24);}/*四个时间控制按钮分别控制SN、EW方向初始通行时间加减,最长不超过s,最少不低于s*/if(SN_Add==0)//SN+1{SN1+=1;if(SN1>99)SN1=99;}if(SN_Red==0)//SN-1{SN1-=1;if(SN1<20)SN1=20;}if(EW_Add==0)//EW+1{EW1+=1;if(EW1>99)EW1=99;}if(EW_Red==0)//EW-1{EW1-=1;if(EW1<20)EW1=20;}EX0=1;//开中断}/************************TO计时中断服务程序************************/ void timer0(void) interrupt 1 using 1//T0中断{TH0=0x3C;TL0=0xB0;//定时计数初值count++;//中断溢出一次count+1if(count==20){Time_EW--;Time_SN--;count=0; //中断次计数s,count回,倒计时时间-1}}/**************************亮灯控制**************************/ void Process(){Time_EW=EW;//初始化东西方向通行时间while(Time_EW>3)//状态:EW绿灯,SN红灯{j=0;Display(j);//调用显示函数}while(Time_EW>0)//状态-3:EW黄灯闪烁{if(count<10)//状态:EW黄灯亮{j=4;Display(j);}else//状态:EW黄灯灭{j=8;Display(j);}}SN=SN1;//重置SN方向时间Time_SN=SN;//初始化南北方向通行时间while(Time_SN>3)//状态:EW红灯,SN绿灯{j=12;Display(j);}while(Time_SN>0)//状态-6:SN黄灯闪烁{j=16;if(count<10)//状态:SN黄灯亮{Display(j);}else//状态:SN黄灯灭{j=20;Display(j);}}EW=EW1;//重置EW初始时间}/**************************主程序**************************/ main(){TMOD=0x01;//定时器工作方式TH0=0x3C;//定时器初始化TL0=0xB0;IT0=1;//中断触发方式为下降沿触发EA=1;//CPU开中断ET0=1;//开定时中断TR0=1;//启动定时EX0=1;//开外部INT0中断while(1){Process();}}程序运行效果图图2 正常状态图3 黄灯状态图4 紧急状态图5 延长通行时间六、心得体会通过这次交通灯的课程设计,使我得到了一次用专业知识、专业技能分析和解决现实问题的能力。