《基于C51单片机的模拟电梯系统设计报告(共10页).doc》由会员分享,可在线阅读,更多相关《基于C51单片机的模拟电梯系统设计报告(共10页).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上单片机原理与应用技术课程设计报告基于C51单片机控制的电梯自动控制系统专业班级: _计算机xx_姓名: _xxx_ 时 间: _2012年6月 _指导教师: _xxx _一、设计要求1基本功能:(1)显示:本设计要求实现5层控制,实时显示电梯所在楼层位置。(2)升降控制:采用一台步进电机的正反转来实现电梯的升降。(3)具备不可逆响应的功能:电梯上升途中只响应上升呼叫,下降途中只响应下降呼叫,任何反方向呼叫均无效。2设计内容:(1)基于功能进行初步设计;(2)编写代码,实现功能;(3)完成课程设计报告。二、电梯控制系统原理1系统总体实现原理: 本电梯模拟系统是基于C51
2、单片机、4*4矩阵式键盘、步进电机和LED数码管来实现的。通过4*4矩阵式键盘输入控制信息,C51单片机程序处理后来直接控制步进电机转动、LED数码管显示。电梯运行基本过程是:电梯默认初始停在一楼,LED数码管显示1,当按键按下15中的数时,通过程序进行判断是否升降(即步进电机正转反转)、升降几层(转几圈)。与此同时,LED数码管显示当前所在楼层(15)。电梯在升降过程中,按其他键无效,即只有在电梯停下后,才可以进行下一轮的升降。另外,站在电梯外边的人可以通过按上下键(一层只有上键,五层只有下键)来控制电梯到人所在楼层,例如,你站在3层,你按了上键,电梯不论在15层的哪一层都会先升降到3层,然
3、后你进电梯,向前面所说的进行控制电梯升降。 图1 设计电路总框图图2 单片机最小系统电路2各组成部分原理:(1)信号输入电路现以呼叫信号的输入为例,来说明信号输入及单片机识别原理。如图3所示,采用P0口外接上拉电阻的并行输入形式,来输入外呼叫信号,本电路采用44矩阵键盘,列扫描法识别键值的原理,具体原理如下:a) 判断键盘中有无键按下:将全部行线P0.0-P0.3置低电平,列线P0.4-P0.7置高电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。 b) 判断闭合键所在的位置:
4、在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将列线置0,此时再将行线依次置1,看行线是否被拉为低电平。若该行被拉为低电平,则该列线与置为高电平的行线交叉处的按键就是闭合的按键。SOO-S05为一到六楼的电梯内部呼叫请求按键,S08-S15为电梯外部请求按键。图3 内外请求呼叫电路(2)信号模拟输出电路在实际中,厢外五个显示和厢内一个共六个数码管显示厢体位置楼层数,由于显示的数据是一致的,所以本设计中只用一个LED数码管显示代替。由于C51的串行口RXD和TXD为一个全双工串行通信口,工作在方式0下可作同步移位寄存器,其数据由RXD(P3.0)串行输出或输入,而同步移位时钟由T
5、XD(P3.1)端串行输出。具体电路如下图5所示:图4 数码显示楼层电路三、系统软件设计图5 软件流程图专心-专注-专业全部代码:org 0000hajmp main0org 0030h;初始化电梯为第一层,r3记录当前所在楼层main0:mov r3,#01h acall judgemain:mov p1,#B;矩阵键盘所有列置1comp:;实时查询按键mov r1,p1CJNE r1,#0f0h,tab1ajmp comptab1:第一列cjne r1,#0e0h,tab2c11:;s00键mov p1,#b;第一行置1mov r2,p1;若第一行仍为0,则按键为第一行第一列即s00键cj
6、ne r2,#b,c12 acall l11ajmp mainc12:;s04键mov p1,#b;第二行置1mov r2,p1cjne r2,#b,c13;若第二行仍为0,则按键为第二行第一列即s04键acall l12ajmp mainc13:;s08键mov p1,#b;第三行置1mov r2,p1cjne r2,#b,c14;若第三行仍为0,则按键为第三行第一列即s08键acall l13ajmp mainc14:;s12键mov p1,#b;第四行置1mov r2,p1cjne r2,#b,main;若第四行仍为0,则按键为第四行第一列即s12键acall l14ajmp maint
7、ab2:;第二列cjne r1,#0d0h,tab3c21:;s01键mov p1,#bmov r2,p1cjne r2,#b,c22acall l21ajmp mainc22: ;s05键mov p1,#bmov r2,p1cjne r2,#b,c23acall l22ajmp mainc23: ;s09键mov p1,#bmov r2,p1cjne r2,#b,c24acall l23ajmp mainc24: ;s13键mov p1,#bmov r2,p1cjne r2,#b,mainacall l24ajmp maintab3:;第三列cjne r1,#0b0h,tab4c31: ;s
8、02键mov p1,#bmov r2,p1cjne r2,#b,c32acall l31ajmp mainc32: ;s06键mov p1,#bmov r2,p1cjne r2,#b,c33acall l32ajmp mainc33: ;s10键mov p1,#bmov r2,p1cjne r2,#b,c34acall l33ajmp mainc34: ;s14键mov p1,#bmov r2,p1cjne r2,#b,retc34acall l34retc34:ajmp maintab4:;第四列c41: ;s03键mov p1,#bmov r2,p1cjne r2,#b,c42acall
9、l41ajmp mainc42: ;s07键mov p1,#bmov r2,p1cjne r2,#b,c43acall l42ajmp mainc43: ;s11键mov p1,#bmov r2,p1cjne r2,#b,c44acall l43ajmp mainc44: ;s15键mov p1,#bmov r2,p1cjne r2,#b,retc44acall l44retc44:ajmp mainl11: ;按键s00时的处理clr c;清进位位mov a,#01hsubb a,r3;按键与当前楼层做差jnc lx1;进位位为0,跳到正转acall fz;进位位为1,说明有借位,调用反转a
10、jmp ret1;反转完调用延迟lx1:acall zz;调用正转ret1:acall delay;调用延时ret;返回l21: ;按键s01时的处理clr cmov a,#02hsubb a,r3jnc lx2acall fzajmp ret2lx2:acall zzret2:acall delayretl31: ;按键s02时的处理clr cmov a,#03hsubb a,r3jnc lx3acall fzajmp ret3lx3:acall zzret3:acall delayretl41: ;按键s03时的处理clr cmov a,#04hsubb a,r3jnc lx4acall
11、fzajmp ret4lx4:acall zzret4:acall delayretl12: ;按键s04时的处理clr cmov a,#05hsubb a,r3jnc lx5acall fzajmp ret5lx5:acall zzret5:acall delayretl22: ;按键s05时的处理acall delayretl32: ;按键s06时的处理acall delayretl42: ;按键s07时的处理acall delayretl13: ;按键s08时的处理clr cmov a,#02hsubb a,r3jnc lx9acall fzajmp ret9lx9:acall zzre
12、t9:acall delayretl23: ;按键s09时的处理clr cmov a,#03hsubb a,r3jnc lx10acall fzajmp ret10lx10:acall zzret10:acall delayretl33: ;按键s10时的处理clr cmov a,#04hsubb a,r3jnc lx11acall fzajmp ret11lx11:acall zzret11:acall delayretl43: ;按键s11时的处理clr cmov a,#01hsubb a,r3jnc lx12acall fzajmp ret12lx12:acall zzret12:aca
13、ll delayretl14: ;按键s12时的处理clr cmov a,#02hsubb a,r3jnc lx13acall fzajmp ret13lx13:acall zzret13:acall delayretl24: ;按键s13时的处理clr cmov a,#03hsubb a,r3jnc lx14acall fzajmp ret14lx14:acall zzret14:acall delayretl34: ;按键s14时的处理clr cmov a,#04hsubb a,r3jnc lx15acall fzajmp ret15lx15:acall zzret15:acall del
14、ayretl44: ;按键s15时的处理clr cmov a,#05hsubb a,r3jnc lx16acall fzajmp ret16lx16:acall zzret16:acall delayretzz:jz z2;a-r2的差值如果为0则直接返回,不转z0:mov r0,#0ch;一圈z1:clr p3.2setb p3.3setb p3.4setb p3.5acall delaysetb p3.2clr p3.3setb p3.4setb p3.5acall delaysetb p3.2setb p3.3clr p3.4setb p3.5acall delaysetb p3.2se
15、tb p3.3setb p3.4clr p3.5acall delaydjnz r0,z1dec a;每转一圈,a-inc r3;每转一圈,r3+acall judgejnz z0;a不为0,则继续转,否则返回z2:retfz:clr c;清进位位mov r4,amov a,#00hsubb a,r4;用0减补码求出正的差值clr cfz0:mov r0,#0chf1:setb p3.2setb p3.3setb p3.4clr p3.5acall delaysetb p3.2setb p3.3clr p3.4setb p3.5acall delaysetb p3.2clr p3.3setb
16、p3.4setb p3.5acall delayclr p3.2setb p3.3setb p3.4setb p3.5acall delaydjnz r0,f1dec a;转数自减dec r3;楼层自减acall judge;LED显示当前楼层jnz fz0;转数没到0继续转,否则返回retjudge:;根据当前所在楼层(r3的值),来控制LED显示 cjne r3,#01h,j1mov scon,#00h;mov b,#09fhmov sbuf,bajmp returnj1:cjne r3,#02h,j2mov scon,#00hmov b,#025hmov sbuf,bajmp retur
17、nj2:cjne r3,#03h,j3mov scon,#00hmov b,#0dhmov sbuf,bajmp returnj3:cjne r3,#04h,j4mov scon,#00hmov b,#099hmov sbuf,bajmp returnj4:cjne r3,#05h,returnmov scon,#00hmov b,#049hmov sbuf,breturn:;返回retdelay:mov r7,#060h;延时round1:mov r6,#0ffhround2:djnz r6,round2djnz r7,round1retEND四、结束语在这次实习中,我们对电路所实现的功能通过查找资料分析,首先根据所实现的功能画出了流程图,然后根据流程图来进行部分小程序及主程序的设计,最后进行拼合,通过设计程序,提高了逻辑的思维能力和动手能力。在调试的过程中,也学到了许多以前在课本上所未曾学到的知识。参考文献1 谢维成,杨家国.单片机原理与应用及C51程序设计(第2版)M.北京:清华大学出版社,2009.