找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2027|回复: 0
收起左侧

基于52单片机的电梯控制设计论文

[复制链接]
ID:362682 发表于 2018-7-1 20:31 | 显示全部楼层 |阅读模式
基于单片机的电梯显示屏控制系统设计
摘  要:对采用单片机的电梯显示屏控制系统进行了设计。所设计的电梯显示屏系统,可通过按键的选择,显示不同的楼层。
单片机即单片微型计算机(Single-Chip Microcomputer),是集CPU ,RAM ,ROM ,定时,计数和多种接口于一体的微控制器。其中52单片机是各种单片机中最为典型和最有代表性的一种,广泛应用于各个领域.电梯是集机械原理应用、电气控制技术、微处理器技术、系统工程学等多学科和技术分支于一体的机电设备,它是建筑中的永久垂直交通工具。
本设计是利用STC89C52单片机控制的多层电梯模拟控制系统,主要包括硬件系统的设计、软件系统的设计及模拟电路的仿真调试。本设计主要是利用中断电路控制电梯的响应和电机的驱动,是专门为楼层快速通行控制设计的智能系统。此外,利用单片机控制电梯有成本低、通用性强、灵活性大及易于实现复杂控制等优点。
Basedon SCM elevator control system of design
Abstract: It is designed on the base of the SCM elevator displaycontrol system. The elevator display system designed could through the buttonschoice, show different floor.
Microcontroller thatmicrocomputer (Single-Chip Microcomputer) gathering CPU, RAM, ROM, the timing,number and variety of interface integrated microcontrollers. 51 various SCM SCMis the most typical and most representative of a widely used in various fields.Elevator is the application of the principle set machinery, electrical controltechnology, microprocessor technology, systems engineering and other technicaldisciplines and branches of the integration of mechanical and electrical equipment,which is building a permanent vertical transport.
In this paper, the design isabout the use of multi-storey elevator controlled by STC89C52 MCU simulationcontrol system,which includes the design of hardware system, the design ofsoftware system and the circuit simulation test.This design mainly uses theinterrupt circuit to control elevator response and motor driver, whichspecially designed for quick acess intelligent system.In addition to this, there are advantages of low cost,strong commonality,flexibilityand easily to realize complex control and so on to the single-chipmicrocomputer control of elevator.

