基于C51单片机的模拟电梯系统设计报告.doc_第1页
基于C51单片机的模拟电梯系统设计报告.doc_第2页
基于C51单片机的模拟电梯系统设计报告.doc_第3页
基于C51单片机的模拟电梯系统设计报告.doc_第4页
基于C51单片机的模拟电梯系统设计报告.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机原理与应用技术课程设计报告基于C51单片机控制的电梯自动控制系统专业班级: _计算机xx_姓名: _xxx_ 时 间: _2012年6月 _指导教师: _xxx _一、设计要求1基本功能:(1)显示:本设计要求实现5层控制,实时显示电梯所在楼层位置。(2)升降控制:采用一台步进电机的正反转来实现电梯的升降。(3)具备不可逆响应的功能:电梯上升途中只响应上升呼叫,下降途中只响应下降呼叫,任何反方向呼叫均无效。2设计内容:(1)基于功能进行初步设计;(2)编写代码,实现功能;(3)完成课程设计报告。二、电梯控制系统原理1系统总体实现原理: 本电梯模拟系统是基于C51单片机、4*4矩阵式键盘、步进电机和LED数码管来实现的。通过4*4矩阵式键盘输入控制信息,C51单片机程序处理后来直接控制步进电机转动、LED数码管显示。电梯运行基本过程是:电梯默认初始停在一楼,LED数码管显示1,当按键按下15中的数时,通过程序进行判断是否升降(即步进电机正转反转)、升降几层(转几圈)。与此同时,LED数码管显示当前所在楼层(15)。电梯在升降过程中,按其他键无效,即只有在电梯停下后,才可以进行下一轮的升降。另外,站在电梯外边的人可以通过按上下键(一层只有上键,五层只有下键)来控制电梯到人所在楼层,例如,你站在3层,你按了上键,电梯不论在15层的哪一层都会先升降到3层,然后你进电梯,向前面所说的进行控制电梯升降。 图1 设计电路总框图图2 单片机最小系统电路2各组成部分原理:(1)信号输入电路现以呼叫信号的输入为例,来说明信号输入及单片机识别原理。如图3所示,采用P0口外接上拉电阻的并行输入形式,来输入外呼叫信号,本电路采用44矩阵键盘,列扫描法识别键值的原理,具体原理如下:a) 判断键盘中有无键按下:将全部行线P0.0-P0.3置低电平,列线P0.4-P0.7置高电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列线均为高电平,则键盘中无键按下。 b) 判断闭合键所在的位置:在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将列线置0,此时再将行线依次置1,看行线是否被拉为低电平。若该行被拉为低电平,则该列线与置为高电平的行线交叉处的按键就是闭合的按键。SOO-S05为一到六楼的电梯内部呼叫请求按键,S08-S15为电梯外部请求按键。图3 内外请求呼叫电路(2)信号模拟输出电路在实际中,厢外五个显示和厢内一个共六个数码管显示厢体位置楼层数,由于显示的数据是一致的,所以本设计中只用一个LED数码管显示代替。由于C51的串行口RXD和TXD为一个全双工串行通信口,工作在方式0下可作同步移位寄存器,其数据由RXD(P3.0)串行输出或输入,而同步移位时钟由TXD(P3.1)端串行输出。具体电路如下图5所示:图4 数码显示楼层电路三、系统软件设计图5 软件流程图全部代码:org 0000hajmp main0org 0030h;初始化电梯为第一层,r3记录当前所在楼层main0:mov r3,#01h acall judgemain:mov p1,#11110000B;矩阵键盘所有列置1comp:;实时查询按键mov r1,p1CJNE r1,#0f0h,tab1ajmp comptab1:第一列cjne r1,#0e0h,tab2c11:;s00键mov p1,#11100001b;第一行置1mov r2,p1;若第一行仍为0,则按键为第一行第一列即s00键cjne r2,#11100000b,c12 acall l11ajmp mainc12:;s04键mov p1,#11100010b;第二行置1mov r2,p1cjne r2,#11100000b,c13;若第二行仍为0,则按键为第二行第一列即s04键acall l12ajmp mainc13:;s08键mov p1,#11100100b;第三行置1mov r2,p1cjne r2,#11100000b,c14;若第三行仍为0,则按键为第三行第一列即s08键acall l13ajmp mainc14:;s12键mov p1,#11101000b;第四行置1mov r2,p1cjne r2,#11100000b,main;若第四行仍为0,则按键为第四行第一列即s12键acall l14ajmp maintab2:;第二列cjne r1,#0d0h,tab3c21:;s01键mov p1,#11010001bmov r2,p1cjne r2,#11010000b,c22acall l21ajmp mainc22: ;s05键mov p1,#11010010bmov r2,p1cjne r2,#11010000b,c23acall l22ajmp mainc23: ;s09键mov p1,#11010100bmov r2,p1cjne r2,#11010000b,c24acall l23ajmp mainc24: ;s13键mov p1,#11011000bmov r2,p1cjne r2,#11010000b,mainacall l24ajmp maintab3:;第三列cjne r1,#0b0h,tab4c31: ;s02键mov p1,#10110001bmov r2,p1cjne r2,#10110000b,c32acall l31ajmp mainc32: ;s06键mov p1,#10110010bmov r2,p1cjne r2,#10110000b,c33acall l32ajmp mainc33: ;s10键mov p1,#10110100bmov r2,p1cjne r2,#10110000b,c34acall l33ajmp mainc34: ;s14键mov p1,#10111000bmov r2,p1cjne r2,#10110000b,retc34acall l34retc34:ajmp maintab4:;第四列c41: ;s03键mov p1,#01110001bmov r2,p1cjne r2,#01110000b,c42acall l41ajmp mainc42: ;s07键mov p1,#01110010bmov r2,p1cjne r2,#01110000b,c43acall l42ajmp mainc43: ;s11键mov p1,#01110100bmov r2,p1cjne r2,#01110000b,c44acall l43ajmp mainc44: ;s15键mov p1,#01111000bmov r2,p1cjne r2,#01110000b,retc44acall l44retc44:ajmp mainl11: ;按键s00时的处理clr c;清进位位mov a,#01hsubb a,r3;按键与当前楼层做差jnc lx1;进位位为0,跳到正转acall fz;进位位为1,说明有借位,调用反转ajmp 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 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 zzret9: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:acall 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 delayretl44: ;按键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.2setb 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 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 returnj2: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,bret

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论