收藏 分销(赏)

单片机课程设计简易交通信号控制器.docx

上传人:可**** 文档编号:957136 上传时间:2024-04-09 格式:DOCX 页数:23 大小:110.30KB 下载积分:10 金币
下载 相关 举报
单片机课程设计简易交通信号控制器.docx_第1页
第1页 / 共23页
单片机课程设计简易交通信号控制器.docx_第2页
第2页 / 共23页


点击查看更多>>
资源描述
概述 近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。 本系统由单片机系统、LED实现交通灯系统显示,系统包括东西和南北基本的交通灯的功能。系统除基本交通灯功能外,还具有倒计时、时间设置。 关键词:单片机 交通灯 倒计时 简易交通信号控制器 ..自制一个单片机最小系统,包括串口下载、复位电路,采用内部定时器定时控制南北、东西的交通信号灯(采用LED模拟),交通信号灯由红、黄、绿灯组成,东西、南北模拟路口由12路LED组成,其中南北、东西均采用并联方式连接,双向均有倒计时牌。 控制方案如下: 东西绿灯 东西绿闪 东西黄灯 东西红灯 22 5 3 30 南北红灯 南北绿灯 南北绿闪 南北黄灯 30 22 5 3 .2.1系统硬件设计 2.2 系统总框图如下 8951 单 片 机 系 统 倒计时 显示电 路 LED灯 74LS244驱动 电路 电源 及复 位电 路等 MAX233串口 下载 电路 图2-1 系统方框总图 2.3 系统使用的工具器件 2.4.1单片机概述 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机经过1、2、3、3代的发展,目前单片机正朝着高性能和多品种方向发展,它们的CPU功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗。 2.4.2 MSC-51芯片简介 MCS-51单片机内部结构    8951是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。     8951单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线: 中央处理器:     中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调 度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。 数据存储器(RAM) 图2-2 89c51内部结构     8951内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。 程序存储器(ROM): 8951共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。 定时/计数器(ROM): 8951有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于控制程序转向。 并行输入输出(I/O)口: 8951共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。 全双工串行口: 8951内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器 使用。 中断系统: 8951具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。 时钟电路: 8951内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8951单片机需外置振荡电容。 单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构。下图是MCS-51系列单片机的内部结构示意图。 图2-3 MCS-51结构图 MCS-51的引脚说明: MCS-51系列单片机中的8031、8051及8751均采用40Pin封装 的双列直接DIP结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在我们对这些引脚的功能加以说明:如右图 图2-4 89C51单片机引脚 Pin9:RESET/Vpd复位信号复用脚,当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指针写入07H,其它专用寄存器被清“0”。RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,8051的初始态。 8051的复位方式可以是自动复位,也可以是手动复位, Pin30:ALE/~PROG当访问外部程序器时,ALE(地址锁存)的输出用于锁存地址的低位字节。而访问内部程序存储器时,ALE端将有一个1/6时钟频率的正脉冲信号,这个信号可以用于识别单片机是否工作,也可以当作一个时钟向外输出。更有一个特点,当访问外部程序存储器,ALE会跳过一个脉冲。 如果单片机是EPROM,在编程其间,~PROG将用于输入编程脉冲。 Pin29:~prsn当访问外部程序存储器时,此脚输出负脉冲选通信号,PC的16位地址数据将出现在P0和P2口上,外部程序存储器则把指令数据放到P0口上,由CPU读入并执行。 Pin31:EA/Vpp程序存储器的内外部选通线,8951和8751单片机,内置有4kB的程序存储器,当EA为高电平并且程序地址小于4kB时,读取内部程序存储器指令数据,而超过4kB地址则读取外部指令数据。如EA为低电平,则不管地址大小,一律读取外部程序存储器指令。显然,对内部无程序存储器的8031,EA端必须接地。 在编程时,EA/Vpp脚还需加上5V的编程电压。 2.4.3 MAX233芯片简介 MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。 引脚介绍:   第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。 图2-5 MAX232   第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。   其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。   8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。   TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。   第三部分是供电。15脚GND、16脚VCC(+5v)。 主要特点:   1、符合所有的RS-232C技术标准   2、只需要单一 +5V电源供电   3、片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V-   4、功耗低,典型供电电流5mA   5、内部集成2个RS-232C驱动器   6、内部集成两个RS-232C接收器 2.4.4 74LS244芯片简介 74LS244为3态8位缓冲器,一般用作总线驱动器。   74LS244没有锁存的功能。   地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上地址代码暂存起来。8086/8088数据和地址总线采用分时复用操作方法,即用同一总线既传输数据又传输地址。当微处理器与存储器交换信号时,首先由CPU发出存储器地址,同时发出允许锁存信号ALE给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁存在总线上,随后才能传输数据。   锁存器是一个很普通的时序电路。一般的,它在时钟上升沿或者下降沿来的时候锁存输入,然后产生输出,在其他的时候输出都不跟随输入变化,这就是所谓边缘触发的D触发器。当然也有电平触发的D触发器,具体使用哪种,得看你使用得总线配置。   74LS373和8282是带三态输出的8位锁存器,它们的结构和用法类似。以74LS373为例,共有8个输入端D1—D8及8个输出端Q1—Q8。当三态端OE为有效低电平,74LS373的G端为输人选通端,使能端G为有效高电平时,输出跟随输入变化;当G=1时,锁存器处于透明工作状态,即锁存器的输出状态随数据端的变化而变化,即脚1=Di(I=1,2,…,8)。当G端由1变0时,数据被锁存起来,此时输出端Qi不再随输入端的变化而变化,而一直保持锁存前的值不变。G端(或STB端)可直接与单片机的锁存控制信号端ALE相连,在ALE的下降沿进行地址锁存。 只要根据“输入三态,输出锁存”的原则,选择74系列的TTL电路或MOS电路就能组成简单的扩展电路,如74LS244、74LS273、74LS373、74LS377等芯片都能组成输入、输出接口。 图2-6 74LS244 74LS244引脚图如右图: 其中1和19引脚为选通引脚,A为输入,Y为输出。 Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 其功能特点   Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:   (1)原理布图   (2)PCB自动或人工布线 (3)SPICE电路仿真 Proteus提供了丰富的资源   (1)Proteus可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。   (2)Proteus可提供的仿真仪表资源 :示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路中随意的调用。   (3)除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。   (4)Proteus可提供的调试手段 Proteus提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。   在PROTEUS绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。   PROTEUS 是单片机课堂教学的先进助手。   PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。   它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。   课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、创造精神的平台   随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。相信在单片机开发应用中PROTEUS也能茯得愈来愈广泛的应用。   使用Proteus 软件进行单片机系统仿真设计, 是虚拟仿真技术和计算机多媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作能力;在单片机课程设计和全国大学生电子设计竞赛中,我们使用 Proteus 开发环境对学生进行培训,在不需要硬件投入的条件下,学生普遍反映,对单片机的学习比单纯学习书本知识更容易接受,更容易提高。实践证明,在使用 Proteus 进行系统仿真开发成功之后再进行实际制作,能极大提高单片机系统设计效率。因此,Proteus 有较高的推广利用价值。   目前Proteus的最新版为7.7 sp2,今年将推出8.0版本,增加DSP系列及ARM cortex处理器。 随着计算机技术的应用,人们发现中断技术不仅解决了快速主机与慢速I/O设备的数据传送问题,而且还具有如下优点: 分时操作。CPU可以分时为多个I/O设备服务,提高了计算机的利用率; 实时响应。CPU能够及时处理应用系统的随机事件,系统的实时性大大增强; 可靠性高。CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高。 烙铁头与两被焊件的接触方式 接触位置:烙铁头应同时接触要相互连接的2个被焊件(如焊脚与焊盘),烙铁一般倾斜45度,应避免只与其中一个被焊件接触。当两个被焊件热容量悬殊时,应适当调整烙铁倾斜角度,烙铁与焊接面的倾斜角越小,使热容量较大的被焊件与烙铁的接触面积增大,热传导能力加强。如LCD拉焊时倾斜角在30度左右,焊麦克风、马达、喇叭等倾斜角可在40度左右。两个被焊件能在相同的时间里达到相同的温度,被视为加热理想状态。  接触压力:烙铁头与被焊件接触时应略施压力,热传导强弱与施加压力大小成正比,但以对被焊件表面不造成损伤为原则。  焊丝的供给方法  焊丝的供给应掌握3个要领,既供给时间,位置和数量。 供给时间:原则上是被焊件升温达到焊料的熔化温度是立即送上焊锡丝。 供给位置:应是在烙铁与被焊件之间并尽量靠近焊盘。 供给数量:应看被焊件与焊盘的大小,焊锡盖住焊盘后焊锡高于焊盘直径的1/3既可。  焊接时间及温度设置  A、温度由实际使用决定,以焊接一个锡点4秒最为合适,最大不超过8秒,平时观察烙铁头,当其发紫时候,温度设置过高。 B、一般直插电子料,将烙铁头的实际温度设置为(350~370度);表面贴装物料(SMC)物料,将烙铁头的实际温度设置为(330~350度)  C、特殊物料,需要特别设置烙铁温度。FPC,LCD连接器等要用含银锡线,温度一般在290度到310度之间。 D、焊接大的元件脚,温度不要超过380度,但可以增大烙铁功率。  焊接注意事项 A、焊接前应观察各个焊点(铜皮)是否光洁、氧化等。 B、在焊接物品时,要看准焊接点,以免线路焊接不良引起的短路操作后检查:  A、用完烙铁后应将烙铁头的余锡在海绵上擦净。 B、每天下班后必须将烙铁座上的锡珠、锡渣、灰尘等物清除干 净,然后把烙铁放在烙铁架上。 C、将清理好的电烙铁放在工作台右上角。  这次的课程设计虽然只是短短的一个星期,但在这一个星期里,从查找资料,到确定方案,最后再到用软件仿真,最后到硬件电路板的焊接,我都尽心尽力,查阅了大量资料,跟同学们互相讨论,学到了很多东西。 到大四了,说实话,我们以前学习的知识都渐渐离我们远去,甚至不知道、不清楚哪些知识该用到哪些地方,什么时候用。或是知道一点也只是模模糊糊的有点印象。另外我们也正在处于找工作时期,前段时间找工作时笔试的题目差不多都不会,每次连笔试都通不过,这一次学校安排了这次课程设计,通过自己查找资料,了解情况,让我们清楚我们学的知识与现实工业生产之间的联系,使得我们对知识深刻的了解和巩固,对于我的找工作有了很大帮助。 与此同时,通过焊接硬件电路,对于我们的动手能力得到了很大的提高。因为我们马上就要步入社会了,在我们工作中动手能力是非常重要的,给了我们很大的帮助。 对于我们来说是一次值得珍惜的机会。 参考文献 [1]黄烣先,黄辉先 单片机原理及应用 北京:人民邮电出版社,2009 [2]谭浩强 C语言设计(第三版) 北京:清华大学出版社,2008 [3]彭伟 单片机C语言程序设计实训100例 北京:电子工业出版社,2009 [4]胡洪波 单片机原理及应用实验教程 湘潭:湘潭大学出版社,2009 #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit RED_DX = P2^0; sbit YELLOW_DX = P2^1; sbit GREEN_DX = P2^2; sbit RED_NB = P2^3; sbit YELLOW_NB = P2^4; sbit GREEN_NB = P2^5; bit time; uchar t; uint aa, temp,shi,ge,bb; /*数码管显示0-9*/ uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, 0x07,0x7f,0x6f}; /*子函数声明*/ void delay0(uint z); void init(uint a); void display(uint shi,uint ge); void xtimer0(); /*主函数*/ void main() { P1=0x00; P2=0x00; while(1) { RED_DX=0; //东西绿灯 RED_NB=1; GREEN_DX=1; time=1; init(30); YELLOW_DX=0; RED_DX=1; //东西红灯 RED_NB=0; GREEN_NB=1; time=0; init(30); YELLOW_NB=0; } } void init(uint a) { temp=a; //变量赋初值 TMOD=0x01; //定时器0工作于方式1 TH0=0x4c; TL0=0x00; //定时器赋初值 EA=1; //开外部中断 ET0=1; //开定时中断 TR0=1; //开定时器0 while(1) { if(aa==20) //定时20*50MS=1S { aa=0; //定时完成一次后清0 if(temp==0) { shi=temp%100/10; //显示十位 ge=temp%10; //显示个位 temp=a; break; } shi=temp%100/10; //显示十位 ge=temp%10; //显示个位 temp--; //变量自减 } if(temp==7&&time==1) { /*GREEN_DX=1; delay0(48);*/ GREEN_DX=0; } if(temp==6&&time==1) { GREEN_DX=1; /*delay0(48); GREEN_DX=0; */ } if(temp==5&&time==1) { /*GREEN_DX=1; delay0(48); */ GREEN_DX=0; } if(temp==4&&time==1) { GREEN_DX=1; /* delay0(48); GREEN_DX=0; */ } if(temp==3&&time==1) { /*GREEN_DX=1; delay0(47);*/ GREEN_DX=0; } if(temp<=2&&time==1) { YELLOW_DX=1; //东西黄灯 GREEN_DX=0; } if(temp==7&&time==0) { /*GREEN_NB=1; delay0(48);*/ GREEN_NB=0; } if(temp==6&&time==0) { GREEN_NB=1; /*delay0(48); GREEN_NB=0;*/ } if(temp==5&&time==0) { /*GREEN_NB=1; delay0(48);*/ GREEN_NB=0; } if(temp==4&&time==0) { GREEN_NB=1; /*delay0(48); GREEN_NB=0;*/ } if(temp==3&&time==0) { /*GREEN_NB=1; delay0(47);*/ GREEN_NB=0; } if(temp<=2&&time==0) { YELLOW_NB=1; //南北黄灯 GREEN_NB=0; } display(shi,ge); } } /*显示子函数*/ void display(uint shi,uint ge) { P1=0x14; P0=table[shi]; //显示十位 delay0(5); P1=0x0a; P0=table[ge]; //显示个位 delay0(5); } /*定时中断子函数*/ void xtimer0() interrupt 1 { TH0=0x4c; TL0=0x00; aa++; } /*延时子函数*/ void delay0(uint z) { uint i,j; for(i=0;i<z;i++) for(j=0;j<100;j++); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服