《单片机课程设计说明书样本.doc》由会员分享,可在线阅读,更多相关《单片机课程设计说明书样本.doc(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机课程设计说明书基于单片机的电梯显示屏控制系统设计专业电气工程及其自动化学生姓名苏晨晨班级B电气072学号指导教师张兰红完成日期2012年6月25日目 录1.概 述11.1 课题研究背景与意义11.2 课题设计内容12 系统设计22.1 设计方案论证22.2 系统硬件设计22.2.1 控制模块22.2.2 按键模块52.2.3 LED显示模块62.2.4 硬件电路中器件选择72.3 软件设计112.3.1 主程序模块112.3.2 定时器中断程序113. 系统调试123.1 硬件调试123.1.1 静态检查123.1.2 通电检查123.2软件调试及软硬件联调123.2.1仿真过程123.
2、2.2脱机调试153.2.3 实验结果164. 结束语17附录1:基于单片机的电梯显示屏控制系统设计图纸20附录1.1:基于单片机的电梯显示屏控制系统原理图20附录1.2:基于单片机的电梯显示屏控制系统PCB图21附录2:基于单片机的电梯显示屏控制系统元器件目录表22附录3:基于单片机的电梯显示屏控制系统程序清单23基于单片机的电梯显示屏控制系统设计1.概 述1.1 课题研究背景与意义电梯给人们的生活带来了便利,也为我国现代化建设的加速发展提供了强大的保障。电梯是高层建筑中安全、可靠、垂直上下的运载工具,对改善劳动条件、减轻劳动强度起到了很大的作用。电梯的应用范围很广,可用于宾馆、饭店、办公大
3、楼、商场、娱乐场所、仓库以及居民住宅大楼等。传统的电梯运行逻辑控制系统采用的是继电器逻辑控制线路。采用这种控制线路,存在易出故障、维护不便、运行寿命较短、占用空间大等缺点。目前,由可编程控制器(PLC)或微机组成的电梯运行逻辑控制系统,正快速发展着。可编程控制器,是微机技术与继电器常规控制技术相结合的产物,是在顺序控制器和微机控制器的基础上发展起来的新型控制器,是一种以微处理器为核心用作数字控制的专用计算机,它有良好的抗干扰性能,适应很多工业控制现场的恶劣环境,所以现在的电梯控制系统主要还是由可编程控制器控制。但是由于PLC的针对性较强,每一台PLC都是根据一个设备而设计的,所以价格比较昂贵。
4、而单片机的价格相当便宜,如果在抗干扰功能上有所提高的话完全可以代替PLC实现对工控设备的控制。当然单片机并不像PLC那么有针对性,所以由单片机设计的控制系统可以随着设备的更新而不断修改完善,更完美的实现设备的升级。在科技的不断发展下,单片机控制系统很快可以解决抗扰性,成为方便有效的电梯控制系统。由于电梯智能系统比较复杂,本设计只选择了电梯显示屏控制系统进行了设计。1.2 课题设计内容本课题的主要任务是设计并制作一个电梯显示屏控制系统,即根据每个楼层不同顾客的按键要求,让电梯做出合理的判断,正确高效的指导电梯完成各项载客任务。所设计的电梯显示屏,可通过按键的选择,显示不同的楼层。 设计电梯显示屏
5、控制系统的硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试,并进行软硬件联调,要求获得调试成功的实物。2 系统设计2.1 设计方案论证根据设计内容,提出了如下两种方案:方案一:采用40脚,片内带8kB Flash ROM 的STC89C52单片机作为控制核心,电梯按钮采用5个独立式按键,采用LED点阵显示器,作为电梯楼层显示,LED采用动态扫描方式,按以上系统构架设计,单片机端口资源刚好满足要求。方案一设计框图如图2-1所示。图2-1 电梯显示屏控制系统结构图方案二:采用STC89C52单片机作为控制器,电梯按钮采用键盘式按键,电梯显示模块采用单块LCD液晶点阵显示器。方案一具有电路简
6、单,设计方便,显示亮度高,耗电较少,可靠性高等特点;方案二设计占用单片机的端口最少,硬件也少,耗电也最少;虽然显示图案也很精美,但由于亮度太暗,晚上还得开背光灯,不够实用。可见方案一优于第二种方案,因此本设计选用方案一:采用LED动态扫描的方案进行设计。2.2 系统硬件设计基于单片机的电梯显示屏系统的电路原理图如2-2所示。系统由LED显示模块,电梯按钮电路,电源模块三部分组成。2.2.1 控制模块控制模块原理图如图2-3所示。主控制器采用STC89C52。STC89C52是一种带8K字节闪烁可编程可檫除只读存储器的低电压,高性能CMOS 8位的微处理器。在本设计中,P1口用于对电梯按钮的控制
7、,连接输入设备。P3口用于对LED点阵显示器的控制。P0口用于连接锁存器74LS245,以保护单片机的输出端口。控制模块里面,包含了时钟电路以及复位电路两部分。A.时钟电路图2-2 基于单片机的电梯显示屏控制系统电路原理图图2-3 控制模块原理图STC89C52内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。时钟可以由内部方式产生或外部方式产生。内部方式的时钟电路如图2-4(a) 所示,在XTAL1和XTAL2引脚上外接定时元件,内部振荡器就产生自激振荡。定时元件通常采用石英晶体和电容组成的并联谐振回路。晶体振荡频率可以在1.212MHz之
8、间选择,电容值在530pF之间选择,电容值的大小可对频率起微调的作用。外部方式的时钟电路如图2-4(b)所示,XTAL2接地,XTAL1接外部振荡器。对外部振荡信号无特殊要求,只要求保证脉冲宽度,一般采用频率低于12MHz的方波信号。(a)内部方式时钟电路 (b)外部方式时钟电路图2-4 时钟电路B复位及复位电路a.复位操作复位是单片机的初始化操作。其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键重新启动。除PC之外,复位操作还对其他一些寄存器有影响,它们的复位状
9、态如表2-1所示。b.复位信号及其产生RST引脚是复位信号的输入端。复位信号是高电平有效,其有效时间应持续24个振荡周期(即二个机器周期)以上。若使用颇率为6MHz的晶振,则复位信号持续时间应超过4us才能完成复位操作。产生复位信号的电路逻辑如图2-5所示:整个复位电路包括芯片内、外两部分。外部电路产生的复位信号(RST)送至施密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对施密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。复位操作有上电自动复位相按键手动复位两种方式。上电自动复位是通过外部复位电路的电容充电来实现的。这样,只要电源Vcc的上升时间不超过1ms,就可以实
10、现自动上电复位,即接通电源就成了系统的复位初始化。表2-1 一些寄存器的复位状态寄存器复位状态寄存器复位状态PC0000HTCON00HACC00HTL000HPSW00HTH000HSP07HTL100HDPTR0000HTH100HP0-P3FFHSCON00HIPXXBSBUF不定IE0XBPCON0XXX0000BTMOD00H2-5复位信号的电路逻辑图按键手动复位有电平方式和脉冲方式两种。其中,按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的;而按键脉冲复位则是利用RC微分电路产生的正脉冲来实现的。2.2.2 按键模块电梯按钮用按键模块来模拟,按键用独立式按键表示。如图2-6
11、所示。图2-6 电梯按钮模块在没有按键按下时,P1口输出的是高电平。当某一层有键按下时,相应的端口引脚变为低电平。2.2.3 LED显示模块图2-7 LED输出显示模块显示模块采用8*8点阵式LED,显示模块电路如图2-7所示,LED点阵行接单片机P3口,列接锁存器74LS245。因为单片机端口驱动功能小,不足以驱动LED显示器,所以,LED行通过74LS245和单片机相连。2.2.4 硬件电路中器件选择A. STC89C52单片机STC89系列单片机是MCS-51系列单片机的派生产品。它们在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容,DIP40封装系列与8051为pin-to
12、-pin兼容。STC89系列单片机高速(最高时钟频率90MHz),低功耗,在系统/在应用可编程(ISP,IAP),不占用户资源。 本设计采用STC89C52,它提供的功能标准如表2-2.表2-2 STC89C52功能标准兼容MCS51指令系统8K可反复擦写Flash ROM32个双向I/O口256x8bit内部RAM3个16位可编程定时/计数器中断时钟频率0-24MHz2个串行中断可编程UART串行通道2个外部中断源共6个中断源2个读写中断口线3级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能STC89C52引脚图如图2-8所示。2-8 STC89C52引脚a. 主电源引脚(2根)VCC(P
13、in40):电源输入,接5V电源GND(Pin20):接地线b.外接晶振引脚(2根)XTAL1(Pin19):片内振荡电路的输入端XTAL2(Pin20):片内振荡电路的输出端c.控制引脚(4根)RST/VPP(Pin9):复位引脚,引脚上出现2个机器周期的高电平将使单片机复位。ALE/PROG(Pin30):地址锁存允许信号PSEN(Pin29):外部存储器读选通信号EA/VPP(Pin31):程序存储器的内外部选通,接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。d.可编程输入/输出引脚(32根)STC89C52单片机有4组8位的可编程I/O口,分别位P0、P1、P2
14、、P3口,每个口有8位(8根引脚),共32根。P0口(Pin39Pin32):8位双向I/O口线,名称为P0.0P0.7P1口(Pin1Pin8):8位准双向I/O口线,名称为P1.0P1.7 P2口(Pin21Pin28):8位准双向I/O口线,名称为P2.0P2.7 P3口(Pin10Pin17):8位准双向I/O口线,名称为P3.0P3.7B.74LS245图2-974LS24574LS245是常用的芯片,用来驱动LED或者其他的设备,它是8路双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当8051单片机的P0口总线负载达到或超过P0口最大
15、负载能力时,必须接入74LS245等总线驱动器。 当端为低电平时,DIR=“0”,信号由B向A传输(接收); 当DIR=“1”时,信号由A向B传输(发送);当为高电平时,A、B均为高组态。C.LED点阵显示屏是由发光二极管行列组成的LED点阵模块组成显示屏体。本设计中选择8*8的点阵是由64个发光二极管按规律组成的,且每个发光二极管是放置在行线和列线的交叉点上。其外形图如图2-10所示。图2-10 LED点阵外观LED点阵的内部结构图如图2-11。图2-11 LED点阵内部结构图2-11所示的发光二极管中,行接高电平,列接低电平,发光二极管导通发光,LED8*8点阵引脚图如图2-12所示。2-
16、12 LED8*8点阵引脚图关于LED点阵:a.LED点阵扫描驱动方案:由LED点阵显示器的内部结构可知,器件宜采用动态扫描驱动方式工作,由于LED管芯大多为高亮度型,因此某行或某列的单体LED驱动电流可选用窄脉冲,但其平均电流应限制在20mA内多数点阵显示器的单体LED的正向压降约在2V左右但大亮点10的点阵显示器单体LED的正向压降约为6V。大屏幕显示系统一般是将由多个LED点阵组成的小模块以搭积木的方式组合而成的,每一个小模块都有自己的独立的控制系统,组合在一起后只要引入一个总控制器控制各模块的命令和数据即可,这种方法既简单而且具有易展、易维修的特点。b.LED点阵显示系统中各模块的显示
17、方式:有静态和动态显示两种。静态显示原理简单、控制方便,但硬件接线复杂,在实际应用中一般采用动态显示方式,动态显示采用扫描的方式工作,由峰值较大的窄脉冲驱动,从上到下逐次不断地对显示屏的各行进行选通,同时又向各列送出表示图形或文字信息的脉冲信号,反复循环以上操作,就可显示各种图形或文字信息。LED点阵显示器单块使用时,既可代替数码管显示数字,也可显示各种中西文字及符号如5 x 7点阵显示器用于显示西文字母58点阵显示器用于显示中西文,8 x 8点阵用于显示中文文字,也可用于图形显示。用多块点阵显示器组合则可构成大屏幕显示器,但这类实用装置常通过微机或单片机控制驱动。c.点阵LED扫描法介绍点阵
18、LED一般采用扫描式显示,实际运用分为三种方式:点扫描;行扫描;列扫描。若使用第一种方式,其扫描频率必须大于1664=1024Hz,周期小于1ms即可。若使用第二和第三种方式,则频率必须大于168=128Hz,周期小于7.8ms即可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。如何判断LED点阵是共阴还是共阳?可以使用5V的电源,首先用正极与1号脚相连,然后用负极与其他相连,若其他灯亮,则共阳。如果不亮,则用负极与1号脚相连,若其他灯亮,则共阴。2.3 软件设计2.3.1 主程序模块系统主程序主要用于变量及其他部件的初始化,如定时器T0的
19、初始化,以便能够准确的进行相应的操作。同时进行相应的功能键判断,从而实现特殊功能。其相应的流程图2-13所示:图2-13 电梯显示屏控制系统主程序流程图2.3.2 定时器中断程序 系统定时器中断程序的相应流程图如2-14所示。在相应的定时器中断程序中,首先读取键值,在定时器重置初始值以后,滚动显示楼层,最后中断返回。图2-14主程序流程图3. 系统调试根据前述第2大节中硬件和软件设计,制作了基于单片机的电梯显示屏控制系统样机实物。对样机的硬件和软件分别进行了调试,最后进行了软件、硬件联调。3.1 硬件调试3.1.1 静态检查根据硬件电路图核对了元器件的型号、极性,安装是否正确,检查硬件电路连线
20、是否与电路原理图一致,检查电路元器件是否都已经连接好,用万用表一一测试。3.1.2 通电检查先调试电源部分,整个电路只需要+5V的电压,用USB线从电脑USB口取电。再用示波器检测单片机的复位和晶振电路是否有复位信号和振荡信号。3.2软件调试及软硬件联调对软件先用仿真器进行了调试。用仿真器运行正常后,再用烧写器将程序烧到STC89C52单片机中,进行了脱机调试。3.2.1仿真过程A建立程序打开keil软件,选择菜单文件| 新建文件出现一个文件名为text1的源程序窗口,如图3-1所示,输入程序。图3-1 建立程序在编译过程中,点击rebuild all target files ,如果有错可以
21、在信息窗口中显示出来,双击错误信息,可以在源程序中定位所在行。纠正错误后,再次编译直到没有错误。在编译之前,软件会自动将项目和程序存盘。在编译没有错误后,就可调试程序了。图3-2 检查无错B使用proteus仿真电路如图3-3所示图3-3 proteus原理图Cproteus与keil联调双击proteus图中单片机。图3-4 载入程序将keil软件中所编程序载入。单击运行按钮,结果如图3-5。图3-5 proteus仿真3.2.2脱机调试 用Proteus仿真成功后,将附录3的程序烧写到STC89C52中去,通电后发现系统都没有任何现象,不能工作,只有电源灯输出正常,经过长时间的检查,把问题
22、锁定在LED显示部分,用万用表测量,找到了问题的原因,是将LED点阵内部的二极管阴阳极搞错,导致高低电平接反,也就不会出现任何的现象,重新对管脚布线,电路更改之后系统运行一切正常,至此调试工作全部完成。3.2.3 实验结果图3-6 硬件系统实验结果按1、2、3、4、5键,显示屏上可以显示相应的数字。图3-6是按下按4键以后的显示结果。4. 结束语本次设计的电梯智能控制系统已能演示。可进行楼层显示,楼层申请及扩展功能,如直达键的设置,急停键的设置,停电检修键的设置。但是,电梯还有很多的扩展的空间并未实现,比如电梯自动语音报站系统的设计,楼层监控系统,节能设计以及其它更多的服务。通过本次设计,本人
23、的知识领域得到进一步扩展,专业技能得到进一步提高,同时提高了分析和解决实际问题的综合能力。另外,也培养了自己严肃认真的科学态度和严谨求实的作风。由于本人水平有限,本次设计还存在一些不足之处,请评阅与答辩的各位老师批评指正。参考文献1 张毅刚. 单片机原理及应用M.北京:高等教育出版社,2008 2 郭天祥 新概念51单片机C语言教程入门、提高、开发拓展全攻略M 北京:电子工业出版社 20103 彭伟 单片机C语言程序设计实训100例基于8051+Proteus仿真M 北京:电子工业出版社 2010.64 张大明. 单片机控制实训指导及综合应用实例M.北京:清华大学出版社, 20045 张齐,朱
24、宁西. 单片机应用系统设计技术基于C51的Proteus仿真 M.北京:化学工业出版社,2004.6 沈光斌,刘冬,姚志成.单片机系统实用抗干扰设计.M.北京:人民邮电出版社,20047 冯育长 .单片机系统设计与实例分析.M.西安:西安电子科技大学出版社,2007 8 晁阳. 单片机MCS-51原理及应用开发教程M.北京:清华大学出版社,2009.9 黄惟公, 邓成中, 王燕. 单片机原理与应用技术M. 西安:西安电子科技大学出版社,200910 张萌, 和湘, 姜斌. 单片机应用系统开发综合实例M. 北京:清华大学出版社,2009附 录附录1:基于单片机的电梯显示屏控制系统的设计图纸附录2
25、:基于单片机的电梯显示屏控制系统的元器件目录表附录3:基于单片机的电梯显示屏控制系统的程序清单附录1:基于单片机的电梯显示屏控制系统设计图纸附录1.1:基于单片机的电梯显示屏控制系统原理图附录1.2:基于单片机的电梯显示屏控制系统PCB图附录2:基于单片机的电梯显示屏控制系统元器件目录表序号型 号(名称)数量作用1AT89C521单片机274LS2451锁存器310k排阻1上拉电阻48*8LED点阵显示器1显示数字5按钮6复位按钮等622pF瓷片电容2晶振电路用710F电解电容1上电复位812MHz1晶振9二极管1电源指示灯附录3:基于单片机的电梯显示屏控制系统程序清单#include /52
26、系列单片机头文件#include #define uchar unsigned char #define uint unsigned intuchar code Table_OF_Digits=0x00,0x3C,0x66,0x42,0x42,0x66,0x3C,0x00,/00x00,0x08,0x38,0x08,0x08,0x08,0x3E,0x00,/10x00,0x3C,0x04,0x04,0x3C,0x20,0x3C,0x00,/2 0x00,0x3C,0x04,0x3C,0x04,0x04,0x3C,0x00,/3 0x00,0x20,0x28,0x28,0x3C,0x08,0x0
27、8,0x00,/4 0x00,0x3C,0x20,0x20,0x3C,0x04,0x3C,0x00,/5 0x00,0x20,0x20,0x20,0x3C,0x24,0x3C,0x00,/6 0x00,0x3C,0x04,0x04,0x04,0x04,0x04,0x00/7 ;uint r = 0;char offset = 0;uchar Current_Level = 1,Dest_Level = 1,x = 0,t = 0;/-/主程序/-void main() P3 = 0x80; Current_Level = 1; /从1开始显示 Dest_Level = 1; /T0工作方式 T
28、MOD = 0x01; TH0 = -4000/256; /定时器中断时间 TL0 = -4000%256; TR0 = 1; IE = 0x82; while(1);/-/ T0 中断/-void LED_Screen_Display() interrupt 1uchar i ;/在停止滚动时,如果有按键按下,则判断目标楼层if (P1 !=0xFF & Current_Level=Dest_Level) if (P1 = 0xFE) Dest_Level = 5; if (P1 = 0xFD) Dest_Level = 4; if (P1 = 0xFB) Dest_Level = 3; i
29、f (P1 = 0xF7) Dest_Level = 2; if (P1 = 0xEF) Dest_Level = 1; TH0 = -4000/256; TL0 = -4000%256; P3 = _crol_(P3 , 1); /列码 i = Current_Level * 8 + r + offset; P0 = Table_OF_Digitsi; /行码(用转换共阴共阳编码) /上升显示 if (Current_Level Dest_Level) if( +r = 8) /每个数字有8字节 r = 0; if (+x = 4) /每完成x次刷新后前偏 x = 0; if (-offset = -8) offset = 0; Current_Level-; /停止滚动,保持稳定的刷新显示 else if( +r = 8) r = 0;