找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 115437|回复: 113
收起左侧

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

  [复制链接]
ID:258243 发表于 2018-3-12 13:21 | 显示全部楼层 |阅读模式
名称:过程控制原理

  题    目:十字路口交通灯

院 (系):
专业班级:
姓    名:
学    号:
指导教师:


西安建筑科技大学华清学院设计

专业班级:   自动化 学生姓名:指导教师(签名):

一、题目

十字路口交通灯
二、本次设计应达到的目的
通过本次设计,使学生不仅更加深刻领会微型计算机从硬件组成到软件编程的基本原理和知识,而且更要学会应用,务必做到理论和实践相结合,掌握硬件分析、软件设计的基本思想和方法,提高分析问题、解决问题和工程实践的能力。
三、本次设计任务的主要内容和要求(包括原始数据、技术参数、设计要求等)

本设计题目的主要内容是模拟十字路口交通灯(红、黄、绿三色)的显示控制。
设计要求:
1.主干道计时60秒,次干道计时45秒,时间到则切换红绿灯;
2.红绿灯不变期间,在七段数码管上显示每秒倒计时;
3.计时到最后5秒时,两个方向的黄灯同时闪烁直至计时到0。
四、应收集的资料及主要参考文献:              
1.《微型计算机基本原理与接口技术》 陈红卫,科学出版社 2003.2
2.《微机原理与接口技术设计指导书》 张维琪
3.与设计题目相关资料
五、审核批准意见

教研室主任(签字)


十字路口交通灯控制

设计总说明

道路交通信号灯是交通安全产品中的一个类别,是为了加强道路交通管理, 减少交通事故的发生,提高道路使用效率,改善交通状况的一种重要工具。近年来随着科技的飞速发展,使用单片可编程来实现交通灯的功能。利用单片机的外围扩展,显示电路构成基本硬件。然后编程实现对定时、控制、显示电路的控制,然后调试,完成设计。
本此设计交通灯系统利用单片机AT89C52作为核心元件,实现了通过信号灯对路面状况的智能控制。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。  
交通灯控制器设计主要功能是用单片机控制LED灯模拟指示。模拟东西南北方向的十字路口交通灯信号控制情况。本模拟系统由单片机硬/软件系统,用keil和proteus软件来实现两位8段数码管和LED灯显示系统,较好的模拟了交通路面的控制。

目录
1 绪论
1.1设计目的
1.2设计内容
2 系统设计方案
2.1系统组成
2.2系统工作原理
3 系统硬件电路设计
3.1单片机最小系统设计
3.1.1时钟部分电路设计
3.1.2复位部分电路设计
3.1.3独立键盘+中断电路设计
3.2显示部分电路设计
4 系统软件程序设计
4.1主程序设计            
4.1总体流程图
4.2其他子程序设计
5 调试与仿真
5.1 Proteus软件系统仿真
5.2具体仿真结果显示
6 总结
参考文献
附录



1 绪论1.1设计目的
单片机具有性价比高、集成度高、可靠性好、抗干扰性强等特点,广泛运用于各种智能仪器中。基于新型规则的可编程交通控制系统,可以实现对车辆、行人的控制,使的交通便于管理。所以,采用单片机自动控制交通灯有现实的社会意义。
通过本次设计,使学生不仅更加深刻领会微型计算机从硬件组成到软件编程的基本原理和知识,而且更要学会应用,务必做到理论和实践相结合,掌握硬件分析、软件设计的基本思想和方法,提高分析问题、解决问题和工程实践的能力。
1.2设计内容
1)设计一个十字路口交通灯控制器。用单片机控制LED灯模拟指示。模拟东西方向的十字路口交通信号控制情况。南北方向主干道计时时间为60s,东西方向次干道计时时间为45s。
2)红绿灯不变期间,在七段数码管上显示每秒倒计时。
3)计时到最后5秒时,两个方向的黄灯同时闪烁直至计时到0。

