浙 江 科 技 学 院 课题实验设计报告 班 级:建筑电气与智能化111 学 生: 学 号: 指导老师: 陈军统 一、设计题目 二、设计内容与要求 三、设计目的意义 四、系统硬件电路图 五、程序流程图与源程序 六、系统功能分析与说明 七、实物照片 八、设计体会 一、 设计题目 单片机交通灯控制器 二、设计内容与要求 某十字路口,南北向为主干道,东西向为支道,每个道口安装一组交通灯:红、黄、绿。设计十字路口的交通灯控制器,使交通灯按状态1状态2状态3状态4的规律变化,循环不止。 状态1:东西向绿灯亮,南北向红灯亮,其他灯全灭,保持30秒 状态2:东西向黄灯亮,南北向红灯亮,其他灯全灭,保持5秒 状态3:东西向红灯亮,南北向绿灯亮,其他灯全灭,保持20秒 状态4:东西向红灯亮,南北向黄灯亮,其他灯全灭,保持5秒 三、设计目的意义 1.通过亲身的设计应用电路,将所用的理论知识应用到实践中,增强实践动手能力,进而促进理论知识的强化。 2.通过交通灯的设计系统掌握51单片机的应用。掌握A/D转换的原理及软件编程及硬件设计的方法,掌握根据课题的要求,提出选择设计方案,查找所需元器,设计并搭建硬件电路,编程写入EPROM并进行调试等。 四、系统硬件 4.1 系统原理框图 硬件电路主要由电源电路、复位电路、时钟振荡电路和交通灯LED显示电路 组成。 为了让12只led灯可以“东西”方向、“南北” 方向分别显示,分别选取AT89C52的P1口中低六位对交通灯LED管进行控制,一路信号控制两个LED二极管显示。LED发光二极管都采用共阳极接法,连接在P1口上,当P1口中有低电平输出时发光二极管才会点亮。AT89C51单片机的时钟晶振由外接电路产生,为12MHz的晶振。 主要接口说明:晶振接XTAL1和XTAL2,复位信号接RST,横向的红灯接P1.0,黄灯接P1.1,绿灯接P1.2;纵向的红灯接P1.3,黄灯接P1.4,绿灯接P1.5 4..2芯片 1.STC89C52 STC89C52引脚图
2.STC89C52具体介绍如下: ① 主电源引脚(2根) VCC(Pin40):电源输入,接+5V电源 GND(Pin20):接地线 ②外接晶振引脚(2根) XTAL1(Pin19):片内振荡电路的输入端 XTAL2(Pin20):片内振荡电路的输出端 ③控制引脚(4根) RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。 ALE/PROG(Pin30):地址锁存允许信号 PSEN(Pin29):外部存储器读选通信号 EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。 ④可编程输入/输出引脚(32根) STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2、P3口,每个口有8位(8根引脚),共32根。 PO口(Pin39~Pin32):8位双向I/O口线,名称为P0.0~P0.7 P1口(Pin1~Pin8):8位准双向I/O口线,名称为P1.0~P1.7 P2口(Pin21~Pin28):8位准双向I/O口线,名称为P2.0~P2.7 P3口(Pin10~Pin17):8位准双向I/O口线,名称为P3.0~P3.7 STC89C52主要功能如表二所示。 表二 STC89C52主要功能 主要功能特性 | 兼容MCS51指令系统 | 8K可反复擦写Flash ROM | 32个双向I/O口 | 256x8bit内部RAM | 3个16位可编程定时/计数器中断 | 时钟频率0-24MHz | 2个串行中断 | 可编程UART串行通道 | 2个外部中断源 | 共6个中断源 | 2个读写中断口线 | 3级加密位 | 低功耗空闲和掉电模式 | 软件设置睡眠和唤醒功能 |
4.3 时钟电路和复位电路 (1).时钟电路 STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚RXD和TXD分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图 (a) 所示,在RXD和TXD引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.2~12MHz之间选择,电容值在5~30pF之间选择,电容值的大小可对频率起微调的作用。 外部方式的时钟电路如图(b)所示,RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。 RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。 RXD接地,TXD接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。片内时钟发生器把振荡频率两分频,产生一个两相时钟P1和P2,供单片机使用。 (a)内部方式时钟电路 (b)外部方式时钟电路
(2).复位电路 复位是单片机的初始化操作。其功能主要是将程序计数器(PC)初始化为0000H,使单片机从0000H单元开始执行程序,并将特殊功能寄存器赋一些特定值。复位是使单片机退出低功耗工作方式而进入正常状态一种操作。复位是上电的第一个操作,然后程序从0000H开始执行。在运行中,外界干扰等因素可能会使单片机的程序陷入死循环状态或“跑飞”。要使其进入正常状态,唯一办法是将单片机复位,以重新启动。 复位后,程序计数器(PC)及各特殊功能寄存器(SFR)的值如表4.2所示。 表4.2 程序计数器及各特殊功能寄存器的复位值 RST引脚是复位端,高电平有效。在该引脚输入至少连续两个机器周期以上的高电平,单片机复位。RST引脚内部有一个斯密特ST触发器(图2.10)以对输入信号整形,保证内部复位电路的可靠,所以外部输入信号不一定要求是数字波形。使用时,一般在此引脚与VSS引脚之间接一个8.2kΩ的下拉电阻,与VCC引脚之间接一个约10μF的电解电容,即可保证上电自动复位。 手动复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能使单片机复位。上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位键K后松开,也能使RST为一段时间的高电平,从而实现上电或手动复位的操作。 (3)复位信号及其产生 RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。 产生复位信号的电路逻辑如图4—3所示: 图4—3复位信号的电路逻辑图 整个复位电路包括芯片内、外两部分。外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。 复位操作有上电自动复位相按键手动复位两种方式。 上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图4—4(a)所示。这佯,只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就成了系统的复位初始化。 按键手动复位有电平方式和脉冲方式两种。其中,平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图4—4(b)所示;而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的, 其电路如图4—4(c)所示: (a)上电复位 (b)按键电平复位 (c)按键脉冲复位 图4—4复位电路 上述电路图中的电阻、电容参数适用于6MHz晶振,能保证复位信号高电平持续时间大于2个机器周期。 本系统的复位电路采用图4—4(b)上电复位方式。 4.4硬件原理图 XTAL1 P0.0 P0.1 P0.2XTAL2 P0.3 P0.4 P0.5RST STC89C52 /EA P1.0 P1.1 P1.2 P1.3 P1.4 P1.5
|
2.仿真图 五、程序流程图与源程序 汇编语言程序清单 MOV P1 ,#00011011B MOV P0,#00110110B MOV R2,#30 MAIN1: LCALL DELAY DJNZ R2,MAIN1 MAIN2: MOV P1,#00101101B MOV P0,#00110110B MOV R2,#05 M2: LCALL DELAY DJNZ R2,M2 MAIN3: MOV P1,#00110110B MOV P0,#00011011B MOV R2,#20 M3: LCALL DELAY DJNZ R2,M3 MAIN4: MOV P1,#00110110B MOV P0,#00101101B MOV R2,#5 M4: LCALL DELAY DJNZ R2,M4 LJMP MAIN1 DELAY:MOV R7,#10 D1: MOV R6,#200 D2: MOV R5,#250 DJNZ R5,$ DJNZ R6,D2 DJNZ R7,D1 RET RET END 七、实物照片 八、设计体会 经过近二周的单片机课程设计,终于完成了数字电压表的设计,基本达到设计要求。 对于此次课程设计,有许多的感触与体会,遇到的难题多,学习到的知识也就更多。 第一,硬件电路遇到问题,我们小组进行了多次讨论,最终确定了在程序的修改,大大降低了硬件电路的复杂度。 第二,则是解决程序设计的问题,而程序设计是一个很灵活的东西,它反映了你解决问题的逻辑思维和创新能力,它才是一个设计的灵魂所在。因此在整个设计过程中大部分时间是用在程序上面的。其中,我们遇到了很多的问题,此次运用汇编语言编程,着实让我当头一棒,汇编语言的编程能力还停留在理论阶段。在此次编程中给了我们很大的困难。 第三,在一个课题中,要设计一个成功的电路,必须要有耐心,要有坚持的毅力。在整个电路的设计过程中,重要的是各个单元电路的连接及电路的细节设计上,如在多种方案的选择中,我们仔细比较分析其原理以及可行的原因。这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。完成这次设计后,我在书本理论知识的基础上又有了更深层次的理解。 第四,在本次设计的过程中,我还学会了高效率的查阅资料、运用工具书、利用网络查找资料。我发现,在我们所使用的书籍上有一些知识在实际应用中其实并不是十分理想,各种参数都需要自己去调整,这就要求我们应更加注重实践环节。 最后,还要在此感谢课程设计中实验室的各位成员,他们在整个过程中都给予了我充分的帮助与支持。
|