ImageVerifierCode 换一换
格式:DOCX , 页数:50 ,大小:331.77KB ,
资源ID:6041554      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6041554.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的电梯仿真程序课程设计doc.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的电梯仿真程序课程设计doc.docx

1、基于单片机的电梯仿真程序课程设计doc二一四二一五学年 第一学期信息科学与工程学院自动化系课程设计报告书姓 名: 余义 学 号: 201204134019 班 级: 自动化1201班 课程名称: 微机原理与应用课程设计 指导教师: 程磊 (1)前言.1(2)现代电梯概述.3(3)硬件部分设计.6(4)软件部分设计.12(5)电梯运行界面.52(6)设计总结与感悟.56(7)参考文献.57电梯仿真程序一、前言: 本电梯仿真程序采用的是一个基于单片机及其相关外设,编程语言采用汇编与C语言结合的方式,通过矩阵键盘线反选法输入楼层,上、下行等控制信号,经IO口读入,进行相关实时控制,软硬件结合的仿真系

2、统,输出设备包括由CD4511驱动显示楼层的7段数码管,显示实时信息的显示屏LCD12864,由PWM控制显示电梯门开关的舵机,以及由IO口间接控制的驱动电机正反转双桥驱动电路等几个部分组成。可以实现真实电梯中,任意层呼叫,目的层到达按要求顺序到达,开关门,无输入自动回1层等一系列功能,并实时显示当前电梯运行状态,关于真实电梯门控光幕装置,电机自动抱闸平层等部分,由于知识不足,没有足一实现,但会在接下来的专业知识学习过程中不断完善,同时也希望得到程老师的指导。二、现代电梯概述:电梯是一种以电动机为动力的垂直升降机,装有箱状吊舱,用于多层建筑乘人或载运货物。也有台阶式,踏步板装在履带上连续运行,

3、俗称自动电梯。 服务于规定楼层的固定式升降设备。它具有一个轿厢,运行在至少两列垂直的或倾斜角小于15的刚性导轨之间。轿厢尺寸与结构形式便于乘客出入或装卸货物,本次微机课程设计电梯仿真选用的是垂直升降梯。2.1、电梯功能现代电梯主要由曳引机(绞车)、导轨、对重装置、安全装置(如限速器、安全钳和缓冲器等)、信号操纵系统、轿厢与厅门等组成。这些部分分别安装在建筑物的井道和机房中。通常采用钢丝绳摩擦传动,钢丝绳绕过曳引轮,两端分别连接轿厢和平衡重,电动机驱动曳引轮使轿厢升降。电梯要求安全可靠、输送效率高、平层准确和乘坐舒适等。电梯的基本参数主要有额定载重量、可乘人数、额定速度、轿厢外廓尺寸和井道型式等

4、。简单使用方法(紧急情况下面有解决方法)载人电梯都是微机控制的智能化、自动化设备,不需要专门的人员来操作 电梯电梯结构图 电梯内部结构图驾驶,普通乘客只要按下列程序乘坐和操作电梯即可。2.2、运行过程:1、在乘梯楼层电梯入口处,根据自己上行或下行的需要,按上方向或下方向箭头按钮,只要按钮上的灯亮,就说明你的呼叫已被记录,只要等待电梯到来即可。2、电梯到达开门后,先让轿厢内人员走出电梯,然后呼梯者再进入电梯轿厢。进入轿厢后,根据你需要到达的楼层,按下轿厢内操纵盘上相应的数字按钮。同样,只要该按钮灯亮,则说明你的选层已被记录;此时不用进行其他任何操作,只要等电梯到达你的目的层停靠即可。3、电梯行驶

5、到你的目的层后会自动开门,此时按顺序走出电梯即结束了一个乘梯过程。三、硬件部分设计3.1、总电路图:3.2、单片机最小系统:单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统.对51系列单片机来说,最小系统一般应该包括:单片机、晶振电路、复位电路.下面给出一个51单片机的最小系统电路图.3.3、矩阵键盘:在键盘中按键数量较多时,为了减少I/O口的占用,通常将按键排列成矩阵形式。在矩阵式键盘中,每条水平线和垂直线在交叉处不直接连通,而是通过一个按键加以连接。这样,一个端口(如P1口)就可以构成4*4=16个按键,1键盘的工作原理: 按键设置在行、列线交点上,行、列线