2 系统设计方案
2.1
设计思路
模拟交通灯控制器就是使用单片机来控制一些LED灯和数码管,模拟真实交通灯的功能。当南北主干道通车时绿灯亮,而东西次干道干道红灯亮;当55s通车时间到后,主干道绿灯熄灭,黄灯亮,黄灯亮5s后由主干道切换到次干道通车。此时主干道黄灯熄灭,红灯亮,而次干道红灯熄灭,绿灯亮,次干道开始通车; 40s通车时间到后,次干道绿灯熄灭,黄灯亮,黄灯亮5s后由次干道切换到主干道通车。此时次干道黄灯熄灭,红灯亮;而主干道红灯熄灭,绿灯亮,如此不断循环。红、黄、绿交替闪亮,利用数码管倒计数显示间隔等,用于管理十字路口的车辆及行人交通。
2.2方案设计
利用AT89C52单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,数码管显示剩余时间。红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯,8个共阴极数码管显示剩余时间,
根据设计功能及要求,我们可得系统的原理框图如图2-1所示。
图2-1  系统原理图(见51hei附件)
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-5所示。
图3-5 数码管

3.2.2十字路口交通灯设计
一条主干道和一条次干道汇合成十字路口,南北方向道路为主干道,东西方向干道为次干道。每个路口都采用了三个LED灯来显示,分别代表了红黄绿三种灯,来模拟路口交通灯的变换。LED信号灯如下图3-6所示。

图3-6 LED信号灯设计
3.3系统硬件总电路图
根据设计要求和所需电路,得到系统硬件总电路图如图3-7所示。
图3-7 系统硬件总电路图

4 系统软件程序设计4.1主程序设计4.1.1总体流程图


4.2其他子程序设计
4.2.1循环流程控制思路


5 调试与仿真5.1 Proteus软件系统仿真
打开Proteus软件,按照硬件系统图3-7所示接线,连线完毕后,通过keil把编好的c语言程序转换为.hex文件,并将其放入单片机内。
设置好仿真器后,编译程序无误后调试执行程序,结果显示符合要求。
5.2仿真结果
根据功能要求分别仿真各种情况下的亮灯情况,具体如下:
1.如下图5-1仿真图所示,南北方向主干道亮绿灯,东西次干道方向亮红灯。
图5-1  南北绿灯东西红灯


2.如下图5-2所示,南北方向倒计时5s后变为黄灯,东西为绿灯。
图5-2南北黄灯东西红灯












3.如下图5-3所示,东西方向变为绿灯,南北方向变为红灯。

图5-3南北红灯灯东西绿灯

4.如下图5-4所示,东西方向在变为黄灯
            


6 总结
设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,单片机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握单片机的开发技术是十分重要的。
这次的单片机设计大概用了一个月的时间,在这一个月的时间当中,虽然开始遇到了很多的困难,但是由于合理地进行设计安排,分工合作,并各自查阅了相关的资料,最后在大家共同努力下我们顺利地完成了本次单片机设计,同时也学到了很多东西。
回顾起此次单片机设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。例如我们在设计数码管显示的时候,刚开始的时候,由于对数码管引脚的不熟悉,我们都无法让数字显示,后来发现时十位和个位的置位、复位发生了问题,我们对此进行了修改,可以正确的显示出十位及个位的数值,但是数字的显示不稳定,不停的跳动,我们为此查阅了很多的资料,但还是未能解决,最后我们不停地对程序进行修改,终于发现了问题所在,在显示子程序上存在缺陷未能快速的切换对十位、个位的置位和复位,经过这样的修改,终于可以完美的显示时间了。我们也更好地掌握了对数码管的使用,这都是课堂上学不到的知识。   
    这次的单片机设计是通过实践操作和理论相结合,提高动手实践能力,提高科学的思维能力。与此同时,我们也对分工合作有了进一步的认识,只有通过合理的分工合作,我们们才能够在短短一周的时间内完成设计任务,相信这对以后在社会上工作和学习会有很多帮助,让我们能更好的进入工作状态。最重要的是,这次设计也增加了我们对问题的研究和探讨,们以后的学习中会有更多的帮助。
