1、 单片机课程设计报告 一、设计目的作用一、设计目的作用 随着微控技术的日益完善和发展,单片机的应用在不断走向深入。它的应用 必定导致传统的控制技术从根本上发生变革。它在工业控制,数据采集,智能化 仪表,机电一体化,家用电器等领域得到了广泛应用,极大地提高了这些领域的 技术水平和自动化控制。 本项目主要从单片机应用上来实现十字路口交通灯智能化的管理, 用来控制 过往车辆的正常运作。 二、设计要求二、设计要求 基于 STC89C52 单片机的数显交通灯的设计,主要功能有: (1)东西南北路口直行通行,数码管显示直行通行倒计时。 (2)红黄绿灯显示道路交通状态。 (3)某一方向道路拥挤时,可以人工控
2、制调节东西南北通行时间。 三、设计的具体实现三、设计的具体实现 1、系统概述 (按照系统设计的要求和功能,将系统分为主控模块、LED 显示模块、电源 电路、复位电路、按键电路、晶振电路、驱动电路等几个模块,系统组成框图如 图 2-1 所示。 图 2-1 该系统要求完成倒计时、状态灯等功能。基于上述原因,我们考虑了三种方案: 时间显示 晶振电路 STC89C52 单片机 驱动 74ls245 红灯状态 黄灯状态 绿灯状态 按键电路 电源电路 方案一:完全采用数码管显示。这种方案只显示有限的符号和数码字苻,无法 胜任题目要求。 方案二:完全采用点阵式 LED 显示。这种方案实现复杂,且须完成大量的
3、软 件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。 方案三:采用数码管与点阵 LED 相结合的方法因为设计既要求倒计时数字输 出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与 LED 灯分别显示时间与提示信息。这种方案既满足系统功能要求,又减少了系统实现 的复杂度。权衡利弊第三种方案可互补一二方案的优缺,我们决定采用方案三以 实现系统的显示功能。 2、 单元电路设计与分析 电路图如下图 程序流程图 本系统的软件包括主程序, 显示程序和中断程序三部分。 主程序: 初始化子程序, 循环执行显示子程序,中断系统初始化,显示缓冲区赋初值,设置状态标志,状 态切换。具体流程
4、如下: 图 4-1 中断服务程序图 定时器 T0 void Time0() interrupt 1 TH0=60; TL0=176; CST+; /50ms 次数累加 ucled0=sjz1/10; /送南北十位数据 ucled1=sjz1%10; /个位 ucled2=sjz2/10; /送东西市委数据 ucled3=sjz2%10;/个位 if(CST=20) /定时 1S CST=0;/清零 if(r2=1) /东西红灯亮 if(sjz1=0)/南北绿灯时间 P1=0xE2; /南北黄灯亮 关中断 保护现场 开中断 中断服务 关中断 恢复现场 开中断 中断返回 断点地址由堆栈弹入pc n
5、b=1; /黄灯闪烁亮标志 sjz1=sjz2;/ 赋黄灯时间 /sjz1-;sjz2-; if(sjz2=0)/东西红灯时间到 P1=0xCC;/东西绿灯亮 南北红灯亮 sjz1=nbz;sjz2=(nbz-3);/重新赋? nb=0; /黄灯闪烁灭标志 else sjz1-;sjz2-; /数据自减 if(r1=1) /南北红灯亮 if(sjz2=0)/东西记时到 P1=0xD4;/东西方向黄灯亮 sjz2=sjz1;/附黄灯时间 dx=1; /黄灯闪烁亮标志 / sjz1-;sjz2-; if(sjz1=0)/南北时间到 P1=0xE1;/南北绿灯亮 东西红灯亮 sjz1=(dxz-3)
6、;sjz2=dxz;/重新赋值 dx=0; /黄灯闪烁灭标志 else sjz1-;sjz2-; /数据自减 定时器 T1 闪烁 void Time1() interrupt 3 TH0=60; TL0=176; if(nb=1) h1=!h1; /南北方向闪烁 if(dx=1) h2=!h2; /东西方向闪烁 if(cs=1) a0=!a0;a3=1; /第 1 位闪烁 if(cs=2) a1=!a1;a0=1; /第 2 位闪烁 if(cs=3) a2=!a2;a1=1; /第 3 位闪烁 if(cs=4) a3=!a3;a2=1; /第 4 位闪烁 图 4-2 主程序 开始 中断入口设置 主程序初始化 中断初始化 开中断 南北直通状态,东西红灯 延时 14s 南北黄灯 延时 4s 东西直通状态, 南北红灯 延时 15s 东西