51单片机c语言交通灯设计报告

合集下载

基于51单片机设计的交通灯报告书

基于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;}项目小结:本项目程序主要包括四部分:主函数、延时函数、数码管显示函数、中断函数。

单片机c语言程序设计---C51-交通灯实验报告

单片机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单片机交通灯设计报告

课程设计说明书课程名称:《单片机技术》设计题目:交通灯设计学院:电子信息与电气工程学院学生姓名:学号:专业班级:指导教师:2017年4 月20日课程设计任务书交通灯设计摘要:近年来随着科技的发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。

在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面的知识是不够的,还应该根据具体硬件结构软硬结合,加以完善。

十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊,那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。

交通信号灯控制方式很多。

本系统采用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单片机控制的交通灯系统实验报告

51单片机控制的交通灯系统实验报告

v c3
v c4
NUMD 6
NUMC 2
D
C
11
c
12
1R2505
c b
b
1 50
e
c
d
e
c
d
e
c
d
e
c
d
NUMB 1 B
NUMA 7 A
13 a
1 50 R2 6
a 1 50
e dcom
cdp
e dcom
cdp
e dcom
cdp
e dcom
cdp
7 4LS4 7
R2 7
DOT
dp
12 34 5 123 45
} void display(uchar south_dispnum,uchar east_dispnum> {
uchar south_dispnum1,south_dispnum2 。 uchar east_dispnum1,east_dispnum2。 south_dispnum1=south_dispnum/10 。 south_dispnum2=south_dispnum%10 。 east_dispnum1=east_dispnum/10 。 east_dispnum2=east_dispnum%10。 smgwe1=1 。 smgwe2=0 。 smgwe3=0 。 smgwe4=0 。 num_d=south_dispnum1/8 。 num_c=south_dispnum1%8/4 。 num_b=south_dispnum1%4/2 。 num_a=south_dispnum1%2 。 delay_ms(1> 。 smgwe1=0 。 smgwe2=1 。 smgwe3=0 。 smgwe4=0 。 num_d=south_dispnum2/8 。 num_c=south_dispnum2%8/4 。 num_b=south_dispnum2%4/2 。 num_a=south_dispnum2%2 。 delay_ms(1> 。 smgwe1=0 。 smgwe2=0 。 smgwe3=1 。 smgwe4=0 。 num_d=east_dispnum1/8 。 num_c=east_dispnum1%8/4 。 num_b=east_dispnum1%4/2 。 num_a=east_dispnum1%2。 delay_ms(1> 。 smgwe1=0 。

基于51单片机的模拟交通灯课程设计报告

基于51单片机的模拟交通灯课程设计报告

模拟交通灯控制系统的设计一、功能要求利用红、绿、黄三种不同颜色的LED显示不同的通行情况,利用2个数码管进行1秒倒计时显示,最大定时时间为90秒;要求LED点亮时间和倒计时时间准确;完成单片机最小系统及其扩展设计,焊接电路板,组成功能完整的样机。

模拟实际交通灯控制系统功能,完成控制软件的编写与调试。

二、方案论证采用标准AT89C51单片机作为控制器;东、西、南、北各方向通行倒计时显示采用2位LED数码管,LED显示采用直接驱动方式;模拟交通信号灯采用直径为ψ5mm的圆形发光二极管;紧急车辆通行采用实时中断完成;通过蜂鸣器实现盲人提示功能。

按以上系统构架设计,单片机端口资源刚好满足要求,该系统设计方便,电路简单。

三、系统硬件电路的设计整套电路系统由控制系统模块、通行灯控制显示模块、时间显示模块、特种车辆通行控制模块和盲人提示电路模块等组成。

1、主控制系统主控制器采用AT89C51单片机的P1.0~P1.5脚用于控制东西及南北方向的通行灯,P1.6脚用于控制盲人提示电路;P0口及P2 口用于4组2位LED计时器的控制;特种车辆通过时使用外部中断0口(P3.2).5、盲人提示电路模块道口控制系统设计中也考虑到了方便盲人过人行道的声音提示电路,采用蜂鸣器作为声括信号灯提示、数码管倒计时显示、盲人提示功能和紧急车辆通行功能等)。

1、初始化程序初始化程序主要包括声明IO口的连接对象、声明7段LED数码管驱动信号数组、声明基本变量、定义无返回函数(延时函数)。

2、主程序主程序主要负责总体程序管理功能,实现信号灯显示与数码管倒计时显示,以及蜂鸣器提示和特种车通行提示。

主程序流程图如下子程序流程图如下状态1状态2状态4 状态5五、调试及性能分析1、硬件部分首先应用Proteus软件对电路原理图进行检查,检查无误后进行焊接,焊接结束后利用万用表检查线路是否为通路。

2、软件部分首先应用keil u4软件对程序进行编译和调试,调试成功后,利用Proteus 软件进行在线仿真,经过对程序多次地修改后,仿真效果达到了预期的要求。

基于C51单片机的简单交通灯系统设计课程设计报告书

基于C51单片机的简单交通灯系统设计课程设计报告书

课程设计报告书所属课程名称单片机原理与接口技术题目基于C51单片机的简单交通灯系统设计分院机电学院目录一、课程设计任务书 (1)二、总体设计 (2)(一)单片机交通控制系统方案的比较、论证 (2)(二)单片机交通控制系统总体设计 (2)三、智能交通灯控制系统的硬件设计 (5)(一)AT89C51单片机简介 (5)(二)交通灯中的中断处理流程 (8)(三)系统硬件总电路构成及原理 (8)四、程序设计 (10)(一)程序主体设计流程 (10)(二)理论基础知识 (11)(三)子程序模块设计 (12)(四)系统软件调试 (13)五、程序调试及结果分析 (15)(一)总体设计程序 (15)(二)PROTUES仿真模拟及模拟图 (17)六、总结 (19)七、参考文献 (20)一、课程设计任务书课程设计题目:基于C51单片机的简单交通灯系统设计课程设计时间:自 2012年 07 月 02日起至 2012 年 07 月 13日。

课程设计要求:我们本次模拟系统由单片机硬/软件系统、LED灯显示系统和复位电路控制电路等组成,较好的模拟了交通路面的控制。

(1)分析目前交通路口的基本控制技术以及各种通行方案,并以此为基础提出自己的交通控制的初步方案。

(2)确定系统交通控制的总体设计,包括,十字路口具体的通行禁行方案设计以及系统应拥有的各项功能。

(3)进行LED灯状态电路,按键电路的设计和对各器件的选择及连接,大体分配各个器件及模块的基本功能要求。

(4)进行软件系统的设计,对于本系统,我们采用单片机汇编语言编写,对单片机内部结构和工作情况做了充足的研究,了解定时器,中断以及延时原理,总体上完成了软件的编写。

学生签名:年月日课程设计评阅意见评阅教师:2012年月日二、总体设计(一)单片机交通控制系统方案的比较、论证1、电源提供方案为使模块稳定工作,须有可靠电源。

因此考虑了两种电源方案:方案一:采用独立的稳压电源。

此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。

c51单片机交通灯课程设计实习总结

c51单片机交通灯课程设计实习总结

During my internship at the embedded systems department, I got to dive into the exciting world of traffic lights! I was given the super fun task of creating a traffic light system using the c51 microcontroller. This project was all about getting hands-on experience in programming and connecting hardware with the cool c51 microcontroller. It was like taking all the stuff I learned in my classes and bringing it to life in a real-world project. Plus, I got to boost my skills in designing and programming embedded systems. It was a blast!在嵌入式系统系实习期间,我要潜入令人兴奋的交通灯光世界!我被赋予了超级有趣的任务,用c51微控制器创建交通灯系统。

这个计划完全是为了获得编程和连接硬件与酷C51微控制器的亲身体验。

这就像把我在课堂上学到的所有东西带到现实世界的项目中去。

我还要提升我设计和编程嵌入式系统的技能。

简直是爆炸!I dove headfirst into the world of programming, starting with mastering the ancient art of the C programming language. I delved deep into the mysterious inner workings of the c51 microcontroller, unraveling its secrets and learning how to bend it to my will. I tinkered with registers, teased timers, and danced with interrupts, all in the pursuit of mastering the traffic light system.But that was just the beginning! I also took on the challenge of understanding the enigmatic art of multiplexing in LED displays. It was like discovering a hidden language, and I was determined to be fluent in it. And as if that wasn't exciting enough, I delved into the wild world of interfacing the microcontroller with other hardwareponents, from sensors to relays.With the guidance of my trusty mentor, I embarked on the epic quest of designing a circuit diagram that would make Da Vinci himself proud. We scoured the lands for the perfect hardwareponents, carefully selecting each one like treasure hunters seeking out hidden gems. And with our powersbined, we were ready to bring our creation to life!我首先跳进编程世界,从掌握C编程语言的古老艺术开始。

51单片机综合实验交通灯设计报告

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.设计方案1.1总体设计方案(电子1232刘凌志19)总体设计方案构思采用定时加中断控制的方式进行,对两个方向车辆的通行时间分别计时,可随意进行更改双向的通行时间。

具体要求如下:1).东西方向车辆放行60秒钟。

即东西方向绿灯和南北方向的红灯同时点亮1分钟;2).1分钟后,东西方向的黄灯闪烁5秒钟,以警示车辆将切换红绿灯。

此时南北方向仍维持红灯点亮。

3).东西方向的黄灯闪烁5秒钟后,转为南北方向放行60秒钟。

即东西方向的红灯和南北方向的绿灯同时点亮60秒钟;4) .南北方向放行60秒钟后,转为南北方向的黄灯闪烁5秒钟,以警示将切换红绿灯。