单片机为我们的主要专业课之一,对我们还是很有帮助的,设计也是为我们以后的工作提前进行了一次练手,也是我们学习生活之中少有的一次自己探索、研究,发现问题、解决问题的机会。当然要做好一个设计也不是很简单的,我认为有以下几步:
  • 在设计程序之前,对所用单片机的内部结构有一个系统的了解,知道该单片机内有哪些资源;
  • 要有一个清晰的思路和一个完整的的软件流程图,善于将大的程序段缩小为每个子函数来实现;
  • 在设计程序时,不能妄想一次就将整个程序设计好,反复修改、不断改进是程序设计的必经之路;
  • 要养成注释程序的好习惯,写程序是应该思路清晰,结构明了,应该让人一看就能明  白你的思路,方便资料的保存和交流;
  • 我们们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样的问题的 ;
     在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。我们们通过查阅大量有关资料,并在小组中互相讨论,交流经验和自学,若遇到实在搞不明白的问题就会及时请教老师,或者与其他小组成员讨论,共同解决,使自己学到了不少知识,也经历了不少艰辛,但收获同样巨大。通过这次设计我们也发现了自身存在的不足之处,虽然感觉理论上已经掌握,但在运用到实践的过程中仍有意想不到的困惑,经过一番努力才得以解决。
通过这次设计使我更加懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正将一个东西学好学透,从而提高自己的实际动手能力和独立思考的能力。我想这对于我今后的学习生活和工作都会是有很大帮助的!
参考文献

[1].肖金球.单片机原理与接口技术[M];

[2].江志红.51单片机技术与应用系统开发案例精选[M];

[3].周润景.基于PROTEUS的51单片机设计与仿真[M];

[4].王守中.51单片机开发入门与典型实例[M];

[5].张齐.朱宁西.单片机系统设计与开发[M];

[6].周立功.单片机开发网[M];

[7].天津锐志单片机开发网[M];

[8].ATMEL公司AT89S52单片机中文PDF资料[M];