目    录
1.概    述---------------------------------------------------------------------------------------5
1.1 课题研究背景与意义---------------------------------------------------------------------5
1.2 课题设计内容------------------------------------------------------------------------------5
2 系统设计--------------------------------------------------------------------------------------6
2.1 设计方案论证------------------------------------------------------------------------------6
2.2 系统硬件设计------------------------------------------------------------------------------8
2.2.1 主控模块----------------------------------------------------------------------------------9
2.2.2单片机最小系统-------------------------------------------------------------------------11
2.2.3复位电路----------------------------------------------------------------------------------12
2.2.4显示电路----------------------------------------------------------------------------------12
2.2.5按键电路----------------------------------------------------------------------------------13
2.3 软件设计------------------------------------------------------------------------------------13
2.3.1 主程序模块-------------------------------------------------------------------------------13
2.3.2 定时器中断程序-------------------------------------------------------------------------14
3. 系统调试--------------------------------------------------------------------------------------15
3.1 硬件调试     ------------------------------------------------------------------------------------15
3.1.1 静态检查-----------------------------------------------------------------------------------15
3.1.2 通电检查-----------------------------------------------------------------------------------15
3.2软件调试及软硬件联调--------------------------------------------------------------------15
3.2.1仿真调试------------------------------------------------------------------------------------15
3.2.2实物调试-------------------------------------------------------------------------------------16
3.2.3 实验结果------------------------------------------------------------------------------------17
4. 结束语-------------------------------------------------------------------------------------------19
附录1:基于单片机的电梯显示屏控制系统设电路原理图------------------------------23
附录2:基于单片机的电梯显示屏控制系统元器件目录表------------------------------24
附录3:基于单片机的电梯显示屏控制系统程序清单------------------------------------25
基于单片机的电梯显示屏控制系统设计
1.概    述1.1 课题研究背景与意义
随着现代高科技的发展,住房和办公用楼都已经逐渐向高层发展。电梯是高层宾馆、商店、住宅、多层仓库等高层建筑不可缺少的垂直方向的交通运输工具。1889年美国奥梯斯升降机公司推出的世界上第一部以电动机为动力的升降机,同年在纽约市马累特大厦安装成功。随着建筑物规模越来越大,楼层也越来越高,对电梯的调速精度、调速范围等静态和动态特性都提出了更高的要求。由于传统的电梯运行逻辑控制系统采用的是继电器逻辑控制线路。采用这种控制线路,存在易出故障、维护不便、运行寿命较短、占用空间大等缺点。
    目前,由可编程控制器(PLC)或微型计算机组成的电梯运行逻辑控制系统,正以很快的速度发展着。可编程控制器,是微机技术与继电器常规控制技术相结合的产物,是在顺序控制器和微机控制器的基础上发展起来的新型控制器,是一种以微处理器为核心用作数字控制的专用计算机,它有良好的抗干扰性能,适应很多工业控制现场的恶劣环境,所以现在的电梯控制系统主要还是由可编程控制器控制。但是由于PLC的针对性较强,每一台PLC都是根据一个设备而设计的,所以价格较昂贵。而单片机价格相当便宜,如果在抗干扰功能上有所提高的话完全可以代替PLC实现对工控设备的控制。当然单片机并不象PLC那么有针对性,所以由单片机设计的控制系统可以随着设备的更新而不断修改完善,更完美的实现设备的升级。
    电梯控制系统是比较复杂的一个大型系统,在计算机诞生的几十年里,继电器控制系统为电梯控制的发展做了巨大的贡献,但在性能上和PLC还是有本质上的差距。在科技的不断发展下,单片机控制系统很快可以解决抗扰性,成为方便有效的电梯控制系统。
1.2 课题设计内容
本课题内容是设计并制作一个电梯显示屏控制系统,根据每个楼层不同顾客的按键要求,显示不同的楼层,正确高效的指导电梯完成各项载客任务。
设计电梯显示屏控制系统的硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试,并进行软硬件联调,要求获得调试成功的实物。
本电路主要由4大部分组成:键盘模块、单片机最小系统控制电路、显示模块电路、电源模块电路。其中单片机最小系统主要复位电路,电路复位后楼层显示数字1 表示电梯此时在一楼,而电梯楼层位置是由延时电路控制的,延时电路是2秒延时,每层之间通过2秒延时控制即每延时2秒表示电梯走了一层,同时显示相应的上下箭头指示。本设计的延时部分主要是软件控制的。电梯的状态是通过点阵组成的上下箭头和数字显示的。
2 系统设计2.1 设计方案论证
1.单片机的选择
方案一:AT51系列单片机
    采用AT89C52芯片作为系统核心,采用Flash ROM,能以3V的超低压工作;同时比89C51具有更多的存储空间,AT89C52芯片内部存储器为8KB ROM存储空间,同样具有89C51的功能。但烧写程序需要专业工具。
方案二:STC51系列单片机
    用STC89C52芯片作为系统核心,采用闪烁可编程可擦除只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory)的低电压,内部具有8KB ROM存储空间,是51系列单片机内存的两倍,而且还比51单片机多定时计数器和中断,并且比 AT89C52芯片经济,实惠。所以本设计采用STC89C52芯片。
    本设计采用的是STC89C52单片机,STC89C52是一个低电压,高性能CMOS 8位单片机,高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大的STC89C52单片机可为您提供许多较复杂系统控制应用场合。