此时东西方向仍维持红灯点亮。

5) .南北方向的黄灯闪烁5秒钟后转为东西方向放行1分钟。

如此循环重复。

程序模块构成1.中断模块2.延时模块3.定时器模块仿真电路构12个LED灯,单片机A T89C51,数码管(说明总体设计方案构思、程序模块构成、仿真电路构成等内容,不少于300字))。

1.2xx 模块程序流程图(电子1232黄俊峰17)1.3xx 模块程序流程图(电子1232黄晓敏29)1.4仿真电路设计(电子1232谌金莉33).2.程序代码#include <reg52.h>#define uchar unsigned char#define unit unsigned intsbit D1=P1^0;sbit D2=P1^1;sbit D3=P1^2;sbit D4=P1^3;sbit D5=P1^4;sbit D6=P1^5;uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void display();void delay0(int z);void init1();void init2();void init3();void init4();uchar a,shi,ge,b;void main(){while(1){init1();init2();init3();init4();}}void init1() //第一种{int tim;tim=56;TMOD=0x01;//定时器T0工作于方式1 TH0=0x4c;TL0=0x00;//定时器赋初值EA=1;//开中断ET0=1;//开定时中断TR0=1;//开定时器T0while(1){D1=1;D2=1;D3=0;D4=0;D5=1;D6=1;if(a==20)//定时20*50MS=1S{a=0;//定时完成一次后清0tim--;//变量自减if(tim==0){break;}shi=tim%100/10;//显示十位ge=tim%10;//显示个位}}}void init2() //第二种{int tim;tim=6; //变量赋初值TMOD=0x01;//定时器T0工作于方式1 TH0=0x4c;TL0=0x00;//定时器赋初值EA=1;//开中断ET0=1;//开定时中断TR0=1;//开定时器T0while(1){if(a==20)//定时20*50MS=1S{a=0;//定时完成一次后清0tim--;//变量自减D3=1;D2=~D2;D4=0;if(tim<0){break;}shi=tim%100/10;//显示十位ge=tim%10;//显示个位}display();}}void init3() //第三种{int tim;tim=56;TMOD=0x01;//定时器T0工作于方式1 TH0=0x4c;TL0=0x00;//定时器赋初值EA=1;//开中断ET0=1;//开定时中断TR0=1;//开定时器T0{D1=0;D2=1;D3=1;D4=1;D5=1;D6=0;if(a==20)//定时20*50MS=1S{a=0;//定时完成一次后清0tim--;//变量自减if(tim==0){break;}shi=tim%100/10;//显示十位ge=tim%10;//显示个位}display(); }}void init4() //第四种{int tim;tim=6; //变量赋初值TMOD=0x01;//定时器T0工作于方式1 TH0=0x4c;TL0=0x00;//定时器赋初值EA=1;//开中断ET0=1;//开定时中断TR0=1;//开定时器T0while(1){if(a==20)//定时20*50MS=1S{a=0;//定时完成一次后清0tim--;//变量自减D6=1;D5=~D5;D1=0;if(tim<0){break;}shi=tim%100/10;//显示十位ge=tim%10;//显示个位}display();}}void display(){P0=0xfd;P2=table[shi];//显示十位delay0(5);P0=0xfe;P2=table[ge];//显示个位delay0(5);}/*定时中断子函数*/void xtimer0() interrupt 1{TH0=0x4c;TL0=0x00;a++;}/*延时子函数*/void delay0(int z){int i,j;for(i=0;i<z;i++)for(j=0;j<110;j++);3.调试结果4.设计总结通过本次课程设计,使自己的实践能力有了很大的提高,让我认识到实践的重要性,但同时在实际应用过程当中,也发现理论知识的重要性,没有理论知识的支撑,是不能很好的完成本次课程设计的。

