51单片机系统实验报告--计数器、交通灯
基于51单片机控制交通灯课程设计报告
基于51单片机控制交通灯课程设计报告本设计课程使用STC89c52型号的芯片及相关元器件自己组装单片机最小系统,并编写程序用于控制交通信号灯。
1.STC89c52的芯片元器件的说明:STC89c52内置8位中央处理单元、256字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入/输出(I/O)口、3个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。
此外,STC89c52还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。
在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。
掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能,STC89c52在众多嵌入式控制应用系统中得到广泛应用。
2.STC89c52的功能是:·标准MCS-51内核和指令系统·片内8kROM(可扩充64kB外部存储器)· 32个双向I/O口· 256x8bit内部RAM(可扩充64kB外部存储器)· 3个16位可编程定时/计数器·时钟频率3.5-12/24/33MHz·向上或向下定时计数器·改进型快速编程脉冲算法· 6个中断源· 5.0V工作电压·全双工串行通信口·布尔处理器—帧错误侦测· 4层优先级中断结构—自动地址识别·兼容TTL和CMOS逻辑电平·空闲和掉电节省模式· PDIP(40)和PLCC(44)封装形式3.管脚说明VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
基于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. 本项目要求可实现可手动设定交通灯亮灭交换所需时长,并且该灯亮时间倒计时用数码管显示。
2. 模拟遭遇突发情况的时候,可手动实现红灯全亮,禁行任何方向的车辆。
3. 由于本项目是模拟东西主干道的十字路口交通灯系统,故要求须包含左转灯,并且可实现右转灯长绿灯。
三. 技术路线1. 本项目由于是单片机作为主控系统,故要求我们熟练掌握单片机编程知识。
2. 本系统由显示电路(包含LED灯倒计时及发光二极管模拟交通灯),单片机主控制电路,按键和电源电路组成,需熟悉自动控制原理。
3. 将紧急情况红灯全亮写成程序编入单片机。
4. 该系统采用+5V直流稳压电源供电工作。
5.显示界面4个路口采用8个共阴极数码管,采用74LS48芯片驱动电路驱动LED晶体管显示部分。
系统原理框图和工作原理:具体:先东西双向直行和左转都是红灯,直行红灯长亮45秒,红灯亮时开始倒计时,剩5秒时开始闪烁(共计红灯亮50秒);接着左转还是红灯,东西双向直行灯长亮绿灯57秒,绿灯亮时倒计时,剩3秒时闪烁(共计绿灯亮60秒,在此期间其余全部红灯);然后5秒黄灯倒计时(不闪烁);然后东西左转绿灯亮时开始倒计时,剩3秒时闪烁(共计13秒),接着黄灯5秒倒计时(不闪烁),直行灯亮红色。
然后东西双向直行与左转又是红灯依次循环(灯亮情况南北直行方向与东西直行方向相反)。
具体对应情况如下主干道亮灭情况及时长:东西 南北左转灯 直行灯 左转灯 直行灯1.红 红(35) 1.红 绿(27)2. 红 绿闪(3)红 黄(5)3.红 红(7) 3.绿(7) 红4.红 红(3) 4.绿闪(3) 红5.红 红(5) 5.黄(5) 红6.红 绿(57) 6.红 红(65)7.红 绿闪(3)8.红 黄(5)9.绿(7) 红 9.红 红(10)10.绿闪(3)红 10.红 红(5)11.黄(5) 红12.红 红(35) 12.红 绿(32)东西方向为主干道;南北为辅干道。
51单片机实验报告(共五则)
51单片机实验报告(共五则)第一篇:51单片机实验报告51单片机实验报告实验一点亮流水灯实验现象 Led灯交替亮,间隔大约10ms。
实验代码#include 〈reg51、h> void Delay10ms(unsigned int c);voidmain(){)1(elihwﻩ{ ﻩP0= 0x00;Delay10ms(50);;ffx0 =0Pﻩﻩ;)05(sm01yaleDﻩ } } void Delay10ms(unsigned int c){unsigned char a,b;for(;c>0;c-—){)——b;0〉b;83=b(rofﻩ{ ﻩﻩfor(a=130;a〉0;a--);}ﻩﻩ}} 实验原理W W hi i le(1)表示一直循环。
循环体内首先将P0 得所有位都置于零,然后延时约5 5 0*10=500ms,接着 0 P0 位全置于 1 1,于就是 D LED 全亮了。
接着循环,直至关掉电源..延迟函数就是通过多个for r 循环实现得。
实验 2 流水灯(不运用库函数)实验现象起初 led 只有最右面得那一个不亮,半秒之后从右数第二个led也不亮了,直到最后一个也熄灭,然后 led 除最后一个都亮,接着上述过程 #includemain(){unsigned char LED;LED = 0xfe;while(1){ ﻩ;DEL = 0PﻩDelay10ms(50);00x0 == 0P(fiﻩ {;1〈〈 DEL = DELﻩ)ﻩ;efx0 = DELﻩ} ﻩ}ﻩ} void Delay10ms(unsigned int c){unsigned char a,b;for(;c>0;c-—){)—-b;0〉b;83=b(rofﻩ{ ﻩﻩﻩ;)--a;0>a;031=a(rofﻩ} ﻩ} ﻩ} 实验原理这里运用了C语言中得位运算符, , 位运算符左移, , 初始值得二进制为1111 1 110, 之后左移一次变成1111 1 100 0,当变成00000 0000 时通过 f if 语句重置 1 1 11 1 11110、延迟函数在第一个报告已经说出了,不再多说..实验 3 流水灯(库函数版)实验现象最开始还就是最右边得一个不亮,然后不亮得灯转移到最右边得第二个,此时第一个恢复亮度,这样依次循环.实验代码#include 〈reg51、h> #include 〈intrins、h〉void Delay10ms(unsigned int c); void main(void){unsigned char LED;;EFx0 = DELﻩ)1(elihwﻩ{ ﻩP0 = LED;;)05(sm01yaleDﻩﻩ;)1,DEL(_lorc_ = DELﻩ} ﻩ} void Delay10ms(unsigned in t c){unsigned chara, b;for(;c〉0;c——){ ﻩfor(b=38;b〉0;b—-){ ﻩﻩ;)-—a;0〉a;031=a(rofﻩ} ﻩ}}实验原理利用头文件中得函数,_cro l_(,), 可以比位操作符更方便得进行 2 2 进制得移位操作, , 比位操作符优越得就是,该函数空位补全时都就是用那个移位移除得数据, , 由此比前一个例子不需要f if 语句重置操作..数码管实验实验现象单个数码管按顺序显示0-9与 A-F。
单片机c语言程序设计---C51-交通灯实验报告
单片机c语言程序设计---C51-交通灯实验报告课程名称:单片机c语言设计实验类型:设计型实验实验项目名称: C51-交通灯实验一、实验目的和要求1.熟悉单片机的硬件结构及其工作原理2.掌握单片机的C51编程二、实验内容和原理(1)硬件设计使用P1端口连接VD1、VD2、VD3,模拟路口东面的红、黄、绿灯;P0端口连接VD9、VD10、VD11,模拟路口西面的红、黄、绿灯;P3端口连接VD17、VD18、VD19,模拟路口南面的红、黄、绿灯;P2端口连接VD25、VD26、VD27,模拟路口北面的红、黄、绿灯。
路口红绿灯的显示规律为:①南面和北面显示红灯(即VD17和VD25为红灯)时,东面和西面显示绿灯(即VD3和VD11为绿灯)。
②南面和北面,东面和西面都变成黄灯。
③南面和北面显示绿灯,东面和西面显示红灯④南面和北面,东面和西面都变成黄灯,然后再从①进行循环(需注意:此处设置的黄灯显示时长应短于红灯或绿灯的显示时长)(2)protues仿真通过Keil编译后,利用protues软件进行仿真。
在protues ISIS 编译环境中绘制仿真电路图,将编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
三、主要仪器设备四、操作方法与实验步骤1.按照硬件设计在protues上按照所给硬件设计绘制电路图。
2.在keil上进行编译后生成“xxx.hex”文件。
3.编译好的“xxx.hex”文件加入AT89C51。
启动仿真,观察仿真结果。
五、实验结果与分析void S_N(void){VD1=0;VD9=0;VD19=0;VD27=0;Delay(1000);VD1=1;VD9=1;VD19=1;VD27=1;}int main (void) {while(1){E_W();NOT();S_N();NOT();}}六、讨论和心得。
交通灯实验报告——单片机
二、用51单片机设计交通灯、彩灯控制器一、可实现功能:1)通过51单片机,在面包板上模拟交通红绿灯。
分为主干道和支干道,每条道上安装红、绿、黄三种颜色的灯,并用两位八段数码管显示主干道三种灯亮的时间,由程序控制自动循环,红灯40秒,绿灯35秒,黄灯5秒;2)用单片机的外部中断0的产生来控制六路彩灯,此处只设计了四种花型。
二、电路原理图:三、源程序如下:#include "reg51.h"#include <intrins.h>void display(unsigned int digital);void delay(unsigned int time);void colour();unsigned shu[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6}; Unsignedled[41]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff,0xdf,0xcf,0xc7,0xc3,0xc1,0xc0,0xc1,0xc3,0xc7,0xcf,0xdf,0xff, 0xf3,0xe1,0xc0,0xe1,0xf3,0xff,0xde,0xcc,0xc0,0xcc,0xdf,0xff, 0xdb,0xed,0xf6,0xed,0xdb,0xff,0xc0,0xff,0xc0,0xff,0xc0,0xff};sbit a=P2^6;sbit b=P2^7;sbit G=P2^0;sbit Y=P2^1;sbit R=P2^2;sbit g=P2^3;sbit y=P2^4;sbit r=P2^5;int flag=0;//全局变量,当它为1时显示彩灯,当它为0时,显示交通灯#define state_1 G=0;Y=1;R=1;g=1;y=1;r=0//主干道绿,支干道红#define state_2 G=1;Y=0;R=1;g=1;y=1;r=0//主干道黄,支干道红#define state_3 G=1;Y=1;R=0;g=0;y=1;r=1//主干道红,支干道绿#define state_4 G=1;Y=1;R=0;g=1;y=0;r=1//主干道红,支干道红void main(void){unsigned int i;EA=1; //首先开启总中断EX0=1; //开启外部中断 0IT0=1; //设置触发方式为下降沿触发while(1){while(flag==0){state_1;for(i=35;i>0;i--)delay(1);state_2;for(i=5;i>0;i--){delay(i);y1=~y1;}state_3;for(i=20;i>0;i--)delay(i);state_4;for(i=5;i>0;i--){delay(i);y2=~y2;}}while(flag==1) colour();}}//显示子程序,实现用两位数码管显示灯亮的时间void display(unsigned int digital){ unsigned int k;unsigned int ge=digital%10,shi=digital/10;//将十位与个位分离for(k=0;k<30000;k++){ a=1;b=0;P0=shu[ge];P0=0;a=0;b=1;P0=shu[shi];P0=0;}}//实现彩灯控制void colour(){ P1=0xff;P3=0x00;P2=0xff;while(1){ unsigned int j;for(j=0;j<41;j++)//循环程序演示四种花型{ P2=led[j];delay(1);} delay(5);}}//中断函数void key_scan() interrupt 0 //关键字"interrupt" ,这是C语言的中断函数表示法,,单片机有6个中断口,外部中断0的优先级最高,在程序里我们只用外部中断0 {flag++;if(flag==2) flag=0;}//延时程序void delay(unsigned int time) //参数time大小决定延时时间长短{ unsigned int j,k;time=time*5;for(j=0;j<time;j++)for(k=0;k<10000;k++);}四、源程序分析1、在电路设计时我用了共阴极八段数码管来显示时间:unsigned shu[10]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};数组中十个数分别表示0到9十个数;2、在设计彩灯时,我直接利用交通灯的主干道和支干道的六个灯设计彩灯:unsignedled[48]={0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xff,0xdf,0xcf,0xc7,0xc3,0xc1,0xc0,0xc1,0xc3,0xc7,0xcf,0xdf,0xff,0xf3,0xe1,0xc0,0xe1,0xf3,0xff,0xde,0xcc,0xc0,0xcc,0xdf,0xff,0xdb,0xed,0xf6,0xed,0xdb,0xff,0xc0,0xff,0xc0,0xff,0xc0,0xff};数组中的48个数共演示了四种花型3、void display(unsigned int digital){ unsigned int k;unsigned int ge=digital%10,shi=digital/10;//将十位与个位分离for(k=0;k<30000;k++){ a=1;b=0;P0=shu[ge];P0=0;a=0;b=1;P0=shu[shi];P0=0;}}显示子程序中将时间的十位与个位分离,用a、b来选择数码管将个位与十位分时输出。
51单片机红绿灯设计报告
51单片机红绿灯设计报告一、引言红绿灯是城市道路交通管理中非常重要的设备,它能够有效地控制车辆和行人的通行,维护交通秩序,提高交通效率。
本报告将介绍一种基于51单片机的红绿灯设计,利用单片机的强大功能,实现了智能化、自动化的红绿灯控制系统。
二、设计原理1.硬件设计本设计使用了51单片机,通过其IO口控制LED灯的亮灭。
红绿灯的控制通过三个IO口分别连接到红、黄、绿三个LED灯,通过控制这三个IO口的电平,实现红绿灯的切换。
2.软件设计设计中使用了C语言进行程序开发。
程序通过设置IO口的状态和延时函数,控制红绿灯的切换和延时时间。
三、电路设计1.电路图电路图给出了51单片机、LED灯和电流限制电阻之间的连接关系。
单片机的P1口连接到红、黄、绿三个LED灯上,通过改变P1口的电平,控制LED的亮灭。
2.电路元件说明-51单片机:中央处理器,负责控制整个系统的运行和信号的处理。
-LED灯:用于显示红、黄、绿三种不同的状态。
-电流限制电阻:用于限制电流大小,保护51单片机和LED灯。
四、程序设计程序设计中,通过无限循环实现红绿灯系统的连续运行,程序中设置了红绿灯切换的时间间隔和黄灯亮灭的时间间隔。
五、实验结果经过测试,本设计能够正常地实现红绿灯的切换,各种状态都能够正确显示。
红灯亮10秒,黄灯亮3秒,绿灯亮15秒,然后循环重复。
六、总结本设计利用51单片机的强大功能,实现了红绿灯的自动切换。
通过控制IO口的电平和延时函数,能够实现红绿灯的各种状态的切换。
该设计简单、实用、可靠,适用于城市交通管理中的红绿灯设备。
51单片机交通灯设计报告
51单⽚机交通灯设计报告课程设计说明书课程名称:《单⽚机技术》设计题⽬:交通灯设计学院:电⼦信息与电⽓⼯程学院学⽣姓名:学号:专业班级:指导教师:课程设计任务书交通灯设计摘要:近年来随着科技的发展,单⽚机的应⽤正在不断深⼊,同时带动传统控制检测技术⽇益更新。
在实时检测和⾃动控制的单⽚机应⽤系统中,单⽚机往往作为⼀个核⼼部件来使⽤,仅单⽚机⽅⾯的知识是不够的,还应该根据具体硬件结构软硬结合,加以完善。
⼗字路⼝车辆穿梭,⾏⼈熙攘,车⾏车道,⼈⾏⼈道,有条不紊,那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的⾃动指挥系统。
交通信号灯控制⽅式很多。
本系统采⽤51系列单⽚机ATMEL89C51为核⼼控制器件来设计交通信号灯控制器,实现亮绿灯通⾏,亮黄灯闪烁并发声警⽰,亮红灯禁⽌通⾏的功能,并显⽰通⾏或禁⽌通⾏倒计时,紧急按键信号灯加时和紧急按键南北、东西红绿灯跳变。
本系统使⽤性强,操作简单,容易实现,扩展功能强,可⾃⾏修改程序扩展⾃⼰想要实现的功能。
关键词:交通灯,单⽚机,复位电路⽬录1. 设计背景 (1)1.1设计原因 (1)1.2个⼈意义 (1)2.设计⽅案 (1)2.1总体⽅案提出 (1)2.2稳压电源⽅案设计与分析 (1)2.3复位电路⽅案设计与分析 (2)3. ⽅案实施 (2)3.1总体设计框图 (2)3.2硬件设计 (3)3.3软件设计 (6)3.4电路仿真 (10)3.5制板⼦与安装过程 (11)3.6软硬件调试 (11)4. 结果与结论 (12)5 收获与致谢 (12)6. 参考⽂献 (12)7. 附件 (13)7.1硬件电路图 (13)7.2元器件清单 (14)7.3作品实物图 (15)7.4源程序: (16)1. 设计背景1.1设计原因随着社会的进步,交通的⾼速发展,红绿灯已经成为了我们⽣活中不可或缺的⼀部分,如今,红绿灯已经安装在各个道路的交接⼝处,已经成为疏导交通车辆最常见和最有效的⼿段。
51单片机 交通灯
实验二交通灯实验一、实验目的a)按键、数码管、发光二极管综合应用编程技术b)数据存储于EEPROM的技术(也可以不使用)c)定时中断技术d)按键中断技术二、实验实现的功能a)对绿黄红灯的时间进行设定。
b)紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。
再按该键,恢复正常显示。
三、系统硬件设计四、系统软件设计#include <stc10.h>#define uchar unsigned char#define uint unsigned int#define N 10//0--F的共阴极字段码表ucharcodevalue[]={0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F,0X77,0X7C,0X39,0X5E,0X79,0X71};uchar Num_Buffer[]={0,0};uchar GT=0,YT=0;RT=0,Operation_Type=1,sec=0,count=0,k=0;sbit P02=P0^2;sbit P03=P0^3;sbit P36=P3^6;sbit P37=P3^7;/************************北方向灯组位定义***************************/ sbit BG=P2^3;sbit BY=P2^4;sbit BR=P2^5;/************************西方向灯组位定义***************************/ sbit XG=P2^0;sbit XY=P2^1;sbit XR=P2^2;/************************南方向灯组位定义***************************/ sbit NG=P3^3;sbit NY=P3^4;sbit NR=P3^5;/************************东方向灯组位定义***************************/ sbit DG=P2^6;sbit DY=P2^7;sbit DR=P3^2;/*******************************************************************/ void delay(uint x) //延时{uchar i;while(x--){for(i=0;i<120;i++);}}void display(uchar n) //显示函数{Num_Buffer[1]=n/10;Num_Buffer[0]=n%10;P0=0XFB;P1=codevalue[Num_Buffer[1]];delay(N);P0=0XF7;P1=codevalue[Num_Buffer[0]];delay(N);}uchar scan_key() //按键扫描程序{uchar i,m;P36=0;P37=1;for(i=0;i<2;i++){delay(N);m=P0;switch(m&0xe0){case 0xc0: k=i*3+1;return k;break;case 0xa0: k=i*3+2;return k;break;case 0x60: k=i*3+3;return k;break;default: break;}P36=1;P37=0;}}void dingshi() //设定绿黄红灯的时间{uchar k;P2=0XFF;P3=0XFF;while(1){display(0); //开始时显示0k=scan_key();if(k==4) //按下4键设定主干道绿灯时间{while(1){display(GT);k=scan_key();if(k==4){ delay(20N);GT++;}if(k==3) //按下3键设定好绿灯时间{ delay(20N);break;}}}else if(k==5) //按下5键设定黄灯时间{while(1){ ;display(YT);k=scan_key();if(k==5){ delay(20N);YT++;}if(k==3) //按下3键设定好绿灯时黄间{ delay(20N);break;}}}else if(k==6) //按下6键设定红灯时间{while(1){display(RT);k=scan_key();if(k==6){ delay(20N);RT++;}if(k==3) //按下3键设定好红灯时间{ delay(20N);break;}}}else if(k==3) //再次按下3键时间设定好返回break;}}void zanting() //暂停程序{ uchar k;k=scan_key();if(k==3) //按下3键暂停{ TR0=0;delay(50N);while(1){BG=1;BY=1;BR=0;NG=1;NY=1;NR=0; //东西南北红灯都亮XG=1;XY=1;XR=0;DG=1;DY=1;DR=0;k=scan_key();if(k==3) //再次按下3键开始{delay(50N);break;}}}}void yunxing() //运行程序{ uchar i;delay(50N);while(1){switch(Operation_Type){case 1://东西向绿灯与南北向红灯亮sec=GT;while(1){if(sec>-1){TR0=1;display(sec);BG=1;BY=1;BR=0;NG=1;NY=1;NR=0;XG=0;XY=1;XR=1;DG=0;DY=1;DR=1;zanting();}else{TR0=0;Operation_Type=2;break;}}break;case 2://东西向黄灯亮5s,绿灯关闭sec=YT;while(1){if(sec>-1){TR0=1;BG=1;BY=1;BR=0;NG=1;NY=1;NR=0;XG=1;XY=~XY;XR=1;DG=1;DY=~DY;DR=1;for(i=0;i<50;i++) //以数码管显示来延时{display(sec);}zanting();}else{TR0=0;Operation_Type=3;break;}}break;case 3://东西向红灯,南北向绿灯亮sec=RT;while(1){if(sec>-1){TR0=1;display(sec);BG=0;BY=1;BR=1;NG=0;NY=1;NR=1;XG=1;XY=1;XR=0;DG=1;DY=1;DR=0;zanting();}else{TR0=0;Operation_Type=4;break;}}break;case 4://东西向红灯亮,南北向黄灯亮5ssec=YT;while(1){if(sec>-1){TR0=1;BG=1;BY=~BY;BR=1;NG=1;NY=~NY;NR=1;XG=1;XY=1;XR=0;DG=1;DY=1;DR=0;for(i=0;i<50;i++){display(sec);}zanting();}else{TR0=0;Operation_Type=1;break;}}}}}void shan(){P2=0XB6;P3=0X37;delay(5N);P2=0X6D;P3=0X2F;delay(5N);P2=0XDB;P3=0X1B;delay(5N);}main(){P1M0=0XFF;P1M1=0X00;TMOD=0X01; //定时器T0,工作方式1TH0=-50000/256; //定时器T0赋初值TL0=-50000%256;EA=1; //开总中断ET0=1; //定时器T0中断允许while(1){P02=1;P03=1;shan(); //开始时二极管闪烁scan_key();if(k==1)dingshi();if(k==2)yunxing();}}void timer0(void) interrupt 1{TH0=-50000/256;TL0=-50000%256;count++;if(count==20){count=0;sec--;}}五、实验过程中遇到的问题及解决方法问题1:将各路口的灯用P2,P3口赋值来表示,显示乱码解决:直接对每个灯进行位定义,然后直接赋值,这样简单明了易查错,而且对按键扫描程序没有任何影响问题2:设定的时间走到1直接显示下一个灯的时间,没有显示0解决:检查发现在执行时if(sec>0),改成if(sec>-1)运行正常问题3:黄灯闪烁程序为XG=1;XY=~XY;XR=1;DG=1;DY=~DY;DR=1;发现运行时黄灯不闪烁,一直为黄色解决:因为运行时执行指令的速度较快,导致黄灯的熄灭人的眼睛无法识别,加延时函数delay(5N)既可,当加入延时函数又出现了新的问题,即数码管显示不连续,有的位显示一直闪烁,分析问题在于当加入延时函数后影响了数码管的扫描频率,数码管是动态显示的,靠的就是快速移位显示来显示4为数码管,将延时函数用数码管显示程序来代替,保证了数码管的显示,又解决了黄灯的闪烁问题。
单片机交通灯实验报告
单片机交通灯实验报告实验目的:1.熟悉单片机的基本工作原理和编程方法。
2.学习如何使用单片机控制交通灯的运行。
3.加深对电子元器件和电路原理的理解和掌握。
实验器材:1.51系列单片机开发板:包括单片机主控板、显示器板、外部扩展板等。
2.LED灯:红色、黄色、绿色各一颗。
3.电阻:用于限流。
4.连接线:用于连接各个电子元器件。
实验原理:在交通中,红灯代表停止、黄灯代表警告、绿灯代表通行。
在本实验中,我们将使用单片机控制三个LED灯实现交通灯的运行。
具体原理如下:1.使用单片机的IO口控制LED灯的亮灭。
2.根据交通灯的运行状态,通过改变LED灯的亮灭顺序来模拟交通的运行。
实验步骤:1.连接电路:将三个LED灯连接到单片机的IO口,并通过电阻限流。
2.编写程序:使用C语言编写程序,在主函数中设置交通灯的运行状态和亮灭顺序。
3.烧写程序:将编写好的程序烧写到单片机中。
4.运行实验:启动单片机,观察LED灯的亮灭情况,验证交通灯是否能正常工作。
实验结果:经过实验,我们成功地实现了单片机交通灯的控制。
在程序运行过程中,红灯先亮,表示停止;然后黄灯亮,表示警告;最后绿灯亮,表示通行。
整个过程循环不断,符合实际交通灯的运行规律。
实验总结:通过这次实验,我深入了解了单片机的基本工作原理和编程方法,掌握了使用单片机控制交通灯的技巧。
同时,我也加深了对电子元器件和电路原理的理解和掌握。
这些知识将对我今后的学习和工作产生积极影响。
然而,在实验过程中也遇到了一些问题。
比如,如果LED灯连接不正确或程序编写有误,交通灯可能无法正常运行。
因此,在进行单片机实验时,我们需要仔细检查电路连接和程序编写,确保一切正常。
总之,单片机交通灯实验是一次充满趣味和挑战的实践活动。
通过这次实验,我不仅学到了许多知识,而且培养了动手能力和实践能力。
希望将来能有更多这样的实验机会,继续提升自己的电子技术水平。
51单片机c语言交通灯设计报告
xxxxxxxxx基于AT89S52交通灯设计学院:电子信息工程专业班级: xxxxxxxxxxxxxx姓名: xx xx学号: xxxxxxxxxxx指导老师: xxxxxxxxxx摘要交通灯在我们日常生活中随处可见,它在交通系统中处于至关重要的位置。
交通灯的使用大大减少了交通繁忙路口的事故发生,给行人和车辆提供一个安全的交通环境,人们的生命和财产安全有了保障。
本设计旨在模拟十字路口的交通灯,以AT89S51单片机为基础,结合按键和数码管等元器件设计出一个简单且完全的交通灯系统。
关键词:交通灯 AT89S52 单片机目录一、设计任务 (4)二、AT89S52单片机及其他元器件简介 (4)(1)AT89S52单片机 (4)三、系统硬件电路设计 (6)(1)时钟电路设计 (6)(2)复位电路设计 (6)(3)灯控制电路设计 (7)(4)按键控制电路设计 (7)四、元件清单及实物图 (8)1、程序清单 (8)2、原理图 (9)五、实验心得 (9)附1 源程序代码 (10)附2 原理图 (16)一、设计任务(1)、设计一个十字路口的交通灯控制电路,要求南北方向和东西方向两条交叉道路上的车辆交替运行,每次通行时间都设30秒,时间可设置修改。
(2)、在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道,且黄灯亮时,要求每秒亮一次。
(3)、有紧急车辆要求通过时,系统要能禁止东西和南北两条路上所有的车辆通行。
二、AT89S52单片机及其他元器件简介(1)AT89S52单片机AT89S52是一种低功耗、高性能CMOS8位微控制器。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6位向量2级中断结构,全双工串行口,片内晶振及时钟电路。
基于AT89C51单片机的交通灯实验报告
*实现基于C51的交通信号灯的控制操作
*使用器件->>
* 1.74HC138用于控制LED的位选码的设定
* 2.T0->>实现一个时间的定时操作(设置为10ms)
* 3.P0->>作为LED现实的断码输出端
* 4.P1->>作为LED交通灯的信号灯的控制端
* 5.P2->>作为74HC138的为选码的控制端
//红灯跳转到绿灯
SN_RED = 0;
SN_YELLOW = 1;
SN_GREEN = 0;
SN_IFGREEN = 1;
}
}
void east_west(){
if(EW_IFGREEN && LEDTIME == 5){
//绿灯跳转到黄灯的变换
EW_RED = 0;
EW_YELLOW = 1;
EW_GREEN = 0;
EW_GREEN = 1;
EW_IFGREEN = 1;
}
}
void led_show(){
int height_LED = LEDTIME/10;//高10位
int litter_LED = LEDTIME%10;//低10位
//南北方向的时间跳变控制
PA = 1;
PB = 1;
PC = 1;
P0 = LED_TABLE[litter_LED];//低10位
//东西方向的交通灯的操作控制
void east_west();
//LED时间显示的操作控制
void led_show();
//复位系统
void reset_SYS() interrupt 0{
51单片机控制的交通灯系统实验报告
系统实验报告——基于51单片机的交通灯设计专业:XX学生姓名:xx XX学号:***********指导教师:wwwwwwwwwww2000年x月x日目录1 设计任务和性能指标 (1)1.1设计任务 (1)1.2性能指标 (1)2 设计方案 (2)2.1任务分析 (2)2.2方案设计 (2)3 系统硬件设计 (3)3.1单片机的最小系统 (3)3.2电源电路 (4)3.3数码管显示时间电路设计 (4)3.4信号灯控制电路设计 (5)4 系统软件设计 (5)4.1主程序设计 (5)5 调试及性能分析 (6)5.1调试分析 (6)5.1.1 软件调试 (6)5.1.2 硬件调试 (6)5.1.3 系统功能调试 (6)6 心得体会 (6)参考文献 (8)附录1 系统原理图 (9)附录3 程序清单 (10)附录3元器件清单 (14)1 设计任务和性能指标1.1设计任务利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
用红、绿、黄发光二极管作信号灯。
如图上图所示。
设东西向为主干道,南北为支干道。
1.2性能指标1. 状态1:仅亮灯,数码管不工作。
按下键4,红/黄/绿三色灯交替亮:红—〉(20秒)黄(闪烁)—〉(5秒)绿—〉(20秒) 黄(闪烁)—〉(5秒)红2. 状态2:灯和数码管相结合,模拟十字路口的交通灯 在以上功能的基础上数码管倒计时显示时间。
南东2 设计方案2.1任务分析模拟交通灯控制器就是使用单片机来控制一些LED 和数码管,模拟真实交通灯的功能。
红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通,计时牌显示路口通行转换剩余时间等2.2方案设计根据设计的要求可知,系统的硬件原理框图如下图所示。
单片机键盘LED 显示三色指示灯系统硬件框图单片机选用A T89S52,它与8051系列单片机全兼容,但其内部带有4KB 的FLASH R OM ,设计时无需外接程序存储器,为设计和调试带来极大的方便。
51单片机综合实验交通灯设计报告
51单片机综合实验交通灯设计报告班级:学生姓名:学号:指导教师:一实验题目交通灯控制系统设计二实验目的1、学会用8051单片机开发简单的计算机控制系统;2、学会用汇编语言和C语言开发系统软件;3、学会8051单片机开发环境wave或Keil uVision3软件的使用;4、学会Proteus软件的使用方法,会用Proteus单片机系统进行仿真;5、学会Protel软件的使用方法,会用Protel绘制电气原理图和印制板图;6、熟悉七位数码管显示的使用方法;7、了解交通灯控制系统的基本组成。
三实验要求交通灯处在十字路口上。
它有红﹑黄﹑绿三种颜色的灯组成。
红灯亮时道路上的车辆停止运行;黄灯是一种过渡用的信号灯,当它亮时,表示道路上的红绿色信号灯即将进行转换。
下面拿东西南北四个方向来说明。
当东西方向允许行车(或者左转)的时候,南北方向就禁止行车,即此时东西方向的绿灯亮红灯灭,而南北方向的绿灯灭红灯亮。
反之当南北方向允许行车(或者左转)的时候,东西方向就禁止行车,即此时南北方向的绿灯亮红灯灭,而东西方向的绿灯灭红灯亮。
交通灯配置示意图如图1所示。
同时当有特殊的情况发生时,能手动控制各个方向的信号灯。
设计任务就是将这一电路用单片机来实现具体的控制。
1 十字路口交通灯配置示意图四设计内容与原理为了在后面的分析中便于说明,将南北方向允许直行命名为状态1,南北方向允许左转命名为状态2,南北方向行车到东西方向行车的转换阶段命名为状态3,将东西方向允许直行命名为状态4,东西方向允许左转命名为状态5,东西方向行车到南北方向方向行车的转换阶段命名为状态6。
假定直行绿灯点亮的时间为25s,左转绿灯点亮的时间为20s,黄灯点亮的时间为5s,则对方红灯的点亮时间为50秒。
黄灯每隔500ms亮一次,之后灭500ms (亮灭一次叫作闪烁一次),一共闪烁5次,持续5s。
各个状态之间的变换情况如下:具体显示周期如下:图2交通信号灯点亮时间图设计电路中每个路口的控制信号灯应有四个,即绿灯两个、黄灯、红灯各一个,同时需要七段数码管一个。
51单片机十字路口红绿灯实验报告
51单片机十字路口红绿灯实验报告引言交通灯是城市交通管理的重要组成部分,而红绿灯是其中最为基本最常见的道路交通信号标志,在现代城市交通系统中得到广泛应用。
那么如何用单片机来设计实现十字路口红绿灯系统呢?本次实验就是为了解决这个问题,实验主要是通过进行对单片机的应用,来探讨单片机在红绿灯系统中的应用。
材料和方法材料:1. 51单片机开发板;2. LED灯,包括3颗红色LED灯、3颗黄色LED灯和3颗绿色LED灯;3. 电阻和跳线;4. 电源适配器。
方法:1. 根据给定的原理图,搭建电路;2. 将单片机与PC机连接,使用Keil和Proteus软件进行编程;3. 连接电源适配器,测试红绿灯系统是否正常工作。
结果与分析本实验通过对给定原理图的电路进行搭建,采用Keil和Proteus软件编程能够将单片机应用于红绿灯系统。
在开发板的数码管和LED灯上,按照预设的顺序可以实现红绿灯的交替亮灭。
当实验中的按钮按下时,系统会从红灯状态切换到绿灯状态,此时绿灯亮起,同时其他颜色的灯都与此时相应的状态相符合。
当绿灯时间到期后,系统会再次切换回红灯状态,并且重新计时。
总的时间是通过函数Delay()语句来实现的。
在实验过程中,我们还修改了程序的部分代码来满足实际道路交通的需求,例如:红绿灯通过倒计时来提示司机剩余时间,同时也可以通过按钮手动操作绿灯实现车道管制等。
该实验在不断的调试过程中得以成功完成。
通过制定的方法和步骤,我们了解了单片机在红绿灯等交通工具中的实际应用,并且得出了相对稳定的实验结果,颇有启示和借鉴意义。
结论在本次实验中,我们成功地将51单片机应用于红绿灯交通系统中,实现了红绿灯状态的正确切换和时间控制。
实验结果表明,通过单片机的编程使红绿灯系统更为灵活和可靠,并且能够满足实际道路交通需求。
将单片机技术应用于红绿灯系统中,将是未来道路交通发展的趋势。
进一步的研究表明,单片机技术的应用将为城市道路交通管理、交通流量控制和空气质量监测等各个方面提供更安全、更快捷、更可靠的解决方案。
基于51单片机的交通灯(红绿灯)设计论文报告
利用“自动控制”控制交通灯的方法。将事先编制好的程序输入单片机,利用单片机的定时、查询、中断功能;能够根据十字路口两个方向上车辆动态状况,采用查询的方式,根据具体情况,自动给予时间通行,其中利用中断方式来处理特殊情况。这样既方便驾驶员、路人,同时还可以紧急处理一些紧急实况。同样具有红、黄、绿灯的显示功能,为驾驶员、路人“照明”。
电阻
470Ω
8
数码管电路
电阻
1K
7
数码管驱动、按键电路
数码管
GC-3461BS
1
显示电路
微动开关
3
按键电路
三级管PNP
8550
4
数码管驱动电路
表1-1
2)2位8段数码管工作原理:
2位8段数码管电路采用“共阴”连接,阴极公共端(COM)由晶体管推动。如图4-3所示:
段码和位码,段码即段选信号 SEG,它负责数码管显示的内容,图中 a~g、dp组成的数据(a 为最低位,dp 为最高位)就是段码。位码即位选信号 DIG,它决定哪个数码管工作,哪个数码管不工作。当需要某一位数码管显示数字时,只需要先选中这位数码管的位信号,再给显示数字的段码。
IE0 = 1;//启动外部中断0
PX0 = 1;
EX1=1;
IE1=1;
EA = 1; //开总中断
}
void int0(void) interrupt 0//外中断0
{
flag = 0;
led_data_temp = P0;
t0 = 20;
if(!int0_key)
{
delayms(10);
if(!int0_key)
4、交通灯输出控制模块
道口交通灯指示采用高亮度红、黄、绿发光二极管进行提示。
c51单片机交通灯课程设计实习总结
c51单片机交通灯课程设计实习总结下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。
文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by the editor. I hope that after you download them, they can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, our shop provides you with various types of practical materials, such as educational essays, diary appreciation, sentence excerpts, ancient poems, classic articles, topic composition, work summary, word parsing, copy excerpts, other materials and so on, want to know different data formats and writing methods, please pay attention!C51单片机交通灯课程设计实习总结交通信号灯在城市的道路交通管理中扮演着至关重要的角色,它们不仅能够有效地引导车辆和行人,还能提高交通效率和安全性。
基于51单片机的交通灯设计论文报告
基于51单片机的交通灯设计论文报告交通灯(红绿灯)是城市交通系统中非常重要的一部分,它在控制交通流量以及确保道路安全方面发挥着关键作用。
随着科技的不断发展,交通灯的设计也越来越智能化和高效。
本篇论文将以51单片机为基础,设计一种基于51单片机的交通灯系统,包括电路设计、程序编写以及系统的实现。
首先,我们需要设计电路来实现交通灯系统。
基于51单片机的交通灯系统通常由红灯、黄灯和绿灯组成。
电路的设计要求能够控制灯的亮灭以及灯的颜色变换。
我们可以使用三个LED灯作为交通灯的灯泡,通过控制灯泡的亮灭来实现交通灯的变化。
使用适当的电阻和电容来限制电流和滤波。
接下来,我们需要编写程序来控制交通灯的变换。
通过使用51单片机的GPIO引脚,可以直接控制LED灯的亮灭。
在程序中,我们需要设置灯的亮灭时间以及灯的切换时机。
通过使用定时器和中断来实现定时控制,可以让灯在规定的时间内变换。
在系统的实现中,我们需要将电路和程序进行整合。
将电路连接到单片机上相应的引脚上,并通过编写程序来控制引脚的电平变化。
同时,我们还可以加入人体红外传感器等外设来实现智能控制,例如通过检测车流量来调节交通灯变换的时间。
在设计交通灯系统时,还需要考虑到系统的可靠性和稳定性。
我们可以通过电路设计上的合理选择和优化来降低系统的故障率,并确保系统能够长时间稳定运行。
通过基于51单片机的交通灯系统设计与实现,可以有效控制交通流量、提高交通效率,并确保道路的安全性。
同时,该系统还具有灵活性和可扩展性,可以根据实际需要进行调整和升级。
综上所述,本论文基于51单片机设计了一种交通灯系统。
通过电路设计、程序编写以及系统的实现,可以实现交通灯的控制和变换。
该系统具有智能化、高效性和稳定性等特点,有助于提高交通管理水平和道路安全。
51单片机c语言交通灯设计报告
xxxxxxxxx基于AT89S52交通灯设计学院:电子信息工程专业班级:xxxxxxxxxxxxxx姓名:xx xx学号:xxxxxxxxxxx指导老师:xxxxxxxxxx摘要交通灯在我们日常生活中随处可见,它在交通系统中处于至关重要的位置。
交通灯的使用大大减少了交通繁忙路口的事故发生,给行人和车辆提供一个安全的交通环境,人们的生命和财产安全有了保障。
本设计旨在模拟十字路口的交通灯,以AT89S51单片机为基础,结合按键和数码管等元器件设计出一个简单且完全的交通灯系统。
关键词:交通灯AT89S52 单片机目录一、设计任务 (4)二、AT89S52单片机及其他元器件简介 (4)(1)AT89S52单片机 (4)三、系统硬件电路设计 (6)(1)时钟电路设计 (6)(2)复位电路设计 (6)(3)灯控制电路设计 (7)(4)按键控制电路设计 (7)四、元件清单及实物图 (8)1、程序清单 (8)2、原理图 (9)五、实验心得 (9)附1 源程序代码 (10)附2 原理图 (16)一、设计任务(1)、设计一个十字路口的交通灯控制电路,要求南北方向和东西方向两条交叉道路上的车辆交替运行,每次通行时间都设30秒,时间可设置修改。
(2)、在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道,且黄灯亮时,要求每秒亮一次。
(3)、有紧急车辆要求通过时,系统要能禁止东西和南北两条路上所有的车辆通行。
二、AT89S52单片机及其他元器件简介(1)AT89S52单片机AT89S52是一种低功耗、高性能CMOS8位微控制器。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6位向量2级中断结构,全双工串行口,片内晶振及时钟电路。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
系统实验报告学院XXXXXXXXX专业XXXXXX姓名XXXXX学号XXXXXXX一、本设计拟实现的功能1.时钟:四只数码管低二位0~59计数后给高二位0~59计数(即分秒计时),一只按键控制开始、结束;2.交通灯:灯和数码管结合,模拟十字路口的交通灯的点亮与熄灭,数码管倒计时显示时间。
二、所用器件的功能、引脚图1.所用器件:AT89S51、74LS47、LM70852.所用器件功能、引脚图a)AT89S51AT89S51引脚图AT89S51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,AT89S51在众多嵌入式控制应用系统中得到广泛应用。
主要性能特点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、低功耗的闲置和掉电模式。
b) 74LS4774LS47引脚图74LS47真值表74LS47是一种常用的BCD--七段数码管译码器驱动器,74LS47的输入端是四位二进制信号(8421BCD码),a、b、c、d、e、f、g是七段译码器的输出驱动信号,低电平有效。
可直接驱动共阴极七段数码管,是使能端,起辅助控制作用。
使能端的作用如下:(1) LT是试灯输入端,当 LT=0, BI=1时,不管其它输入是什么状态,a~g七段全亮;(2)BI静态灭灯输入,当 BI=0,不论其它输入状态如何,a~g 均为0,显示管熄灭;(3)RBI动态灭零输入,当 LT=1, RBI=0时,如果 A3A2A1A0(ABCD)=0000时,a~g均为各段熄灭;(4) RBO动态灭零输出,它与灭灯输入BI 共用一个引出端。
当在动态灭零时输出才为0。
片间与 RBI配合,可用于熄灭多位数字前后所不需要显示的零。
c) LM7805LM7085引脚图7805是常用到的稳压芯片,外围电路简单,输出电压为5V,可为51单片机提供工作电压。
三、软件设计流程图四、源程序#include <reg51.h>#define uchar unsigned char#define uint unsigned int#define TH_SET 0x4C#define TL_SET 0x00 //定时50ms的初始值#define RTime 24 // 红灯时间20s#define GTime 24 // 绿灯时间20s#define YTime 3 //黄灯时间5ssbit KEY_A=P1^0;sbit KEY_B=P1^1;sbit GREEN1=P2^0;sbit GREEN2=P2^3;sbit RED1=P2^1;sbit RED2=P2^4;sbit YELLOW1=P2^2;sbit YELLOW2=P2^5;//位定义bit key1=0,key2=0;//四个按键状态标志uint time1,time2;//time1,time2分别为键1、键2功能实现的时间变量uchar acount,keyflag,Status=1,yellow=0;//acount定时一秒标志//Status交通灯状态显示标志,keyflag按键选择标志,P黄灯闪烁定时标志void Delay(int n){ //延时程序uint i;uint j;for(i=0;i<n;i++){for(j=0;j<200;j++);}}//定时器0void Timer0_SVR() interrupt 1{TH0=TH_SET;TL0=TL_SET;acount++;if(KEY_A==0){//按键扫描实现暂停和按键切换Delay(2);if(KEY_A==0){key1=~key1 ;keyflag=1;while(!KEY_A);}}if(KEY_B==0){Delay(2);if(KEY_B==0){key2=~key2 ;keyflag=2;while(!KEY_B);}}if(acount==20){//IntCount=20定时一秒acount=0; //定时一秒恢复if(keyflag==1){if(key1==1){//按下键1使交通灯显示时间自减time1--;if(time1==0){Status++;//显示时间为零时,切换交通灯状态 if(Status==5){Status=1;}}}}if(keyflag==2){if(key2==1){time2++; //按下键2时计时器时间自增if(time2==3600){//计时满一小时时归零time2=0;}}}}EA=1;}//计时器数码管显示函数void xianshi1(void){P0=time2/600+0x10;Delay(2); //分的十位P0=(time2/60%10)+0x20;Delay(2); //分的个位P0=((time2%60)/10)+0x40;Delay(2); //秒的十位P0=(time2%60%10)+0x80;Delay(2); //秒的个位}//交通灯数码管显示函数void xianshi2(void){P0=(time1/10)+0x50;Delay(2); //秒的十位P0=(time1%10)+0xA0;Delay(2); //秒的个位 yellow++;}//计数器状态函数void Count(){time2=0;key2=1;P2=0x80;while(1){if(keyflag==2){xianshi1();}elsebreak;}}//交通灯状态函数void TraLight(void){key1=1;time1=0;P2=0x80;while(1){if(Status==1&&time1==0){//Status=1时南北向红绿灯亮RED1=0;RED2=1;YELLOW1=0;YELLOW2=0;GREEN1=1;GREEN2=0;time1=GTime;}if(Status==2&&time1==0){//Status=2时黄灯闪烁RED1=0;RED2=0;YELLOW1=1;YELLOW2=1;GREEN1=0;GREEN2=0;time1=YTime;}if(Status==3&&time1==0){//Status=3时东西向红绿灯亮RED1=1;RED2=0;YELLOW1=0;YELLOW2=0;GREEN1=0;GREEN2=1;time1=RTime;}if(Status==4&&time1==0){//Status=4时黄灯闪烁RED1=0;RED2=0;YELLOW1=1;YELLOW2=1;GREEN1=0;GREEN2=0;time1=YTime;}if(yellow==50&&key1){//Status=2或4时为黄灯,实现闪烁if(Status==2||Status==4){yellow=0;YELLOW1=~YELLOW1; YELLOW2=~YELLOW2; }}if(keyflag==1){xianshi2();}elsebreak;}}void choose(void){switch(keyflag){case 1:TraLight();break;// 按键1case 2:Count();break; // 按键2default: break;}}//主函数void main(){//初始化定时器0EA=1;ET0=1;TMOD=0x01;TH0=0x4c;TL0=0x00;P2=0x80;if(KEY_A==0){ //按键扫描实现暂停和切换Delay(5);if(KEY_A==0){key1=~key1 ;keyflag=1;while(!KEY_A);}}if(KEY_B==0){Delay(5);if(KEY_B==0){key2=~key2 ;keyflag=2;while(!KEY_B);}}TR0=1;while(1){choose();}}六、已实现的功能1.KEYA:交通灯灯和数码管结合,模拟十字路口的交通灯的点亮与熄灭,数码管倒计时显示时间。
亮灯方式:红(20s)黄(闪烁5s)绿(20s)黄(闪烁5s)红(20s)数码管显示方式:南北向红绿灯20s 黄灯闪烁5s东西向红绿灯20s 黄灯闪烁5s南北向红绿灯20s按下KEYA可实现计时与红绿灯暂停2.KEYB:计时器四只数码管低二位0~59计数后给高二位0~59计数(即分秒计时)按下KEYB可实现计时器暂停七、调试过程步骤1:运行Keil uVision3新建工程并将程序代码输入,编译无错误后生成HEX文件。
步骤2:将HEX文件通过专业烧录软件烧录到AT89S51芯片中。
步骤3:上电按键操作,看是否符合设计要求。
步骤4:根据上电操作结果修改程序,并再次烧录调试,直至满足设计要求为止。
八、心得小结在焊接电路板的时候需要认真仔细,焊接时要先焊接体积较小的元器件,再焊接较大的元器件,这样比较方便,同时要看清三极管,排阻,二极管等带有方向性元器件,不要搞错方向,对于焊锡的把握适量即可,太多或太少都会导致虚焊。
在编写程序的过程中,最重要的是想好框架,然后从小处入手,先完成每个按键的功能,均能实现后,再将各个功能统筹在一起,这样程序不但简单易读还不容易出错。
当然在写程序的过程中也遇到了一些问题,比如在实现计时器功能时,每次计时到4分15秒时就归零了,后来发现原来是计时器中的计时变量time2用的是char型,而char型的计数范围为0——255,后来将char改为int型后,这个问题就得到了解决。
总之对于程序的调试最重要的还是反复的去尝试和分析问题的可能性,一步步的解决它,这样总是能完成任务的。