———————————————————————————————— 作者: ———————————————————————————————— 日期:
ﻩ
《单片机原理及应
用》
课程设计说明书
设计题目:基于单片机的交通灯控
制系统的设计
学 院:工学院
专 业:电气工程及其自动化(1)班 设 计 者:胡忠鹏 学 号:09177012 指导老师:周平
设计时间:2012年5月21日~2012年6月
2日
目 录
摘要3ﻩ
1 引言.................................................... 错误!未定义书签。 2 总体方案设计ﻩ3
2.1设计要求ﻩ错误!未定义书签。 2.2性能指标4ﻩ 2.3硬件规范 ........................................................... 5 3 STC89C52概述:5ﻩ
3.1基本构造ﻩ5 3.2性能特点5ﻩ 4 课题描述与分析5ﻩ
4.1交通灯系统需求描述与分析5ﻩ
4.2交通灯系统开发步骤 ................................................. 6 5 交通灯课题设计6ﻩ
5.1总体设计6ﻩ
5.2硬件设计 .......................................................... 6 5.3软件设计 .......................................................... 8 6 系统测试................................................................. 9
6.1硬件调试10ﻩ 6.2软件调试 ......................................................... 10 7 总结.................................................................... 10
7.1系统设计总结1ﻩ0 7.2个人总结1ﻩ0 致谢12ﻩ
参考文献ﻩ13
附录....................................................... 错误!未定义书签。
基于单片机的交通灯控制系统的设计
作者:杨东升 温剑波 指导老师:吴敏
(安徽农业大学工学院 电气工程及其自动化)
摘 要:交通在人们的日常生活中占有重要的地位,交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。本次课程设计采用单片机STCC52RC为核心器件来设计道路交通信号灯控制器。本设计就是采用单片机模拟十字路口交通灯的各种状态显示。通过Keil软件编写主程序,延时程序,显示程序,中断程序,按键程序等实现主次路口的红黄绿三色灯的显示控制。经过不断地调试,最终实现了对十字路口交通灯的模拟。 关键词:单片机 交通灯 程序设计 数码管显示电路
1引言
本设计的目的:通过单片机STC89C52来设计道路交通信号灯控制器,通过软件编程设计实现主干道与次干道的红黄蓝三色灯时间设置,并且能够动态修改,从而达到对路口交通状况的实时控制
本设计的背景:随着科学技术的发展,单片机技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出。而当今社会汽车数量急剧增加,交通的问题日益突出,因此设计交通灯的重要性也就显而易见,为了确保十字路口的行人和车辆的安全,需要采用电子控制的交通信号来进行指挥。
本设计的适用范围:适用于交通道路路口需要全自动控制主干道与次干道等道路。
本课题的研究意义: 本次课程设计将先进的单片机技术与道路交通控制相结合起来,通过硬件设计与软件编程实现道路交通的全自动控制,同时实现交通线路车辆的多少实时调整,在减少人力的同时也保证了道路交通的安全,保障了行人与车辆的安全与城市交通的顺畅。对城市的现代化建设起到了重要的作用。
2 总体设计方案
下面对交通灯课程设计的基本要求与硬件设计做简单概述。
2.1设计要求:
道路路口交通灯仿真如图1所示:
图1 道路路口交通灯仿真图
南北、东西两干道交与一个十字路口,各干道有一组红、黄、绿三色的指示灯,指示车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,切黄灯燃亮时间为东西南北两干道的公共停车时间。设东西道比南北道的车流量大,指示灯燃亮的方案如表2-1所示
表2-1 交通道路路口交通灯点亮示意表 交通信号灯工作模式 时间ﻫ方向 南北向 东西向 30S 绿灯亮 红灯亮 3S 黄灯亮 红灯亮 40S 红灯亮 绿灯亮 3S 红灯亮 黄灯亮 ...... ....... ...... 2.2性能指标
(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。通行时间为30秒。 (2)黄灯闪烁3秒,警示车辆和行人红、绿灯状态即将切换。 (3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通行,行人通行。时间为40秒。南北方向为主干道,东西方向为支干道。 (4)这样如上表的时间和红、绿、黄出现的顺序依次处出现这样行人和车辆就能安全畅通的通行。
(5)此表可根据车辆动态设定红绿灯初始值。
2.3硬件规范
单片机:单片机选用STC89C52RC,它与8051系列单片机全兼容,但其内部带有4KB的FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。
LED显示系统:出现紧急情况时,用两个数码管显示两个车道的禁行时间,设计时可利用单片机的P1口和P2口作为字段和片选信号输出,经驱动芯片后驱动数码管显示倒计时时间。
中断系统设置1个程序按键:当出现紧急情况时,按下按键,单片机就能接收到一个外部中断信号,执行中断命令。另需配置一个非程序按键:系统复位键。 电源供电系统本系统采用USB~5V直流稳压电源供电,这样可以优化设计过程。
3 STC89C52RC概述
3.1 基本构造
STCC51RC 系列单片机是宏晶科技推出的新一代超强抗干扰/ 高速/ 低功耗的单片机,指令代码完全兼容传统8051 单片机,12 时钟/ 机器周期和6 时钟/ 机器周期可任意选择,最新的D 版本内部集成MAX810 专用复位电路。
3.2 性能特点
增强型6 时钟/ 机器周期,12 时钟/ 机器周期 8051 CPU;工作电压:5.5V - 3.4V(5V 单片机) / 3.8V - 2.0V(3V 单片机); 工作频率范围:0 - 40 MHz,相当于普通8051 的 0~80MHz.实际工作频率可达48MHz;用户应用程序空间 4K / 8K / 13K / 16K / 20K / 32K / 64K 字节;片上集成 1280 字节 / 512 字节 RAM; 通用I/O 口(32/36 个),复位后为: P1/P2/P3/P4 是准双向口/ 弱上拉(普通8051 传统I/O 口),P0 口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O 口用时,需加上拉电阻; I S P (在系统可编程)/ I A P (在应用可编程),无需专用
编程器/ 仿真器,可通过串口(P3.0/P3.1)直接下载用户程序,8K 程序3 秒即可完成一片; EEPROM 功能; 看门狗;内部集成MAX810 专用复位电路(D 版本才有),外部晶体20M 以下时,可省外部复位电路 ;A/D转换,10位精度ADC,共8路,转换速度可达250K/S;具备双串口;工作温度范围:-40 - +85oC(工业级),0 – 75oC(商业级);40管脚封装
4课题描述与分析
4.1交通灯系统需求描述与分析
通过STC89C52RC单片机控制P1口的输出值,配合数码管及发光二极管的达到对道路交通状况的控制,因为该单片机功能齐全,开发简单,可以很完美的对道路实时交通进行控制,从而达到当初预定的目标
4.2交通灯系统开发步骤
第一步:了解STCC52RC单片机各部分的结构构造及其工作原理,对该单片机的工作流程作深入分析,了解各输出输入口的工作电平,工作状态,为下一步的编程设计打好基础;
第二步:分析课程设计要求,掌握道路路口交通灯的实时要求,具体分析每一个方向上不同时刻对应的不同灯颜色的变化;
第三步:根据课程设计要求及单片机STC89C52RC工作原理编写程序,达到课程设计要求;
第四步:将程序编写完成编译无误后烧录至单片机芯片中,然后根据设计要求在后期进行程序调试,以达到最佳要求现实效果。
5、交通灯课题设计
5.1总体设计
5.1.1设计要求如下
(1)用发光二极管模拟交通信号灯,用按键开关模拟车辆检测信号。
(2)正常情况下,A、B两车道轮流放行,A车道放行30S,其中3S用于警告;B车道放行40S,其中3S用于警告。 (3)有紧急车辆通过时,按下K3开关使A、B车道均为红灯,禁行20S。并用数码管显示计时时间
电源电路 5.1.2 交通灯控制
系统框图如图2
复位电路ATS52单片机晶振电路多位LED灯控制按键
图2 系统控制框图 5.2硬件设计
5.2.1交通信号灯与控制状态对应关系
表3-1 交通信号灯与控制状态对应关系 控制状P3 P3.7 P3.6 P3.5 P3.4 P3.3 态 主绿灯8EH 0 1 1 1 1 ﻫ次红灯 主黄灯 BEH 1 0 1 1 1 次红灯 主红灯 CBH 1 1 0 1 1 次绿灯 主红灯CCH 1 1 0 1 1 ﻫ次黄灯 通过调用码表来使LED发光二极管显示路口交通状况。
5.2.2数码管显示电路
P3.2 P3.1 P3.0 1 1 0 1 0 1 1 1 0 0 1 1
图4 数码管显示控制
由图4 可知,数码管由P1口驱动,a,b为片选信号输入端。
5.2.2.1 工作原理
数码管采用的是七段式数码管,通过控制不同的LED的亮灭来显示出不同的字形。数码管又分为共阴极和共阳极两种类型,其实共阴极就是将八个LED的阴极连在一起,让其接地,这样给任何一个LED的另一端高电平,它便能点亮。而共阳极就是将八个LED的阳极连在一起。其原理图如下。其中引脚图的两个COM端连在一起,是公共端,共阴数码管要将其接地,一个八段数码管称为一位,多个数码管并列在一起可构成多位数码管,它们的段选线(即a,b,c,d,e,f,g,dp)连在一起,而各自的公共端称为位选线。显示时,都从段选线送入字符编码,而选中哪个位选线,那个数码管便会被点亮。数码管的8段,对应一个字节的8位,a对应最低位,dp对应最高位。所以如果想让数码管显示数字0,那么共阴数码管的字符编码为00111111,即0x3f;共阳数码管的字符编码为11000000,即0xc0。可以看出两个编码的各位正好相反。 5.2.2.2 数码管使用注意事项
采用共阴极数码管,程序代码要是共阴代码,接实物图时要接上拉电阻,否则数码管显示会出现不正常状态。
5.2.3单片机STC89C52外部接口图
图5 单片机STC89C52RC外部接口(含晶振与电源)图 单片机的18和19管脚接时钟电路,19管脚接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,18管脚接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,9引脚是复位输入端,接上电容、电阻及开关后构成上电复位电路。P1口驱动数码管显示,P3口驱动交通灯,实现红绿灯的亮灭控制,P3.2接收外部中断,实现紧急情况的控制,P2.1和P2.1为两个数码管的片选信号输出端口,控制数码管的工作,上拉电阻能增强单片机的驱动能力。
5.3软件设计
5.3.1 主程序流程图
开中断南北通南北黄灯东西通调东西黄灯闪NO 是否有中YE
中断中断软件设计大体分下面几个部分:
1 主程序部分:主要完成RAM清零,T0定时器的设置,南北主干道与东西支干道绿、黄灯的初值设定,键盘查询以及各子程序的调用;
2 定时中断服务程序部分:使南北绿灯、黄灯,东西绿灯、黄灯的定时中断; 3 扫描显示程序部分:为12位LED动态显示提供驱动信号。P0口为6个放光二极管提供驱动信号,P2口为数码管提供驱动信号,P0口与P2口低电平有效;
4 键扫描部分:检测P3端口,判断是否有键按下,如果有键按下,则进行延时去抖动并读取键值待主程序处理;
5.3.2 主序程
void main()
{
TMOD=0x01;
TH0=(65535-1000)/256; TL0=(65535-1000)%256;
ET0=1; ﻩTR0=0; ﻩEA=1; EX0=1; IT0=1; while(1) {
/*ﻩif(int0==1) ﻩ{ ﻩ ﻩint0=0;
ﻩﻩ for(j=0;j<20;j++) ﻩ ﻩﻩ ﻩﻩ ﻩﻩ
while(1) {
if(sec=1) {
ﻩﻩ ﻩﻩﻩﻩ{ ﻩ
ﻩ
ﻩsec=0; ﻩbreak;
ﻩﻩﻩﻩ} ﻩ
P2=0x02;
ﻩﻩ p1=c[j/10];
ﻩ ﻩﻩﻩP2=0x01; ﻩﻩ ﻩ ﻩﻩ} ﻩﻩ}*/
ﻩﻩtraffic_light(); } }
ﻩP1=c[j%10]; ﻩ}
5.3.3 交通灯程序
void traffic_light() {
switch (Operation_type) {
ﻩ case 1:
ﻩ red_A=1;yellow_A=1;green_A=0; ﻩ red_B=0;yellow_B=1;green_B=1; delayMS(3000); Operation_type=2; ﻩﻩ break; ﻩ case 2:
ﻩ delayMS(300);
ﻩ yellow_A=!yellow_A; ﻩ green_A=1; if(++Flash_Count!=10) return; ﻩ Flash_Count=0; ﻩ Operation_type=3; ﻩ break; case 3: red_A=0;yellow_A=1;green_A=1; ﻩﻩ red_B=1;yellow_B=1;green_B=0; ﻩ delayMS(4 000); ﻩ Operation_type=4; break; case 4:
ﻩ delayMS(300); yellow_B=!yellow_B; green_B=1; if(++Flash_Count!=10) return; ﻩ Flash_Count=0; ﻩ Operation_type=1; ﻩ } }
5.3.4 中断服务子程序
void EX_0() interrupt 0 {
uint j,i; red_B=0; red_A=0; yellow_A=1; yellow_B=1;
ﻩ green_A=1; green_B=1; a=1; for(j=0;j<20;j++) ﻩ { ﻩ for(i=0;i<50;i++) ﻩﻩ {P2=0x02; ﻩﻩ
ﻩ P1=c[j/10]; ﻩ delayMS(10); ﻩﻩ P2=0x01;
ﻩ P1=c[j%10]; delayMS(10); } ﻩ P1=0xff; }
}
5.3.5软件设计的要求:
1、用C语言进行程序设计;
2、在Keil编程平台上进行编辑,并完成编译; 3、用STC_ISP_V483软件对单片机进行烧录。 注:程序见附件
6 系统测试
当硬件电路板焊接完成,软件程序编译任务完成,就要进行系统可行性测试,系统测试如下所述:
6.1硬件调试
本次课程设计电路板已经焊接完成并且测试调试都已可用,故硬件调试部分不再叙述。
当程序调试完成后烧录到单片机中,出现显示不正常,闪烁不正常的问题,结合程序调试最后也得到了解决。
6.2软件调试
程序编写过程中会遇到很多语法问题,符号问题,调用差错问题,通过仔细修改以及同学们的热心帮助都得到了解决。
7 总结
7.1系统设计总结
交通灯的控制对道路交通安全有着非常重要的作用。而单片机技术的与日革
新也敦促着交通控制与单片机技术的相结合,本次课程设计完成了基于单片机STC12C5A60S2的交通灯控制系统的设计与模拟。包括交通灯方案的设计,系统硬件的焊接、程序语言的编程与仿真调试等。在我们小组的课程设计完成过程中,我做的主要做的工作有:
(1) 交通系统具体的通行方案的设计,及其功能的具体实现; (2) 程序的编写与调试;
7.2个人总结
两个星期的单片机课程设计很快就结束了,在本次课程设计中,我们小组通过硬件上的动手操作进一步学习跟掌握了单片机原理的有关知识,虽然我们在上学期在孙琪老师的带领下系统的学习过单片机,但当时仅局限于原理的学习而没有涉及过单片机系统的实际应用,这次的课程设计让我加深了对单片机原理及应用技术的认识,掌握了简单的单片机应用系统的设计、制作、调试的方法。对于交通灯这个题目,在上学期常树旺老师的接口技术课程与李素梅老师的EDA电子设计自动化课程中曾经接触过类似的设计实验,只是之前用的是汇编或者VHDL,这次用的C语言,在编写的过程中也感受到了C程序语言编程的优势所在,语言简洁干练,便于阅读与修改,这也为课程设计提供了很大的方便。
ﻩ在课程设计的过程中也遇到了很多问题,例如Keil软件操作的不熟悉,C语言编程语句及顺序的混乱,在系统调试时的按键抖动、数码管显示的不正常及LED灯的非正常闪烁等问题,最终通过向老师跟同学询问或者查阅图书馆的资料最终得到了解决,较完美的实现了课程设计要求。通过此次单片机课程设计使我们认识到自身知识储备及能力的薄弱,更让我们知道实践的重要性。在以后的学习过程中,我会更加努力学习单片机的相关知识和应用,真正能够掌握单片机应用,并将其运用解决各种实际的问题中去。
在做这次毕业设计的整个过程中,我明白了很多东西。也许我们理论知识学的还不错,但真正的动起手来,却常常力不从心,这就是我们常犯的眼高手低的毛病,但还是需要良好的理论知识做基础。从刚开始的搜集资料,我就有点慌了,总觉得自己准备的不够好,无法顺利完成任务,但在老师和同学的帮助下,慢慢的步入轨道。虽然毕业设计将要接近尾声,我也尽力的想要去做好毕业之前的最后一次实践课,但由于某些原因,有些元器件没能通过软件正常工作,这次设计的电子万年历没能达到我们预想的效果,只能显示部分功能。这也证明了我以后要学习的东西还有很多,要继续努力,不断地汲取新的知识并运用到实际中,在实践中锻炼自己,全方位的提高自己。
致谢
这次毕业设计的完成,首先感谢学校和周平老师,感谢学校给了我们这样一个学习的机会,在我们丰富了自身的同时不仅使我学到了很多新的知识,更使我认识到了自己的不足。从这次设计的开始到完成整个过程中,我遇到了很多意想
不到的困难,但在吴敏老师的指导和帮助下,我也基本完成了任务,同时也受益非浅。老师给了我很多关于设计方面的资料和建议,并指出了我的错误和不足,她平易近人但有严肃认真的工作态度,她不拘小节却有细致严谨的敬业精神,我们的每一步成果都是和老师的心血分不开的。虽然毕业设计即将完成,但我学到了很多新的东西和道理,相信在我以后的人生道路上都会受用的。其中,我的一些同学也给了我很多帮助,借此机会向老师和帮助我的每一个人表示真挚的谢意在这次单片机课程设计中我学到了很多,让我真正渗入到了专业学习,我能有这样的机会并且获益匪浅,感谢于身边每一位给予我支持和帮助的人。
参考文献
[1] 李广弟,朱月秀.单片机基础[M].北京:北京航空航天大学出版社,2007.100~1
[2] 李光飞.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,2004.55~63
[3] 刘建清. 单片机技术. 国防工业出版社, 2006.8: 104-105
[4] 张一斌 余建坤.单片机原理课程设计 中南大学出版社,2009.9 [5] 邓红 张越.单片机实验与应用设计教程 冶金工业出版社,2004.5 [6]张俊漠.单片机中级教程.北京航空航天大学.2006.03 [7]全国大学生电子设计竞赛获奖作品选编.北京理工大学出版社.2005.03 [8]计算机通信技术及其程序设计.西安电子科技大学出版社.1998 [9]姚彬.电子元器件与电子实习实训教程.机械工业出版社.1996
[10]宋贤法,韩晶等编著.电路设计实力指导教程.机械工业出版社.2003 [11]范红刚,魏学海,任思璟编著.51单片机自学笔记. 北京航空航天大学.2001.01
12]黄友锐,编著.单片机原理及应用.合肥工业大学出版社.2006.10 [13]Donald A. Neamen. Electronic Circuits Analysis and Design. 2nd ed. McGrawhill Companies, Inc.2001.
[14]Sergio Franco. Design With Operational Amplifiers and Analog Integrated Circuits. McGraw-Hill Company.2002. [15]Allan R.Hambley. Electronics. 2nd ed.Prentice Hall Inc.2000.
附录1 元件清单
元件名称 型号 单片机 STCC52 晶振 12MHz 电容 30pf 电解电容 10uf 电阻 10KΏ 发光二极管 LED 电阻 470Ώ 电阻 1KΏ 按键 USB接口 数码管 7SEG-MPX1-CC
附录2 系统电路原理图
数量/个 1 1 2 1 1 12 12 12 1 1 2 用途 控制核心 晶振电路 晶振电路 复位电路 复位电路 黄、红、绿灯 LED限流 上拉电阻 中断控制 电源、下载 时间显示
附录3 仿真结果图
附录4 系统程序清单
/********************************************************************************************* 程序名: 交通灯
编写人: 杨东升 温剑波 编写时间: 2011年5月50日
硬件支持: STCC52 12MHz晶体
#include #define uchar unsigned char #define uint unsigned int sbit red_A=P0^0; sbit yellow_A=P0^1; sbit green_A=P0^2; sbit red_B=P0^3; sbit yellow_B=P0^4; sbit green_B=P0^5; sbit a=P3^6; uchar code c[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar Flash_Count=0,Operation_type=1; void delayMS(uint x) { uchar i; while (x--) for(i=0;i<120;i++); } void traffic_light() { switch (Operation_type) ﻩ { case 1: ﻩ red_A=1;yellow_A=1;green_A=0; ﻩ red_B=0;yellow_B=1;green_B=1; ﻩ delayMS(3000); ﻩ Operation_type=2; ﻩ break; ﻩ case 2: ﻩ delayMS(300); yellow_A=!yellow_A; ﻩ green_A=1; ﻩﻩ if(++Flash_Count!=10) return; ﻩ Flash_Count=0; ﻩ Operation_type=3; break; case 3: red_A=0;yellow_A=1;green_A=1; ﻩ red_B=1;yellow_B=1;green_B=0; ﻩﻩ delayMS(4 000); Operation_type=4; ﻩ break; ﻩ case 4: ﻩ delayMS(300); yellow_B=!yellow_B; ﻩ green_B=1; ﻩ if(++Flash_Count!=10) return; ﻩ Flash_Count=0; Operation_type=1; ﻩ } } void EX_0() interrupt 0 { uint j,i; red_B=0; red_A=0; ﻩ yellow_A=1; yellow_B=1; green_A=1; ﻩ green_B=1; a=1; for(j=0;j<20;j++) ﻩ { ﻩ for(i=0;i<50;i++) ﻩ {P2=0x02; ﻩﻩ ﻩ P1=c[j/10]; ﻩﻩ delayMS(10); P2=0x01; ﻩ P1=c[j%10]; ﻩ delayMS(10); ﻩ } ﻩﻩ P1=0xff; } } void main() { TMOD=0x01; ﻩTH0=(65535-1000)/256; TL0=(65535-1000)%256; ET0=1; ﻩTR0=0; EA=1; EX0=1; ﻩIT0=1; while(1) { ﻩ/* if(int0==1) ﻩﻩ{ ﻩint0=0; ﻩ ﻩfor(j=0;j<20;j++) ﻩ{ ﻩﻩﻩ ﻩ ﻩwhile(1) ﻩ ﻩﻩ{ ﻩ if(sec=1) ﻩﻩﻩﻩ { ﻩﻩ sec=0; ﻩ ﻩ ﻩﻩbreak; ﻩﻩﻩﻩﻩ} ﻩ ﻩﻩP2=0x02; ﻩﻩ ﻩp1=c[j/10]; ﻩ ﻩP2=0x01; ﻩﻩﻩ P1=c[j%10]; ﻩ ﻩ } ﻩ} ﻩ }*/ ﻩ traffic_light(); } } /*void interrpt1() interrupt1 { TH0=(65535-1000)/256; ﻩTL0=(65535-1000)%256; sec=1 } */ 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dcrkj.com 版权所有 赣ICP备2024042791号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务