基于51单片机的红绿灯模拟系统
基于51单片机的交通信号灯模拟控制系统设计
XXXX学院毕业设计(论文)课题名称交通信号灯模拟控制系统学生姓名X X X学号XXXXXXXXXXXXX系别自动化工程系专业班级机电一体化X班指导教师X X技术职务讲师XXXXXX学院教务处制指导教师:XXX 2016年9月5 日用51单片机设计交通信号灯模拟控制系统机电一体化X班XXX 指导老师:XXX摘要:城市交通信号灯模拟控制系统模拟了能够对信号灯进行远程投时的城市十字路口控制系统功能。
借助于单片机开发板上的已有资源,构建了模拟实际系统功能的单片机扩N82C55控制LED灯模块、8位七段数码管显示控制模块和板上扩展接线模块。
在分析实际系统工作流程的基础上,给出了针对单片机开发板的模拟系统C51控制程序流程。
用于实际系统时,只需要将代码移植到现场设备并进行具体设置和适当修改即可,可以在满足客户需求的前提下最小化系统开发成本。
交通信号灯模拟控制系统模拟了能够对信号灯进行远程授时的城市十字路口控制系统功能。
基于AT89C51单片机的性能参数和工作原理,应用Keil单片机编译软件的C语言编程以及使用该软件开发单片机程序,说明设计的交通信号灯模拟控制系统的工作原理、程序流程和硬件结构等相关技术,指出该系统的特点。
设计一种基于AT89C51超低功耗单片机的交通信号灯模拟控制系统,详细阐明了交通信号灯模拟控制系统的工作原理,实现了一般交通信号灯控制系统的主要功能及要求,具有实用性。
该系统充分利用了AT89C51单片机的特点,使用现今单片机广泛采用的C语言编制了系统程序,并利用Keil uVision3软件进行编译运行,最终通过Proteus完成了模拟控制系统的仿真。
关键词:AT89C51单片机K eil单片机编译软件仿真软件Proteus 6 C语言交通灯XXXXX学院毕业设计(论文)指导记录表注:指导情况须填明学生在毕业设计(论文)撰写过程中存在的问题,指导教师要求修改的内容或改进措施。
指导情况填写不包括下达任务书和开题报告意见。
51单片机模拟交通灯
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单片机的智能交通灯系统设计
十字路口交通灯控制系统的设计1.设计思路近年来,随着科技的飞速发展,电子器件也随之广泛应用,其中单片机也不断深入人民的生活当中。
本模拟交通灯系统利用单片机AT89C51作为核心元件,实现了通过信号灯对路面状况的智能控制。
从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。
系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。
本模拟系统由单片机硬/软件系统,两位8段数码管和LED灯显示系统。
和复位电路控制电路等组成,较好的模拟了交通路面的控制。
1.1 电源提供方案采用单片机控制模块提供电源。
1.2显示界面方案采用数码管显示。
这种方案只显示有限的符号和数码字符,简单,方便。
1.3 输入方案:直接在I/O口线上接上按键开关。
由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O 口就可实现,且本身的计数器及RAM已经够用,故选择该方案。
2 单片机交通控制系统总体设计2.1单片机交通控制系统的通行方案设计设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。
一共可以有四个状态。
通过具体的路口交通灯状态的分析我们可以把这四个状态归纳如下:(1)东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时80秒。
此状态下,东西向禁止通行,南北向允许通行。
(2)东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时3秒。
此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。
(3)南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时60秒。
此状态下,东西向允许通行,南北向禁止通行。
(4)南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时3秒。
此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。
用图表表示灯状态和行止状态的关系如下:表1交通状态及红绿灯状态灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。
基于单片机交通红绿灯控制系统设计..
基于单片机交通红绿灯控制系统设计单片机作为电子产品的开发平台已应用到众多领域。
用单片机控制交通红绿灯有很高的性价比。
本设计要求:1)熟悉MCS-51单片机的结构及编程方法。
2)了解继电器的工作原理。
3)设计并实现交通红绿灯控制系统。
用8255作为输出口,接继电器,控制12个信号灯的燃灭,模拟交通等管理。
4) 控制算法自定并可设置。
目录一、引言二、单片机概述三、80C51引脚说明四、8255A芯片简介五、系统硬件设计5.1、原理说明5.2、元件选择5.3、电路原理图六、系统软件设计6.1、程序流程图6.2、程序清单七、仿真结果八、心得体会九、参考文献一、引言2005年最新统计数据表明,在中国每5分钟就有一人丧身车轮,每一分钟都会有一人因为交通事故儿伤残。
每年因交通事故所造成的的经济损失达数百亿元。
为了减少交通事故,如今交通红绿灯已经安装在各个交通路口上,已经成为疏导交通车辆最常见和最有效的手段。
但这一技术在19世纪就已出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。
电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
1918年,又出现了带控制的红绿灯和红外线红绿灯。
带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。
红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。
红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。
基于51单片机的交通信号灯系统工作过程
基于51单片机的交通信号灯系统工作过程下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!本店铺为大家提供各种类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it 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, this 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!交通信号灯系统在城市交通中起着至关重要的作用,它能够有效地指挥车辆和行人的通行,保障交通的顺畅和安全。
基于51单片机的交通信号灯模拟控制系统设计整理资料
语言 交通灯
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单片机的模拟交通灯课程设计报告
模拟交通灯控制系统的设计一、功能要求利用红、绿、黄三种不同颜色的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 软件进行在线仿真,经过对程序多次地修改后,仿真效果达到了预期的要求。
基于51单片机的交通信号灯模拟控制系统
基于51单片机的交通信号灯模拟控制系统一、实验目的和要求1.掌握单片机基本资源使用。
2.掌握单片机电路原理图绘制和仿真。
3.掌握单片机C语言软件开发以及联合仿真。
二、实验内容和原理实验内容:1.根据题目绘制单片机电路原理图。
2.绘制程序流程图并编写C语言程序3.在仿真程序中进行联合仿真,最后提交实验报告三、主要仪器设备keilC,proteus。
四、操作方法与实验步骤4.1 题目要求用单片机设计一个十字路口交通灯模拟控制系统,要求东西、南北两个方向都通行20秒,警告3秒,禁止20秒,同时要考虑到东西、南北两个方向出现异常情况,出现异常情况器该方向通行60秒。
4.2 系统设计思路南北的绿红黄发光二极管与单片机AT89C51单片机的P1.0,P1.1,P1.2相连。
东西的绿红黄发光二极管与单片机AT89C51单片机的P1.4,P1.5,P1.6相连。
改变单片机P1口编码控制交通灯。
控制过程中会出现两种异常情况用外中断0和外中断1处理。
时间单位采用500ms信号,由定时/计数器0定时50ms,循环10次产生,定时/计数器0采用查询方式,主程序中设定定时/计数器0的工作方式:方式1。
4.2 电路图绘制(包含详细的参数选定文字和图像叙述)C1=1nF,C2=1nF,C3=1nF,R1=300,R2=300,R3=300,R4=300,R5=300,R6=300,R7=300,R8=300,R9=300,R10=300,R11=300,R12=300,R13=3004.3 C程序编制(包含详细的文字和程序流程图)4.3 仿真分析(包含文字和图像叙述)东西绿灯,南北红灯东西黄灯,南北红灯南北绿灯,东西红灯南北黄灯,东西红灯东西发生异常时,东西通行,南北禁止,东西方向绿灯闪,南北方向红灯闪南北发生异常时,南北通行,东西禁止,南北方向绿灯闪,东西方向红灯闪五、讨论和心得(不少于100字)通过这次对交通灯信号的模拟,了解了交通灯4种正常状态,2种异常状态,它们分别是:状态1,东西方向绿灯,南北方向红灯20秒。
基于51单片机的红绿灯模拟系统
基于增强型8051单片机的红绿灯模拟控制系统2012年11月13日目录系统功能介绍 (3)1.1系统结构框图 (3)1.2各部分功能说明 (4)二、系统方案 (4)2.1 系统设计与结构框图 (4)2.2 方案论证与比较 (4)2.2.1 虚拟仿真模块 (4)2.2.2 控制器模块 (5)2.2.3 交通灯显示模块 (6)2.2.4 数码管显示模块 (7)2.2.5 蜂鸣器模块 (9)2.2.6 矩阵键盘模块 (9)三、方案不足与改进方案 (10)3.1控制器模块 (10)3.2 显示输出模块(数码管模块、红绿灯模块) (10)3.3 输入模块(矩阵键盘模块) (10)3.4 拓展模块 (10)四、项目清单与注意事项 (11)4.1 项目清单 (11)4.2 注意事项 (11)4.2.1 模拟仿真 (11)4.2.2 连接电路 (11)4.2.3 软件调试与故障排除 (11)五、程序代码 (11)附录、相关芯片资料 (22)74HC573中文资料 (22)摘要:本系统是以STC公司的STC12C5A60S2单片机为主控制器,通过74HC573驱动4位数码管显示红绿灯倒计时,能实现红绿灯的模拟控制,并具有比较强的适应性和可调性。
关键词:4×4矩阵键盘;STC12C5A60S2;74HC573。
系统功能介绍1.1系统结构框图1.2各部分功能说明(1)红绿灯模块可以实现红绿灯系统的显示模拟,在黄灯亮时,另一个方向上的红灯会闪烁;(2)数码管模块可以显示路口各个方向红灯、黄灯和绿灯的持续时间,并进行倒计时;(3)矩阵键盘模块可以进行对倒计时时间的修改,修改的时间可由数码管显示;(4)蜂鸣器在交通灯的状态发生改变时,会有不同的声音提示。
二、系统方案2.1 系统设计与结构框图根据题目要求,本系统主要由虚拟仿真模块,控制器模块,交通灯显示模块,数码管显示模块,蜂鸣器模块,矩阵键盘模块组成。
2.2 方案论证与比较2.2.1 虚拟仿真模块我们决定先通过proteus软件仿真,设计好电路与程序,再动手焊接系统板。
基于51单片机数码管显示十字路口红绿灯
基于51单片机数码管显示十字路口红绿灯#include<reg51.h>unsigned char count,d1,d2,c1,c2;unsigned char s[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; signed int time=10,time1=13,g=3,y=13;void delay(unsigned char i);/***********子函数声明***************/void sm();/***********I/O端口声明*****************/sbit P2_0=P2^0; //东西绿sbit P2_1=P2^1; //东西红sbit P2_2=P2^2; //东西黄sbit P2_3=P2^3; //南北绿sbit P2_4=P2^4; //南北红sbit P2_5=P2^5; //南北黄sbit button=P2^6;sbit button1=P2^7;sbit button2=P3^0;sbit button3=P3^1;sbit button4=P3^2;sbit button5=P3^3;sbit button6=P3^4;sbit button7=P3^5;sbit button8=P3^6;/*************************************数码显示******************************************/void sm(){d1=time/10;d2=time%10; //东西数码管P1=0x00;P0=s[d1];delay(20);P1=0x01;P0=s[d2];delay(20);c1=time1/10; //南北数码管c2=time1%10;P1=0x02;P0=s[c1];delay(20);P1=0x03;P0=s[c2];delay(20);}void main() //主函数{TMOD=0x01;TH0=0x3c;TL0=0xb0;EA=1;ET0=1;TR0=1;while(1){sm();}}void int1()interrupt 1 {count++;if(count==20){count=0;ts++;th++;time--;time1--;}/*****************************判断程序******************************/if(ts==0&&th==0) //初始状态时间与亮灯颜色{time1=13;time=10;P2=0xee;}if(ts==11) //东西10秒转3秒{P2=0Xeb;time=3;}if(ts==15) //东西3秒转13秒{P2=0xf5;time=13;}if(ts==29) //东西13秒转10秒{ts=0;}if(th==14) //南北13秒转10秒{P2=0xf3;time1=10;}if(th==25) //南北10秒转3秒{P2=0xdd;time1=3;}if(th==29) //南北3秒转10秒{th=0;}}void delay(unsigned char i ) //延时函数{unsigned char j,k;for (k=0;k<i;k++)for (j=0;j<10;j++);}。
基于51单片机的交通灯设计
基于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单片机的交通灯设计专业: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单片机的交通信号灯模拟控制系统实验交通信号灯是城市交通管理中常见的一种交通管理设施。
它通过控制不同方向的红绿黄灯亮灭时间来指示不同方向的车辆和行人通行状态,有效地维护交通秩序和保障交通安全。
本实验基于51单片机,通过模拟控制系统实现交通信号灯的控制,以深入理解单片机原理及应用。
首先,我们需要明确实验的目标和要求。
通过本实验,我们可以掌握以下内容:1.掌握51单片机的基本工作原理和硬件结构;2.熟悉51单片机的编程语言和编程环境;3.理解交通信号灯的工作原理和设计要求;4.掌握基于51单片机的交通信号灯控制系统的设计和实现。
本实验的主要设备和材料包括:51单片机开发板、交通信号灯模拟电路、继电器、电压稳压模块、LED等。
实验步骤如下:1.搭建交通信号灯的模拟电路。
根据交通信号灯的工作原理,将LED 灯分别连接到单片机的不同IO口上,并通过继电器和电压稳压模块控制电路的通断,以实现红、黄、绿三个灯的交替亮灭。
2.编写单片机的控制程序。
根据交通信号灯的工作模式,编写单片机的控制程序,通过控制不同IO口的电平状态,实现红、黄、绿三个灯的控制。
程序中需要设置不同灯的时间参数和控制逻辑,确保交通信号灯能够按照预定的时间间隔进行工作。
3.上传程序到单片机。
将编写好的单片机控制程序通过编程器上传到单片机上,使得单片机能够执行相应的控制逻辑。
4.调试和测试。
将交通信号灯模拟电路的电源插入电源插座,观察LED灯的亮灭情况,并根据设定的时间参数检查交通信号灯是否按照预期工作。
如有需要,可以通过修改程序中的参数,调整交通信号灯的控制逻辑。
5.实验总结。
在实验完成后,我们应该对实验结果进行总结和分析,检查实验是否达到预期的目标和要求。
同时,我们还可以对实验中遇到的问题和解决方法进行总结,为今后的实验和应用提供借鉴。
通过这个实验,我们可以深入了解51单片机的原理和应用,并在实践中掌握交通信号灯的控制方法。
基于51单片机的交通灯控制系统设计
一、摘要:随着科技的飞速发展,越来越多的控制功能强大的芯片出现在我们生活中,但8051系列单片机,因为其的廉价几成本,在我们生活中依然处于十分重要的地位。
在实时检测和自动控制的单片机应用系统中,单片机是作为一个核心部件来使用,但是仅单片机方面知识是不够的,还需要根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
作为交通控制的重要组成部份单片机。
因此,本人选择制作交通灯作为课题加以设计并实现。
交通管制应当以人性化、智能化为目的,做出相应的改善。
以此为出发点,本系统采用的单片机控制的交通信号灯。
系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广阔的应用前景。
关键词:交通灯,51单片机,数码管二、实习目的和意义1.学习51单片机的最小系统及硬件接口设计与应用2.熟练掌握电路原理图绘制软件DPX的使用。
3.熟练单片机的程序设计与调试。
4. 自主设计出具有实际意义的能用于生活的电路系统。
5. 本次课程设计对以后的毕业设计甚至工作打下了动手自己设计的基础。
三、实习要求1. 完成以8051系列单片机为核心处理器的模拟十字路口交通灯控制的硬件设计(在altium designer下画出硬件原理图)。
布线,印制电路板,并焊接原件搭载硬件电路,做出实物。
2. 完成交通灯控制系统的软件编程。
3. 软硬件综合调试,模拟实现对交通灯控制系统的控制。
4. 撰写实验报告:报告中给出硬件方案、软件流程图、软件关键代码四、实习内容1.设计题目:基于51单片机交通十字路口信号灯设计2.实现功能:具有红、绿、黄三种颜色彩灯,并有一个数码管进行倒计时显示倒计时时间为三十秒。
还应具有按键控制特殊情况下十字路口不需要红绿灯的显示(车流量很少的地段深夜可以不设红绿灯)。
五、系统实现1.电路设计:51单片机介绍:本实验使用的51单片机为STC89C52STC89C52是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM)。
基于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、交通灯输出控制模块
道口交通灯指示采用高亮度红、黄、绿发光二极管进行提示。
基于51单片机的交通信号灯系统
摘要:随着世界范围内科技的发展,社会的进步,但也导致城市化进程的加快,越来越多的人也买得起车了,从而导致交通拥挤的现象时有发生。
由此可以看出,简单的十字路口交通信号灯已经不能适应现代化发展的潮流,因此需要一个更加合理、有效的智能交通灯控制系统来缓解城市交通的压力。
在现代,利用单片机来实现交通信号灯的控制成为了我们调控交通的主流。
运用单片机控制交通信号灯比较方便,而且性能高,易于控制。
所以,我们有必要对这一课题进行一次系统的研究学习。
在本次毕业设计中,我的主要设计任务是在一个十字路口设计一个交通信号灯控制系统,并且利用单片机来对该系统进行合理的控制。
本系统由AT89C51单片机、交通信号灯状态控制电路、LED数码管显示电路、按键电路组成。
系统除了拥有基本交通信号灯状态控制功能外,还具有倒计时、时间设置等功能。
关键词:单片机交通信号灯AbstractWith the worldwide development of science and technology, the progress of the society, but also led the city to speed up, more and more people can afford to buy a car, causing traffic congestion phenomenon, can be seen, traffic lights at the crossroads of simple already can not adapt to the modern development trend, so we need a smart traffic the lamp is more reasonable, effective control system to alleviate the city traffic pressure.In modern times, to achieve control of traffic lights using SCM into the mainstream of our traffic regulation. The use of single-chip microcomputer to control the traffic signal lamp is convenient, high performance, easy to control. Therefore, we are necessary to study a system on this subject. In this graduation design, the main design task is to design a control system of traffic lights at a crossroads, and the use of single-chip microcomputer to the reasonable control of the system. This system consists of AT89C51 microcontroller, a key circuit, the state of the traffic lights control circuit, LED digital tube display circuit. In addition to the basic state of the traffic lights control function, but also has a countdown, time setting and other functions.Keywords: SCM, traffic signal lamp目录1 绪论 (1)1.1交通控制系统的设计背景 (1)1.2交通控制系统设计的现实意义 (1)1.3 国内外交通信号灯系统的发展情况 (1)1.4 主要研究内容 (2)2 单片机交通控制系统方案设计 (3)2.1单片机交通控制系统的通行方案 (3)2.2 单片机交通控制系统基本原理及所要实现的功能 (3)2.2.1 基本原理 (3)2.2.2 所要实现的要求 (3)2.3单片机交通控制系统框图 (4)3 系统硬件电路的设计 (5)3.1 控制芯片AT89C51单片机 (5)3.1.1 AT89C51单片机简介 (5)3.1.2 AT89C51单片机的主要性能 (5)3.1.3 单片机组成及结构 (5)3.1.4 单片机各引脚功能 (6)3.1.5 AT89C51的中断源 (8)3.2 LED数码管 (8)3.3 发光二极管 (9)3.4 各电路模块设计 (10)3.4.1 单片机最小系统 (10)3.4.2 交通信号灯显示电路 (10)3.4.3 倒计时显示电路 (10)3.4.4 按键操作电路 (11)4 系统程序设计 (13)4.1主程序框图 (13)4.2 交通灯闪烁子程序 (13)4.3 LED数码管显示子程序 (14)4.5 红绿灯时间调整程序 (15)5 交通灯控制系统仿真与调试 (18)5.1 开发软件—KeilC51 (18)5.2仿真软件—Proteus简介 (18)5.3 系统仿真结果 (18)总结 (20)致谢 (21)参考文献 (22)附录 (23)1绪论1.1交通控制系统的设计背景随着世界范围内城市化进程的加快,并且汽车越来越普及化,城市的交通状况已经成为一个全球性的问题。
基于51单片机交通灯控制系统
摘要随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术。
本模拟交通灯系统利用单片机AT89C51作为核心元件,实现了通过信号灯对路面状况的智能控制。
从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。
系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。
本模拟系统由单片机硬/软件系统,两位8段数码管和LED灯显示系统等组成,较好的模拟了交通路面的控制。
关键词:交通灯,单片机,数码管,LED灯目录引言 (1)1.设计背景 (2)1.1课题背景 (2)1.2设计内容 (2)2.交通灯控制系统系统简介 (3)2.1方案选择 (3)2.2系统设计原理 (4)3.系统硬件设计 (5)3.1主控制器选择 (5)3.2 时钟及复位电路 (7)3.3 指示灯及倒计时模块 (8)3.4系统总体电路图 (9)4. 系统软件设计简介 (10)4.1 系统主程序流程 (10)5. Proteus软件仿真 (10)5.1 Proteus软件介绍 (10)5.2 交通控制系统Proteus仿真 (12)6. 总结 (14)参考文献 (15)附录:源程序代码 (15)引言当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这个技术在19世纪就已经出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两以旋转方式玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,是警察受伤,遂被取消。
电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。
基于51单片机的交通信号灯系统_毕业设计
毕业设计基于单片机的交通信号的灯控制系统一. 综合实训的主要内容 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单片机具有体积小,功耗低,控制能力强,价格低、扩展灵活,使用方便等特点,其最小系统由振荡电路、复位电路构成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于51单片机的红绿灯模拟系统基于增强型8051单片机的红绿灯模拟控制系统2012年11月13日目录系统功能介绍 (5)1.1系统结构框图 (5)1.2各部分功能说明 (5)二、系统方案 (6)2.1 系统设计与结构框图 (6)2.2 方案论证与比较 (6)2.2.1 虚拟仿真模块 (6)2.2.2 控制器模块 (8)2.2.3 交通灯显示模块 (9)2.2.4 数码管显示模块 (10)2.2.5 蜂鸣器模块 (13)2.2.6 矩阵键盘模块 (14)三、方案不足与改进方案 (15)3.1控制器模块 (15)3.2 显示输出模块(数码管模块、红绿灯模块) (15)3.3 输入模块(矩阵键盘模块) (16)3.4 拓展模块 (17)四、项目清单与注意事项 (17)4.1 项目清单 (17)4.2 注意事项 (17)4.2.1 模拟仿真 (17)4.2.2 连接电路 (18)4.2.3 软件调试与故障排除 (18)五、程序代码 (18)附录、相关芯片资料 (41)74HC573中文资料 (41)摘要:本系统是以STC公司的STC12C5A60S2单片机为主控制器,通过74HC573驱动4位数码管显示红绿灯倒计时,能实现红绿灯的模拟控制,并具有比较强的适应性和可调性。
关键词:4×4矩阵键盘;STC12C5A60S2;74HC573。
系统功能介绍1.1系统结构框图1.2各部分功能说明(1)红绿灯模块可以实现红绿灯系统的显示模拟,在黄灯亮时,另一个方向上的红灯会闪烁;(2)数码管模块可以显示路口各个方向红灯、黄灯和绿灯的持续时间,并进行倒计时;(3)矩阵键盘模块可以进行对倒计时时间的修改,修改的时间可由数码管显示;(4)蜂鸣器在交通灯的状态发生改变时,会有不同的声音提示。
二、系统方案2.1 系统设计与结构框图根据题目要求,本系统主要由虚拟仿真模块,控制器模块,交通灯显示模块,数码管显示模块,蜂鸣器模块,矩阵键盘模块组成。
2.2 方案论证与比较2.2.1 虚拟仿真模块我们决定先通过proteus软件仿真,设计好电路与程序,再动手焊接系统板。
因为通过软件仿真,设计系统时灵活性会大一些,可以提前选择好硬件,便于硬件部分的修改,也可以做到软件部分的即时调试。
仿真时的状况如图2-2所示:图2-1 Proteus软件欢迎界面图2-2 Proteus仿真情况2.2.2 控制器模块控制器模块我们决定选择STC公司的STC12C5A32S2单片机。
STC12C5A60S2/AD/PWM 系列单片机是STC生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S,即25万次/秒),针对电机控制,强干扰场合。
(《STC12C5A32S2系列单片机器件手册》);内部结构相对简单,可用作入门级芯片;而且我们手中已经有几块STC12C5A32S2系列单片机最小应用系统,便于硬件电路的焊接。
最小系统电路图参考图2-3:图2-3 最小系统电路图2.2.3 交通灯显示模块方案一:采用四组红黄绿三色二极管,通过10K 的排阻分别连至单片机的P1.0-P1.6口,通过改变P1.1-P1.6的输出电平控制交通灯的亮灭。
缺点是占用I/O口较多,但易于编程控制;方案二:采用74HC573芯片控制四组发光二极管。
通过P0.0-P0.5向74HC573发送信号,P2中某一I/O口控制芯片的开启和关闭。
优点是能比较大的节约I/O口,缺点是会增加编程复杂度。
由于单片机的I/O口足够用来实现系统的基本功能,所以我们决定采用方案一。
如果之后扩展功能时还会需要更多的I/O口时,可以考虑换成方案二。
方案一的电路图如下:图2-4 交通灯模块电路图(方案一)2.2.4 数码管显示模块方案一:采用两片74HC595芯片驱动共阳极四位数码管。
一片控制段选,一片控制位选。
位选信号通过三极管9012放大。
优点是占用I/O口较少,但在仿真过程中出现了一些问题。
问题如下:静态显示时数码管显示正常,但动态仿真时虽然单片机的各个引脚的电平变化正常,但位选信号(9012的基极输入信号)的一直为零。
更改限流电阻以后,数码管全部显示8。
经查阅资料,得知在程序和硬件电路正常显示的情况下,数码管不正常显示的原因,可能是因为数码管的响应时间过短,对PNP 三极管的仿真速度太低。
资料中建议使用NPN型三极管,并将数码管的minimum Trigger Time值调高。
这也说明了仿真与硬件电路之间的不统一。
电路图如下图所示:方案二:采用两片74HC573芯片驱动共阴极四位数码管。
一片控制段选,一片控制位选。
通过P0口控制输出电平,故需要上拉电阻。
上拉电阻采用10K的排阻。
优点是软件控制比较简单,但相比方案一要占用更多的I/O口。
此方案在仿真时也出现了问题,即数码管显示乱码。
之后通过对数码管进行软件清屏的方法使数码管显示正常。
方案二的电路图如下图所示:为了使硬件电路与仿真有较高的统一性,我们决定采用方案二。
图2-5数码管电路仿真图(方案一)图2-6 数码管电路仿真图(方案二)2.2.5 蜂鸣器模块方案一:通过控制蜂鸣器,使蜂鸣器发出不同的声音,指示交通灯路口的不同状态。
其优点是控制较为简易,缺点是通过蜂鸣器的发声,不同路口之间通行状态是通过蜂鸣器的不同频率的声音决定的,但不同频率的声音与不同方向的通行状态之间的对应关系不直观,交互性较差。
方案二:通过ISD400x系列语音芯片,录放不同的声音,指示交通灯路口的不同状态。
其优点是可以让通行者直观的了解各个方向下一步的通行状态,有很强的交互性,缺点是硬件电路和软件控制较为复杂,占用较多的I/O口,而且与其他部分之间的时序比较难以协调。
由于本系统的制作本着仿真模拟的原则,暂时通过蜂鸣器来代替语音信息,但在以后的实验中可以考虑用ISD400x系列语音芯片代替蜂鸣器。
2.2.6 矩阵键盘模块根据题目要求,本系统最少三个按键就可以实现按键调节时间功能。
但为了更好的完成项目,和以后的功能拓展,我们决定采用4*4矩阵按键。
方案一:通过P3口控制矩阵按键。
优点是易于编程,其缺点是占用过多的I/O口。
但由于按键在一般情况下都是断开的,所以同一个引脚还可以扩充其他功能。
其原理图如下图所示:方案二:采用改进型I/O端口键盘。
优点是I/O 端口只占用4个,但在编程上复杂度增加。
其原理图如下图所示:所以目前在I/O口比较充足的情况下,我们决定先采用方案一,在以后的改进工作中考虑将其换成方案二。
图2-7 矩阵键盘仿真电路图(方案一)三、方案不足与改进方案3.1控制器模块I/O口的利用情况较差。
在各引脚中,P0口和P2.6,P2.7用来控制74HC573驱动数码管,P2.0—P2.5用来控制红绿灯;P3控制按键;P1.0控制蜂鸣器,还有P1.1—P1.7没有用。
这几个口可以用来接更多的外设,比如AD模块等。
但在很多模块上,存在着引脚“浪费”的情况。
矩阵按键可以用四个I/O口实现,也可以用P0口的模数转化器ADC通道实现。
可以考虑把两片74HC573芯片换成功能更强大的MAX7219芯片;如果仍使用74HC573芯片的话,可以考虑将红绿灯模块也用该芯片驱动,这样只会再增加一个I/O口的使用。
3.2 显示输出模块(数码管模块、红绿灯模块)1、显示模块就占用了P1,P2的14个I/O口,使得系统的可改进程度降低。
可以考虑更换显示模块的驱动芯片,如3.1中所述,也可以将红绿灯与倒计时协调起来,用另外一片74HC573驱动。
2、倒计时方面,由于在各个方向上(除一个方向上亮黄灯,另一个方向上红灯闪烁外)倒计时的显示相同,在做仿真模拟时只选择了两位数码管进行倒计时显示。
在改进阶段,需要把黄灯亮,红灯闪烁的情况考虑进去,将数码管SEG1的剩余两位用上,SEG1的前两位和后两位分别显示不同方向上的倒计时。
3、做好倒计时模块以后,还有SEG2数码管没有用上。
可以考虑将其做成一个温度计,选择功能比较强大的如DS18xx数字化温度传感器,占用线口少、连接方便、测量精度高的传感器。
3.3 输入模块(矩阵键盘模块)1、4*4的矩阵键盘占用了P3口,限制了功能的拓展。
但按键在释放的状态下,P3口还是可以用来实现更多功能,只要按键不被按下,P3口的其他功能就不会受影响;2、矩阵键盘16个按键目前为止只用了四个,分别是:时间选择键、个/十位切换键、增加键、减小键。
但还有12个键没有使用。
这十二个键可以仿照小键盘的模式,分别对应0-9这十个数,另外两个键设定为紧急状态键。
3、若在之后的改进中存在I/O口不够用的情况,可以换成改进型I/O端口键盘。
3.4 拓展模块1、可以考虑用压力传感器模拟超载监测装置;2、可以考虑用光敏电阻、ADC,DAC来制作可调光强的红绿灯。
四、项目清单与注意事项4.1 项目清单(1)数码管显示模块:74HC573,(2)MCU控制模块:STC12C5A32S2,IC座,LED,SPI插座等(3)基本元器组件:电阻、瓷片电容,电解电容,9012,8050,1N4007,排针,杜邦线,开关,导线4.2 注意事项4.2.1 模拟仿真模拟仿真只是工具,仿真的目的是为了更好的制作硬件和辅助调试软件。
当程序和电路图没有问题时却得不到正确的仿真效果,应该考虑是不是仿真本身的问题;或者将该模块的硬件先搭出来,通过硬件电路调试。
不要过度的依赖仿真。
4.2.2 连接电路连接电路前尽量都要做出仿真实验,避免不必要的麻烦和损失(元器件烧坏等问题);做不出仿真的先手动搭出硬件电路,经测试成功后再焊接。
电路板可以选用一种多个金属环连接在一起的板子,减少焊接线的数量。
4.2.3 软件调试与故障排除如果在调试中出现问题,应考虑是硬件问题还是软件问题。
若是硬件问题,对照电路图检查连接是否有误;检查芯片是否坏掉;检查各焊点是否存在虚焊等接触不良的问题;若是软件问题,检查算法是否有误;还有编译器自身的问题。
五、程序代码(本程序在proteus上已仿真成功)#include"reg51.h"#define uchar unsigned char#define uint unsigned intsbit dula=P2^6; //U2锁存器的锁存端sbit wela=P2^7; //U3锁存器的锁存端uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x08};//最后一个是下划线,用来做闪烁uint code jiepai[]={524,262,293,330,349,392,440,494}; //节拍uchar code yindiao[]={55,110,98,87,82,73,65,58}; //音谱sbit P20=P2^0;//红绿灯的位定义sbit P21=P2^1;sbit P22=P2^2;sbit P23=P2^3;sbit P24=P2^4;sbit P25=P2^5;sbit s1=P3^0; //定义按键,功能键sbit s2=P3^1; //定义按键,十位个位选择键sbit s3=P3^2; //定义按键,增大键sbit s4=P3^3; //定义按键,减小键sbit rd=P3^7;sbit fmq=P1^0; //蜂鸣器定义端ucharnum1, //倒计时剩余时间,单位是秒num2, //50ms计数标志位shi,ge; //十位个位倒计时暂存变量uchar s1num; //按键功能判断标志,取值为1,2,3,4,分别对应两个方向的倒计时不同状态uint timer[4]={10,5,10,5}; //数组,里面的数据是4种不同状态倒计时的时间unsigned int m; //红灯闪烁延时uint cnt=1;//状态切换标志uint flag=0;//时间调整个位十位切换位void delayms(unit); //延时函数声明void display(uchar,uchar); //数码管显示函数声明void matrixkeyscan(); //扫描键盘函数void move(); //修改定位void save_data(uint,uint);//保存数据void yanzou(uchar yindiao,uint jiepai);//蜂鸣器函数声明/****************************************** *********************函数功能:主函数******************************************* *********************/void main(void){num1=timer[0];TMOD=0x01; //计时器设置TH0=(65536-45872)/256; //计时器设置TL0=(65536-45872)%256; //计时器设置TR0=1; //计时器设置ET0=1; //计时器设置EX0=1; //emergency中断设置IT0=1; //emergency中断设置EA=1; //总开关num1=timer[0];shi=num1/10; //使数码管初始显示正确ge=num1%10;s1num=0;rd=0;while(1){matrixkeyscan(); //在主函数中不停进行按键扫描switch (cnt){case 1:while(1){//状态1matrixkeyscan(); //在主函数中不停进行按键扫描display(shi,ge); //数码管倒计时显示P20=1; //红绿灯显示P21=1;P22=0;P23=0;P24=1;P25=1;if(cnt==2){yanzou(yindiao[1],jiepai[1]/2);yanzou(yindiao[2],jiepai[2]/2);break;}} break;case 2:while(1){//状态2matrixkeyscan(); //在主函数中不停进行按键扫描display(shi,ge);P20=1;P21=0;P22=1;P23=1;for(m=150;m>0;m--){display(shi,ge);}P23=0;for(m=150;m>0;m--){display(shi,ge);}P24=1;P25=1;if(cnt==3){yanzou(yindiao[2],jiepai[2]/2);yanzou(yindiao[3],jiepai[3]/2);break;}} break;case 3:while(1){//状态3matrixkeyscan(); //在主函数中不停进行按键扫描display(shi,ge);P20=0;P21=1;P23=1;P24=1;P25=0;if(cnt==4){yanzou(yindiao[5],jiepai[5]/2);yanzou(yindiao[6],jiepai[6]/2);break;}} break;case 4:while(1){//状态4matrixkeyscan(); //在主函数中不停进行按键扫描display(shi,ge);P21=1;P22=1;P24=0;P25=1;P20=1;for(m=150;m>0;m--){display(shi,ge);}P20=0;for(m=150;m>0;m--){display(shi,ge);}if(cnt==1){yanzou(yindiao[6],jiepai[6]/2); yanzou(yindiao[1],jiepai[1]/2);break;}} break;}}}/****************************************** *********************函数功能:延迟cnt毫秒******************************************* *********************/void delay (long cnt)//闪烁延时函数{uint i,j;for(i=cnt;i>0;i--)for(j=110;j>0;j--);}/****************************************** **********************//*****************************************************************函数功能:将十位和个位数字送至数码管显示******************************************* ***********************/void display(uchar shi,uchar ge) //显示子函数{dula=1;P0=table[shi]; //送段选数据dula=0;P0=0xff; //*送位选数据前关闭所有显示,防止打开位选锁存时wela=1; //原来的段选数据通过位选锁存器造成混乱*/P0=0xfe; //送位选数据wela=0;delay(1); //延时约1毫秒P0=0x00;dula=1;P0=table[ge];dula=0;P0=0xff;wela=1;P0=0xfd;wela=0;delay(1);P0=0x00;}/****************************************** ***********************//****************************************** **********************函数功能:中断服务函数,可计算出送给数码管的数据******************************************* ***********************/void T0_time(void) interrupt 1 //时间延时函数{TH0=(65536-45872)/256; //计时器设置TL0=(65536-45872)%256; //计时器设置num2++;if(num2==20) //如果到了20次,说明1秒时间已到{num2=0; //然后把num2清0重新再计20次num1--;shi=num1/10; //把一个2位数分离后分别送给数码管显示ge=num1%10; //十位和个位if(num1==0){ //这个数用来送数码管显示,到60后归0cnt++;switch(cnt){case 1:num1=timer[0];break;case 2:num1=timer[1];break;case 3:num1=timer[2];break;case 4:num1=timer[3];break;default:cnt=1;num1=timer[0];break;}}}}/****************************************** ***********************//****************************************** **********************函数功能:键盘扫描******************************************* ***********************/void matrixkeyscan(){if(s1==0){delay(5);if(s1==0){s1num++;while(!s1);if(s1num==1) //绿灯时长{TR0=0;move(); //修改定位shi=num1/10; //把一个2位数分离后分别送给数码管显示ge=num1%10; //十位和个位//shining(); //修改闪烁}if(s1num==2) //黄灯时长{move(); //修改定位shi=num1/10; //把一个2位数分离后分别送给数码管显示ge=num1%10; //十位和个位//shining(); //修改闪烁}if(s1num==3) //绿灯时长{TR0=0;move(); //修改定位shi=num1/10; //把一个2位数分离后分别送给数码管显示ge=num1%10; //十位和个位//shining(); //修改闪烁}if(s1num==4) //黄灯时长{move(); //修改定位shi=num1/10; //把一个2位数分离后分别送给数码管显示ge=num1%10; //十位和个位//shining(); //修改闪烁}if(s1num==5) //若满四则归0{s1num=0;TR0=1; //启动定时器使时钟开始走}}}if(s1num!=0){if(s2==0){delay(5);if(s2==0){flag++;flag=flag%2;}}if(s3==0){delay(5);if(s3==0){while(!s3); //等待按键释放switch(flag){case 0:ge++;if(ge==10)ge=0;display(shi,ge); //将修改以后的数显示save_data(shi,ge);//保存数据break;case 1:shi++;if(shi==7) //若满6则清0shi=0;display(shi,ge); //将修改以后的数显示save_data(shi,ge);//保存数据break;}}}if(s4==0){delay(5);if(s4==0){while(!s4);switch(flag){case 0:ge--;if(ge==-1)ge=9;display(shi,ge); //将修改以后的数显示save_data(shi,ge);//保存数据break;case 1:shi--;if(shi==-1) //若满6则清0shi=6;display(shi,ge); //将修改以后的数显示save_data(shi,ge);//保存数据break;}}}}}/****************************************** ***********************//****************************************** **********************函数功能:蜂鸣器函数入口参数:yindao,jiepai******************************************* ***********************/void yanzou(uchar yindiao,uint jiepai){u char yd;uint jp;if(jiepai==1) delay(250); //空半拍elseif(jiepai==2) delay(500); //空一拍else{for(jp=jiepai;jp>0;jp--){fmq=0;for(yd=yindiao;yd>0;yd--);fmq=1;for(yd=yindiao;yd>0;yd--);}}}/****************************************** ***********************//****************************************** **********************函数功能:按键后将数码管显示还原到倒计时的时长******************************************* ***********************/void move() //修改定位{switch(s1num){case 1:num1=timer[0];break;case 2:num1=timer[1];break;case 3:num1=timer[2];break;case 4:num1=timer[3];break;default:num1=timer[0];break;}}/****************************************** ***********************//****************************************** **********************函数功能:将修改后的时间存储到timer数组中******************************************* ***********************/void save_data(uint shi,uint ge)//保存数据{timer[s1num-1]=shi*10+ge;}/****************************************** ***********************/附录、相关芯片资料74HC573中文资料高性能硅门CMOS器件当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。