基于51单片机的交通灯(红绿灯)设计论文报告

基于51单片机的交通灯(红绿灯)设计论文报告
3.设计原理:
利用“自动控制”控制交通灯的方法。将事先编制好的程序输入单片机,利用单片机的定时、查询、中断功能;能够根据十字路口两个方向上车辆动态状况,采用查询的方式,根据具体情况,自动给予时间通行,其中利用中断方式来处理特殊情况。这样既方便驾驶员、路人,同时还可以紧急处理一些紧急实况。同样具有红、黄、绿灯的显示功能,为驾驶员、路人“照明”。
电阻
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、交通灯输出控制模块
道口交通灯指示采用高亮度红、黄、绿发光二极管进行提示。

单片机交通灯实验设计报告(C语言)

单片机交通灯实验设计报告(C语言)

东北林业大学单片机原理实验课程设计总结报告设计项目:电子交通灯的设计项目完成人:指导教师:学院:信息与计算机工程学院专业:电子信息工程2008级3班2011年 5月 23 日综合电子课程设计任务书摘要随着目前微电子技术的发展,技术工艺的不断提高,单片机技术也有了长足的进步。

单片机即单片微型计算机,它是微型计算机的一个分支,它是在一块芯片上集成了 CPU、 RAM 和 ROM 存储器 I/O 接口等而构成的微型计算机。