6、分别连接到按键开关的 两端。行线通过上拉电阻接到+5V 电源上。无按键按下时,行线处 于高电平的状态, 而当有按键按下时, 行线电平与此行线相连的列 线电平决定。2行列扫描法原理:第一步, 使行线为编程的输入线,列线是输出线,拉低所有的列线, 判断行线的变化,如果有按键按下,按键按下的对应行线被拉低,否则 所有的行线都为高电平。第二步, 在第一步判断有键按下后, 延时 10ms 消除机械抖动,再次读取行值,如果此行线还处于低电平状态则进入下 一步,否则返回第一步重新判断。第三步,开始扫描按键位置,采用逐 行扫描,每间隔 1ms 的时间,分别拉低第一列,第二列,第三列,第四 列,无论拉低哪一列其

7、他三列都为高电平,读取行值找到按键的位置, 分别把行值和列值储存在寄存器里。3.4、CD4511当前楼层显示CD4511 是一片 CMOS BCD-锁存/7 段译码/驱动器,用于驱动共阴极 LED (数码管)显示器的 BCD 码-七段码译码器。它具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。可直接驱动共阴LED数码管。以下是CD4511数码管驱动原理电路图。是CD4511实现LED与单片机的并行接口方法。3.5、LCD12864不带中文字库的128X64 是一种具有4 位/8 位并行、2 线或3 线串行多种接口方式,内部含有国标一级、二级简体 中文字库的点

8、阵图形液晶显示模块;其显示分辨率为12864, 内置8192 个16*16 点汉字,和128 个16*8 点ASCII 字符 集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84 行1616 点 阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶 显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。3.6、电机双桥驱动系统一、H桥驱动电路 图4.12中所示为一个典型的直流电机控制电路。电路得名于“H桥驱动电路”是因为它的形状酷似字母H。4个三极管组

9、成H的4条垂直腿,而电机就是H中的横杠(注意:图4.12及随后的两个图都只是示意图,而不是完整的电路图,其中三极管的驱动电路没有画出来)。如图所示,H桥式电机驱动电路包括4个三极管和一个电机。要使电机运转,必须导通对角线上的一对三极管。根据不同三极管对的导通情况,电流可能会从左至右或从右至左流过电机,从而控制电机的转向。图4.12 H桥驱动电路 要使电机运转,必须使对角线上的一对三极管导通。例如,如图4.13所示,当Q1管和Q4管导通时,电流就从电源正极经Q1从左至右穿过电机,然后再经Q4回到电源负极。按图中电流箭头所示,该流向的电流将驱动电机顺时针转动。当三极管Q1和Q4导通时,电流将从左至

10、右流过电机,从而驱动电机按特定方向转动(电机周围的箭头指示为顺时针方向)。图4.13 H桥电路驱动电机顺时针转动图4.14所示为另一对三极管Q2和Q3导通的情况,电流将从右至左流过电机。当三极管Q2和Q3导通时,电流将从右至左流过电机,从而驱动电机沿另一方向转动(电机周围的箭头表示为逆时针方向)。图4.14 H桥驱动电机逆时针转动二、使能控制和方向逻辑 驱动电机时,保证H桥上两个同侧的三极管不会同时导通非常重要。如果三极管Q1和Q2同时导通,那么电流就会从正极穿过两个三极管直接回到负极。此时,电路中除了三极管外没有其他任何负载,因此电路上的电流就可能达到最大值(该电流仅受电源性能限制),甚至烧

11、坏三极管。基于上述原因,在实际驱动电路中通常要用硬件电路方便地控制三极管的开关。 图4.155 所示就是基于这种考虑的改进电路,它在基本H桥电路的基础上增加了4个与门和2个非门。4个与门同一个“使能”导通信号相接,这样,用这一个信号就能控制整个电路的开关。而2个非门通过提供一种方向输人,可以保证任何时候在H桥的同侧腿上都只有一个三极管能导通。(与本节前面的示意图一样,图4.15所示也不是一个完整的电路图,特别是图中与门和三极管直接连接是不能正常工作的。)图4.15 具有使能控制和方向逻辑的H桥电路 采用以上方法,电机的运转就只需要用三个信号控制:两个方向信号和一个使能信号。如果DIRL信号为0

12、,DIRR信号为1,并且使能信号是1,那么三极管Q1和Q4导通,电流从左至右流经电机(如图4.16所示);如果DIRL信号变为1,而DIRR信号变为0,那么Q2和Q3将导通,电流则反向流过电机。四、软件部分设计:显示提示,开发者、版本信息结束键是否按下 运行至最后目 的楼层键盘扫描继续否4.1、程序框图 否 是 否 否是 是结束待命4.2、C51单片机汇编、C语言混编程序:; 电梯。SRC generated from: 电梯.c; COMPILER INVOKED BY:; C:KeilC51BINC51.EXE 电梯.c BROWSE DEBUG OBJECTEXTEND$NOMOD51N

