《C51交通灯程序设计.docx》由会员分享,可在线阅读,更多相关《C51交通灯程序设计.docx(9页珍藏版)》请在三一办公上搜索。
1、C51交通灯程序设计C51期末课程设计大作业 课程名称:交通灯程序设计 学院: 信 息 技 术 学 院 系别: 计 算 机 应 用 系 专业: 计 算 机 应 用 技 术 班级: Z090X 组序号:第二组 组 员 X X 学 号 XXXXXXXX 一、功能要求1 二、方案论证1 三、硬件解读2 四、流 程 图5 五、软件设计8 六、设计总结15 一、功能要求 设计所要完成的功能如下: 1、信号灯受一个起动开关控制,当起动开关接通时,信号系统开始工作,且先南北红灯亮,东西绿灯亮。当起动开关断开时,所有信号灯都熄灭。 2、南北红灯亮维持25S。在南北红灯亮的同时东西绿灯也亮,并维持20S。到20
2、S时,东西绿灯闪烁,闪烁3S后熄灭。在东西绿灯熄灭时,东西黄灯亮,并维持2S。到2S时,东西黄灯熄,东西红灯亮。同时,南北红灯熄灭,南北绿灯亮。东西红灯亮维持30S。南北绿灯亮维持25S。然后闪烁3S,熄灭。同时南北黄灯亮,维持2S后熄灭,这时南北红灯亮,东西绿灯亮 3、要有倒计时数码显示。 设计要求: 1、功能要求 2、方案论证 3、系统硬件电路设计 4、系统程序设计 二、方案论证 方案的选择和论证 根据题目要求,系统可以划分为几个基本模块: 1、时钟模块 2、时钟设置模块 3、显示译码模块 4、复位电路 对各模块的实现,分别有以下一些不同的设计方案: (1) 标准时基模块 方案一:采用直接
3、从晶振分频得到12MHz信号。该方案比较容易实现,但精确度不高,很难达到题目精确度的要求。 方案二:采用单片机C51经过延时程序产生12MHz时基信号。在单片机程序设计中通过延时程序的循环产生所需要的12MHz的时基信号,该方案精确度比较高,而且也易于程序调整,电路结构简单,系统资源占用较小。 基于上述理论分析,拟订方案二。 时钟控制模块 方案一: 采用单片机对键盘扫描和读取来控制不同时间值。通过单片机对键盘的引脚不停的扫描,读入某时刻按下的键,通过单片机内部查表程序译出按键所对应的值从而使时间的值发生改变。该方案简单,常用,资源占用较小。 方案二:采用PLD芯片引脚锁定,通过开关的通和短控制
4、PLD中计数器的值。该方案程序设计简单,但按键不直观不易使用,且用了PLD芯片而使成本过高。 基于上述理论分析,拟订方案一。 显示模块 方案一:采用液晶屏幕显示时钟和红绿灯。该方案显示清晰,体积比较小,易于PCB板的印制。但其程序设计非常复杂,成本过高。 方案二:采用七段数码管显示时钟和红绿灯。该方案简单,可以很好的通过单片机连用实现功能。成本较低。 基于上述理论分析,拟订方案二。 小结 经过仔细的论证和比较,决定了系统各个主要模块的最终方案如下: 标准时基模块:采用单片机C51的延时程序产生12MHz的时钟信号驱动LED。 时间设置模块:采用键盘和单片机控制进行时间设置。 显示模块:采用普通
5、七段显示数码管显示。 系统的模块图如下: 1、单片机时钟控制模块 2、键盘设置模块 3、七段数码管显示模块 4、复位电路 三、硬件解读 AT89C51简介: 1、AT89C51 概述 AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k字节Flash可擦写存储器。AT89C51器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,AT89C51的片内Flash允许程序存储器通过传统编程器反复编程。由于芯片内集成了通用8位中央处理器和Flash存储单元,功能强大的微处理器ATMEL AT89C51可为许多嵌入式控制应用系统提供高度灵
6、活、高性价比的解决方案。 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四种封装形式,以适应不同产品的需求。 2、 AT89C51 特性 兼容
7、MCS-51指令系统 4k可反复擦写(1000次)Flash ROM 时钟频率0-24MHz 三级程序存储器锁 1288位内部RAM 32个双向I/O口 2个16位定时/计数器 6个中断源 可编程串行通道 低功耗空闲和省电模式 片内振荡器和时钟电路 3、AT89C51参数 AT89C51 参数 AT89C51 基本参数 FLASH (bytes) RAM (Bytes) 最大频率 (MHz) Vcc (V) I/O引脚 ISP 4K 128 24 520% 32 - AT89C51 其他特性 AT89C51 封装类型 PDIP40, PLCC44, TQFP44, PQFP44 硬件电路: 该
8、电路图为在Proteus仿真环境下设计,我的电路实现的是十字路口交通灯的红黄绿灯的交通控制,没有倒计时显示: 四、流程图 子程序 开 始 初 始 化 是 转到相应控制交通灯程 序并显示 进入设定程序 判断各个按键是否等于0 否 外部中断服务 否 是 主程序 中断返回 黄灯取反 设定时间 初 始 化 是否定时时间到 开 始 启动定时器 INT0为1时时钟加1 扫面键盘 显示数码 交通灯控制 五、软件设计 软件设计的晶振为12MHz,程序如下: #include /头文件 #define uchar unsigned char/宏定义 #define uint unsigned int void
9、delay(uint x)/延时子函数 uint i,j; for(i=x;i0;i-) for(j=1250;j0;j-); void main /主函数 uchar i; /定义局部变量 while(1) /所有的交通灯都亮 for(i=0;i20;i+) /东西通车较少,故延时较段 P2=0x14; /东西绿灯亮,南北红灯亮 delay(100); for(i=0;i3;i+) /东西绿灯闪烁3次,同时南北红灯亮 P2=0x10; delay(50); P2=0x14; delay(50); for(i=0;i2;i+) /东西黄灯亮2秒,同时南北红灯亮 P2=0x12; delay(1
10、00); for(i=0;i25;i+) /南北绿灯亮,由于车辆较多,故延时较长 P2=0x41; /南北的绿灯亮 ,东西的红灯亮 delay(100); for(i=0;i3;i+) /南北的绿灯闪烁3次,同时东西红灯亮 P2=0x01; delay(50); P2=0x41; delay(50); for(i=0;i2;i+) /南北黄灯亮2秒,同时东西红灯亮 P2=0x21; delay(100); 仿真截图: 该仿真截图是在Proteus环境下完成的,图一是初始状态,图二是东西绿灯闪烁的时候,图三是东西黄灯亮的时候,图四是南北绿灯亮的时候,图五是南北绿灯闪烁的时候,图六是南北黄灯亮的时
11、候的截图,各个截图的右下角都有当时仿真的系统仿真时间,各图片如下: 五、设计总结 这次期末课程设计,让我可以把理论的学习与实践有机的结合起来,真正了解自己学习的成果如何。 在设计过程中,首先要分析课题,根据所学知识绘制出系统总体设计框图。然后按照自己的设计思路,利用所给的元器件绘制出设计图。在绘制设计图连接各个元器件的时候,要尽量使布线合适,从而使所作设计图清晰易看。绘制完设计图后,接下来就是要根据设计所要求的功能和已完成的设计图编写程序,在编程时,首先应该绘制出主程序流程图,然后采用模块化程序设计的方式,编写实现各个功能的子程序,再将各个子程序与主程序连接起来。在设计程序时要不断对程序进行修
12、改,同时在设计程序的过程中要养成注释程序的习惯,在对程序进行修改的时候,可以通过注释很容易的看出各句程序的功能,清晰明朗。当程序设计出来之后,就可以通过仿真软件对其进行编译,生成仿真所需要的HEX文件。 将生成的文件加载到Protues上,就可以进行系统仿真。通过仿真,检测所作设计是否能实现预期功能。 本次课程设计使我对单片机的工作原理有了更深刻的认识,掌握了许多在以前学习中混淆不清的知识点。在翻阅相关书籍和查询相关资料过程中学到了丰富的单片机知识,开阔了眼界,增广了知识面。在编辑程序中,对C语言又有了新的认识和理解。实物焊接中不仅锻炼了自己的动手能力,而且真正作到了理论联系实际的重要性,收益匪浅。 本次课程设计我参考了许多资料,程序设计也借鉴了别人的长处,这让我们排除一个又一个困难,最终完成了这个设计。 但是在我设计和调试的过程中,也发现了一些问题,譬如红灯和绿灯的切换还不够迅速,红绿灯规则效率还不是很高,数码管的显示不够精准等,这都需要在实践中进一步完善,进一步弥补自己的不足。