因为它主要应用于工业测控领域故又叫做微控器或嵌入式控制器。

单片机的核心是 CPU用超大规模集成技术把 CPU 集成在一块芯片上,称为微处理器。

单片机在最近几年中得到了极大的发展,目前世界范围内单片机发展的主要领域有 4 个:一是欧美,最新开发产品及主要厂商有:National semicundutor 的cop3 系列单片机,美国的 Scenix的八位单片机,荷兰 PHILIPS 的51 系列单片机,,美国 AMD公司 186 系列 16位嵌入式微机控制器, MOTOROLA 的各个系列单片机;二是日本, TOSHIBA公司开发了从 4位到 64 位多系列单片机,日立公司也有从 4 位到 32 位多系列单片机, NEC公司的 75X、78X系列微机;三是台湾地区,主要有 WINBOND的 W741/ W516,W78/W77 等系列产品微控制器;四是韩国,主要有HYUNDAI microelectrionics的GMS800、GMS30 系列微控制器。

另外还有 LG公司也生产单片机,可见单片机发展到今天可以说种类繁多、性能各异。

但目前我国的许多单片机应用单位仍停留在采用片内无 ROM等低档单片机状态。

十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。

那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。

交通信号灯控制方式很多。

本系统采用MSC-51系列单片机ATSC51和可编程并行I/O接口芯片CH451为中心器件来设计交通灯控制器,实现了能根据实际车流量通过8051芯片的P1口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA口输出,显示时间直接通过CH451的PC口输出至双位数码管);车辆闯红灯报警;绿灯时间可检测车流量并可通过双位数码管显示。