2.显示模块的选择
方案一:1602液晶模块
1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等显示模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。每位之间有一个点距的间隔每行之间也有间隔起到了字符间距和行间距的作用,正因为如此所以他不能显示图形它的优点是微功耗、体积小、显示内容丰富、超薄轻巧。
方案二:数码管显示
    数码管是一种半导体发光器件,其基本单元是发光二极管。数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管:按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管,共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮,当某一字段的阴极为高电平时,相应字段就不亮。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管,共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮,当某一字段的阳极为低电平时,相应字段就不亮。由于它的价格便宜使用简单在电器特别是家电领域应用极为广泛。
方案三:点阵显示
    点阵是由小LED组成,LED显示屏可以显示变化的数字、文字、图形图像;不仅可以用于室内环境还可以用于室外环境,具有投影仪、电视墙、液晶显示屏无法比拟的优点。LED之所以受到广泛重视而得到迅速发展,是与它本身所具有的优点分不开的。这些优点概括起来是:亮度高、工作电压低、功耗小、小型化、寿命长、耐冲击和性能稳定。LED的发展前景极为广阔,目前正朝着更高亮度、更高耐气候性、更高的发光密度、更高的发光均匀性,可靠性、全色化方向发展。
综上所诉:LCD1602显示不了图形,当电梯升降时显示不了相应的指示;数码管虽简单方便能显示数字,但同样是显示不了图形;只有点阵既能显示数字又能显示图形,适合本设计,固本设计用点阵作为显示模块。
3.按键的选择
方案一:采用矩阵键盘
    因为单片机的I/O口有限,显然,在按键数量过多时,矩阵键盘较之独立式按键键盘要节省很多I/O口线,但必须将行线,列线信号配合起来做适当处理,才能确定闭合键的位置。
方案二:采用独立式键盘
    独立式键盘是直接用I/O口线构成的单元按键开关电路,其特点是每个按键独立占用一根I/O口线,每个按键的工作不会影响其他I/O口线的状态。但是当所需按键数量多时,会占用过多的I/O口。
基于以上分析,此次设计采用方案二独立式按键,因为本次设计中仅使用到6个按键。常用的按键有三种:机械触点式按键、导电橡胶式和柔性按键(又称触摸式键盘)。
    机械触点式按键是利用机械弹性使键复位,手感明显,连线清晰,工艺简单,适合单件制造。但是触点处易侵入灰尘而导致接触不良,体积相对较大。
导电橡胶按键是利用橡胶的弹性来复位,通过压制的方法把面板上所有的按键制成一块,体积小,装配方便,适合批量生产。但是时间长了,橡胶老化而使弹力下降,同时易侵入灰尘。
    柔性按键是近年来迅速发展的一种新型按键,可以分为凸球型和平面型两种。柔性按键最大特点是防尘、防潮、耐蚀,外形美观,装嵌方便。而且外形和面板的布局、色彩、键距可按照整机的要求来设计。