13、AME 电梯P0 DATA 080HP1 DATA 090HP2 DATA 0A0HP3 DATA 0B0HT0 BIT 0B0H.4AC BIT 0D0H.6T1 BIT 0B0H.5T2 BIT 090H.0EA BIT 0A8H.7IE DATA 0A8Hclock BIT 0B0H.0EXF2 BIT 0C8H.6RD BIT 0B0H.7ES BIT 0A8H.4IP DATA 0B8HRI BIT 098H.0INT0 BIT 0B0H.2CY BIT 0D0H.7TI BIT 098H.1INT1 BIT 0B0H.3RCAP2H DATA 0CBHPS BIT 0B8H.4SP

14、 DATA 081HT2EX BIT 090H.1OV BIT 0D0H.2RCAP2L DATA 0CAHC_T2 BIT 0C8H.1WR BIT 0B0H.6RCLK BIT 0C8H.5TCLK BIT 0C8H.4SBUF DATA 099HPCON DATA 087HSCON DATA 098HTMOD DATA 089HTCON DATA 088HIE0 BIT 088H.1IE1 BIT 088H.3B DATA 0F0HCP_RL2 BIT 0C8H.0ACC DATA 0E0Hservo_door BIT 0B0H.7ET0 BIT 0A8H.1ET1 BIT 0A8H.3

15、TF0 BIT 088H.5ET2 BIT 0A8H.5TF1 BIT 088H.7TF2 BIT 0C8H.7RB8 BIT 098H.2TH0 DATA 08CHEX0 BIT 0A8H.0IT0 BIT 088H.0TH1 DATA 08DHTB8 BIT 098H.3EX1 BIT 0A8H.2IT1 BIT 088H.2TH2 DATA 0CDHP BIT 0D0H.0SM0 BIT 098H.7TL0 DATA 08AHSM1 BIT 098H.6TL1 DATA 08BHSM2 BIT 098H.5TL2 DATA 0CCHPT0 BIT 0B8H.1PT1 BIT 0B8H.3

16、RS0 BIT 0D0H.3PT2 BIT 0B8H.5TR0 BIT 088H.4RS1 BIT 0D0H.4TR1 BIT 088H.6TR2 BIT 0C8H.2PX0 BIT 0B8H.0PX1 BIT 0B8H.2DPH DATA 083HDPL DATA 082HEXEN2 BIT 0C8H.3REN BIT 098H.4T2CON DATA 0C8HRXD BIT 0B0H.0TXD BIT 0B0H.1F0 BIT 0D0H.5PSW DATA 0D0H?PR?_delay?SMARTCAR SEGMENT CODE ?PR?_ABS?SMARTCAR SEGMENT CODE

17、 ?PR?keysort?SMARTCAR SEGMENT CODE ?PR?keycheck?SMARTCAR SEGMENT CODE ?PR?sys_init?SMARTCAR SEGMENT CODE ?PR?_BCD?SMARTCAR SEGMENT CODE ?PR?main?SMARTCAR SEGMENT CODE ?PR?TIME_BASE?SMARTCAR SEGMENT CODE ?C_INITSEG SEGMENT CODE ?BI?SMARTCAR SEGMENT BIT ?DT?SMARTCAR SEGMENT DATA EXTRN CODE (?C_STARTUP

18、) PUBLIC floor_up_2 PUBLIC floor_up_1 PUBLIC rankkey PUBLIC opendoor PUBLIC i PUBLIC up_flag PUBLIC row PUBLIC floor_down_5 PUBLIC floor_down_4 PUBLIC floor_down_3 PUBLIC floor_down_2 PUBLIC pressflag PUBLIC key PUBLIC key_flag PUBLIC stop_flag PUBLIC temp PUBLIC down_flag PUBLIC floor_flag_5 PUBLIC

19、 floor_flag_4 PUBLIC floor_flag_3 PUBLIC floor_flag_2 PUBLIC floor_flag_1 PUBLIC start PUBLIC close_door PUBLIC rank PUBLIC count PUBLIC rowkey PUBLIC floor_up_4 PUBLIC floor_up_3 PUBLIC TIME_BASE PUBLIC main PUBLIC _BCD PUBLIC sys_init PUBLIC keycheck PUBLIC keysort PUBLIC _ABS PUBLIC _delay RSEG ?