用单片机设计交通灯课设报告C语言

用单片机设计交通灯课设报告C语言

单片机原理及接口技术课程设计报告设计题目:人车分行交通信号指挥灯的控制学号:姓名:指导教师:信息与电气工程学院年月人车分行交通信号指挥灯的控制在生活中,我们在各个路口基本都可以看到交通信号灯,道路交通信号灯是交通安全产品中的一种类别,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。

近年来,随着科技的飞速发展,电子器件也随之广泛应用,其中单片机也不断深入人民的生活当中。

本模拟交通灯系统利用单片机AT89C51作为核心元件,实现了通过信号灯对路面状况的智能控制。

系统具有结构简单、可靠性高、成本低等优点,有广泛的应用前景。

本模拟系统由单片机硬/软件系统,两位8段数码管和LED灯显示系统。

和复位电路、时钟产生电路等组成,较好的模拟了交通路面的控制,利用单片机良好的控制功能来进行设计,应用更灵活,功能更强大,也更智能化。

通过C语言编程,单片机做控制,加上8个LED灯指示交通红绿灯、8155控制数码管倒计时显示来实现基本功能,外加处理突发中断情况的的按钮来模拟儿童过马路的情况。

1.设计任务结合实际情况,基于AT89C51单片机设计一个人车分行交通信号指挥灯。

该系统应满足的功能要求为:(1)交通红绿灯显示;(2)倒计时设置;(3)儿童过马路提示。

主要硬件设备:AT89C51单片机、8个LED灯、两个数码管显示器、蜂鸣器、8155I/O口扩展芯片列写交通灯变化表表1-1 利群超市门前路口交通灯变化情况表2. 整体方案设计人车分行交通信号指挥灯以AT89C51单片机作为整个系统的控制核心,应用其强大的接口功能,构成整个人车分行交通信号指挥灯控制的硬件系统。

该系统用8个LED灯模拟东西南北红黄绿灯以及人行红绿灯,用AT89C51的P1口的8个管脚与其连接,两位数码管显示器显示各个状态的倒计时,而数码管显示器由8155的PA口和PB 口控制,PB口控制数码管的段选码,PA口控制数码管的位选码,实现动态显示,节省管脚的使用,AT89C51的管脚P3.2分别连接应对突发状况的紧急开关。

51C交通灯控制系统

51C交通灯控制系统
交通灯系统的控制和改善;(2)实用性强,交通灯系统在我们生活环境中常见,是维持交 通秩序必不可少的,因此对交通灯系统的应用极为广泛;(3)扩展功能强,通过紧急状态 和复位状态的设置可以扩展交通灯更多的功能,使交通灯发挥更大的作用。
2 工作原理
本作品用一个简单的单片机系统模拟实现一个完整的交通灯系统。该系统有交通灯设 置电路、单片机、显示电路、控制开关等构成。单片机是集成的 IC 芯片,根据实际交通灯 设计要求选型。其他部分根据需要和要求选择相应功能器件。下面对本系统进行详细解说。
目录
摘要........................................................................................................................................................2 1 作品介绍 ...................................................................................................................................2 2 工作原理 ...................................................................................................................................3 2.1 单片机概述 ...................................................................................................................3 2.2 所用芯片简介 ...............................................................................................................3 2.2.1 MCS-51 芯片.....................................................................................................3 2.2.2 数码管 ...............................................................................................................4 2.2.3 74HC573 简介..................................................................................................5 2.3 整体思路.......................................................................................................................5 3 作品结构 ...................................................................................................................................5 3.1 硬件部分........................................................................................................................5 3.2 软件部分........................................................................................................................6 3.2.1 系统执行框图..................................................................................................7 3.2.2 程序模块分析..................................................................................................8 4 系统测试 .................................................................................................................................11 对本次大赛的感想(建议或意见) .......................................................................................11 附录 I ..........................................................................................................................................12 附录 II ........................................................................................................................................19 附录 III ......................................................................................................................................20

C51交通灯程序设计

C51交通灯程序设计

