点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87772657
源码获取
主要内容:
本次设计所提出的一种基于单片机技术的简易计算器的方案,能更好的解决计算机计算的问题,随着数字生活的到来,单片机在生活中越来越重要,它能将大量的逻辑功能集成与一个集成电路中,使用起来十分方便。
基本要求:
1、模拟信号灯电路设计图;
2、模拟信号灯设计源程序;
3、keil运行源程序;
4、proteus中仿真;
5、运行结果分析。
主要参考资料:
[1] 谭浩强.C.程序设计.北京:清华大学出版社,2002
[2] 王为青,程国刚.单片机 Keil Cx51 应用技术开发,北京:人民邮电大学出版社,2007
[3] 马忠梅等.单片机的C语言应用程序设计.北京航空航天大学出版社,2003.
[4] 王晋凯.简简单单学通51单片机开发 [M].清华大学出版社,2014.
[5] 刘守义等.单片机技术基础[M].西安电子科技大学出版社,2007.
完 成 期 限:12 月 11 日 - 12 月 26 日
指导教师签名:
课程负责人签名:
摘 要
道路交通信号灯是交通安全产品中的一个类别,是为了加强道路交通管理, 减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。近年来随着科技的飞速发展,使用单片可编程来实现交通灯的功能。利用单片机的外围扩展,显示电路构成基本硬件。然后编程实现对定时、控制、显示电路的控制,然后调试,完成设计。
本此设计交通灯系统利用单片机AT89C51作为核心元件,实现了通过信号灯对路面状况的智能控制。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。
交通灯控制器设计主要功能是用单片机控制LED灯模拟指示。模拟东西南北方向的十字路口交通灯信号控制情况。本模拟系统由单片机硬/软件系统,用keil和proteus软件来实现两位8段数码管和LED灯显示系统,较好的模拟了交通路面的控制。
关 键 词:AT89C51;单片机技术;交通信号灯;LED灯显示
目录
摘 要 1
目录 2
1 概述 4
1.1 设计思路 4
1.2 单片机概述 4
1.3 设计目的 5
1.4 设计要求 5
2 整体设计 6
3 系统硬件电路设计 6
3.1 AT89C52单片机 6
3.1.1晶振电路设计 7
3.1.2复位电路设计 7
4 系统程序设计 10
4.1 系统电路图 10
4.2 程序源代码 10
5 系统仿真和调试 13
5.1 Keil uVision与Porteus仿真软件 13
5.1.1 Keil uVision 13
5.1.2 Porteus 13
5.2 测试结果图 14
5.3 测试结果分析 15
6 心得与体会 16
参考文献 17
1 概述
1.1 设计思路
模拟交通灯控制器就是使用单片机来控制一些LED灯和数码管,模拟真实交通灯的功能。当南北主干道通车时绿灯亮,而东西次干道干道红灯亮;当55s通车时间到后,主干道绿灯熄灭,黄灯亮,黄灯亮5s后由主干道切换到次干道通车。此时主干道黄灯熄灭,红灯亮,而次干道红灯熄灭,绿灯亮,次干道开始通车; 40s通车时间到后,次干道绿灯熄灭,黄灯亮,黄灯亮5s后由次干道切换到主干道通车。此时次干道黄灯熄灭,红灯亮;而主干道红灯熄灭,绿灯亮,如此不断循环。红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通。
1.2 单片机概述
当今时代,是一个新技术层出不穷的时代。在电子领域,尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统正以前所未见的速度被单片机智能控制系统所取代。单片机具有体积小、功能强、成本低、应用面广等优点,可以说,智能控制与自动控制的核心就是单片机。目前,一个学习与应用单片机的高潮正在工厂、学校及企事业单位大规模地兴起。过去习惯于传统电子领域的工程师、技术员正面临着全新的挑战,如不能在较短时间内学会单片机,势必会被时代所遗弃,只有勇敢地面对现实,挑战自我,加强学习,争取在较短的时间内将单片机技术融会贯通,才能跟上时代的步伐。
它所给人带来的方便也是不可否定的,它在一块芯片内集成了计算机的各种功能部件,构成一种单片式的微型计算机。20世纪80年代以来,国际上单片机的发展迅速,其产品之多令人目不暇接,单片机应用不断深入,新技术层出不穷。20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。
1.3 设计目的
通过本次设计,能够更加深刻领会微型计算机从硬件组成到软件编程的基本原理和知识,而且更要学会应用,务必做到理论和实践相结合,掌握硬件分析、软件设计的基本思想和方法,提高分析问题、解决问题和工程实践的能力。
1.4 设计要求
模拟交通灯控制器就是使用单片机来控制一些LED灯和数码管,模拟真实交通灯的功能。当南北主干道通车时绿灯亮,而东西次干道干道红灯亮;当55s通车时间到后,主干道绿灯熄灭,黄灯亮,黄灯亮5s后由主干道切换到次干道通车。此时主干道黄灯熄灭,红灯亮,而次干道红灯熄灭,绿灯亮,次干道开始通车; 40s通车时间到后,次干道绿灯熄灭,黄灯亮,黄灯亮5s后由次干道切换到主干道通车。此时次干道黄灯熄灭,红灯亮;而主干道红灯熄灭,绿灯亮,如此不断循环。红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通。
2 整体设计
利用AT89C52单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,数码管显示剩余时间。红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯,8个共阴极数码管显示剩余时间。
3 系统硬件电路设计
3.1 AT89C52单片机
AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。
AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。
如下图3-1所示:
图3-1 AT89C52单片机
3.1.1晶振电路设计
时钟电路用于产生MCS-52单片机工作时所必须的时钟控制信号。其内部电路在时钟信号控制下,严格地按时序执行指令进行工作。在执行指令时,CPU首先要到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定操作。
本设计采用12MHz晶振和两个27Pf瓷片电容,他们构成一个稳定的自激振荡器。该电容的大小影响振荡器频率的高低、振荡器的稳定性和起振的快速性。为单片机提供标准时钟。其中两个瓷片电容起微调作用。 如图3-2所示:
图3-2 晶振电路
3.1.2复位电路设计
复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
复位电路通常采用上电自动复位和按钮复位两种方式。
该设计采用加电直接复位,复位电容采用10uF,电阻10000欧。加电瞬间,RES管脚为高电平。通过电阻回路放电,使电压逐渐降为零,从而实现了复位功能。
其连接图如下图3-3所示:
图3-3 复位电路
3.2显示部分电路设计
3.2.1数码管选择
此处采用的数码管时共阴极数码管,G、F、E、D、C、B、A七个端口是输入端口,对其各位进行赋值,置位则亮,复位则灭,用此来显示出相应的数字;1、2两端口用来控制高位和低位的选通显示,只要对端口置位,便可以选择该端口,并对其所代表的位进行赋值,显示。数码管如下图3-4所示。
图3-4 数码管
3.2.2十字路口交通灯设计
一条主干道和一条次干道汇合成十字路口,南北方向道路为主干道,东西方向干道为次干道。每个路口都采用了三个LED灯来显示,分别代表了红黄绿三种灯,来模拟路口交通灯的变换。LED信号灯如下图3-5所示。
图3-5 LED信号灯设计
3.3总体流程图
4 系统程序设计
4.1 系统电路图
图4.1 系统总电路图
4.2 程序源代码
#include <reg52.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit diy=P2^0;
sbit die=P2^1;
u8 dat=0,shu=0;
bit biao=1;
u8 code weil[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
u8 a=30,b=30,c=5,d=5;
void delay(u16 i){ u16 j,l;
for(j=0;j<i;j++){
for(l=0;l<120;l++);
}
}
void smg(u8 dat){ u8 a,b;
a=dat%100/10;
b=dat%100%10/1;
diy=0;
die=1;
P1=~weil[a]; delay(10);
diy=1;
die=0;
P1=~weil[b];
delay(10); P1=0x00;
}
void init(){
TMOD&=0X0F;
TMOD|=0X01;
TH0 = 0x0DC;
TL0 = 0x00;
TR0=1;
ET0=1;
EA=1;
SCON=0X50;
}
void shi(){ u8 j,l;
if(dat<30){
P0=0x1E;
smg(a);
}
if(dat>30&&dat<35){
P0=0xef;
delay(1);
P0=0xff;
delay(1);
smg(c);
}
if(dat>35&&dat<65){
P0=0xf3;
smg(b);
}
if(dat>65&&dat<70){
P0=0xfd;
delay(1);
P0=0xff;
delay(1);
smg(d);
}
if(dat==70){dat=0; a=30,b=30,c=5,d=5;}
}
void shu1(){
if(dat<30){
a--;
}
if(dat>35&&dat<65){
b--;
}
if(dat>30&&dat<35){
c--;
}
if(dat>65&&dat<70){
d--;
}
}
void main(){ u8 i;
init();
while(1){
if(TF0==1){ TF0=0;
TH0 = 0x0DC;
TL0 = 0x00;
i++;
if(i==45){
i=0;
dat=dat+1;
shu1();
}
shi();
}
}
5 系统仿真和调试
5.1 Keil uVision与Porteus仿真软件
5.1.1 Keil uVision
Keil uVision3是美国Keil Software 公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统c语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用﹐而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。KEILC51标准℃编译器为8051微控制器的软件开发提供了C语言环境,同时保留了汇编代码高效﹐快速的特点。C51编译器的功能不断增强,使你可以更加贴近CPU本身,及其它的衍生产品。C51已被完全集成到uVision2的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,项目管理器,调试器。
系统功能:
Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全 Windows界面,使您能在很短的时间内就能学会使用keil c51来开发您的单片机应用程序。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到 KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
5.1.2 Porteus
Proteus 软件是英国Labcenter electronics 公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它 EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持 8051、HC11、PIC10/12/16/18/24/30/DsPIC33 、AVR、ARM、8086和MSP430“等,2010年即将增加Cortex 和 DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil 和MPLAB等多种编译器。
其功能特点:
(1)原理布图
(2)PCB自动或人工布线( 3)SPICE电路仿真
(2)pcb自动或人工布线(3)SPICE电路仿真
5.2 测试结果图
(1)南北可行时,东西方向变为红灯
图5.1 南北可行
(2)东西可行时,南北方向变为红灯
图5.2 减法运算图
5.3 测试结果分析
经过测试,本次设计的基于51单片机的模拟交通信号灯的功能基本实现成功,但是,本次实验也有许多不足之处,还有很多地方需要改进,比如说,计算显示数字位数有限,可以对代码进行更精简的修整,从而使功能更加的强大,并且,可以运用于生活实际当中。
6 心得与体会
设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
这次的单片机设计是通过实践操作和理论相结合,提高动手实践能力,提高科学的思维能力。与此同时,我也对合理利用网上资源有了进一步的认识,只有通过合理的查阅资料,我才能够在短短一周的时间内完成设计任务,相信这对以后在社会上工作和学习会有很多帮助,让我们能更好的进入工作状态。最重要的是,这次设计也增加了我对问题的研究和探讨,们以后的学习中会有更多的帮助。
在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,或者与其他同学讨论,共同解决,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。通过这次设计我们也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
通过这次设计使我更加懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正将一个东西学好学透,从而提高自己的实际动手能力和独立思考的能力。我想这对于我今后的学习生活和工作都会是有很大帮助的!
参考文献
[1] 谭浩强.C.程序设计.北京:清华大学出版社,2002
[2] 王为青,程国刚.单片机 Keil Cx51 应用技术开发,北京:人民邮电大学出版社,2007
[3] 马忠梅等.单片机的C语言应用程序设计.北京航空航天大学出版社,2003.
[4] 王晋凯.简简单单学通51单片机开发 [M].清华大学出版社,2014.
[5] 刘守义等.单片机技术基础[M].西安电子科技大学出版社,2007.