20、BI?SMARTCAR floor_up_3: DBIT 1 floor_up_4: DBIT 1 close_door: DBIT 1 start: DBIT 1 floor_flag_1: DBIT 1 floor_flag_2: DBIT 1 floor_flag_3: DBIT 1 floor_flag_4: DBIT 1 floor_flag_5: DBIT 1 down_flag: DBIT 1 stop_flag: DBIT 1 pressflag: DBIT 1 floor_down_2: DBIT 1 floor_down_3: DBIT 1 floor_down_4: DB

21、IT 1 floor_down_5: DBIT 1 up_flag: DBIT 1 opendoor: DBIT 1 floor_up_1: DBIT 1 floor_up_2: DBIT 1 RSEG ?DT?SMARTCAR rowkey: DS 1 count: DS 2 rank: DS 1 temp: DS 1 key_flag: DS 16 key: DS 1 row: DS 1 i: DS 1 rankkey: DS 1 RSEG ?C_INITSEG DB 002H DB count DW 00000H DB 010H DB key_flag DB 000H DB 000H,0

22、00H,000H,000H,000H,000H,000H,000H,000H,000H DB 000H,000H,000H,000H,000H DB 001H DB key DB 000H DB 001H DB i DB 000H DB 0C1H, pressflag + 000H ; bit-init DB 0C1H, up_flag + 000H ; bit-init DB 0C1H, down_flag + 000H ; bit-init DB 0C1H, stop_flag + 000H ; bit-init DB 001H DB rowkey DB 000H DB 001H DB r

23、ankkey DB 000H DB 001H DB temp DB 000H DB 001H DB row DB 000H DB 001H DB rank DB 000H DB 0C1H, floor_flag_1 + 000H ; bit-init DB 0C1H, floor_flag_2 + 000H ; bit-init DB 0C1H, floor_flag_3 + 000H ; bit-init DB 0C1H, floor_flag_4 + 000H ; bit-init DB 0C1H, floor_flag_5 + 000H ; bit-init DB 0C1H, floor

24、_down_5 + 000H ; bit-init DB 0C1H, floor_up_4 + 000H ; bit-init DB 0C1H, floor_down_4 + 000H ; bit-init DB 0C1H, floor_up_3 + 000H ; bit-init DB 0C1H, floor_down_3 + 000H ; bit-init DB 0C1H, floor_up_2 + 000H ; bit-init DB 0C1H, floor_down_2 + 000H ; bit-init DB 0C1H, floor_up_1 + 000H ; bit-init DB

25、 0C1H, opendoor + 000H ; bit-init DB 0C1H, close_door + 000H ; bit-init DB 0C1H, start + 000H ; bit-init; /晶振 12MHz 6T模式,总线频率2MHz 指令0.5us; #pragma src; #include /89C52的头文件; ; #define T0_HIGH 0xff /T0计时器寄存器初值; #define T0_LOW 0x9b /溢出计数80个,定时周期80*0.25us=20us; /为了保证主程序正常运行,定时器计数最好不要小于80个; ; #define key

26、number 16 16个按键标志; #define KEYIO P2 4*4键盘输入; #define output P1 lcd12864数据D0D7; #define nobcd P0 BCD端口输出; ; sbit clock=P30; lcd12864时钟输出端; sbit servo_door=P37; 舵机控制门输出端口; int count=0; ; char key_flagkeynumber=0; 按键标志位; ; char key=0; char i=0; ; bit pressflag=0; bit up_flag=0; bit down_flag=0; 控制信号标志位

27、; bit stop_flag=0; ; ; ; ; ; char rowkey=0; 键盘反选变量设置; char rankkey=0; char temp=0; char row=0; char rank=0; ; bit floor_flag_1=0;、 各楼层标志位; bit floor_flag_2=0; bit floor_flag_3=0; bit floor_flag_4=0; bit floor_flag_5=0; bit floor_down_5=0; bit floor_up_4=0; bit floor_down_4=0; bit floor_up_3=0; bit f

28、loor_down_3=0; bit floor_up_2=0; bit floor_down_2=0; bit floor_up_1=0; bit opendoor=0; bit close_door=0; bit start=0; ; /-; void delay(unsigned int i)/延时函数_delay: USING 0 ; SOURCE LINE # 56;- Variable i?040 assigned to Register R6/R7 -; ; SOURCE LINE # 57; unsigned char j; for(;i0;i-) ; SOURCE LINE # 59?C0001: SETB C MOV A,R7 SUBB A,#00H MOV A,R6 SUBB A,#00H JC ?C0007; for(j=0;j250;j+); ; SOURCE LINE # 60;- Variable j?041 assigned to Register R5 - CLR A MOV R5,A?C0004: INC R5 CJNE R5,#0FAH,?C0004?C0003: MOV A,R7 DEC R7 JNZ ?C0001 D

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1