引言概述:
正文内容:
一、设计目的
1.1.实现交通灯的循环变化控制
1.2.提高交通流畅性和效率
1.3.确保交通安全性和顺畅进行
二、设计原理
2.1.使用C51单片机来进行交通灯的控制
2.2.通过输入和输出控制来实现交通灯的变化
2.3.利用定时器来控制交通灯的时间间隔
2.4.使用状态机来管理不同交通灯状态的切换
三、实现步骤
3.1.设计交通路口的几个不同方向的交通流线
3.2.根据交通流量和优先级确定交通灯的时间间隔
3.3.编写C语言程序,在C51单片机上实现交通灯控制3.
4.进行硬件连接和测试,确保程序正常运行
3.5.进行调试和优化,使交通灯控制更加精准和稳定
四、注意事项
4.1.注意交通流量的变化和应对策略的调整
4.2.确保交通灯程序适应不同交通流量和交通情况的变化4.3.防止信号错误和故障导致交通混乱或事故发生
4.4.遵守相关交通规则和法规,确保交通安全
总结:。

基于51的交通灯设计报告(带左转)

基于51的交通灯设计报告(带左转)

单片机课程设计报告题目 51交通灯的设计专业班级学号学生姓名基于51单片机的交通灯控制系统设计摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。

交通灯控制系统由89C52单片机、LED显示、交通灯延时组成。

系统除具有基本交通灯功能外,还具有LED信息显示功能,使交通实现有效控制。

关键词:交通灯,单片机,自动控制一、引言当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。

但这个技术在19世纪就已经出现了。

1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。

这是世界上最早的交通信号灯。

1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。

它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。

1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消!电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。

红灯亮表示“停止”,绿灯亮表示“通行”。

信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。

1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。

绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,除非两一种标志禁止某一种转向。

左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。

红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。

黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口!二、概要设计2.1 设计思路利用单片机实现交通灯的控制,该任务分以下几个方面:a 实现红、绿、黄灯的循环控制,并且交通灯系统带有左转信号灯。

c51单片机交通灯课程设计实习总结

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单片机控制交通灯课程设计报告本设计课程使用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单片机c语言交通灯设计报告

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. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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级中断结构,全双工串行口,片内晶振及时钟电路。

空闲模式下,CPU停止工作,允许RAM、定时器计数器、串口、中断继续工作。

鉴于以上的优点本系统采用AT89S52作为主控芯片,实现对整个系统的控制。

(2)芯片74LS24574LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。

当19脚E为H时,A、B为高阻。

E为L时,DIR为L时,数据由B传向A;DIR为H时,由A传向B。

(3)两位共阴数码管16脚和11脚对应A、15脚和10脚对应B、3脚和8脚对应C、2脚和6脚对应D、1脚和5脚对应E、18脚和12脚对应F、17脚7脚对应G、4脚和9脚对应DP。

公共脚为14脚和13脚,分别对应左边和右边显示的数字。

三、系统硬件电路设计(1)时钟电路设计如图所示,采用内部时钟产生方式,在XTAL1和XTAL2两端跨接晶体或陶瓷振荡器,与内部反相器构成稳定的自击震荡。

其发出的时钟脉冲直接送入片内定时控制部件。

(2)复位电路设计如上图所示,采用上电+按钮电平复位方式,当按下按钮时,RST管脚高电平触发。

为保证复位可靠,RC时间常数应大于两个机器周期,电容取10uf,电阻取1000欧。

(3)灯控制电路设计如上图所示,交通灯状态显示电路由东西南北四个方向各三个LED灯组成,分别显示四个方向上红、黄、绿三个状态,用以指示十字路口各方向车辆的行驶。

通过软件编程,可使路口交通变化情况为:南北方向和东西方向两条交叉道路上的车辆交替运行,主干道每次通行时间都设为30秒。

在绿灯转为红灯时,要求黄灯先亮5秒钟,才能变换运行车道;黄灯亮时每秒闪亮一次。

(4)按键控制电路设计开关控制由7个连接到单片机的控制按钮组成。

通过软件编程,使得各个开关的功能如上图所示,基本满足了交通灯的需要。

