基于51单片机交通灯课设(内含程序和实物图)
- 格式:doc
- 大小:13.04 MB
- 文档页数:29
目录一引言 (2)二概要设计 (2)2.1 设计思路 (2)2.2总体设计框图 (2)三硬件设计 (3)3.1LED循环电路设计 (3)3.1.1 89cs51单片机概述 (3)3.1.2 LED循环说明 (5)3.2 倒计时显示电路 (5)3.2.1 74LS164芯片 (5)3.2.2 共阴极数码显示管 (6)3.2.3 倒计时电路 (6)3.2.4 急通车电路 (7)四软件按设计 (7)4.1 程序流程图: (7)4.2 LED红绿灯显示 (8)4.3倒计时显示 (9)4.4 急通车控制 (9)4.5程序代码 (9)五总结 (9)参考文献 (9)附录一: (9)附录二: (10)基于51单片机的交通灯控制系统设计摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
交通灯控制系统由80C51单片机、键盘、LED 显示、交通灯延时组成。
系统除具有基本交通灯功能外,还具有时间设置、LED信息显示功能,市交通实现有效控制。
关键词:交通灯,单片机,自动控制一引言当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这个技术在19世纪就已经出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消!电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。
1. 设计思路............................................................................................................. 错误!未定义书签。
2.1电源提供方案 ............................................................................................... 错误!未定义书签。
2.2显示界面方案 ............................................................................................... 错误!未定义书签。
2.3输入方案: ................................................................................................... 错误!未定义书签。
3 单片机交通控制系统总体设计 ........................................................................... 错误!未定义书签。
3.1单片机交通控制系统的通行方案设计 ........................................................ 错误!未定义书签。
3.2单片机交通控制系统的功能要求................................................................ 错误!未定义书签。
3.3单片机交通控制系统的基本构成及原理 .................................................... 错误!未定义书签。
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++); }。
专业课程设计—基于51单片机的交通灯设计组员:蔡余敏、覃珍、李海浪、于小艳(按字母顺序)学院:电气工程学院班级: 10自动化3班指导教师:***摘要:交通信号灯是城市交通安全、有序、快速运行的重要保障。
本文提出了一种基于单片机的交通信号灯控制系统的设计方案。
该系统模拟现实中十字路口的通行指示,倒计时和紧急车辆强行通过等功能。
采用STC89C52芯片为中心器件来设计交通灯控制电路,结合七段共阴极数码管显示时间的模块,交通灯显示模块,晶振电路,复位电路以及按键电路等模块组成。
通过软件仿真与硬件调试,实现红、黄、绿灯燃亮时间以及双位数码管显示倒计时,三种颜色灯交替点亮以及紧急情况下的中断处理功能。
本系统性价比高,实用性强,操作简单,功能全面,有广泛的应用前景。
关键词:交通信号灯;STC89C52单片机;紧急通行;中断处理Abstract:The traffic lights are an important guarantee of city traffic safety, order and rapid running. This paper presents a design scheme of traffic signal lamps control system, which is based on MCU. The system simulates the functions of the traffic indication, counting down and emergency vehicles passing at real crossroads. STC89C52 chip device is used as the center device to design the traffic lights control circuit, combined with common cathode seven segments digital tube display time module, traffic lights display module, crystals circuit, reset circuit and key circuit modules. By software simulation and hardware debugging, the functions have been achieved, which include red, yellow, and green lights brightening, on-off digital tube displaying time countdown, as well as 3 kinds of color lamps lightening alternately and interrupt processing function of emergencies. This system is cost-effective, strong practicability, simple operation, fully functional. It has a broad application prospect.Key words: traffic signal lamp; MCU STC89C52; emergency access;interrupt processing目录摘要............................................................ - 1 -(一)总体设计思路.............................................. - 4 -1.1设计背景................................................ - 4 -1.2 设计目的及思路.......................................... - 6 -1.2.1 设计目的........................................... - 6 -1.2.2 设计思路........................................... - 6 -1.3 交通灯显示时序及状态转换的理论分析...................... - 7 -(二)方案比较、设计与论证...................................... - 7 -2.1 总体设计方案........................................... - 7 -2.2 控制模块选择方案........................................ - 8 -2.3 电源模块方案............................................ - 9 -2.4显示界面方案............................................ - 9 -2.4.1 倒计时显示界面方案................................. - 9 -2.4.2 状态灯显示......................................... - 9 -(三)硬件设计................................................. - 10 -3.1系统总体硬件方案论证................................... - 10 -3.2 STC89C52RC单片机简介................................. - 11 -3.3单片机最小系统......................................... - 15 -3.3.1 时钟电路.......................................... - 15 -3.3.2.复位电路.......................................... - 16 -3.4 显示电路............................................... - 17 -3.5紧急通车电路模块....................................... - 18 -3.6 总电路图................................................. - 19 -3.7各元器件选择及其功能介绍................................. - 21 -(四)软件设计................................................... - 22 -4.1 程序流程图............................................. - 22 -4.1.1程序总流程图...................................... - 22 -4.2具体程序............................................... - 23 - (五)结果分析................................................. - 35 -5.1软件仿真与结果分析...................................... - 35 -5.1.1.Proteus的仿真结果................................ - 35 -5.1.2各状态仿真结果.................................... - 36 -5.1.3.红绿灯状态转换过程:.............................. - 39 -5.2硬件调试与结果分析...................................... - 41 - (六)总结..................................................... - 43 - (七)参考文献................................................. - 44 - (八)附录....................................................... - 46 -(一)总体设计思路1.1设计背景自从1858年英国人,发明了原始的机械扳手交通灯之后,随后的一百多年里,交通灯改变了交通路况,也在人们日常生活中占据了重要地位,随着人们社会活动日益增加,经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通灯更加显示出了它的功能,使得交通得到有效管制,对于交通疏导,提高道路导通能力,减少交通事故有显著的效果。
单片机控制交通灯摘要随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题。
因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必要性。
根据交通灯在实际控制中的特点,结合单片机的控制功能,提出了一种用单片机自动控制交通灯的简易方法。
设计中包括硬件电路的设计和程序设计两大步骤,对单片机学习中的几个重要内容都有涉足。
单片机的应用正在不断深入,单片机可以用来仿真各个系统。
在自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
本系统采用单片机STC89C52为中心器件来设计交通灯控制器,实现了通过P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过P1口输出,显示时间通过P0口输出至双位数码管)。
本系统设计周期短、可靠性高、实用性强、操作简单、维护方便、扩展功能强。
关键词:单片机交通灯数码管看门狗目录第1章前言 (1)1.1课题任务及主要实现内容 (1)1.2原理分析 (1)1.2.1交通灯显示时序的理论分析 (1)1.2.2 交通灯显示的理论分析 (2)第2章设计方案分析 (3)2.1 单片机与外围接口部件 (3)2.2 倒计时显示界面 (4)2.3 交通灯 (4)第3章硬件系统设计 (4)3.1 单片机的选择 (4)3.2 STC89c52的看门狗设置 (8)3.3 硬件电路实现 (9)3.2.1 最小系统设计 (9)3.3.2 显示设计 (11)3.2.3 发光二极管模拟红绿灯 (13)3.2.4 按键模块 (14)第4章软件电路设计 (15)4.1 软件编译环境测试 (15)4.1.1 C语言介绍 (15)4.1.2 Keil uVision4介绍 (15)4.2软件总体设计 (15)第5章电路检测 (17)结论 (20)参考文献 (21)附录:22原理图 (22)源程序: (22)第1章前言单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
基于51单片机控制交通灯的程序设计#include<reg51.h>unsigned char code dis_7[21]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82, 0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xbf,0x89,0x8c,0x00,0xff};//共阳数码管段码unsigned char data disbuf[6]={0x00,0x00,0x00,0x00,0x00,0x00};//显示缓冲区:时分秒使用unsigned char data count_timedx[]={2,10,5,10,25}; //东西方向倒计时时间unsigned char data count_timenb[]={2,25,10,5,10}; //南北方向倒计时时间unsigned char data Hour=14,Minite=06,Second=0,Halfsec=0; //定义时钟位unsigned char xdata *ledaddr=0x2000; //锁存器选通地址unsigned char data Ms=0,Lightcode=0,Light_step,Led_step,Light_num;unsigned int dataFault_dx=0,Fault_nb=0,Fault_total=0,Countdx=0,Countnb=0;sbit p10=P1^0; //第0位数码管位控制端sbit p11=P1^1; //第1位数码管位控制端sbit p12=P1^2; //第2位数码管位控制端sbit p13=P1^3; //第3位数码管位控制端sbit p14=P1^4; //第4位数码管位控制端sbit p15=P1^5; //第5位数码管位控制端sbit p16=P1^6; //发光二极管选通sbit p17=P1^7; //按键选通sbit p33=P3^3; //k1键用于切换四种功能/******************************************************************* **********//****************************1毫秒延时函数*******************************/ void delay1ms(int t){unsigned int i,j;for(i=0;i<t;i++)for(j=0;j<120;j++);}/******************************************************************* ********//*************************键盘扫描函数****************************************/ unsigned char getkey(void) {unsigned char Yiwei;unsigned char test=0x00,tim;*ledaddr=test;if(p17==0 && tim==0) //判断是否有按键按下{p17=1;tim=1;test=0xfe;delay1ms(5);for(Yiwei=0;Yiwei<8;Yiwei++) //处理按键{*ledaddr=test;if(p17==0)break;else test=(test<<1)+1;}return Yiwei;}else if(p17==0){}else {tim=0;}}/******************************************************************* **********//************************六位LED数码管显示***********************************/void displed(unsigned int hour_shi,unsigned int hour_ge,unsigned int min_shi,unsigned intmin_ge,unsigned int sec_shi,unsigned int sec_ge){*ledaddr=dis_7[hour_shi]; //时的十位显示p10=0;delay1ms(1);p10=1;*ledaddr=dis_7[hour_ge]; //时的个位显示p11=0;delay1ms(1);p11=1;*ledaddr=dis_7[min_shi]; //分的十位显示p12=0;delay1ms(1);p12=1;*ledaddr=dis_7[min_ge]; //分的个位显示p13=0;delay1ms(1);p13=1;*ledaddr=dis_7[sec_shi]; //秒的十位显示p14=0;delay1ms(1);p14=1;*ledaddr=dis_7[sec_ge]; //秒的个位显示p15=0;delay1ms(1);p15=1;}/******************************************************************* **********//******************************发光二极管显示函数*****************************/void displight(unsigned int state){if(state==0) //状态0:各方向红灯全亮{Lightcode=0xbb;}else if(state==1) //状态1:东西绿灯亮,南北红灯亮{Lightcode=0xbe;}else if(state==2) //状态2:东西黄灯闪烁,南北红灯亮{Lightcode=0xbd;}else if(state==3) //状态3:东西红灯亮,左行亮,南北红灯亮{Lightcode=0xb3;}else if(state==4) //状态4:东西红灯亮,南北直行绿灯亮{Lightcode=0xeb;}else if(state==5) //状态5:东西红灯亮,南北黄灯闪烁{Lightcode=0xdb;}else if(state==6) //状态6:东西红灯亮,南北红灯亮,左行亮{Lightcode=0x3b;}//黄灯闪烁if((Halfsec%2)==0){if(state==2)Lightcode=0xbf; //东西闪烁if(state==5)Lightcode=0xfb; //南北闪烁}*ledaddr=Lightcode; //送交通灯显示状态p16=0;delay1ms(1);p16=1;}/******************************************************************* *********//****************************违章车辆统计函数********************************/void weizhang(void) // 红灯亮的时候是否有车通过,KL1键显示东西,KL2键显示南北 {unsigned char key1;key1=getkey(); //获得键值if((key1==0)&&(Light_step>=4)&&(Light_step<=6)) //KL1键显示南北方向违章车辆,且只在南北方向为红灯时加1{Fault_dx++;if(Fault_dx==99) //最大计数99辆{Fault_dx=0;}}else if((key1==2)&&(Light_step>=1)&&(Light_step<=3)) //KL3键显示东西方向违章车辆,且只在东西方向为红灯时加1{Fault_nb++;if(Fault_nb==99) //最大计数99辆{Fault_nb=0;}}}/******************************************************************* ********//****************************数字钟函数***********************************/void shuzizhong(void) //数字钟:KL3键调节秒,KL4键调节分,KL5键调节时 {unsigned char data key2;key2=getkey(); //获得键值if(key2==2) //调节秒,按一次KL3,则加一秒{Second++;if(Second==60)Second=0;}if(key2==3) //调节分,按一次KL4,则加一分{Minite++;if(Minite==60)Minite=0;}if(key2==4) //调节时,按一次KL5,则加一时{Hour++;if(Hour==24)Hour=0;}disbuf[0]=Second%10; //时钟显示,送缓冲区disbuf[1]=Second/10;disbuf[2]=Minite%10;disbuf[3]=Minite/10;disbuf[4]=Hour%10;disbuf[5]=Hour/10;}/******************************************************************* **********//**************修改倒计时间函数*********************************************/void change_time(void) //注意:只修改绿灯、黄灯或左行灯时间,红灯时间自动求出 {unsigned int data key3=0;key3=getkey();if(key3==4) //KL5键选择要修改东西向倒计时{Light_num++;if(Light_num>4) Light_num=0;}if(key3==5) //KL2键用于修改东西方向倒计时,加1 {count_timedx[Light_num]++;if(count_timedx[Light_num]>=99)count_timedx[Light_num]=99;}if(key3==1)//KL6键用于修改东西方向倒计时,减1 {count_timedx[Light_num]--;if(count_timedx[Light_num]<1)count_timedx[Light_num]=1;}if(key3==6) //KL7键用于修改南北方向倒计时,加1 {count_timenb[Light_num]++;if(count_timenb[Light_num]>=99)count_timenb[Light_num]=99;}if(key3==2)//KL3键用于修改南北方向倒计时,减1 {count_timenb[Light_num]--;if(count_timenb[Light_num]<1)count_timenb[Light_num]=1;}count_timedx[4]=count_timenb[2]+count_timenb[3]+count_timenb[4]; //调整,求各方向红灯时间count_timenb[1]=count_timedx[1]+count_timedx[2]+count_timedx[3]; //红灯时间=绿灯+黄灯+左行灯}/******************************************************************* *********//************************定时器/计数器t0中断函数******************************/void time_intt0(void) interrupt 1 {TH0=0x4c; //赋初值定时50msTL0=0x00;Ms++;if(Ms>9){Ms=0;Halfsec++; //计时半秒if(Halfsec==2){Halfsec=0;Second++; //计时一秒Countdx--; //东西、南北倒计时减一Countnb--;}if(Second==60){Second=0;Minite++;//计时一分}if(Minite==60){Minite=0;Hour++; //计时一小时}if(Hour==24)Hour=0;}if((Countdx==0)||(Countnb==0)) //转换交通灯显示状态{Light_step++;if(Light_step>6){Light_step=1;}if(Countnb==0)Countnb=count_timenb[Light_step];//东西为红灯,南北绿、黄、左切换if(Countdx==0)Countdx=count_timedx[Light_step];//南北为红灯,东西绿、黄、左切换}}/******************************************************************* **********//****************外部中断1服务函数********************************************/void int_1(void) interrupt 2 //数码管显示状态切换 {EX1=0; //关中断if(Led_step<4){Led_step++;}if(Led_step==4){Led_step=0;}EX1=1;//开中断}/************串行口中断服务函数*********************************************/void ser_put(void) interrupt 4 //上位机发出字符'c',则清违章记录,若发出'g',则上传违章记录{if(RI==1) //接收到上位机发出的字符{RI=0;ACC=SBUF; //取字符if(ACC=='c') //清违章记录{Fault_dx=0;Fault_nb=0;}else if(ACC=='g')//上传违章记录{Fault_total=Fault_dx+Fault_nb;SBUF=Fault_total;}}if(TI==1) //发送中断TI=0;}/******************************************************************* **********//***************8051初始化函数************************************************/void Istr(void) {/*定时器初始化*/TMOD=0x21;//定时器1工作于方式2,做波特率发生器;定时器0工作于方式1,做定时器TH1=0xfa; //产生9.6kbit/s波特率TL1=0xfa;TH0=0x4c; //50msTL0=0x00;/*串行通信初始化*/SCON=0x50;PCON=0X80|PCON;/*启动定时器,开中断*/ET1=0; //禁止定时器1中断ET0=1;TR1=1;TR0=1;IT1=1; //设置外部中断为边沿触发EX1=1;ES=1;EA=1;}/************************主函数***********************************************/ void main(void) {Istr(); //调用初始化函数Led_step=0;Light_step=0;Light_num=0;Countdx=count_timedx[0];Countnb=count_timenb[0];SBUF='s';while(1){if(Led_step==0) //显示倒计时{displed(20,(Countdx/10),(Countdx%10),20,(Countnb/10),(Countnb%10));}if(Led_step==1) //显示时钟{shuzizhong(); //调用数字钟函数displed(disbuf[5],disbuf[4],disbuf[3],disbuf[2],disbuf[1],disbuf[0]);}if(Led_step==2) //修改倒计时数{change_time(); //调用修改倒计时时间函数displed(Light_num,count_timedx[Light_num]/10,count_timedx[Light_num]%10,Light_num,count_timenb[Light_num]/10,count_timenb[Light_num]%10);}if(Led_step==3) //显示并统计违章数{weizhang(); //调用违章记录函数displed(15,Fault_dx/10,Fault_dx%10,15,Fault_nb/10,Fault_nb%10);}displight(Light_step);//显示交通灯}}/*********over*******over************over*********over*********over* ******over***/。
课程设计报告课程名称:单片机原理及应用课程设计系部:电气与信息工程学院专业班级:__________________________学生姓名:__________________________指导教师:__________________________完成时刻:___________________________报告成绩:__________________________评阅意见:评阅教师日期目录No table of contents entries found.交通灯控制系统设计一、设计题目交通灯控制系统设讣二、设计要求(1)设计一个十字路口的交通灯控制电路,要求当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。
时刻为60秒。
(2)黃灯闪烁5秒,警示车辆和行人红、绿灯的状态即将切换。
(3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。
时刻为80秒。
东西方向车流大通行时刻长。
(4)东西、南北方向车道除有红、绿、黃三色指示灯外,每一种灯亮的显示时刻都用显示器进行显示,釆用计时的方式设计。
三、设计作用与目的最近儿年来随着科技快速的进展,单片机的应用正在不断地走向深切,同时带动传统检测日新月异更新。
在实验检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来利用,针对具体应用对象的特点,配以其他器件来家以完善,伴随人口的日趋增加,那么十字路口车辆穿梭,如何才能让交通井然有序呢?靠的就是交通信号的自动指挥系统。
信号灯的出现,使交通得以有效的管制,对于交通流量、提高道路通行能力,减少交通事故有明显的效果。
绿灯是通行信号,面对绿灯信号的车辆能够直行,左拐弯和右拐弯,除非另一种禁止转向。
左右转弯车辆都必需让正在路口内直行的车辆和过人行横道行人优先通行。
红灯是禁I匕信号面对红灯的车辆必需停车。
黃灯是警告信号,面对黄灯信号的车辆不呢么好越过安全停车线,可是车辆十分接近停车线而不能安全停车时能够进入交义路口。
毕业设计基于单片机的交通信号的灯控制系统一. 综合实训的主要内容 1.设计任务设计一单片机控制的交通信号灯系统,模拟城市十字路口交通信号灯功能。
2.基本功能要求2.1 交通信号控制直行车道红黄绿灯控制、左行车道绿灯控制、人行横道红绿灯控制。
2.2 通行时间显示数码管倒计时显示通行时间。
2.3 时间参数设置存储按键实现通行时间的设置,并存储到EEPROM (24C02)芯片中。
二. 硬件方案设计与论证 1. 显示模块设计1.1倒计时时间显示设计思想:由于该系统要求完成倒计时显示通行时间的功能,且考虑到实际的交通系统中车辆及行人通行时间不会超过一分钟,基于以上原因,我们考虑完全采用数码管显示,四个路口分别采用一个二位共阴极数码管进行显示。
(其实物图见附录1图5.3)图2.1 数码管原理图原理图分析:为了显示数字或字符,必须对数字或字符进行编码。
七段数码管GND abcde fg dp gf ed c ba(a)(a,b,c,d,e,f,g)加上一个小数点(dp),共计8段,构成一个字节,通过对这八段给予高低平使二极管导通或截止,从而显示不同的数字或字符。
系统中所使用的是2位共阴数码管(实物图见附录),其管脚从左上方起顺时针依次为1,a,b,e,d,2,g,f,dp,c。
1.2 状态灯显示设计思想:由于该系统要求完成状态灯显示的功能,我们把各个路口的红灯和黄灯设成直行和左拐两个通行方式所共有,也就是说,一个路口只需四个状态灯,一个直行通行的绿灯,一个左拐通行的绿灯,一个共有的红灯,一个共有的黄灯,人行横道采用红绿灯控制,综上所述,我们共使用16个LED绿灯,12个LED 红灯,4个LED黄灯来完成状态灯显示功能。
2.控制模块设计2.1 设计思想由于本系统结构简单,实现较容易,不需要大量的外围扩展,所以我们采用STC89C51单片机作为主控制器,STC89C51单片机具有体积小,功耗低,控制能力强,价格低、扩展灵活,使用方便等特点,其最小系统由振荡电路、复位电路构成。
师范大学基于51单片机的交通灯设计学院:电气工程及自动化学院专业:测控技术与仪器班级:姓名:学号:指导老师:实训地点:摘要本系统由单片机系统、数码管显示、交通灯演示系统组成。
系统包括东西直行、南北直行、以及基本的交通灯的功能。
系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。
本设计是单片机控制的交通灯控制系统。
单片机即单片微型计算机。
由RAM,ROM,CPU构成,其集定时、计数和多种接口与一体的微控制器。
它体积小、成本低、功能强,广泛的应用于只能产业和工业自动化上。
本设计的意义在于通过具体控制系统的设计,掌握微机控制系统设计的一般方法和处理问题的思路,特别是一些常用的技术手段。
使大家能在实践教学环节中,积累设计经验,开拓思维空间,全面提高个人的综合能力。
红绿灯控制是智能交通系统的一个重要部分,本文给出了一个用单片机控制的简易交通红绿灯自动控制系统。
该系统适用于十字路口,并对放行和禁行时间进行倒计时显示(秒)。
在车辆通行繁忙的十字交叉路口设置的交通灯控制系统,其特点是:道路较窄而车流量较大,主干道,支干道的车辆通行时间不等,同时设有道路应急控制。
具体的情况是:在正常的情况下,东西通行时间为30秒,南北通行时间为30秒,每个方向在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道。
而且有紧急车辆要求通过时,系统要能禁止普通车辆通行。
目录1 概述1.1课题名称 (3)1.2设计要求 (3)1.3设计意义 (3)2 系统总体方案及硬件设计2.1芯片的选择与简单介绍 (4)2.2系统方框图 (5)2.3工作原理 (5)2.4电路原理图 (6)2.5单片机最小系统 (6)2.6时间显示电路 (7)2.7交通灯电路 (7)3 Proteus软件仿真3.1系统仿真电路图 (8)3.2仿真结果分析 (10)4课程设计体会 (10)5 参考文献 (11)6附录 (12)1 概述1.1课题名称单片机控制的交通灯控制系统设计1.2设计要求1)南北方向车道和东西方向车道两条交叉道路上的车辆交替运行,每次通行时间都设为30秒,时间可设置修改;2)在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;3)黄灯亮时,亮3秒;4)东西方向、南北方向车道除了有红、黄、绿灯指示外,每一种灯亮的时间都用显示器进行显示(采用计时的方法);5)有紧急车辆要求通过时,系统要能禁止普通车辆通行,A、B道均为红灯,紧急车由K2 开关模拟。
西安石油大学单片机控制临时交通灯班级:电信1502小组成员:赵勃权伟力艾克拜尔2017.12.7临时交通灯设计原因随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题。
因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必要性。
根据交通灯在实际控制中的特点,结合单片机的控制功能,提出了一种用单片机自动控制交通灯的简易方法。
设计中包括硬件电路的设计和程序设计两大步骤,对单片机学习中的几个重要内容都有涉足。
单片机的应用正在不断深入,单片机可以用来仿真各个系统。
在自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?对于路口信号灯出现问题或者需要进行道路施工,时,临时信号灯就变得非常重要,在没有红绿灯的交通路口也可以放置临时信号灯,来调节交通,对于社会有很大帮助。
1.课题任务及主要实现内容本系统由单片机系统、数码管显示、交通灯显示系统组成。
系统除基本的交通功能外,还具有倒计时。
东西、南北两个干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换。
程序开始运行先南北段通行、东西段禁止60s,后东西段通行、南北段禁止60s,依此循环。
系统分三种工作模式:正常模式、繁忙模式、特殊模式,并且通过三个按钮“正常”、“繁忙”、“特殊”可相互转化。
正常模式:直行时间显示数码管显示60。
此时南北段直行通行(绿灯)、东西段禁止(红灯)60s,倒计时到3s时,黄灯亮,提醒人们注意了。
然后是东西段通行(绿灯),南北段禁行(红灯),一直循环下去。
繁忙模式:南北段、东西段的通行时间改为30s,其它与正常模式类似。
特殊模式:特殊模式红灯全亮,倒计时20s,到最后3秒黄灯闪3次后并转入正常模式。
单片机控制交通灯摘要随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题。
因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必要性。
根据交通灯在实际控制中的特点,结合单片机的控制功能,提出了一种用单片机自动控制交通灯的简易方法。
设计中包括硬件电路的设计和程序设计两大步骤,对单片机学习中的几个重要内容都有涉足。
单片机的应用正在不断深入,单片机可以用来仿真各个系统。
在自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。
那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
本系统采用单片机STC89C52为中心器件来设计交通灯控制器,实现了通过P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过P1口输出,显示时间通过P0口输出至双位数码管)。
本系统设计周期短、可靠性高、实用性强、操作简单、维护方便、扩展功能强。
关键词:单片机交通灯数码管看门狗目录第1章前言 (1)1.1课题任务及主要实现内容 (1)1.2原理分析 (1)1.2.1交通灯显示时序的理论分析 (1)1.2.2 交通灯显示的理论分析 (2)第2章设计方案分析 (3)2.1 单片机与外围接口部件 (3)2.2 倒计时显示界面 (4)2.3 交通灯 (4)第3章硬件系统设计 (4)3.1 单片机的选择 (4)3.2 STC89c52的看门狗设置 (8)3.3 硬件电路实现 (9)3.2.1 最小系统设计 (9)3.3.2 显示设计 (11)3.2.3 发光二极管模拟红绿灯 (13)3.2.4 按键模块 (14)第4章软件电路设计 (15)4.1 软件编译环境测试 (15)4.1.1 C语言介绍 (15)4.1.2 Keil uVision4介绍 (15)4.2软件总体设计 (15)第5章电路检测 (17)结论 (20)参考文献 (21)附录:22原理图 (22)源程序: (22)第1章前言单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。
单片机微型计算机简称单片机,特别适用于控制领域,故称为微控制器。
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。
因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。
单片机经过1、2、3,三代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引脚的多功能化,以及低电压低功耗。
1.1课题任务及主要实现内容本系统由单片机系统、数码管显示、交通灯显示系统组成。
系统除基本的交通功能外,还具有倒计时。
东西、南北两个干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯。
红灯亮禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换。
程序开始运行先南北段通行、东西段禁止60s,后东西段通行、南北段禁止60s,依此循环。
系统分三种工作模式:正常模式、繁忙模式、特殊模式,并且通过三个按钮“正常”、“繁忙”、“特殊”可相互转化。
正常模式:直行时间显示数码管显示60。
此时南北段直行通行(绿灯)、东西段禁止(红灯)60s,倒计时到3s时,黄灯亮,提醒人们注意了。
然后是东西段通行(绿灯),南北段禁行(红灯),一直循环下去。
繁忙模式:南北段、东西段的通行时间改为30s,其它与正常模式类似。
特殊模式:特殊模式红灯全亮,倒计时20s,到最后3秒黄灯闪3次后并转入正常模式。
1.2原理分析1.2.1交通灯显示时序的理论分析下图所示为一种红绿灯规则的状态图:图1-1 南北直行通行图1-2 东西直行通行1.2.2 交通灯显示的理论分析倒计时显示的理论分析:利用定时器中断,设TH0=TH1=(65536-50000)/256,即每0.05秒中断一次。
每到第20次中断即过了20*0.05秒=1秒时,产生一次参数传递,使时间的计数值减1,便实现了倒计时的功能。
第2章设计方案分析本次课程设计实现的交通灯是带有额外的功能,预期实现的主要功能如下。
1.具有时间显示功能,就是数码管倒计时功能;2.红绿灯具有两种状态,南北直行,东西直行;3.具有模式转换功能,切换到不同状态,交通灯通行时间不一样;2.1 单片机与外围接口部件根据课题任务的要求,该系统具有交通灯的显示功能,倒计时功能,改变时间设定功能,所以把系统分为几个模块,包括倒计时显示器、交通信号灯、控制模块。
系统硬件框图如下图2-1:图2-1 硬件框图该系统主控芯片单片机采用MCS-8052,它内部具有128个8位用户数据存储单元和128个专用寄存器单元,两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向,可以满足该控制程序系统的设计要求。
2.2 倒计时显示界面本次课设较为简单,实现起来并不困难,所以选择led数码管就可以了,成本在可接受范围内。
2.3 交通灯发光二极管简称为LED,在此处设计中我们用他来模拟红绿黄交通灯,普通单色发光二极管具有体积小、工作电压低、工作电流小、发光均匀稳定、响应速度快、寿命长等优点,可用各种直流、交流、脉冲等电源驱动点亮。
它属于电流控制型半导体器件,使用时需串接合适的限流电阻。
第3章硬件系统设计3.1 单片机的选择1.常用单片机的比较目前在单片机系统中,应用较广泛的微处理器芯片主要为8XC5X系列单片机。
该系列单片机均采用标准MCS-51内核,硬件资源相互兼容,品类齐全,功能完善,性能稳定,体积小,价格低廉,货源充足,调试和编程方便,所以应用极为广泛。
若采用89C51芯片作为硬件核心,采用Flash ROM,内部具有4KB ROM存储空间,能于3V的超低电压工作,而且与MCS-51系列单片机完全兼容,但是运用于电路设计中时由于不具备ISP在线编程技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次插拔会对芯片造成一定的损坏。
若采用STC89C52单片机则不同,STC89C52是一个低电压,高性能CMOS8位单片机,片内含有4KB的可反复擦写的Flash只读程序存储器和128bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-52指令系统,片内置通用8位中央处理器和Flash存储单元。
可以按照常规方法进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效的降低开发成本。
2.STC89C52简介(1) STC89C52基本特性STC89C52是一种低功耗、高性能CMOS 8位微控制器,具有8K在系统可编程Flash存储器。
使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
(2) 功能STC89C52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节点模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,指导下一个中断或硬件复位为止。
(3)引脚说明图3-1 STC89C52引脚图引脚如图3-1所示:VCC:40号管脚供电电压。
GND:20号管脚接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8个TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4个TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH 编程和校验时,P1口作为第八位地址接收。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL 门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流这是由于上拉的缘故。
P3口也可作为STC89C52的一些特殊功能口,如下表3-1所示:表3-1 P3口管脚特殊功能P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在 FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时, ALE 只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H- FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。