但是由于客观条件与经济能力有限,本系统采用机械触点式按键。
总体框图
2.2 系统硬件设计
基于单片机的电梯显示屏系统的电路原理图如图所示。系统由主控模块、LED显示模块、电梯按钮电路三部分组成。
基于单片机的电梯显示屏控制系统电路原理图
2.2.1 主控模块
本系统采用STC89C52为主控芯片。
STC89C52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52在众多嵌入式控制应用系统中得到广泛应用。
1.主要功能列举
1、拥有灵巧的8位CPU和在系统可编程Flash
2、晶片内部具时钟振荡器(传统最高工作频率可至 12MHz)
3、内部程序存储器(ROM)为 8KB
4、内部数据存储器(RAM)为 256字节
5、32 个可编程I/O 口线
6、8 个中断向量源
7、三个 16 位定时器/计数器
8、三级加密程序存储器
9、全双工UART串行通道
10、低功耗空闲和掉电模式;
11、掉电后中断可唤醒;
12、看门狗定时器;
13、双数据指针;
14、掉电标识符 。
2.各引脚功能
VCC:STC89C52电源正端输入,接+5V。
GND:电源地端。
XTAL1:  单芯片系统时钟的反相放大器输入端。
XTAL2: 系统时钟的反相放大器输出端,一般在设计上只要在 XTAL1 和 XTAL2 上接上一只石英振荡晶体系统就可以动作了,此外可以在两引脚与地之间加入一20PF 的小电容,可以使系统更稳定,避免噪声干扰而死机。
RESET:STC89C52的重置引脚,高电平动作,当要对晶片重置时,只要对此引脚电平提升至高电平并保持两个机器周期以上的时间,AT89S51便能完成系统重置的各项动作,使得内部特殊功能寄存器之内容均被设成已知状态,并且至地址0000H处开始读入程序代码而执行程序。
EA/Vpp:"EA"为英文"External Access"的缩写,表示存取外部程序代码之意,低电平动作,也就是说当此引脚接低电平后,系统会取用外部的程序代码(存于外部EPROM中)来执行程序。因此在8031及8032中,EA引脚必须接低电平,因为其内部无程序存储器空间。如果是使用 8751 内部程序空间时,此引脚要接成高电平。此外,在将程序代码烧录至8751内部EPROM时,可以利用此引脚来输入21V的烧录高压(Vpp)。
ALE/PROG:ALE是英文"AddressLatch Enable"的缩写,表示地址锁存器启用信号。STC89C52可以利用这支引脚来触发外部的8位锁存器(如74LS373),将端口0的地址总线(A0~A7)锁进锁存器中,因为STC89C52是以多工的方式送出地址及数据。平时在程序执行时ALE引脚的输出频率约是系统工作频率的1/6,因此可以用来驱动其他周边晶片的时基输入。此外在烧录8751程序代码时,此引脚会被当成程序规划的特殊功能来使用。
PSEN:此为"Program Store Enable"的缩写,其意为程序储存启用,当8051被设成为读取外部程序代码工作模式时(EA=0),会送出此信号以便取得程序代码,通常这支脚是接到EPROM的OE脚。STC89C52可以利用PSEN及RD引脚分别启用存在外部的RAM与EPROM,使得数据存储器与程序存储器可以合并在一起而共用64K的定址范围。
PORT0(P0.0~P0.7):端口0是一个8位宽的开路汲极(OpenDrain)双向输出入端口,共有8个位,P0.0表示位0,P0.1表示位1,依此类推。其他三个I/O端口(P1、P2、P3)则不具有此电路组态,而是内部有一提升电路,P0在当做I/O用时可以推动8个LS的TTL负载。如果当EA引脚为低电平时(即取用外部程序代码或数据存储器),P0就以多工方式提供地址总线(A0~A7)及数据总线(D0~D7)。设计者必须外加一锁存器将端口0送出的地址栓锁住成为A0~A7,再配合端口2所送出的A8~A15合成一完整的16位地址总线,而定址到64K的外部存储器空间。
PORT2(P2.0~P2.7):端口2是具有内部提升电路的双向I/O端口,每一个引脚可以推动4个LS的TTL负载,若将端口2的输出设为高电平时,此端口便能当成输入端口来使用。P2除了当做一般I/O端口使用外,若是在STC89C52扩充外接程序存储器或数据存储器时,也提供地址总线的高字节A8~A15,这个时候P2便不能当做I/O来使用了。
PORT1(P1.0~P1.7):端口1也是具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个LS TTL负载,同样地若将端口1的输出设为高电平,便是由此端口来输入数据。如果是使用8052或是8032的话,P1.0又当做定时器2的外部脉冲输入脚,而P1.1可以有T2EX功能,可以做外部中断输入的触发脚位。
PORT3(P3.0~P3.7):端口3也具有内部提升电路的双向I/O端口,其输出缓冲器可以推动4个TTL负载,同时还多工具有其他的额外特殊功能,包括串行通信、外部中断控制、计时计数控制及外部数据存储器内容的读取或写入控制等功能。
其引脚分配如下:
P3.0:RXD,串行通信输入。
P3.1:TXD,串行通信输出。
P3.2:INT0,外部中断0输入。
P3.3:INT1,外部中断1输入。
P3.4:T0,计时计数器0输入。
P3.5:T1,计时计数器1输入。
P3.6:WR:外部数据存储器的写入信号。
P3.7:RD,外部数据存储器的读取信号。
RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)
单片机引脚图如下:
单片机引脚图
2.2.2单片机最小系统
单片机加上适当的外围器件和应用程序,构成的应用系统称为最小系统。最小系统包括时钟电路和复位电路。
    时钟电路:
单片机内部具有一个高增益反相放大器,用于构成振荡器。通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,结构图2 中X1、C1、C2。可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,补偿电容通常选择30pF左右的瓷片电容。
时钟电路
2.2.3复位电路:
单片机小系统常采用上电自动复位和手动按键复位两种方式实现系统的复位操作。上电复位要求接通电源后,自动实现复位操作。手动复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。其结构如下图。上电自动复位通过电容C3充电来实现。手动按键复位是通过按键将电阻R1与VCC接通来实现。
复位电路
2.2.4显示电路:
点阵是由64个小灯组成,点阵LED一般采用扫描式显示,实际运用分为三种方式:点扫描、行扫描、列扫描。
若使用第一种方式,其扫描频率必须大于16×64=1024Hz,周期小于1ms即可。若使用第二和第三种方式,则频率必须大于16×8=128Hz,周期小于7.8ms即可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。原理图如下:
点阵电路
点阵与单片机的引脚相连,通过单片机的IO口的高低电平可以控制点阵的显示,与单片机的接口电路如图:
点阵连接电路
2.2.5按键电路
如图所示,按键电路模块包括每层楼的按钮,这些按钮一端与地相接,一端又与单片机IO口相接,外部0中断低电平有效,这样可以实现模拟按键的自如操作。
按键电路
2.3 软件设计
基于单片机的电梯显示屏控制系统程序清单如附录3所示,程序分主程序和定时器中断程序两大部分。
2.3.1 主程序模块
系统主程序主要用于变量及其他部件的初始化,如定时器T0的初始化,以便能够准确的进行相应的操作,同时进行相应的功能键判断,从而实现特殊功能。主程序的流程图所示。
2.3.2 定时器中断程序
定时器中断程序的相应流程图所示。
在定时器中断程序中,首先读取键值,在定时器重置初始值以后,滚动显示楼层,最后中断返回。
电梯显示屏控制系统主程序流程图
定时器中断程序
3.系统调试
根据前述第2大节中硬件和软件设计,制作了基于单片机的电梯显示屏控制系统样机实物。对样机的硬件和软件分别进行了调试,最后进行了软件、硬件联调。
3.1 硬件调试3.1.1 静态检查
根据硬件电路图核对了元器件的型号、极性,安装是否正确,检查硬件电路连线是否与电路原理图一致,检查电路元器件是否都已经连接好,用万用表一一测试。
3.1.2 通电检查
先调试电源部分,整个电路只需要+5V的电压,用USB线从电脑USB口取电。
再用示波器检测单片机的复位和晶振电路是否有复位信号和振荡信号。
3.2软件调试及软硬件联调
对软件先用仿真器进行了调试。用仿真器运行正常后,再用烧写器将程序烧到STC89C52单片机中,进行了脱机调试。
3.2.1仿真调试
A. proteus仿真电路
基于单片机的电梯显示屏控制系统proteus仿真电路如图所示。
基于单片机的电梯显示屏控制系统proteus仿真电路
B.仿真结果
用proteus软件对基于单片机的电梯显示屏控制系统进行了仿真,按楼层按键1~6时显示屏分别显示1~6,按下3楼时的仿真结果如图所示,说明此电梯显示屏系统可以模仿真实的电梯显示系统。
按下3楼按键时的仿真结果
3.2.2实物调试
用Proteus仿真成功后,制作了基于单片机的电梯显示屏控制系统多孔板实物,将附录3的程序烧写到STC89C52中去,通电后发现系统都没有任何现象,不能工作,只有电源灯输出正常,经过长时间的检查,把问题锁定在LED显示部分,用万用表测量,找到了问题的原因,是将LED点阵内部的二极管阴阳极搞错,导致高低电平接反,也就不会出现任何的现象,重新对管脚布线,电路更改之后系统运行一切正常,至此多孔板调试工作完成。
3.2.3 实验结果
1.最小系统点亮一个发光二极管
2.制作了基于单片机的电梯显示屏控制系统多孔板实物,通电后按1、2、3、4、5、6键,显示屏上可以显示相应的数字。下图是写入电梯程序并按下按4层键以后的显示结果