四、元件清单及实物图1、程序清单2、原理图五、实验心得这次交通灯的制作是我学会了不少的东西,首先是proteus和keil的使用。

单片机程序的编写和原理图的仿真都是在这两个软件的运行下才可以进行的。

这个实验最重要的是让我对51系列的单片机有了更深层次的了解,这一学期开接触单片机的时候觉得这是一门极其高深的课程,老师讲的什么基本完全不懂,课后看仍旧是一头雾水。

通过交通灯的学习和制作,对单片机有了初步的了解,知道了它的组成、工作原理等等。

在软件编写这一块,开始时遇到了很大的难题,因为两百行的程序,哪怕有一个错误,修改起来也不是十分方便。

时常没有心思去寻找和改正错误,所以软件这一块花了很大的一部分时间。

几次调试后总算出现“0 warning”和“0 error”的字样。

焊接也是比较麻烦,由于万能板买小了,再加上需要连接的线有很多根,所以首先必须考虑到元器件的排布问题,尽量让自己的焊接的时候方便一点。

借鉴别人的经验,数码管和排阻之间用排线相连接,很大程度上节省焊接的时间,并且让板子看起来更加整洁、美观。

除了学会很多东西以为,也发现了自己的不足。

由于自己在这一方面只是的短缺,所以很多问题都需要查阅资料或者向别的同学请教。

比如说proteus和keil的使用方法,都是看着别人操作几遍之后才慢慢学会。

还有在焊接这一方面也存在着很大问题。

由于焊接在万能板反面,所以有时候会把单片机的引脚看错,然后用吸枪慢慢清理。

这不仅浪费时间而且还可能破坏万能板。

在焊接过程中还出现短路问题,一不小心锡丝用多了就有可能造成两个点之间的短路问题,这一点说明了焊接能力还有待提升。

实验的结果是成功的,模拟出了交通灯的功能,各个按键的功能也和模拟时一致,看着数字的跳动自己信息也感到十分开心。

虽然想过在这个交通灯里加入一些额外的功能,但终究由于自己知识的局限性而放弃,有点遗憾,不过能够学到东西就好。

此次试验增长了自己的单片机知识外也让我知道实践和理论学习的差别。

实践过程中学到的知识自己记得会更加牢固一些,不容易忘记。

总的来说,单片机的制作让我收获不小。

