51单片机模拟交通信号灯要点
51单片机交通灯设计要点
![51单片机交通灯设计要点](https://img.taocdn.com/s3/m/5f6b9dc7ce2f0066f533228d.png)
摘要交通信号灯是交通信号中的重要组成部分,是道路交通的基本语言,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。
适用于十字、丁字等交叉路口,由道路交通信号控制机控制,指导车辆和行人安全有序地通行。
交通信号灯由红灯(表示禁止通行)、绿灯(表示允许通行)、黄灯(表示警示)组成。
分为:机动车信号灯、非机动车信号灯、人行横道信号灯、车道信号灯、方向指示信号灯、闪光警告信号灯、道路与铁路平面交叉道口信号灯。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制技术日益更新。
接下来将介绍基于单片机控制的交通信号灯的自动指挥系统。
交通信号灯控制方式很多。
本系统采用MSC-51系列单片机80C51和芯片74LS245为中心器件来设计交通灯控制系统。
、关键字:单片机,信号灯,控制前言道路交通信号灯是交通安全产品中的一种类别,是为了加强道路交通管理,减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。
适用于十字、丁字等交叉路口,由道路交通信号控制机控制,指导车辆和行人安全有序地通行。
最早的时候只有红、绿两种颜色,后来经过改良后,增加了一盏黄色的灯,红灯表示停止,黄灯表示准备,绿灯则表示通行。
之所以采用这三种颜色,一方面是三原色,其他颜色也是在此基础上调出来的,另一方面,用这三种颜色作为交通讯号也和人们的视觉结构和心理反应有关。
人的视网膜含有杆状和三种锥状感光细胞,杆状细胞对黄色的光特别敏感,三种锥状细胞则分别对红光、绿光及蓝光最敏感。
由于这种视觉结构,人最容易分辨红色与绿色。
虽然黄色与蓝色也容易分辨,但因为眼球对蓝光敏感的感光细胞较少,所以分辨颜色,还是以红、绿色为佳。
交通信号灯是交通信号指挥中的重要组成部分,是道路交通的基本语言。
交通信号灯由红灯(表示禁止通行)、绿灯(表示允许通行)、黄灯(表示警示)组成。
分为:机动车信号灯、非机动车信号灯、人行横道信号灯、车道信号灯、方向指示信号灯、闪光警告信号灯、道路与铁路平面交叉道口信号灯。
基于51单片机设计的交通灯报告书
![基于51单片机设计的交通灯报告书](https://img.taocdn.com/s3/m/31be7ec50c22590102029dc0.png)
报告书干路—支路口交通信号灯控制器项目目的:通过对模拟交通灯控制系统的操作,让我们掌握定时器和中断系统的综合应用,进一步熟练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单片机交通灯仿真原理
![51单片机交通灯仿真原理](https://img.taocdn.com/s3/m/f6dcd9bd900ef12d2af90242a8956bec0975a5f3.png)
51单片机交通灯仿真原理交通灯是城市道路交通指示设施中最重要的一种,它可以用来引导车辆和行人在道路上安全通行。
在交通繁忙的路口,交通灯起到了非常关键的作用。
本文将介绍使用51单片机对交通灯进行仿真的原理。
交通灯通常包括红灯、黄灯和绿灯这三种状态。
红灯表示停止,黄灯表示警告,绿灯表示行驶。
在信号灯中,红灯和绿灯的时间比较长,黄灯的时间比较短。
下面是使用51单片机进行交通灯模拟的步骤:1.硬件连接:首先,我们需要将51单片机与LED灯连接起来。
假设使用3个LED灯分别模拟红灯、黄灯和绿灯,将它们分别连接到单片机的3个IO口上。
2.程序编写:使用汇编或C语言编写程序,实现交通灯的工作逻辑。
以下是一个简单的示例代码:```#include <reg51.h>#define LED_RED P0 // 定义红灯连接的IO口#define LED_YELLOW P1 // 定义黄灯连接的IO口#define LED_GREEN P2 // 定义绿灯连接的IO口void delay(unsigned int t)while(t--);void mainwhile(1)//红灯亮,其他灯灭LED_RED=0x01;LED_YELLOW=0x00;LED_GREEN=0x00;delay(5000); //等待5秒//绿灯亮,其他灯灭LED_RED=0x00;LED_YELLOW=0x00;LED_GREEN=0x01;delay(5000); //等待5秒//黄灯亮,其他灯灭LED_RED=0x00;LED_YELLOW=0x01;LED_GREEN=0x00;delay(2000); //等待2秒}```4.运行仿真:将单片机连接到电源后,程序开始执行。
红灯亮起5秒后,绿灯亮起5秒,然后黄灯亮起2秒,然后循环往复。
通过以上步骤,我们成功完成了51单片机交通灯仿真。
在实际应用中,可以通过增加传感器等组件实现更多的功能,如人行道上的行人信号灯、车辆流量检测等,进一步提高交通灯的智能化和人性化。
51单片机模拟交通灯
![51单片机模拟交通灯](https://img.taocdn.com/s3/m/5158148c69dc5022aaea00db.png)
51单片机模拟交通灯利用51 单片机的控制二极管及数码管的显示来模拟交通灯,系统晶振为11.0592MHZ,东西方向红灯设置为30 秒,南北方向红灯设置为20 秒,P1.3接一个应急按钮,按下第一次放开,南北方向绿灯一直亮,东西方向红灯一直亮(目的是为了方便大领导通行),按下放开第二次,南北绿灯闪3 秒黄灯亮2 秒后变红灯,东西方向变为绿灯,之后沿着之前的设置一直循环,下面是仿真图、程序源代码仿真图程序源代码如下:作者:胡琴联系qq:1257394091 网站:51hei 本程序已经通过软件仿真以及在自己搭建的硬件上测试通过0000hajmp mainorg 000bhajmpinti0org 0030hmain:mov tmod,#01h mov ie,#82h mov th0,#4ch mov tl0,#00h mov sp,#60h mov 31h,#30 ;东西绿灯初值30 秒mov 32h,#30 ;南北红灯初值30 秒clr4fh ;清标志位clr p1.1 ;开东西绿灯clr p1.5 ;开南北红灯setb tr0 ;启动T0loop:lcall display ;调用显示子程序lcall key ;调用应急按键判断ajmp loopinti0:push psw clr ea mov th0,#4ch mov tl0,#00h inc 35h mov a,35h cjne a,#20,out ;判1 秒是否到时mov 35h,#00 jb 4fh,yi ;判别标志位dec 31h ;东西时间每秒减1 dec 32h ;南北时间每秒减1 mov a,31h cjne a,#05,out ;判是否到25 秒setb p2.0 ;到25 秒关时间显示setb p2.1 setb p1.1 ;东西绿灯闪灭3 秒lcall del500ms clr p1.1 lcall del500ms setb p1.1 lcall del500ms clr p1.1 lcall del500ms setb p1.1 lcall del500ms clr p1.1 lcall del500ms setb p1.1 ;灭东西绿灯sjmp erout:setb ea pop pswreti er:clr p1.2 ;东西黄灯亮2 秒mov 33h,#4 ;延时2 秒loop1:lcall del500ms djnz 33h,loop1 setb p1.2 ;2 秒后灭东西黄灯clr p2.0 ;5 秒后开时间显示clr p2.1 mov 31h,#20 ;东西时间赋20 秒初值mov 32h,#20 ;南北时间赋20 秒初值setb 4fh setb p1.5 ;关南北红灯clr p1.0 ;点亮东西红灯clr p1.6 ;点。
51单片机交通灯(加急救车)
![51单片机交通灯(加急救车)](https://img.taocdn.com/s3/m/b026243158fb770bf78a5578.png)
51单片机控制交通灯一、实现功能:1、先南北红灯亮,东西绿灯亮。
南北红灯亮维持25秒,在南北红灯亮的同时东西绿灯也亮,并维持20秒;到20秒时,东西绿灯闪亮,闪亮3秒后熄灭。
在东西绿灯熄灭时,东西黄灯亮,并维持2秒。
到2秒时,东西黄灯熄灭,东西红灯亮,同时,南北红灯熄灭,绿灯亮,东西红灯亮维持30秒。
南北绿灯亮维持25秒,然后闪亮3秒后熄灭。
同时南北黄灯亮,维持2秒后熄灭,这时南北红灯亮,东西绿灯亮。
周而复始。
2、用一个按键模拟急救车到达。
急救车到达路口时,四个方向的红灯全亮,10秒钟后恢复正常显示。
3、一辆急救车正在过路口时(即四个方向全红灯10秒倒计时未结束),又来了一辆急救车,重新从10秒开始倒计时。
4、急救车过去之后(即10秒倒计时结束),路灯状态要继续急救车到达之前的状态往下运行。
5、数码管显示绿灯变红灯、红灯变绿灯以及急救车10秒钟的倒计时。
6、急救车从路口过的时候,蜂鸣器响1s停1s的循环报警。
二、proteus仿真电路图注:此图仅作为仿真使用。
实际焊接电路时,由于单片机的驱动能力较弱,所以数码管的位选、LED的控制最好加上三极管进行电流放大,否则即使能实现功能,但是LED和数码管的发光的亮度也不强。
三、C语言程序程序#include <reg51.h>#define uchar unsigned char#define uint unsigned int#define duan P0#define wei P2code uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; uchar buff[8] = {10,10,10,10,10,10,10,10};uchar weizhi = 0;uchar alarm = 0;uchar bk_TH1 = 0;uchar bk_TL1 = 0;uchar bk_cnt = 0;uchar bk_cnt_time = 0;uchar cnt_time = 0;uchar cnt = 0;uchar cnt_flash = 0;bit cnt_finish = 0;bit LED = 0;bit beef_flag = 1;sbit Er = P1^0; //东西—红灯sbit Eg = P1^1; //东西—绿灯sbit Ey = P1^2; //东西—黄灯sbit Sr = P1^3; //南北—红灯sbit Sg = P1^4; //南北—绿灯sbit Sy = P1^5; //南北—黄灯sbit beef = P1^6; //蜂鸣器void display(void);void main(void){uchar time = 0;TMOD |= 0x11;TH0 = (65536-2000)/256;TL0 = (65536-2000)%256;TH1 = (65536-50000)/256;TL1 = (65536-50000)%256;ET1 = 1;ET0 = 1;INT0 = 1;EX0 = 1;IP |= 0x02;EA = 1;TR0 = 1;TR1 = 1;Sr = 0;Sg = 0;Sy = 0;Er = 0;Eg = 0;Ey = 0;beef = 0;buff[0] = 11;buff[1] = 11;buff[2] = 11;buff[3] = 11;buff[4] = 11;buff[5] = 11;buff[6] = 10;buff[7] = 10;while(1){while((cnt<20)&&(alarm == 0)){Sr = 1;Sg = 0;Sy = 0;Er = 0;Eg = 1;Ey = 0;time = (25-cnt);buff[7] = time%10;buff[6] = time/10;}while((cnt<23)&&(alarm == 0)){Sr = 1;Sg = 0;Sy = 0;Er = 0;Eg = LED;Ey = 0;time = (25-cnt);buff[7] = time%10;buff[6] = time/10;}while((cnt<25)&&(alarm == 0)) {Sr = 1;Sg = 0;Sy = 0;Er = 0;Eg = 0;Ey = 1;time = (25-cnt);buff[7] = time%10;buff[6] = time/10;}while((cnt<50)&&(alarm == 0)) {Sr = 0;Sg = 1;Sy = 0;Er = 1;Eg = 0;Ey = 0;time = (55-cnt);buff[7] = time%10;buff[6] = time/10;}while((cnt<53)&&(alarm == 0)) {Sr = 0;Sg = LED;Sy = 0;Er = 1;Eg = 0;Ey = 0;time = (55-cnt);buff[7] = time%10;buff[6] = time/10;}while((cnt_finish != 1)&&(alarm == 0)){Sr = 0;Sg = 0;Sy = 1;Er = 1;Eg = 0;Ey = 0;time = (55-cnt);buff[7] = time%10;buff[6] = time/10;}cnt_finish = 0;while(alarm == 1){Er = 1;Eg = 0;Ey = 0;Sr = 1;Sg = 0;Sy = 0;time = (10-cnt);buff[7] = time%10;buff[6] = time/10;if(cnt == 10){TR1 = 0;TH1 = bk_TH1;TL1 = bk_TL1;cnt = bk_cnt;cnt_time = bk_cnt_time;TR1 = 1;alarm = 0;}beef = beef_flag;}beef = 0;}}void int0(void) interrupt 0{TR1 = 0;if(alarm == 0){bk_TH1 = TH1;bk_TL1 = TL1;bk_cnt = cnt;bk_cnt_time = cnt_time;}TH1 = (65536-50000)/256;TL1 = (65536-50000)%256;cnt = 0;cnt_time = 0;alarm = 1;TR1 = 1;}void timer0(void) interrupt 1 {TH0 = (65536-2000)/256;TL0 = (65536-2000)%256;display();}void timer1(void) interrupt 3 {TH1 = (65536-50000)/256;TL1 = (65536-50000)%256;if(++cnt_time == 20){cnt_time = 0;cnt++;beef_flag = ~beef_flag;}if(++cnt_flash == 4){cnt_flash = 0;LED = ~LED;}if(cnt == 55){cnt = 0;cnt_finish = 1;}}void display(void){duan = 0xff;wei = (1<<weizhi);duan = tab[buff[weizhi]];if(++weizhi == 8){weizhi = 0;}}。
51单片机交通灯仿真原理
![51单片机交通灯仿真原理](https://img.taocdn.com/s3/m/b32e83732f3f5727a5e9856a561252d380eb2006.png)
51单片机交通灯仿真原理引言:交通灯作为城市交通管理的重要组成部分,起到了引导车辆和行人通行的作用。
在现代社会中,交通灯的灯光变化是由电路控制实现的。
本文将以51单片机为基础,介绍交通灯仿真的原理和实现过程。
一、51单片机简介51单片机是一种常见的微控制器,具有高性能、低功耗、易编程等特点。
它广泛应用于各种电子设备中,包括交通灯控制。
二、交通灯的基本原理交通灯一般由红、黄、绿三个灯组成。
红灯表示停车,黄灯表示准备行驶,绿灯表示可以通行。
交通灯的变化是按照一定的时间间隔来进行的,通常为红灯亮一段时间,然后黄灯亮一段时间,最后绿灯亮一段时间。
这种变化方式可以通过51单片机的定时器和IO口控制来实现。
三、交通灯仿真的实现步骤1. 硬件连接需要准备一块51单片机开发板,以及红、黄、绿三个LED灯。
将LED灯连接到51单片机的IO口上,通过电阻限流,确保电流合适。
2. 程序编写使用C语言编写程序,实现交通灯的仿真。
首先,需要定义红、黄、绿三个灯对应的IO口。
然后,设置定时器,按照一定的时间间隔来改变灯的状态。
例如,红灯亮5秒,黄灯亮2秒,绿灯亮8秒。
通过循环控制,可以实现交通灯的循环变化。
3. 烧录程序将编写好的程序通过烧录器下载到51单片机中。
确保烧录成功后,即可进行交通灯仿真。
4. 仿真测试将51单片机开发板连接到电源,打开电源开关。
此时,红灯应亮起,表示停车;随后黄灯亮起,表示准备行驶;最后绿灯亮起,表示可以通行。
通过不断循环,交通灯的状态会一直变化,实现仿真效果。
四、交通灯仿真的应用价值交通灯仿真是对交通灯控制的一种模拟,可以用于交通管理系统的设计和优化。
通过仿真实验,可以模拟不同情况下交通灯的变化,优化交通流量,提高交通效率。
此外,交通灯仿真还可以用于交通安全教育,让行人和驾驶员更好地理解交通灯的意义和规则。
五、总结本文以51单片机为基础,介绍了交通灯仿真的原理和实现过程。
通过硬件连接、程序编写、烧录和测试等步骤,可以实现交通灯的仿真效果。
基于51单片机的交通信号灯模拟控制系统设计整理资料
![基于51单片机的交通信号灯模拟控制系统设计整理资料](https://img.taocdn.com/s3/m/a6adfa1433687e21ae45a930.png)
语言 交通灯
XXXXX 学院毕业设计
XXXXX 学院毕业设计(论文)指导记录表
学生姓 名 系 别
指导教 师
课题名 称
XXX
学号
XXXXXXXXXXX
自动化工程工程系
专业班级 xxx 级机电一体化 X 班
XXX
技术职务
基于 51 单片机设计交通信号灯模拟控制系统
第一次 指导情
况
XXXXX 学院毕业设计
指导教师签字:
年
月
日
第二次 指导情
况
日
指导教师签字:
年
月
XXXXX 学院毕业设计
注:指导情况须填明学生在毕业设计(论文)撰写过程中存在的问题,指导 教师要求修改的内容或改进措施。指导情况填写不包括下达任务书和开题报 告意见。
XXXXX 学院毕业设计
XXXX 学院 毕业设计(论文)
课题名称 交通信号灯模拟控制系统
学生姓名
XXX
学号
XXXXXXXXXXXXX
系别
自动化工程系
专业班级
机电一体化 X 班
指导教师
XX
技术职务
讲师
XXXXXX 学院教务处制
XXXXX 学院毕业设计
XXXXX 学院毕业设计(论文)任务书
学生姓名
XXX
关 2)有必要的程序流程图与单片机系统设计
要 3)上位机程序的编写或规划 求 4)要求格式正确,模块完整
第五学期 第2周
学生完成设计开题报告
第五学期 学生完成毕业设计初稿,指导教师给予修改
进 第 3-5 周 建议。
基于51单片机的交通信号灯模拟控制系统实验一
![基于51单片机的交通信号灯模拟控制系统实验一](https://img.taocdn.com/s3/m/4d1de5b5f71fb7360b4c2e3f5727a5e9846a274a.png)
基于51单片机的交通信号灯模拟控制系统实验一、实验目的和要求1.掌握单片机基本资源使用。
2.掌握单片机电路原理图绘制和仿真。
3.掌握单片机C语言软件开发以及联合仿真。
二、实验内容和原理实验内容:1.根据题目绘制单片机电路原理图。
2.绘制程序流程图并编写C语言程序3.在仿真程序中进行联合仿真,最后提交实验报告三、主要仪器设备keilC,proteus。
四、操作方法与实验步骤4.1 题目要求用单片机设计一个十字路口交通灯模拟控制系统,要求东西、南北两个方向都通行20秒,警告3秒,禁止20秒,同时要考虑到东西、南北两个方向出现异常情况,出现异常情况器该方向通行60秒。
4.2 系统设计思路设置东西、南北方向的交通灯状态变量。
设置计时器变量,用来记录当前状态的持续时间。
设置异常情况变量,用来记录异常情况是否出现。
在主循环中使用无限循环来控制交通灯的状态和计时器的更新。
根据计时器的值和交通灯状态,判断当前状态,并控制灯的状态切换。
初始化交通灯状态和计时器,使东西、南北方向都为"通行"状态,计时器初始值设置为20秒。
在循环中,逐秒更新计时器的值,并判断当前状态。
如果计时器的值为0,即当前状态持续时间结束,根据当前状态进行灯的状态切换和计时器的重设。
如果出现异常情况,将相应方向的状态设置为"异常",并将计时器设置为60秒4.2 电路图绘制(包含详细的参数选定文字和图像叙述)4.3 C程序编制(包含详细的文字和程序流程图)#include <reg51.h>void delay500ms (unsigned char k);void main(void)SP=0X60;TMOD=0x01;IE=0x85;TCON=0x05;while(1)//初始化P1=0x21;delay500ms (40);P1=0x41;delay500ms (6);P1=0x12;delay500ms (40);P1=0x14;delay500ms (6);//状态1,东西方向绿灯,南北方向红灯20s //状态2,东西方向黄灯,南北方向红灯3s //状态3,南北方向绿灯,东西方向红灯20s//状态4,南北方向黄灯,东西方向红灯3s//东西方向异常,东西方向绿灯闪,南北方向红灯闪60svoid int 0(void) interrupt0)unsigned char il,i2;i1=Pl;for(i2=0;i2<60;i2++)P1=0x21;delay500ms (1);P1=0x00;delay500ms (1);Pl=il;//南北方向异常,南北方向绿灯闪,东西方向红灯闪60s void int 1(void) interrupt 2 unsigned char jl,j2;j1=P1;for (j2=0;j2<60;j2++)P1=0x12;delay500ms (1);P1=0x00;delay500ms (1);Pl=jl;//延时500ms 函数void delay500ms (unsigned char m) unsigned char k1, k2;TH0=0x3C;TL0=0xB0;TRO=1;for (k1=0;k1<m;k1++)for (k2=0;k2<10;k2++)while(!TFO);TF0=0;TH0=0x3C;TL0=0xB0;4.3 仿真分析(包含文字和图像叙述)状态,东西方向绿灯,南北方向红灯20秒,状态编码“100”(1):)状态2,东西方向黄灯,南北方向红灯3秒,状态编码“00000 (41H);状态了,南北方向绿灯,东西方向红灯20秒,状态编码“00”00 (2H);:状态4,南北方向黄灯,东西方向红灯3秒,状态编码“000”(4H)。
基于51单片机的交通灯设计
![基于51单片机的交通灯设计](https://img.taocdn.com/s3/m/234cfe9ca48da0116c175f0e7cd184254b351bf8.png)
基于51单片机的交通灯设计交通信号灯是指示人和交通工具在道路交通中行进方向或行为的一种交通设施。
在设计交通信号灯时,应考虑交通流量、车辆速度、交叉口结构等因素,以确保交通的顺畅和安全。
本文将基于51单片机设计一种交通信号灯系统,并详细介绍其原理和实现方法。
交通信号灯系统的设计目的是通过控制红、黄、绿三种不同颜色的灯,指示车辆和行人在交通路口安全行驶。
在单片机设计中,我们将使用三个LED灯分别代表红、黄、绿三种状态。
通过控制LED的亮灭,来实现交通信号灯的变换。
首先,我们需要选择适当的硬件设备进行交通信号灯的设计。
在51单片机设计中,可以选择STC89C51或者AT89C51等型号的单片机。
此外,还需要准备三个LED灯、电阻、电容、按键等器件。
接下来,我们将进行电路设计。
在设计电路时,首先将三个LED灯连接到单片机的三个IO口上,每个IO口通过一个电阻与正极连接,负极与GND连接。
此外,在单片机的一个IO口上连接一个按键,通过按下按键触发程序的执行。
在编写程序之前,首先需要确立交通信号灯的运行逻辑。
一般而言,交通信号灯的运行逻辑如下:1.全红状态:所有车辆和行人均停止,任何方向都不可行驶。
2.绿灯状态:一些方向的车辆和行人可以行驶,其他方向均不可行驶。
3.黄灯状态:信号灯将要变成红灯或绿灯,此时车辆和行人应注意刹车或等待。
接下来,我们将编写程序并烧录到单片机中。
在程序中,需要使用到定时器和中断来进行交通信号灯的控制。
具体步骤如下:1.在程序中定义三个LED灯所对应的IO口。
2.初始化定时器,并设置定时时间,用于控制信号灯的变化。
3.设置中断,用于按键的检测和处理。
4.在主循环中,不断检测按键状态,当按键按下时,切换信号灯的状态。
5.根据信号灯的状态,控制LED灯的亮灭。
在程序设计中,应充分考虑各种异常情况和执行顺序,以保证交通信号灯的正常运行。
此外,还可以增加一些辅助功能,如倒计时显示等,以提高交通信号灯的可视性和安全性。
51单片机控制的交通灯系统实验报告
![51单片机控制的交通灯系统实验报告](https://img.taocdn.com/s3/m/52365bc408a1284ac85043e1.png)
系统实验报告——基于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单片机的交通信号灯模拟控制系统实验](https://img.taocdn.com/s3/m/a584e428ae1ffc4ffe4733687e21af45b207fe51.png)
《单片机原理及应用》基于51单片机的交通信号灯模拟控制系统实验交通信号灯是城市交通管理中常见的一种交通管理设施。
它通过控制不同方向的红绿黄灯亮灭时间来指示不同方向的车辆和行人通行状态,有效地维护交通秩序和保障交通安全。
本实验基于51单片机,通过模拟控制系统实现交通信号灯的控制,以深入理解单片机原理及应用。
首先,我们需要明确实验的目标和要求。
通过本实验,我们可以掌握以下内容:1.掌握51单片机的基本工作原理和硬件结构;2.熟悉51单片机的编程语言和编程环境;3.理解交通信号灯的工作原理和设计要求;4.掌握基于51单片机的交通信号灯控制系统的设计和实现。
本实验的主要设备和材料包括:51单片机开发板、交通信号灯模拟电路、继电器、电压稳压模块、LED等。
实验步骤如下:1.搭建交通信号灯的模拟电路。
根据交通信号灯的工作原理,将LED 灯分别连接到单片机的不同IO口上,并通过继电器和电压稳压模块控制电路的通断,以实现红、黄、绿三个灯的交替亮灭。
2.编写单片机的控制程序。
根据交通信号灯的工作模式,编写单片机的控制程序,通过控制不同IO口的电平状态,实现红、黄、绿三个灯的控制。
程序中需要设置不同灯的时间参数和控制逻辑,确保交通信号灯能够按照预定的时间间隔进行工作。
3.上传程序到单片机。
将编写好的单片机控制程序通过编程器上传到单片机上,使得单片机能够执行相应的控制逻辑。
4.调试和测试。
将交通信号灯模拟电路的电源插入电源插座,观察LED灯的亮灭情况,并根据设定的时间参数检查交通信号灯是否按照预期工作。
如有需要,可以通过修改程序中的参数,调整交通信号灯的控制逻辑。
5.实验总结。
在实验完成后,我们应该对实验结果进行总结和分析,检查实验是否达到预期的目标和要求。
同时,我们还可以对实验中遇到的问题和解决方法进行总结,为今后的实验和应用提供借鉴。
通过这个实验,我们可以深入了解51单片机的原理和应用,并在实践中掌握交通信号灯的控制方法。
51单片机综合实验交通灯设计报告
![51单片机综合实验交通灯设计报告](https://img.taocdn.com/s3/m/f5d992f60029bd64783e2c65.png)
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单片机的交通灯设计](https://img.taocdn.com/s3/m/c38baf60dc36a32d7375a417866fb84ae45cc324.png)
基于51单片机的交通灯设计交通信号灯是现代城市交通管理的重要组成部分,也是保障道路交通安全的关键设施之一、为了更好地了解交通信号灯的设计原理和实现方法,本文将以基于51单片机的交通灯设计为例,详细介绍相关知识。
首先,我们需要了解51单片机的基本知识。
51单片机是一种常见的8位单片机,广泛应用于各类嵌入式系统中。
其开发工具多样,编程语言灵活,易于上手。
交通信号灯通常由红、黄、绿三种颜色的灯组成。
在运行过程中,红灯、黄灯和绿灯依次亮起,来实现交通的有序流动。
这背后的原理是通过控制每个灯的亮灭状态和持续时间,来控制车辆和行人的行动。
1.硬件设计:首先,需要设计交通信号灯的电路,并将其连接到51单片机上。
电路中需要包括三个LED灯(红、黄、绿),以及相应的电阻和连接线路。
2.程序编写:使用51单片机开发环境,编写程序来控制交通信号灯的闪烁状态和时间。
程序中需要定义每个灯的亮灭状态和持续时间,并按照预定的顺序进行切换。
可能遇到的问题和解决方法:1.灯的亮灭状态和时间不符合预期:检查程序中对每个灯的控制语句,确保逻辑正确。
也可以通过使用调试器来单步执行代码,以查看每个步骤的执行情况。
2.电路连接错误:检查电路连接是否正确,确保每个灯的电源和地线正确连接,并没有短路或断路的情况。
3.程序逻辑错误:检查程序中的条件判断和循环语句,确保程序按照预期的顺序和时间来切换灯的状态。
在交通信号灯设计中,还可以考虑以下几个方面的优化:1.增加传感器:可以通过添加传感器模块,来根据实时的交通流量和行人情况,动态调整交通信号灯的切换时间。
这样可以更好地适应实际交通状况。
2.增加无线通信功能:可以通过添加无线通信模块,与其他信号灯或交通管理中心进行通信,实现更高级的交通控制和协调。
这样可以提高交通效率和安全性。
3.引入自学习算法:可以通过引入机器学习算法,对交通信号灯进行优化和调整。
根据交通流量、行人情况等实时数据,自动调整交通信号灯的切换策略,进一步提升交通效率。
利用51单片机实现交通红绿灯讲解
![利用51单片机实现交通红绿灯讲解](https://img.taocdn.com/s3/m/9d731d24fc4ffe473368ab51.png)
END
谢谢大家!
MOV A,#0B6H
MOVX @DPTR,A ;从A口输出数据0B6H,来控制相应二极管发光
INC DPTR
MOV A,#0DH
MOVX @DPTR,A ;从B口输出数据0DH,来控制相应二极管发光
北
西
南
东
黄绿红 110
黄绿红 110
黄绿红 黄绿红 110 11 0
B口低4位(ODH)
;允许定时器1中断
SEYB TR1
;打开定时器1
SJMP $
SER: MOV TH1,#3CH
MOV TL1,#0B0H ;定时器重装初值
DJNZ R1,NO ;循环定时(20H)次
MOV R1,20H
DJNZ R2,NO ;循环定时(21H)次
MOV R2,21H
RET
NO: RETI
MOV 20H,#0AH
MOV 21H,#01H
LCALL DELY
;延时0.5s
MOV DPTR,#0FF7CH
MOV A,#0BEH
MOVX @DPTR,A
INC DPTR
MOV A,#0FH
MOVX @DPTR,A
;东西红灯亮
MOV 20H,#0AH
MOV 21H,#01H
LCALL DELY
MOVX @DPTR,A
;南北红灯亮
MOV 20H,#0AH
MOV 21H,01H
LCALL DELY
;延时0.5s
DJNZ R7,JOD1
;闪烁次数未到继续
51单片机交通灯程序设计
![51单片机交通灯程序设计](https://img.taocdn.com/s3/m/18da21ae65ce0508763213b9.png)
单片机控制交通灯设计方案一、单片机设计交通灯的设计要求:状态一:南北绿灯亮,东西红灯亮,南北人行道绿灯,东西人行道红灯,南北左拐绿灯,东西左拐红灯。
(时间为15S)状态二:南北黄灯亮,东西红灯亮,南北人行道绿灯,东西人行道红灯,南北左拐绿灯,东西左拐红灯。
(时间为5S)状态三:南北红灯亮,东西绿灯亮,南北人行道红灯,东西人行道绿灯,南北左拐红灯,东西左拐绿灯。
(时间为15S)状态四:南北红灯亮,东西黄灯亮,南北人行道红灯,东西人行道绿灯,南北左拐红灯,东西左拐绿灯。
(时间为5S)二、设计原理分析1、首先了解实际交通灯的变化情况和规律。
假设一个十字路口如上图所以,为东南西北走向。
初始状态0:为东西绿灯亮,南北红灯亮;然后转状态1:东西绿灯亮黄灯亮,南北红灯亮黄灯亮;过后转状态2:东西红灯亮,南北绿灯亮;再转状态3:东西红灯亮黄灯亮,南北绿灯亮黄灯亮。
一段时间后,又循环至状态0。
中间可通过中断按钮产生中断,跳入中断程序执行中断。
2、对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,所以只要用两组就行了,因此,采用单片机内部的I/O口上的P1口中的6个引脚即可来控制6个信号灯。
3、通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。
每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。
4、通过延时时间送显,可以在原有的交通信号灯系统的基础上,增添其倒计时间的显示功能,实现其功能的扩展。
5.通过脉冲中断编写中断程序,可实现中断。
三、设计的仿真图如下;其接法为:P0接数码管的端选段,P1接数码管的位选端,P2接交通灯,接法如下:P20,P21,P22,分别接南北向的红黄绿灯,P23接南北左拐绿灯,P24,P25,P26,分别接东西向的红黄绿灯,P27接东西左拐红灯东西人行到红绿灯和南北红绿灯接到一起南北人行到红绿灯和东西红绿灯接到一起四、AT89C51的KILL程序#include "reg51.h"#define uchar unsigned char#define uint unsigned intuchar code wei[]={0x01,0x02,0x04,0x08}; //位码选择uchar code duan[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码选择uchar table[4]={0,0,0,0};//四位为选端赋值区间uchar num=0;uchar ID=1;uchar sec=15;uchar n=0;void init(void){P0=0xff;//端口初始化P1=0x00;//端口初始化P2=0x00;//端口初始化TMOD=0x01;//使用定时器0的工作方式EA=1;//开总中断ET0=1;//开定时器0的中断TH0=(65536-10000)/256;//定时10毫秒TL0=(65536-10000)%256;TR0=1;}void main(void){init();while(1){switch(ID)//选择函数{case 1:P2=0x14;break;//东西红,南北绿,case 2:P2=0x12;break;//东西红,南北黄,case 3:P2=0x41;break;//东西绿,南北红,case 4:P2=0x21;break;//东西黄,南北红,default:break;}}}void timer0() interrupt 1//对应中断定时器0{TH0=(65536-10000)/256;TL0=(65536-10000)%256;P1=wei[num];//位选端送值P0=duan[table[num]];//端选端送值num++;if(num==4)num=0;table[0]=(sec-1)/10;table[1]=(sec-1)%10;table[2]=(sec-1)/10;table[3]=(sec-1)%10;n++;if(n==100)//10毫秒执行一百次为一秒{n=0;sec--;if(sec==0){ID++;if(ID==5)//ID=1;switch(ID){case 1:sec=15;break; //case 2:sec=3;break;//case 3:sec=15;break;//case 4:sec=3;break;//default:break;/*default就是默认情况,这个是用在switch中,意思是若case都不满足,则执行default后面的语句*/}}}}。
51单片机实验:交通信号灯控制
![51单片机实验:交通信号灯控制](https://img.taocdn.com/s3/m/17e007820242a8956aece44c.png)
实验二:交通信号灯控制
地时,转弯灯均不闪亮。
三、实验程序框图
见图1。
四、实验接线图
见图2。
图2
五、实验要求
进入实验室前,先将设计好的程序填入表5-1中,其中机器码部分可参照教科书附录中的指令表人工汇编完成,也可用相应汇编软件机器汇编得到。
进入实验室后,按照实验步骤规定完成实验。
六、实验步骤
P1.0接K1,P1.1接K2,P1.4~P1.7接L1、L5、L9、L13,输入并运行自己设计的程序,应看到交通灯正确闪亮。
七、程序清单
设计程序时,将图5-2中LED1、LED5作为右转弯灯,LED9、LED13为左转弯灯。
所写程序应进行合理的注释。
【实验过程记录(源程序、测试结果及心得体会等)】
源代码:
ORG 0000H。
交通灯课程设计--8051单片机设计交通灯信号模拟控制
![交通灯课程设计--8051单片机设计交通灯信号模拟控制](https://img.taocdn.com/s3/m/a21370180740be1e650e9a28.png)
机电一体化概论课程设计任务书一、课程设计题目:8051单片机设计交通灯信号模拟控制二、课程设计时间:2009-12——2010-1三、课程设计技术参数和任务要求:四、考核绪论----------------------------------------------------------- 3 第一章.方案论证------------------------------------------------ 4 第二章.硬件电路设计-------------------------------------------- 5 第三章.软件设计------------------------------------------------ 10 第四章.总结--------------------------------------------------- 12 参考文献--------------------------------------------------------13 附录1 源程序--------------------------------------------------- 14 附录2 电路原理图----------------------------------------------- 17随着微控技术的日益完善和发展,单片机的应用在不断走向深入。
它的应用比定导致传统的控制技术从根本上发生变革。
也就是说单片机应用的出现是对传统控制技术的革命。
它在工业控制、数据采集、智能化仪表、机电一体化、家用电器等领路得到了广泛应用,极大的提高了这些领域的技术水平和自动化控制。
因此单片机的开发应用已成为高技术工程领域的一项重大课题。
因此了解单片机知识,掌握单片机的应用技术具有重大的意义。
它实用性强,功能齐全,技术先进,使人们相信这是科技进步的成果。
它更让人类懂得,数字时代的发展将改变人类的生活,将加快科学技术的发展。
基于51单片机的交通信号灯系统_毕业设计
![基于51单片机的交通信号灯系统_毕业设计](https://img.taocdn.com/s3/m/953ef310763231126fdb110c.png)
毕业设计基于单片机的交通信号的灯控制系统一. 综合实训的主要内容 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单片机具有体积小,功耗低,控制能力强,价格低、扩展灵活,使用方便等特点,其最小系统由振荡电路、复位电路构成。
C51单片机的交通灯控制系统.
![C51单片机的交通灯控制系统.](https://img.taocdn.com/s3/m/c073fe64a5e9856a56126095.png)
基于C51单片机的交通灯控制系统1、实验方案论证:进行十字路口的交通信号灯控制电路设计,画出电路原理图及实验电路图,进行软件编程、以及使用说明文档的建立等一整套工作任务。
进行十字路口的交通信号灯控制程序设计,提交一个符合上述功能要求的十字路口的交通信号灯控制系统设计。
2、控制流程分析:对设计要求进行分析后可得出以下交通工作状态表:3、硬件设计概要:根据设计要求,可用6个LED灯分别模拟东西、南北的交通灯。
具体接法如下:AT89C51的P1口接LED灯,P1.0、P1.1、P1.2分别接东西方向红、绿、黄交通灯,P1.3、P1.4、P1.5分别接南北方向的红、绿、黄交通灯。
P1口和LED 灯之间要接限流保护电阻。
两位数码管段选接P2口,位选接P0口低两位,P0口低两位接上拉电阻使其可以输出高电平。
紧急情况按钮一端接地,另一端与外中断1引脚相连;恢复正常按钮一端接地,另一端与外中断0引脚相连。
三、原理图设计1、LED显示部分电路设计:把单片机AT89C51的P1口作为红黄绿灯显示部分,用6个LED灯分别模拟东西、南北的交通灯。
P1.0、P1.1、P1.2各通过一个300Ω的限流保护电阻接东西方向的红、绿、黄LED灯;P1.3、P1.4、P1.5各通过一个300Ω的限流保护电阻接南北方向的红、绿、黄LED灯。
LED灯的一端接电源,另一端经电阻接P1口,因此当P1口引脚输出低电平时LED灯发光,即此方案采取低电平驱动方式。
具体电路如下:2、紧急情况处理电路设计:紧急情况按钮一端接地,另一端与外中断1引脚相连;恢复正常按钮一端接地,另一端与外中断0引脚相连。
在程序设计时,我会将其设置为下降沿触发方式。
具体电路如下:3、数字显示电路设计:选用共阴极两位数码管。
两位数码管A~G引脚各通过一个300Ω的限流保护电阻分别接P2.0~P2.6,位选1引脚和2引脚分别接P0.0口低两位,P0口低两位接5kΩ的上拉电阻使其可以输出高电平。
51单片机模拟交通信号灯.
![51单片机模拟交通信号灯.](https://img.taocdn.com/s3/m/9728deb4ba0d4a7303763a0f.png)
《单片机实验》设计报告交通信号灯模拟系统设计学院:电子信息学院专业:电子信息工程学号: 2011301200106姓名:卢毅指导老师:茹国宝时间: 2014年6月交通信号灯模拟系统设计姓名:卢毅专业:电子信息工程学号:201301200106 指导教师:茹国宝摘要:本系统以单片机为核心,主要应用单片机中定时器计数器,IO接口,中断系统等,结合8279键盘控制电路,数码管显示以及LED灯实现对十字路口交通信号灯的智能控制。
成功实现了利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,通过按键对红绿灯点亮和熄灭时间进行调整及设置以及对红绿灯点亮和熄灭时间进行倒计时时间显示等基本功能。
并在此基础上进一步扩展,实现了对某些特殊功能的操作,如:突发紧急情况,所有路线全部红灯,或南北向(主干道)强制绿灯通行,以及东西向(次干道)强制绿灯等,并且可在交通高峰期(系统默认上午7:00-8:00,下午17:00-18:00)自动修改绿灯时间。
系统功能完善,可操控性好,代码通俗易懂。
关键字:51单片机交通信号灯智能控制 8279主要功能:分析题目可知,有两种方案设计的方法,也即两条不同的主干分别对应不同的方案,方案一以键盘控制为主干,穿插对系统时钟的检测,倒计时的检测等,系统主干为循环检测键盘是否被按下并作出相应操作。
方案二以交通信号灯不同的点亮与熄灭状态为主干,即系统的主干是交通灯状态的循环,在循环中检测按键并作出相应调整。
此次试验选择的是方案二,因为对方案一的代码实现比较复杂。
信号灯的状态依次为:南北绿灯,东西红灯->南北黄灯,东西红灯->南北红灯,东西绿灯->南北红灯,东西黄灯。
解决这部分问题的关键在于8279键盘扫描和相应的数码管显示,在实验帮助里有详细代码,另一个难点在于内置时钟和倒计时显示,这一部分内容通过使用单片机内的定时器能很好的解决,实验帮助五有详细的代码,通过定时器T1产生中断来定时,从而完成一秒的时间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《单片机实验》设计报告交通信号灯模拟系统设计学院:电子信息学院专业:电子信息工程学号: 2011301200106姓名:卢毅指导老师:茹国宝时间: 2014年6月交通信号灯模拟系统设计姓名:卢毅专业:电子信息工程学号:201301200106 指导教师:茹国宝摘要:本系统以单片机为核心,主要应用单片机中定时器计数器,IO接口,中断系统等,结合8279键盘控制电路,数码管显示以及LED灯实现对十字路口交通信号灯的智能控制。
成功实现了利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,通过按键对红绿灯点亮和熄灭时间进行调整及设置以及对红绿灯点亮和熄灭时间进行倒计时时间显示等基本功能。
并在此基础上进一步扩展,实现了对某些特殊功能的操作,如:突发紧急情况,所有路线全部红灯,或南北向(主干道)强制绿灯通行,以及东西向(次干道)强制绿灯等,并且可在交通高峰期(系统默认上午7:00-8:00,下午17:00-18:00)自动修改绿灯时间。
系统功能完善,可操控性好,代码通俗易懂。
关键字:51单片机交通信号灯智能控制 8279主要功能:分析题目可知,有两种方案设计的方法,也即两条不同的主干分别对应不同的方案,方案一以键盘控制为主干,穿插对系统时钟的检测,倒计时的检测等,系统主干为循环检测键盘是否被按下并作出相应操作。
方案二以交通信号灯不同的点亮与熄灭状态为主干,即系统的主干是交通灯状态的循环,在循环中检测按键并作出相应调整。
此次试验选择的是方案二,因为对方案一的代码实现比较复杂。
信号灯的状态依次为:南北绿灯,东西红灯->南北黄灯,东西红灯->南北红灯,东西绿灯->南北红灯,东西黄灯。
解决这部分问题的关键在于8279键盘扫描和相应的数码管显示,在实验帮助里有详细代码,另一个难点在于内置时钟和倒计时显示,这一部分内容通过使用单片机内的定时器能很好的解决,实验帮助五有详细的代码,通过定时器T1产生中断来定时,从而完成一秒的时间。
具体详见附录代码。
设计的主要内容:第一部分,系统开机界面,设置及人机互动的按键控制,流程图如下:(相应的功能流程图中已给出)第二部分,系统主干部分,即交通信号灯4个大循环以及循环内部检测按键完成拓展功能的实现,在循环内检测按键,实现相应功能,流程如下:具体细节,例如定时器的设计等在纸质档报告中有详细分析,在这里就不赘述总结:总的来说这次试验比较成功,题目要求的功能基本都实现了,对于单片机汇编程序语言的理解也更深刻了,课本上的知识比较分散,每部分之间都没有什么联系,通过实验很好的把各部分之间联系起来,加深记忆,更便于理解。
唯一不足的是对于题目的考虑不周,特殊功能采用键盘扫描子程序解决了,而没有采用终端,使得程序应激性不好,没有很好的应变性。
在以后的编程中会注意这方面的内容。
附录:(详细代码);-------------------------------------------------------Z8279 EQU 0FF82H ;8279 状态/命令口地址D8279 EQU 0FF80H ;8279 数据口地址LEDMOD EQU 00H ;左边输入八位字符显示;外部译码键扫描方式,双键互锁LEDFEQ EQU 2FH ;扫描速率LEDCLS EQU 0C1H ;清除显示 RAMLEDWR0 EQU 80H ;设定的将要写入的显示RAM地址READKB EQU 40H ;读 FIFO RAM 地址 0 的命令字;-------------------------------------------------------ORG 0000HAJMP STARTORG 001BH ;INT T1 入口地址AJMP INT_T1ORG 0040HSTART:MOV SP,#60HLCALL INIT8279 ;初始化8279MOV R3,#0H ;时MOV R2,#0H ;分MOV R1,#0H ;秒MOV R7,#0H ;倒计时时间MOV R0,#20 ;50毫秒MOV 40H,#0 ;用于改变主次干道时长比MOV R6,#0FFH ;标志MOV TMOD,#10HMOV TL1,#00H ;50毫秒的时间常数MOV TH1,#4CHSETB EX0SETB ET1SETB EA ;允许中断; 初始状态,全红灯MOV DPTR,#8300HMOV A,#0FHMOVX @DPTR,A; 键盘操作WAIT:LCALL GETKEY ;读键盘CJNE A,#0FFH,CONT ;判断是否有键输入MOV A,BCJNE A,#3CH,KEY_C ;输入键是'C',转CLEAR_T LCALL CLEAR_TKEY_C:CJNE A,#3AH,KEY_A ;输入键是'A',转START_T LCALL START_TKEY_A:CJNE A,#3DH,KEY_D ;输入键是'D',转STOP_T LCALL STOP_TKEY_D:CJNE A,#3BH,KEY_E ;输入键是'B',转SET_T LCALL SET_T ;设置系统时间KEY_E:CJNE A,#3FH,KEY_B ;输入键是'F',转SET_COUTLCALL SET_COUT ;设置倒计时间KEY_B:CJNE A,#3EH,CONT ;输入键是'E',转MONITOR AJMP MONITORCONT:CJNE R6,#0FFH,WAIT;若无秒标志则循环LCALL DISPLAY ;显示时间MOV R6,#0 ;清标志SJMP WAIT ;循环MONITOR:NOPSJMP $ ;等待回到监控;按键对应的功能CLEAR_T: ;时间清零子程序CLR TR1 ;关计数器MOV R3,#0H ;小时清零MOV R2,#0H ;分钟清零MOV R1,#0H ;秒清零MOV R0,#20 ;10毫秒清零MOV R7,#0H ;倒计时时间清零MOV R6,#0FFH ;置秒标志RETSTART_T: ;电子钟计时子程序;程序主要部分;程序开始执行后将循环在这部分CIRCLE:LCALL STATION1 ;南北绿灯,东西红灯LCALL STATION2 ;南北绿灯闪转黄灯,东西红灯 LCALL STATION3 ;南北红灯,东西绿灯LCALL STATION4 ;南北红灯,东西绿灯闪转黄灯 LJMP CIRCLERET;STATION1STATION1: ;南北绿灯,东西红灯MOV R7,30HMOV A,R7ADD A,40HMOV R7,AMOV DPTR,#8300HMOV A,#96H ;南北绿灯,东西红灯SETB TR1; 扫描键盘WO1: LCALL GETKEY ;读键盘CJNE A,#0FFH,JB1 ;判断是否有键输入MOV A,BCJNE A,#3FH,PUSHB1 ;若是按下F,则清零并且返回MOV R4,#1LCALL GETWORD ;读倒计时时间数MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R7,A ;保存输入的值INC AMOV 30H,ALCALL DISPLAY ;显示时间PUSHB1:CJNE A,#3BH,PUSHC1 ;若是按下B,则清零并且返回WAIT CLR TR1 ;关计数器MOV R3,#0H ;小时清零MOV R2,#0H ;分钟清零MOV R1,#0H ;秒清零MOV R0,#20 ;10毫秒清零MOV R7,#0H ;倒计时时间清零MOV R6,#0FFH ;置秒标志AJMP WAITPUSHC1:CJNE A,#3CH,PUSHD1MOV R7,#3 ;若按下C,输出3秒红灯MOV DPTR,#8300HMOV A,#0FHMOVX @DPTR,APUSHD1:CJNE A,#3DH,PUSHE1 ;若按下D,南北绿灯5秒MOV R7,#5MOV A,#96HMOVX @DPTR,APUSHE1:CJNE A,#3EH,JB1MOV R7,#5MOVX @DPTR,AJB1: CJNE R7,#0H,WO1RET;STATION2STATION2:MOV R7,#3MOV DPTR,#8300HMOV A,#06HMOVX @DPTR,ASETB TR1WO2: LCALL GETKEY ;读键盘CJNE A,#0FFH,JB2 ;判断是否有键输入MOV A,BCJNE A,#3FH,PUSHB2 ;若是按下F,则清零并且返回MOV R4,#1LCALL GETWORD ;读倒计时时间数MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R7,A ;保存输入的值INC AMOV 30H,ALCALL DISPLAY ;显示时间PUSHB2:CJNE A,#3BH,PUSHC2 ;若是按下B,则清零并且返回WAIT CLR TR1 ;关计数器MOV R3,#0H ;小时清零MOV R2,#0H ;分钟清零MOV R1,#0H ;秒清零MOV R0,#20 ;10毫秒清零MOV R7,#0H ;倒计时时间清零MOV R6,#0FFH ;置秒标志AJMP WAITPUSHC2:CJNE A,#3CH,PUSHD2MOV R7,#3 ;若按下C,输出3秒红灯MOV DPTR,#8300HMOV A,#0FHMOVX @DPTR,APUSHD2: CJNE A,#3DH,PUSHE2 ;若按下D,南北绿灯5秒MOV R7,#5MOV A,#96HMOVX @DPTR,APUSHE2: CJNE A,#3EH,JB2MOV R7,#5MOV A,#69HMOVX @DPTR,AJB2: CJNE R7,#0H,WO2RET;STATION3STATION3: ;南北红灯,东西绿灯MOV R7,30HMOV DPTR,#8300HMOV A,#69HMOVX @DPTR,ASETB TR1WO3: LCALL GETKEY ;读键盘CJNE A,#0FFH,JB3 ;判断是否有键输入MOV A,BCJNE A,#3FH,PUSHB3 ;若是按下F,则清零并且返回MOV R4,#1LCALL GETWORD ;读倒计时时间数MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R7,A ;保存输入的值INC AMOV 30H,ALCALL DISPLAY ;显示时间PUSHB3:CJNE A,#3BH,PUSHC3 ;若是按下B,则清零并且返回WAIT CLR TR1 ;关计数器MOV R3,#0H ;小时清零MOV R2,#0H ;分钟清零MOV R1,#0H ;秒清零MOV R0,#20 ;10毫秒清零MOV R7,#0H ;倒计时时间清零MOV R6,#0FFH ;置秒标志AJMP WAITPUSHC3:CJNE A,#3CH,PUSHD3MOV R7,#3 ;若按下C,输出3秒红灯MOV DPTR,#8300HMOV A,#0FHMOVX @DPTR,APUSHD3: CJNE A,#3DH,PUSHE3 ;若按下D,南北绿灯5秒MOV R7,#5MOV A,#96HMOVX @DPTR,APUSHE3: CJNE A,#3EH,JB3MOV R7,#5MOV A,#69HMOVX @DPTR,AJB3: CJNE R7,#0H,WO3RET;STATION4STATION4:MOV R7,#3MOV DPTR,#8300HMOV A,#09HMOVX @DPTR,ASETB TR1WO4: LCALL GETKEY ;读键盘CJNE A,#0FFH,JB4 ;判断是否有键输入MOV A,BCJNE A,#3FH,PUSHB4 ;若是按下F,则清零并且返回MOV R4,#1LCALL GETWORD ;读倒计时时间数MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R7,A ;保存输入的值INC AMOV 30H,ALCALL DISPLAY ;显示时间PUSHB4:CJNE A,#3BH,PUSHC4 ;若是按下B,则清零并且返回WAIT CLR TR1 ;关计数器MOV R3,#0H ;小时清零MOV R2,#0H ;分钟清零MOV R1,#0H ;秒清零MOV R0,#20 ;10毫秒清零MOV R7,#0H ;倒计时时间清零MOV R6,#0FFH ;置秒标志AJMP WAITPUSHC4:CJNE A,#3CH,PUSHD4MOV R7,#3 ;若按下C,输出3秒红灯MOV DPTR,#8300HMOV A,#0FHMOVX @DPTR,APUSHD4: CJNE A,#3DH,PUSHE4 ;若按下D,南北绿灯5秒 MOV R7,#5MOV A,#96HMOVX @DPTR,APUSHE4: CJNE A,#3EH,JB4MOV R7,#5MOV A,#69HMOVX @DPTR,AJB4: CJNE R7,#0H,WO4RET;电子钟停止的部分STOP_T: ;电子钟停止计时子程序CLR TR1RET;时钟设置部分SET_T: ;设置初值子程序CLR TR1 ;关计数器MOV R4,#7LCALL GETWORD ;读小时数CJNE A,#0FFH,INVALID ;判断输入合法性MOV A,BADD A,#232JC INVALID ;判断输入小时值 < 24MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R3,A ;保存输入的值MOV R4,#5LCALL GETWORD ;读分钟数CJNE A,#0FFH,INVALID ;判断输入合法性MOV A,BADD A,#196JC INVALID ;判断输入分钟数 < 60 MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R2,A ;保存输入的值MOV R4,#3LCALL GETWORD ;读秒钟数CJNE A,#0FFH,INVALID ;判断输入合法性MOV A,BADD A,#196JC INVALID ;判断输入分钟值 < 60 MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R1,A ;保存输入的值AJMP SET_TOKSET_COUT:MOV R4,#1LCALL GETWORD ;读倒计时时间数CJNE A,#0FFH,INVALID ;判断输入合法性MOV A,BMOV B,#10DIV ABSWAP AADD A,BMOV R7,A ;保存输入的值INC AMOV 30H,AAJMP SET_TOKINVALID:LCALL CLEAR_T ;时间清零SET_TOK:LCALL DISPLAY ;显示时间RET;读取输入按键的部分GETWORD: ;读数子程序WKEY1:LCALL GETKEY ;读键盘CJNE A,#0FFH,WKEY1;无键输入,则再读MOV A,BADD A,#0C6HJC ERROR1 ;判断输入是否大于9 MOV A,BSUBB A,#30HJC ERROR1 ;判断输入是否小于0MOV R5,ALCALL DISLED ;显示输入的字符MOV B,#10MUL ABPUSH ACC ;保存输入的值WKEY2:LCALL GETKEY ;读键盘CJNE A,#0FFH,WKEY2;无键输入则再读MOV A,BADD A,#0C6H ;判断输入是否大于9 JC ERROR2MOV A,BSUBB A,#30H ;判断输入是否小于0 JC ERROR2DEC R4MOV R5,ALCALL DISLED ;显示输入的字符MOV B,APOP ACCADD A,BMOV B,A ;把得到的值存在B MOV A,#0FFH ;置合法输入标志AJMP KEYOKERROR2: POP ACCERROR1: MOV A,#0 ;置非法输入标志KEYOK: RET;8279初始化INIT8279: ;8279初始化子程序PUSH DPH ;保存现场PUSH DPLPUSH ACCLCALL DELAY ;延时MOV DPTR ,#Z8279MOV A,#LEDMOD ;置8279工作方式MOVX @DPTR,AMOV A,#LEDFEQ ;置键盘扫描速率MOVX @DPTR,AMOV A,#LEDCLS ;清除 LED 显示MOVX @DPTR,APOP ACC ;恢复现场POP DPLPOP DPHRET;读取键盘子程序GETKEY:;输入: 无 ; 输出: B: 读到的键码 A: 按键的标志 PUSH DPH ;保存现场PUSH DPLPUSH PSWMOV DPTR,#Z8279MOVX A,@DPTR ;读8279状态ANL A,#07H ;屏蔽D7-D3JNZ GETVAL ;判断是否有键输入MOV A,#0H ;置标志(无键输入)SJMP NKBHITGETVAL:MOV A,#READKB ;读 FIFO RAM 命令MOVX @DPTR,AMOV DPTR,#D8279MOVX A,@DPTR ;读键ANL A,#3FH ;屏蔽 SHIFT 和 CTRL 键MOV DPTR,#KEYCODE;键码表起始地址MOVC A,@A+DPTR ;查表MOV B,A ;置返回键值MOV A,#0FFH ;置标志(有键输入)NKBHIT:POP PSW ;恢复现场POP DPLPOP DPHRET;T1定时器中断控制部分,INT_T1: ;INT_T1中断服务子程序 PUSH DPH ;保护现场PUSH DPLPUSH ACCPUSH PSWMOV TL1,#00H ;50毫秒定时常数MOV TH1,#4CHDJNZ R0,EXIT ;判断毫秒=0MOV R0,#20 ;DELAY 1 SECONDMOV R6,#0FFH ;置秒标志COUNT1: MOV A,R7ADD A,#99HDA AMOV R7,A ;减1CJNE R1,#59H,SECOND;判断秒=59MOV R1,#99HCJNE R2,#59H,MINUTE;判断分=59MOV R2,#99HCJNE R3,#23H,HOUR ;判断时=23MOV R3,#99HHOUR:MOV A,R3ADD A,#1 ;时加1DA AMOV R3,AMINUTE:MOV A,R2ADD A,#1 ;分加1DA AMOV R2,ASECOND:MOV A,R1ADD A,#1 ;秒加1DA AMOV R1,A;判断是否到了特定时间7~8,17~18点CJNE R3,#7,EXIT1MOV 40H,#5CJNE R3,#00010111B,EXIT1MOV 40H,#5SJMP SHOWTEXIT1: MOV 40H,#0SHOWT: CJNE R6,#0FFH,EXIT;若无秒标志则循环LCALL DISPLAY ;显示时间MOV R6,#0 ;清标志EXIT:POP PSW ;恢复现场POP ACCPOP DPLPOP DPHRETI ;中断返回;实验帮助11延时部分,不太清楚具体功能是什么,可能是键盘消抖DELAY: ;延时子程序PUSH 0 ;保存现场PUSH 1MOV 0,#0HDELAY1:MOV 1,#0HDJNZ 1,$DJNZ 0,DELAY1POP 1 ;恢复现场POP 0RET;显示控制部分,但不是具体显示部分DISPLAY:MOV A,R3ANL A,#0FHADD A,#10HMOV R5,AMOV R4,#6LCALL DISLED ;显示小时低位MOV A,R3SWAP AANL A,#0FHMOV R5,AMOV R4,#7LCALL DISLED ;显示小时高位MOV A,R2ADD A,#10HMOV R5,AMOV R4,#4LCALL DISLED ;显示分钟低位MOV A,R2SWAP AANL A,#0FHMOV R5,AMOV R4,#5LCALL DISLED ;显示分钟高位MOV A,R1ANL A,#0FHADD A,#10HMOV R5,AMOV R4,#2LCALL DISLED ;显示秒低位MOV A,R1SWAP AANL A,#0FHMOV R5,AMOV R4,#3LCALL DISLED ;显示倒计时高位MOV A,R7ANL A,#0FHADD A,#10HMOV R5,AMOV R4,#0LCALL DISLED ;显示倒计时低位MOV A,R7SWAP AANL A,#0FHMOV R5,AMOV R4,#1LCALL DISLEDRET;显示部分DISLED: ;显示字符子程序;输入: R4,位置 R5,值 PUSH DPH ;保存现场PUSH DPLMOV A,#LEDWR0 ;置显示起始地址ADD A,R4 ;加位置偏移量MOV DPTR,#Z8279MOVX @DPTR,A ;设定显示位置MOV DPTR,#LEDSEG ;置显示常数表起始位置MOV A,R5MOVC A,@A+DPTR ;查表MOV DPTR,#D8279MOVX @DPTR,A ;显示数据POP ACC ;恢复现场POP DPLPOP DPHRET;LED显示常数表LEDSEG:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;'0,1,2,3,4,5,6,7'DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;'8,9,A,B,C,D,E,F'DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,087H ;'0.,1.,2.,3.,4.,5.,6.,7.' DB 0FFH,0EFH,0F7H,0FCH,0B9H,0DEH,0F9H,0F1H ;'8.,9.,A.,B.,C.,D.,E.,F.' DB 6DH,02H,08H,00H,59H,0FH,76H ;'U,-,_, ,I,O,P, ';键盘键码表KEYCODE:DB 30H,31H,32H,33H,34H,35H,36H,37H ;'0,1,2,3,4,5,6,7'DB 38H,39H,3AH,3BH,3CH,3DH,3EH,3FH ;'8,9,A,B,C,D,E,F'END【返回】。