3、通上外接5V电源 按下楼层3如下图所示
            
4. 结束语
本系统就是充分利用了STC89C52芯片的各引脚。来设计实现模拟简单电梯控制系统,系统设计简便、实用性强、操作简单,完成了模拟电梯的基本功能。单片机在接口性能和计算速度等方面均有资源不足的问题,仍然不能适应较复杂的控制算法和故障诊断等要求,但单片机控制电梯有成本低,通用性强,灵活性大及易于实现复杂控制等优点。
    总体来说,该单片机系统设计很好的完成了简单电梯控制系统,但是不论是在硬件还是软件,都可以通过后续的努力加以改进,主要为以下几个方面:1.在硬件上,通过设计更为复杂的外围电路来实现电梯控制的智能化处理,考虑加入控制器来完成电梯的多信息采集处理功能。2.在软件上,目前软件运行的效率不是很高,可以考虑通过对算法的分析,简化程序,提高单片机调试的速度。3.在总体设计上,考虑到更为智能的电梯系统,可以通过调研了解电梯的智能化发展方向,提出更为全面复杂的电梯控制方案及多电梯协同运行策略分析等功能。
参考文献
[1] 张兰红,邹华,刘纯利,等. 单片机原理及应用[M].北京:机械工业出版社,2017.
[2] 楼然苗,胡佳文,李光飞,等. 单片机实验与课程设计指导[M].浙江大学出版社,2013.
[3] 郭天祥. 新概念51单片机C语言教程 ——入门、提高、开发、拓展全攻略[M].北京:电子工业出版社,2010.
[4] 杨欣,张延强,张铠麟.实例解读51单片机完全学习与应用[M].北京:电子工业出版社,2012.
ATMEL AT89S52.Atmel Corporation 2001
[5]  王田苗.嵌入式系统设计与实例开发.北京:清华大学出版社,2005
[6]  ATMEL技术资料,ATMEL官方网站
[7]  张友德.单片微型机原理应用与实验.上海:复旦大学出版社,1996
[8]  万长建.用单片机实现高层电梯运行自动控制.实验技术与管理.2007,5
[9]  Intel. Microcontroller Handbook.1988
[10] 张娅莉.单片机在电梯自动控制中的应用.工业控制计算机.2003,2
[11]   AT89C52DATA SHEEP Philips Semiconductors 1999.dec
[12]  Yang.Y., Yi. J., Woo, Y.Y., and Kim. B.: ‘Optimum design for linearityand efficiencyof microwave Doherty amplifier using a new loadmatching technique’, Microw. J.,2001, 44, (12), pp. 20–36
[13] Vizimuller, P.: ‘RF design guide-systems, circuits, and equations’(ArtechHouse, Boston, MA, 1995)[6]R. Dye, “Visual Object-Orientated Programming,” Dr. DobbsMacintoshJournal, Sept. 1st ( 1991).
致    谢
从开始进入课题到课设的顺利完成,一直都离不开老师、同学给我热情的帮助,在这里请接受我诚挚的谢意!感谢他们在学习和生活上给我的帮助。.
本课题在选题及研究过程中得到吴老师和张老师的悉心指导。吴老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。对吴老师和张老师的感激之情是无法用言语表达的。通过本次课程设计,我获得了更丰富的理论知识,极大地提高了实践能力,并对当前电子领域的研究状况和发展方向有了一定的了解,单片机领域这对我今后进一步学习计算机方面的知识有极大的帮助。在设计中遇到了很多编程问题,最后在老师的辛勤指导和同学的热情帮助下,终于迎刃而解。最后,对给过我帮助的所有同学和各位指导老师由衷的表示感谢!
附    录
附录1:基于单片机的电梯显示屏控制系统的设计图纸
附录2:基于单片机的电梯显示屏控制系统的元器件目录表
附录3:基于单片机的电梯显示屏控制系统的程序清单