附1 源程序代码#include <reg51.h>#define uchar unsigned char#define uint unsigned intuchar data buf[4];uchar data sec_dx=20;//东西数默认uchar data sec_nb=30;//南北默认值uchar data set_timedx=20;uchar data set_timenb=30;int n;uchar data b;//定时器中断次数sbit k1=P1^6;//定义5组开关sbit k2=P1^7;sbit k3=P2^7;sbit k4=P3^0;sbit k5=P3^1;sbit Yellow_nb=P2^5; //南北黄灯标志sbit Yellow_dx=P2^2; //东西黄灯标志sbit Green_nb=P2^4;sbit Green_dx=P2^1;sbit Buzz=P3^7;bit Buzzer_Indicate;bit time=0;//灯状态循环标志bit set=1;//调时方向切换键标志uchar code table[11]={ //共阴极字型码0x3f, //--00x06, //--10x5b, //--20x4f, //--30x66, //--40x6d, //--50x7d, //--60x07, //--70x7f, //--80x6f, //--90x00 //--NULL};//函数的声明部分void delay(int ms);//延时子程序void key();//按键扫描子程序void key_to1();//键处理子程序void key_to2();void key_to3();void display();//显示子程序void logo(); //开机LOGOvoid Buzzer();//主程序void main(){TMOD=0X01;TH0=0XD8;TL0=0XF0;EA=1;ET0=1;TR0=1;EX0=1;EX1=1;logo();P2=0Xc3;// 开始默认状态,东西绿灯,南北黄灯 sec_nb=sec_dx+5;while(1){key(); //调用按键扫描程序display(); //调用显示程序Buzzer();}}//函数的定义部分void key() //按键扫描子程序{if(k1!=1){delay(10);if(k1!=1){while(k1!=1){key_to1();for(n=0;n<40;n++){ display();}}}}if(k2!=1){delay(10);if(k2!=1){while(k2!=1){key_to2();for(n=0;n<40;n++){ display();}}}}if(k3!=1){TR0=1; //启动定时器Buzzer_Indicate=0;sec_nb=set_timenb; //从中断回复,仍显示设置过的数值sec_dx=set_timedx;if(time==0){ P2=0X99;sec_nb=sec_dx+5; }else { P2=0xC3;sec_dx=sec_nb+5; }}if(k4!=1){delay(5);if(k4!=1){while(k4!=1);set=!set;}}if(k5!=1){delay(5);if(k5!=1){while(k5!=1)key_to3();}}}void display() //显示子程序{buf[1]=sec_dx/10; //第1位东西秒十位buf[2]=sec_dx%10; //第2位东西秒个位buf[3]=sec_nb/10; //第3位南北秒十位buf[0]=sec_nb%10; //第4位南北秒个位P1=0xff; // 初始灯为灭的P0=0x00;P1=0xfe; //片选LCD1P0=table[buf[1]];delay(1);P1=0xff;P0=0x00;P1=0xfd; //片选LCD2P0=table[buf[2]];delay(1);P1=0xff;P0=0x00;P1=0Xfb; //片选LCD3P0=table[buf[3]];delay(1);P1=0xff;P0=0x00;P1=0Xf7;P0=table[buf[0]]; //片选LCD4delay(1);}void time0(void) interrupt 1 using 1 //定时中断子程序{b++;if(b==19) // 定时器中断次数{ b=0;sec_dx--;sec_nb--;if(sec_nb<=5&&time==0) //东西黄灯闪{ Green_dx=0;Yellow_dx=!Yellow_dx;}if(sec_dx<=5&&time==1) //南北黄灯闪{ Green_nb=0;Yellow_nb=!Yellow_nb;}if(sec_dx==0&&sec_nb==5)sec_dx=5;if(sec_nb==0&&sec_dx==5)sec_nb=5;if(time==0&&sec_nb==0){ P2=0x99;time=!time;sec_nb=set_timenb;sec_dx=set_timenb+5;} if(time==1&&sec_dx==0){P2=0Xc3;time=!time;sec_dx=set_timedx;sec_nb=set_timedx+5;} }}void key_to1() //键盘处理子程序之+{TR0=0; //关定时器if(set==0)set_timenb++; //南北加1Selseset_timedx++; //东西加1Sif(set_timenb==100)set_timenb=1;if( set_timedx==100)set_timedx=1; //加到100置1sec_nb=set_timenb ; //设置的数值赋给东西南北sec_dx=set_timedx;}void key_to2() //键盘处理子程序之-{TR0=0; //关定时器if(set==0)set_timenb--; //南北减1Selseset_timedx--; //东西减1Sif(set_timenb==0)set_timenb=99;if( set_timedx==0 )set_timedx=99; //减到1重置99sec_nb=set_timenb ; //设置的数值赋给东西南北sec_dx=set_timedx;}void key_to3() //键盘处理之紧急车通行{TR0=0;P2=0Xc9;sec_dx=00;sec_nb=00;Buzzer_Indicate=1;}void int0(void) interrupt 0 using 1 //只允许东西通行{TR0=0;P2=0Xc3;Buzzer_Indicate=0;sec_dx=00;sec_nb=00;}void int1(void) interrupt 2 using 1 //只允许南北通行{TR0=0;P2=0X99;Buzzer_Indicate=0;sec_nb=00;sec_dx=00;}void logo()//开机的Logo "- - - -"{ for(n=0;n<50;n++){P0=0x40;P1=0xfe;delay(1);P1=0xfd;delay(1);P1=0Xfb;delay(1);P1=0Xf7;delay(1);P1 = 0xff;}}void Buzzer(){if(Buzzer_Indicate==1)Buzz=!Buzz;else Buzz=0;}void delay(int ms) //延时子程序{uint j,k;for(j=0;j<ms;j++)for(k=0;k<124;k++);}附2 原理图。

相关文档
最新文档