单片机源程序如下:
  1.       #include<reg52.h>
  2.               #include<intrins.h>
  3.               #define uint unsigned int
  4.               #define uchar unsigned char
  5.               uchar temp,aa,nn;
  6.               sbit rn=P2^0;                              
  7.               sbit nb=P2^1;
  8.               sbit gn=P2^2;
  9.               sbit rw=P2^3;
  10.               sbit dx=P2^4;
  11.               sbit gw=P2^5;
  12.               sbit shi=P3^6;
  13.               sbit ge=P3^7;                            /*对要使用的单片机各个口进行定义*/
  14.               bit flag=0;

  15.               uchar code table[]={
  16.               0x3f,0x06,0x5b,0x4f,
  17.               0x66,0x6d,0x7d,0x07,
  18.               0x7f,0x6f,0x77,0x7c,
  19.               0x39,0x5e,0x79,0x71};         /*将数字0123456789的16进制数定义成数组用以显示*/

  20.               void delay(uint z);
  21.               void disp(uint n);
  22.               void nb_flash(void);
  23.               void dx_flash(void);
  24.               void  xint0();
  25.               void timer0();
  26.               void  LED_ON();
  27.               void  xint1();
  28.               void  LED_OFF();
  29.               void nanbei();
  30.               void dongxi();                 /*将所使用的子函数定义*/

  31.               void main()
  32.               {
  33.                             uint num;
  34.                             num=0;
  35.                             aa=0;
  36.                             TMOD=0x01;
  37.                             TH0=(65536-50000)/256;
  38.                             TL0=(65536-50000)%256;
  39.                             EA=1;
  40.                             ET0=1;
  41.                             TR0=1;
  42.                             EX0=1;
  43.                             IT0=0;
  44.                             EX1=1;
  45.                             IT1=1;                       /*中断初始化*/
  46.                             while(1)
  47.                             {
  48.                                           nanbei();            
  49.                                           nb_flash();
  50.                                           dongxi();
  51.                                           dx_flash();                /*主函数中显示部分*/
  52.         }
  53.               }

  54.               void delay(uint z)                    /*延时子函数*/
  55.               {
  56.                             uint x,y;
  57.                             for(x=z;x>0;x--)
  58.                                           for(y=110;y>0;y--);
  59.               }

  60.               void timer0() interrupt 1             /*定时器初始化*/
  61.               {
  62.                             TH0=(65536-50000)/256;
  63.                             TL0=(65536-50000)%256;
  64.                             aa++;
  65.                             if(aa==18)
  66.                             {
  67.                                           aa=0;
  68.                                           flag=1;
  69.                             }            
  70.               }
  71.               void disp(uint n)                    /*显示子函数*/
  72.               {
  73.                 while(!flag)
  74.                 {
  75.                               ge=0;
  76.                               P0=table[n%10];
  77.                               delay(50);
  78.                               shi=1;ge=1;
  79.                               shi=0;
  80.                               P0=table[n/10];
  81.                               delay(50);
  82.                               shi=1;ge=1;
  83.                  }
  84.                 if(flag==1)
  85.                    flag=0;
  86.               }
  87.               void nanbei()                    /*南北方向的红绿灯和数码管显示子函数*/
  88.               {                            uint num;
  89.                                           num=60;
  90.                                           disp(num);
  91.                                           while(num<=60&&num>0)
  92.                                           {              num--;
  93.                                                P2=0xde;
  94.                                                            disp(num);                                         
  95.                                           }
  96.               }
  97.               void dongxi()                     /*东西方向的红绿灯和数码管显示子函数*/
  98.               {                            uint num;                                         
  99.                                           num=60;
  100.                                           while(num<=60&&num>0)
  101.                                           {              P2=0xf3;               
  102.                                                         disp(num);
  103.                                                         num--;
  104.                                           }
  105.               }
  106.               void nb_flash(void)              /*南北方向的黄灯和数码管显示子函数*/
  107.               {
  108.                             uint a;
  109.                             for(a=3;a>0;a--)
  110.                             {              P2=0xdd;
  111.                                           nb=1;
  112.                                           delay(100);
  113.                                           nb=0;
  114.                                           disp(a);
  115.                             }
  116.               }
  117.               void dx_flash(void)                /*东西方向的黄灯和数码管显示子函数*/
  118.               {
  119.                             uint a;
  120.                             for(a=3;a>0;a--)
  121.                             {              P2=0xeb;
  122.                                           dx=1;
  123.                                           delay(100);
  124.                                           dx=0;
  125.                                           disp(a);
  126.                             }
  127.               }
  128.               void  xint0()  interrupt 2                     /*中断定义*/
  129. {            
  130.               TH0=(65536-50000)/256;
  131.               TL0=(65536-50000)%256;            
  132.               LED_ON();            
  133. ……………………

  134. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
Word格式文档51黑下载地址:
交通灯课设新报告.docx (368.55 KB, 下载次数: 1556)

评分

参与人数 3黑币 +60 收起 理由
阿玲玲玲 + 5 共享资料的黑币奖励!
hshl19870128 + 5
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:339067 发表于 2018-5-27 14:46 | 显示全部楼层
赞,非常棒呢
回复

使用道具 举报

ID:339635 发表于 2018-5-28 12:30 | 显示全部楼层
正好需要 ,谢谢楼主
回复

使用道具 举报

ID:340409 发表于 2018-5-29 11:05 | 显示全部楼层
非常好
回复

使用道具 举报

ID:340004 发表于 2018-6-2 12:31 | 显示全部楼层
楼主,有仿真的电路图吗
回复

使用道具 举报

ID:261490 发表于 2018-6-2 20:06 | 显示全部楼层
楼主的程序很有参考价值,多谢啊
回复

使用道具 举报

ID:346458 发表于 2018-6-6 21:00 | 显示全部楼层
很好。
回复

使用道具 举报

ID:342363 发表于 2018-6-12 01:34 | 显示全部楼层
楼主我参考一下
回复

使用道具 举报

ID:360682 发表于 2018-6-28 00:13 | 显示全部楼层
楼主,你有原理图附件么
回复

使用道具 举报

ID:371540 发表于 2018-7-14 16:30 | 显示全部楼层
做交通灯做的我好崩溃
回复

使用道具 举报

ID:406373 发表于 2018-10-8 10:13 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

ID:413467 发表于 2018-10-22 14:42 | 显示全部楼层
非常棒
回复

使用道具 举报

ID:414974 发表于 2018-10-30 13:28 | 显示全部楼层
报告里面包括代码和仿真电路图吗
回复

使用道具 举报

ID:417302 发表于 2018-10-31 10:12 来自手机 | 显示全部楼层
感谢楼主的慷慨分享,好人一生平安
回复

使用道具 举报

ID:420804 发表于 2018-11-5 08:45 | 显示全部楼层
这个课程报告简直是雪中送炭,太实用了
回复

使用道具 举报

ID:421278 发表于 2018-11-5 19:43 | 显示全部楼层
楼主有原理图吗
回复

使用道具 举报

ID:421882 发表于 2018-11-6 18:08 | 显示全部楼层
厉害了
回复

使用道具 举报

ID:426933 发表于 2018-11-16 09:54 | 显示全部楼层
很不错。注册改头像两天登陆就能下载了,解决了我一个难题啊。
回复

使用道具 举报

ID:430034 发表于 2018-11-20 17:20 | 显示全部楼层
很不错的‘
回复

使用道具 举报

ID:440598 发表于 2018-12-6 09:31 | 显示全部楼层
优秀优秀
回复

使用道具 举报

ID:439123 发表于 2018-12-6 17:16 | 显示全部楼层
感谢楼主的分享,非常的有用
回复

使用道具 举报

ID:443014 发表于 2018-12-10 09:06 | 显示全部楼层
感谢楼主的分享,非常的有用
回复

使用道具 举报

ID:443014 发表于 2018-12-10 09:06 | 显示全部楼层
感谢楼主的分享,非常的有用
回复

使用道具 举报

ID:443014 发表于 2018-12-10 09:07 | 显示全部楼层
感谢楼主的分享,非常的有用
回复

使用道具 举报

ID:438171 发表于 2018-12-11 10:33 | 显示全部楼层
学的郭天祥么,编程很规范啊
回复

使用道具 举报

ID:444172 发表于 2018-12-11 16:01 | 显示全部楼层
十分感谢楼主的无私奉献
回复

使用道具 举报

ID:448552 发表于 2018-12-18 08:43 | 显示全部楼层
厉害了
回复

使用道具 举报

ID:451946 发表于 2018-12-22 09:41 | 显示全部楼层
厉害,受益匪浅
回复

使用道具 举报

ID:437648 发表于 2018-12-22 14:08 | 显示全部楼层
楼主能给一下protues的仿真电路图吗?
回复

使用道具 举报

ID:451692 发表于 2018-12-26 10:15 | 显示全部楼层
空大丿魔王 发表于 2018-12-22 14:08
楼主能给一下protues的仿真电路图吗?

你整好没
回复

使用道具 举报

ID:456340 发表于 2018-12-28 13:44 | 显示全部楼层
这个里面有仿真原理图吗?
回复

使用道具 举报

ID:456275 发表于 2018-12-31 16:35 | 显示全部楼层

感谢楼主的分享,非常的有用
回复

使用道具 举报

ID:460326 发表于 2019-1-2 18:27 | 显示全部楼层
感谢楼楼主
回复

使用道具 举报

ID:218025 发表于 2019-1-2 20:03 | 显示全部楼层
图画的挺好看的
回复

使用道具 举报

ID:218025 发表于 2019-1-2 20:03 | 显示全部楼层
图挺不错的
回复

使用道具 举报

ID:464338 发表于 2019-1-8 09:26 来自手机 | 显示全部楼层
楼主原理图弄一张呗
回复

使用道具 举报

ID:464338 发表于 2019-1-8 09:30 来自手机 | 显示全部楼层
wangxinyu5566 发表于 2018-6-28 00:13
楼主,你有原理图附件么

兄弟,你弄到原理图附件没
回复

使用道具 举报

ID:464338 发表于 2019-1-8 09:32 来自手机 | 显示全部楼层
qwerdf19602 发表于 2018-11-16 09:54
很不错。注册改头像两天登陆就能下载了,解决了我一个难题啊。

能不能给张原理图
回复

使用道具 举报

ID:464338 发表于 2019-1-8 09:33 来自手机 | 显示全部楼层
原理图,,,
回复

使用道具 举报

ID:468593 发表于 2019-1-16 09:51 | 显示全部楼层
正需要,非常感谢楼主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表