附录1:基于单片机的电梯显示屏控制系统设计图纸基于单片机的电梯显示屏控制系统电路原理图
附录2:基于单片机的电梯显示屏控制系统元器件目录表
1、万用板
2、STC 89c52单片机
3、40脚IC座
4、1K排阻
5、8X8小点阵
6、DC电源座
7、自锁开关
8、按键*7
9、10uf电容
10、30pf电容*2
11、10k电阻
12、12m晶振
13、导线若干
14、焊锡若干
15、Usb电源线
附录3:基于单片机的电梯显示屏控制系统程序清单
#include <reg52.h>            //52系列单片机头文件
#define uchar unsigned char             //宏定义
#define uint unsigned int           //宏定义
/******************************************************
                     基础定义
*******************************************************/
uchar m=0,n=0;                     
uchar o,p,d;                     
uchar time=0;                  
/******************************************************
                     数码显示数据定义
*******************************************************/
uchar code taba[]={
0xff,0xef,0xef,0xef,0xab,0xc7,0xef,0xff};              //编码定义箭头
uchar code tab1[]={
0xff,0xef,0xcf,0xef,0xef,0xef,0xef,0xc7};               //编码定义 1
uchar code tab2[]={
0xff,0xc7,0xbb,0xfb,0xf7,0xcf,0xbf,0x83};            //编码定义 2
uchar code tab3[]={
0xff,0xc7,0xbb,0xfb,0xe7,0xfb,0xbb,0xc7};   //编码定义 3
uchar code tab4[]={
0xff,0xf7,0xe7,0xd7,0xb7,0xb7,0x83,0xf7};   //编码定义 4
uchar code tab5[]={
0xff,0x83,0xbf,0x87,0xfb,0xfb,0xbb,0xc7};    //编码定义 5
uchar code tab6[]={
0xff,0xe7,0xdf,0xbf,0x87,0xbb,0xbb,0xc7};   //编码定义 6
/******************************************************
                     延时
*******************************************************/
void delay(uchar n)             //延时子函数
{
       uchari,j;
       for(i=n;i>0;i--)
       {
              for(j=255;j>0;j--);
       }
}
/******************************************************
                    T/C0中断服务程序入口
*******************************************************/
timer0() interrupt 1 using 1         //定时器0工作方式1
{
       TH0= (65536-50000)/256;          //赋初值
       TL0= (65536-50000)%256;          //赋初值
      
       if(o>p)//如果o大于p   楼层在上面
       {
              d=1;  //d置1
       }
       elseif(o<p)  //如果o小于p        楼层在下面
       {
              d=2;  //d等于2
       }
       else         //o=p时              正在楼层
       {
              d=0;  //d=0
       }
       time++;          //计时变量加
       if(time==1)                      //计时变量等于1时
       {
              n=~(1<<(p+1));     //切换显示数字 和箭头
       }
       elseif(time==5)        //time等于5 时
       {
              if(d==0)                 //如果d等于0
              {
                     n=~(1<<(p+1));        //切换显示数字和箭头
              }
              elseif(d==1)           //d等于1时
              {
                     p++;                       //p加
                     n=0xfe;                   //n赋值0xfe
              }
              elseif(d==2)           //如果d等于2
              {
                     p--;                //p减
                     n=0xfd;                   //n赋值0xfd
              }
       }
       elseif(time==20)            //当time加到20时
       {
              time= 0;                 //清零
       }
}
/******************************************************
                     定时器T/C0初始化
*******************************************************/
void com_initialize(void)             //定时器初始化
{
       TMOD= 0x01;//设定定时器0为工作方式1
       TH0= (65536-50000)/256;   //装初值
       TL0= (65536-50000)%256;   //装初值
       EA= 1;         //开总中断
       ET0= 1;         //开定时器0中断
       TR0= 1;         //启动定时器0
}
/******************************************************
                         主函数
*******************************************************/
void main()    //主函数
{
       uchari=0,j=0,k=0;
       uchartmp=0;
       ucharom=0;           //按键释放操作变量,初始化时为0,当有按键按下时,判断键值和om是否相同,不同则执行
       d=0;
       m=0;
       o=1;
       p=1;                      //开机初始化各变量   
       n=0xff;                          //n初始化
       com_initialize();       //调用定时器初始化
       while(1)          //主循环
       {
              for(i=0;i<8;i++)      //循环8次
              {      
                     P1=0xff;
                     P0=0x80>>i;  //循环一次扫描一个列
                     if(++k==50)   //加到50清零
                     {
                            k=0;
                     }
                     m=P1;   //记录按键
                     if(m!= 0xff && d==0 && m!=om) //当按键按下时,并且电梯在当前楼层时,m!=om的作用就是类似按键释放的作用,进入这个if后,就会执行om=m,这样只要按键不松开,就不会重复进入
                     {
                            om=m;      //反向赋值,防止按键重复触发
                            switch(m)              //开关语句
                            {
                                   case0xfb:        //判断是哪一个楼层按下,下同
                                          tmp=1;break;
                                   case0xf7:
                                          tmp=2;break;
                                   case0xef:
                                          tmp=3;break;
                                   case0xdf:
                                          tmp=4;break;
                                   case0xbf:
                                          tmp=5;break;
                                   case0x7f:
                                          tmp=6;break;
                                   default:                   //其他情况
                                          tmp=o;break;   //赋值
                            }
      
                            if(o!=tmp)//有楼层按键按下时,o就不会等于tmp,则执行此if
                            {
                                   p=o;                      //进入后将o赋值给p
                                   o=tmp;                     //将tmp赋值给o
                                   time=0;                   //定时器time清零
                            }
                            n=m;              //只要有按键按下 将m赋值给n
                     }
                     if(n==0xfe)                        //n移到0xfe时,显示向上箭头
                     {
                            if(k==0)  //k为0时,显示一下箭头,其他时间显示楼层数
                                   j=++j%8;         //j加1后取余8再赋值给j
                            P2=taba[7-(i+j)%8];               //显示箭头
                     }
                     elseif(n==0xfd)                     //n移到0xfd时,显示向下箭头
                     {
                            if(k==0)  //k为0时,显示一下箭头,其他时间显示楼层数
                            {
                                   if(j>0)                             //j大于0时
                                          j--;                 //j减
                                   else                        //等于0时
                                          j=7;                 //j赋值7
                            }
                            P2=taba[(i+j)%8];            //显示箭头
                     }
                     elseif(n==0xfb)                      //显示数字1
                     {
                            P2=tab1;
                     }
                     elseif(n==0xf7)                      //显示数字2,下同
                     {
                            P2=tab2;
                     }
                     elseif(n==0xef)
                     {
                            P2=tab3;
                     }
                     elseif(n==0xdf)
                     {
                            P2=tab4;
                     }
                     else if(n==0xbf)
                     {
                            P2=tab5;
                     }
                     elseif(n==0x7f)
                     {
                            P2=tab6;
                     }
                     delay(5);                               //延时
              }
       }
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表