基于单片机的电梯仿真实验终稿.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 电梯 仿真 实验
- 资源描述:
-
基于单片机的电梯仿真实验 1. 80c51引脚图管脚图及各引脚功能介绍 图1 80c51引角图 Vss(20脚):接地 VCC(40脚): 主电源+5V XTAL1(19脚):接外部晶体的一端。在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,对于HMOS单片机,该端引脚必须接地;对于CHMOS单片机,此引脚作为驱动端。 XTAL2(18脚): 接外部晶体的另一端。在片内它是一个振荡电路反相放大器的输出端,振荡电路的频率是晶体振荡频率。若需采用外部时钟电路,对于HMOS单片机,该引脚输入外部时钟脉冲;对于CHMOS单片机,此引脚应悬浮。 RST(9脚): 单片机刚接上电源时,其内部各寄存器处于随机状态,在该脚输入24个时钟周期宽度以上的高电平将使单片机复位(RESET) PSEN(29脚): 在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。PSEN端同样可驱动8个LSTTL负载。我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。 图2 80C51的内部结构图 ALE/PROG(30脚):在访问片外程序存储器时,此端输出负脉冲作为存储器读选通信号。CPU在向片外存储器取指令期间,PSEN信号在12个时钟周期中两次生效。不过,在访问片外数据存储器时,这两次有效PSEN信号不出现。PSEN端同样可驱动8个LSTTL负载。我们根据PSEN、ALE和XTAL2输出端是否有信号输出,可以判别80C51是否在工作。 EA/VPP(31脚): 当EA端输入高电平时,CPU从片内程序存储器地址0000H单元开始执行程序。当地址超出4KB时,将自动执行片外程序存储器的程序。当EA输入低电平时,CPU仅访问片外程序存储器。在对87C51EPROM编程时,此引脚用于施加编程电压VPP。 输入/输出引脚:(1)P0.0—P0.7 (39脚—32脚)(2)P1.0—P1.7 (1脚—8脚)(3)P2.0—P2.7 (26脚—21脚)(4)P3.0—P3.7 (10脚—17脚) 2. 8255A芯片介绍 Intel 8086/8088 系列的可编程外设接口电路(Programmable Peripheral Interface)简称 PPI,型号为8255(改进型为8255A及8255A-5),具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连接。 8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种; 方式0 :基本的输入输出方式,即无须联络就可以直接进行的 I/O方式。其中A、B、C口的高四位或低四位可分别设置成输入或输出。 方式1 :选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0. 方式2: 双向I/O方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。 图3 8255A引角图 图4 8255A端口选择表 3. 74LS373介绍 内部有八个D 锁存器。373为三态输出的八D 透明锁存器,共有54/74S373和 54/74LS373 两种线路结构型式,其主要电器特性的典型值如下(不同厂家具体值有差别): 型号 tPd PD54S373/74S373 7ns 525mW 54LS373/74LS373 17ns 120mW373的输出端 O0~O7 可直接与总线相连。当三态允许控制端 OE 为低电平时,O0~O7 为正常逻辑状态,可用来驱动负载或总线。当OE为高电平时,O0~O7 呈高阻态,即不驱动总线,也不为总线的负载,但锁存器内部的逻辑操作不受影响。当锁存允许端 LE 为高电平时,O随数据D而变。当 LE 为低电平时,O 被锁存在已建立的数据电平。当 LE 端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善 400mV。 引出端符号: D0~D7 数据输入端 ;OE 三态允许控制端(低电平有效);LE 锁存允许端 ; O0~O7 输出端。 Dn LE OE On H H L H L H L L X L L Q0 X X H 高阻态 其真值表: 4. 数码显示管LED 图5数码显示管LED引脚图 LED显示器是单片机应用系统中常见的输出器件,而在单片机的应用上也是被广泛运用的。如果需要显示的内容只有数码和某些字母,使用LED数码管是一种较好的选择。LED数码管显示清晰、成本低廉、配置灵活,与单片机接口简单易行。 LED数码管作为显示字段的数码型显示器件,它是由若干个发光二极管组成的。当发光二极管导通时,相应的一个点或一个笔画发亮,控制不同组合的二极管导通,就能显示出各种字符,常用的LED数码管有7段和“米”字段之分。这种显示器有共阳极和共阴极两种。共阴极LED显示器的发光二极管的阴极连在一起,通常此共阴极接地。当某个发光二极管的阳极为高电平时,发光二极管点亮,相应的段被显示。同样,共阳极LED显示器的发光二极管的阳极接在一起,通常此共阳极接正电压,当某个发光二极管的阴极接低电平时,发光二极管被点亮,相应的段被显示。 5. 行列式键盘 图6 本次仿真是用到的行列式键盘 由于本次实验中用到的按键较多,而单片机的并行口有限,只能用行列式键盘扩展。该行列式键盘的行和列分别接到8255A的PA口和PB口。 在程序中要注意的是先判断行,再判断列。这里要注意8255A的接口工作方式,PA口工作在输入,PB口工作在输出方式。在判断行的时候,PB口全为0,PA口全为1。在判断列的时候,使得PB口依次为0,扫描列来判断是哪一列的按键按下。 6. 中断判断电路 图7 外部中断电路 此电路旨在引入单片机一个外部中断INY0。由两个四输入与门74LS21和一个两输入与门74LS08组成。只要PA口中有一个低电平,INT0就为0。 本实验程序流程图: 本实验仿真图: 本实验程序: #include<reg51.h> #include<absacc.h> bit e; ///定义电梯的方向 sbit door=P3^0; sbit m0=P3^4; sbit m1=P3^5; char bdata yuzh=0x00; char bdata shang=0x00; char bdata xia=0x00; int layer;//当前层 #define COM8255 XBYTE[0X7FFF] #define PA8255 XBYTE[0x7FFC] #define PB8255 XBYTE[0x7FFD] #define DENG8255 XBYTE[0XAFFF] #define DENGA XBYTE[0xAFF3] #define DENGB XBYTE[0xAFF7] #define DENGC XBYTE[0xAFFB] void delay(int z)///////////延时程序 { int x,y; for(x=0;x<z;x++) for(y=0;y<110;y++); }///////////延时程序 ////////////////中断0 char templayer; char dir; char constant1=0xff; void INT0_srv(void) interrupt 0 using 1 { //////////////延时去抖动 delay(2); if(INT0==1){return;} //////////////延时去抖动 templayer=PA8255;//先读A口。 PB8255=0x06; ///////判断列数//////// if(PA8255!=constant1) { dir=0x01; } else { PB8255=0x05; if(PA8255!=constant1) { dir=0x02; } else { dir=0x03; } } ///////判断列数//////// PB8255=0x00; ////////////标示量赋值 switch(dir) { case 0x01: yuzh=(~templayer)^yuzh;DENGC=yuzh;break; case 0x02: shang=(~templayer)^shang;DENGA=shang;break; case 0x03: xia=(~templayer)^xia;DENGB=xia; } ////////////标示量赋值 return; }///////////////中断0 char code zimo[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,}; char code pickup[]={0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,}; char code pickdown[]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,}; char code quw[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,}; ////停止层,闪动/ int stopat() { int i; for(i=0;i<8;i++) { P1=0; delay(200); P1=zimo[layer]; delay(400); } return 0; } ////停止层,闪动/ void main() { layer=0x01;//当前层 e=1; //1为上,0为下 EA=1; EX0=1; //////////按键和灯,初始化 COM8255=0x90; //AB口都工作在方式0,A入 B为出。 PB8255=0x00; DENG8255=0X80; ///DENG的ABC口都是输出。 //////////按键和灯,初始化 P1=zimo[layer]; askdir: if((yuzh|shang|xia)!=0) { if(e==1) {upcircle: switch(layer) { case 0x01: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();door=1;}break; case 0x02: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();door=1;}break; case 0x03: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();door=1;}break; case 0x04: if((quw[layer-1]&yuzh)||(quw[layer-1]&shang)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();door=1;}break; case 0x05: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();door=1;}break; case 0x06: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();door=1;}break; case 0x07: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();door=1;}break; case 0x08: if((quw[layer-1]&shang)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;shang=~quw[layer-1]&shang;DENGA=shang;DENGC=yuzh;stopat();door=1;} } ////////////////判断上面还有没有要去的层。 if(((pickup[layer-1]&yuzh)|(pickup[layer-1]&shang)|(pickup[layer-1]&xia))==0) {e=0;//反向 goto askdir; } ////////////////判断上面还有没有要去的层。 layer=layer+1; m0=1; m1=0; delay(1500); m0=0;m1=0; P1=zimo[layer]; goto upcircle; /////////////上移动一层 } else {downcircle: switch(layer) { case 0x01: if((quw[layer-1]&xia)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;xia=~quw[layer-1]&xia;DENGB=xia;DENGC=yuzh;stopat();door=1;}break; case 0x02: if((quw[layer-1]&xia)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;xia=~quw[layer-1]&xia;DENGB=xia;DENGC=yuzh;stopat();door=1;}break; case 0x03: if((quw[layer-1]&xia)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;xia=~quw[layer-1]&xia;DENGB=xia;DENGC=yuzh;stopat();door=1;}break; case 0x04: if((quw[layer-1]&xia)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;xia=~quw[layer-1]&xia;DENGB=xia;DENGC=yuzh;stopat();door=1;}break; case 0x05: if((quw[layer-1]&xia)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;xia=~quw[layer-1]&xia;DENGB=xia;DENGC=yuzh;stopat();door=1;}break; case 0x06: if((quw[layer-1]&xia)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;xia=~quw[layer-1]&xia;DENGB=xia;DENGC=yuzh;stopat();door=1;}break; case 0x07: if((quw[layer-1]&xia)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;xia=~quw[layer-1]&xia;DENGB=xia;DENGC=yuzh;stopat();door=1;}break; case 0x08: if((quw[layer-1]&xia)||(quw[layer-1]&yuzh)){door=0;yuzh=~quw[layer-1]&yuzh;xia=~quw[layer-1]&xia;DENGB=xia;DENGC=yuzh;stopat();door=1;} } ////////////////判断下面还有没有要去的层。 if(((pickdown[layer-1]&yuzh)|(pickdown[layer-1]&xia)|(pickdown[layer-1]&shang))==0) {e=1;//反向 goto askdir; } ////////////////判断下面还有没有要去的层 layer=layer-1; m0=0;m1=1; delay(1500); m0=0;m1=0; P1=zimo[layer]; goto downcircle; /////////////下移动一层 }///else }///if //////////////没有要去的层,原地不动。 goto askdir; }展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




基于单片机的电梯仿真实验终稿.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/7028843.html