C51交通灯程序设计.docx
C51期末课程设计大作业课程名称:交通灯程序设计学院:信息技术学院系别:计算机应用系专业:计算机应用技术班级:班90X组序号:第二组组员X X 学号 XXXXXXXXdelay (50);P2 二 0x41;delay (50);for(i=0;i<2;i+) 南北黄灯亮2秒,同时东西红灯亮P2=0x21; delay(100);仿真截图:该仿真截图是在Proteus环境下完成的,图一是初始状态,图二是东西绿灯闪烁的时候,图二是 东西黄灯亮的时候,图四是南北绿灯亮的时候,图五是南北绿灯闪烁的时候,图六是南北黄灯 亮的时候的截图,各个截图的右下角都有当时仿真的系统仿真时间,各图片如下:utIOQIADOPO1.WDIP03VV03 F0.4104 FniTOi FD&VVD6 FuZwD?ATE7K-5IP2蜒 FZ1W3 Fiimiu PZ1WI PS14.WI 1F攻13 P渐i舛I 5 FZTWinP«IRC<DP3 hT>I) F 12 mrFTRFT pgjiTci P35TlF3.肘砸 P投怖iis遛连工工粉B妾口刃PDQWZOFULMu 1: m 顷PD.3TOI3* nitKTAI.2FIMM J F*购W>5FDII心PD.?m?Li”»RSi np?n.iM?F21JMP22M1QKEENEZ1W1 FUIfii3一JE PISAAiJ PZSA14 PZTAMAFlaPl!Fan. RO P3.11TKDP1JP32rmAA.Fl JP3arjri pAiinPI 4pinF3.WTI14Fl 6P3 6TAfficPl 7P3 7iPDAraccsl在亦LSCEElLJ1加1T0:理管司 “Ed klA,E<1 01/rcdV )tdBlxdFidHd ETI.dOINATdOWITri 8amEdEL LdOld(?-t vs £ 口 Rl.VikZriL网E:如互dawiod93M(ii|d MW Qd h.nvkQd EAvnd 牛口 涵:Qd1BHP3 FQd MWDQdEI>MTTTF比IIHEQ.O7DI) PD.11PDIpo.am P0.4MIFDW*D5Fn&SDE 网.>TP2.HABP2HMF2.KAI |l P2.3VV11 F 2 W. I 3P 2 E<A.HP2加PgRW PS I.T!<D ps.Arnr P3.3Xin TF3 4mi P1MIR3.&F3 JJRD五、设计总结这次期末课程设计,让我可以把理论的学习与实践有机的结合起来 真正了解自己学习的成果如何。在设计过程中,首先要分析课题,根据所学知识绘制出系统总体设计框图。然后按照自己的设计思 路,利用所给的元器件绘制出设计图。在绘制设计图连接各个元器件的时候,要尽量使布线合适, 从而使所作设计图清晰易看。绘制完设计图后,接下来就是要根据设计所要求的功能和已完成的设 计图编写程序,在编程时,首先应该绘制出主程序流程图,然后采用模块化程序设计的方式,编写 实现各个功能的子程序,再将各个子程序与主程序连接起来。在设计程序时要不断对程序进行修改, 同时在设计程序的过程中要养成注释程序的习惯,在对程序进行修改的时候,可以通过注释很容易 的看出各句程序的功能,清晰明朗。当程序设计出来之后,就可以通过仿真软件对其进行编译,生 成仿真所需要的HEX文件。将生成的文件加载到Protues上,就可以进行系统仿真。通过仿真,检 测所作设计是否能实现预期功能。本次课程设计使我对单片机的工作原理有了更深刻的认识,掌握了许多在以前学习中混淆不清的知 识点。在翻阅相关书籍和查询相关资料过程中学到了丰富的单片机知识,开阔了眼界,增广了知识 面。在编辑程序中,对C语言又有了新的认识和理解。实物焊接中不仅锻炼了自己的动手能力,而 且真正作到了理论联系实际的重要性,收益匪浅。本次课程设计我参考了许多资料,程序设计也借鉴了别人的长处,这让我们排除一个又一个艰难, 最终完成为了这个设计。但是在我设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规 则效率还不是很高,数码管的显示不够精准等,这都需要在实践中进一步完善,进一步弥补自己的 不足。一 功能要求1二 、方案论证1三 、硬件解读2四 、流程图5五 软件设计8六 设计总结 15一、功能要求(-)设计所要完成的功能如下:1、信号灯受一个起动开关控制,当起动开关接通时,信号系统开始工作,且先南北红灯亮,东 西绿灯亮。当起动开关断开时,所有信号灯都熄灭。2、南北红灯亮维持25S。在南北红灯亮的同时东西绿灯也亮,并维持20S。到20s时,东西绿 灯闪烁,闪烁3s后熄灭。在东西绿灯熄灭时,东西黄灯亮,并维持2S。到2s时,东西黄灯熄、,东 西红灯亮。同时,南北红灯熄灭,南北绿灯亮。东西红灯亮维持30S。南北绿灯亮维持25S。然后闪 烁3S,熄灭。同时南北黄灯亮,维持2s后熄灭,这时南北红灯亮,东西绿灯亮3、要有倒计时数码显示。(二)设计要求:1、功能要求2、方案论证3、系统硬件电路设计(给出键盘电路、LED显示电路)4、系统程序设计(要求给出流程图和程序清单)二、方案论证(-)方案的选择和论证根据题目要求,系统可以划分为几个基本模块:1、时钟模块2、时钟设置模块3、显示译码模块4、复位电路对各模块的实现,分别有以下一些不同的设计方案:(1)标准时基模块方案一:采用直接从晶振分频得到12MHz信号。该方案比较容易实现,但精确度不高,很难达到题 目精确度的要求。方案二:采用单片机C51经过延时程序产生12MHz时基信号。在单片机程序设计中通过延时程序的 循环产生所需要的12MHz的时基信号,该方案精确度比较高,而且也易于程序调整,电路结构 简 单,系统资源占用较小。基于上述理论分析,拟订方案二。(2)时钟控制模块方案一:采用单片机对键盘扫描和读取来控制不同时间值。通过单片机对键盘的引脚不停的扫描, 读入某时刻按下的键,通过单片机内部查表程序译出按键所对应的值从而使时间的值发生改变。该 方案简单,常用,资源占用较小。方案二:采用PLD芯片引脚锁定通过开关的通和短控制PLD中计数器的值。该方案程序设计简单 但按键不直观不易使用,且用了 PLD芯片而使成本过高。基于上述理论分析,拟订方案一。(3)显示模块方案一:采用液晶屏幕显示时钟和红绿灯。该方案显示清晰,体积比较小,易于PCB板的印制。但 其程序设计非常复杂,成本过高。方案二:采用七段数码管显示时钟和红绿灯。该方案简单,可以很好的通过单片机连用实现功 能。成本较低。基于上述理论分析,拟订方案二。(二)小结经过子细的论证和比较,决定了系统各个主要模块的最终方案如下:标准时基模块:采用单片机C51的延时程序产生12MHz的时钟信号驱动LEDo时间设置模块:采用键盘和单片机控制进行时间设置。显示模块:采用普通七段显示数码管显示。 系统的模块图如下:1、单片机时钟控制模块2、 键盘设置模块3、七段数码管显示模块4、复位电路三、硬件解读AT89C51 简介:1、AT89C51 概述AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k字节Flash可擦写存储器(PER0M)。 AT89C51器件采用ATMEL公司的高密度、非易失性存储技术创造,兼容标准MCS-51指令系统及80C51 引脚结构,AT89c51的片内Flash允许程序存储器通过传统编程器反复编程。由于芯片内集成为了通 用8位中央处理器和Flash存储单元,功能强大的微处理器ATMEL AT89c51可为许多嵌入式控制应 用系统提供高度灵便、高性价比的解决方案。AT89C51 具有如下特点:4k Bytes Flash 存储器、128 bytes 的 RAM、32 个 I/O 口、2 个 16 位 定时/计数器,5个中断优先级2层中断嵌套中断、1个全双工串行通信口、片内时钟振荡器。此 外,AT89c51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。AT89c51在空暇模式下, CPU暂停工作,而RAM、定时/计数器、串行口和外中断系统可继续工作,掉电模式冻结振荡器并保 存RAM的数据,住手芯片其它功能直至硬件复位。AT89c51具有PDIP、TQFP、PQFP和PLCC四种封装形式,以适应不同产品的需求。P 1 O C uceiF 1.123 fl1 Fn-O FAD QPt.2 匚3jaS>!0.1 4 A D 1JPt 3 |43TJ JP « 4.B3&P-Ci.3 4 AI) 3-3P 1,Cas.J 1*0 4 ijFl.fr C F:r94J内口匚 t r / .g3RSTln3 2-1 o3 1iP-O.T庞 O F )rxn a F3 1 c <nmr31 130pa.z c inreTs 心事匚1 2Z9 R-SEI+AT-0) P3.4- n p? 51 37111 92.7 4 A 1 Si>WTTj pg fc c HRITi1 4271 P-2.B 4卜PS r CX1。才.5 4 4,»i aI 67-4 A,?卜 nLI l -J17241 AN H Al 1 GMO L1 A 1 93 023 zz21ii pi-, i c喝碟】AT89C512、AT89C51 特性 兼容MCS-51指令系统 4k可反复擦写(1000次)Flash ROM 时钟频率0-24MHZ 三级程序存储器锁 128X8位内部RAM 32个双向I/O 口 2个16位定时/计数器 6个中断源 可编程串行通道 低功耗空暇和省电模式 片内振荡器和时钟电路3、AT89C51 参数AT89C51 参数AT89C51基本参数FLASH (bytes)4KRAM (Bytes)128最大频率(MHz)24Vcc (V)5 ±20%AT89C51其他特性I/O引脚32ISPAT89C51封装类型PDIP40, PLCC44, TQFP44, PQFP44(三)硬件电路:该电路图为在Proteus仿真环境下设计,我的电路实现的是十字路口交通灯的红黄绿灯的交通 控制,没有倒计时显示:大作业7sls丈忤/Ei®|囚工且(I)设计色)姓El®连世国|阪追)s,: i)龟赫也稍助四D己H即争秘市上件+吸座以 9。x电 1嵩困嚣tfp的岳宙厘RI画团IrpiLKEGllfe-:n2()_ 1= ATESC51LED<iREEN LEDnEDLEDTELEWEE'.+:1一PD erm.FT网I 孔? " HU'rfF :PSR8PLkUt PJJilHT- F 神而有PJ-VTP PS.WTIINI “ |"f|IZfdmmg 戚 flRaAsh 人 1csiMsaCJ ®*富、仲 QHi.略顷四、流程图(1)子程序外部中断服务(3)主程序五、软件设计软件设计的晶振为12MHz,程序如下:#include<reg51. h> 头文件#define uchar unsigned char/ 宏定义#define uint unsigned intvoid delay(uint x)延时子函数iuint i, j;for(i=x;i) 0;i-) for(j=1250;j>0;j-);)void main() 主函数(uchar i; 定义局部变量while(l) 所有的交通灯都亮(for(i=0;i<20;i+) 东西通车较少,故延时较段(P2=0xl4; 东西绿灯亮,南北红灯亮delay (100);for(i=0;i<3;i+) 东西绿灯闪烁3次,同时南北红灯亮(P2=0xl0;delay(50);P2=0xl4;delay(50);for(i=0;i<2;i+) 东西黄灯亮2秒,同时南北红灯亮(P2=0xl2;delay(100);)for(i=0;i<25;i+) 南北绿灯亮,由于车辆较多,故延时较长!P2=0x41; 南北的绿灯亮,东西的红灯亮delay(100);for(i=0;i<3;i+) 南北的绿灯闪烁3次,同时东西红灯亮P2=0x01;