版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、实验目的:1、掌握8255A编程原理;2、掌握键盘的输入和数码管的显示;3、提高理论与实践相结合的能力,强化所学内容。二、实验要求:用8255A实现模拟电梯,用键盘输入要求电梯所到达的楼层,数码管显示电梯当前所在楼层。电梯在初始楼层,当有用户在其他楼层做出请求时,即通过键盘输入希望电梯到达的楼层,电梯运行到目的楼层。电梯在运行运行过程中经过一层需要的时间是1秒,即数码管显示每个数字的时间是1秒,当电梯到达目的楼层时,扬声器发出声音三、实验过程:1〕实验流程图:2〕实验硬件设计电路图:3〕实验接线按硬件设计图接线,8255C口接键盘〔实际8255的C0~C3接键盘的列0~列3,C4~C7接键盘的行0~行3〕,8255CS接地址译码输出的288h~28fh。8255的A口PA0~PA7接数码管的a~dp。数码管位码S0接+5V,S3~S1接GND。8255端口A地址为:288H端口B地址为:289H端口C地址为:28AH控制口地址为:28BH3〕实验代码:头文件:#include<stdio.h>#include<conio.h>#include"ApiExusb.h"#pragmacomment(lib,"ApiExusb.lib")运行函数:voidCDiantiDlg::OnRun(){ //TODO:Addyourcontrolnotificationhandlercodeherecharled[9]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}; /*上面为从0-8对应的段码表*/bytedata; //将键盘输入数据存储bytei,j; //i为输入数据,j为对应的段码 bytenow,goal; //记录电梯的目前楼层和目标楼层 getch(); if(!Startup()) /*翻开设备*/ { printf("ERROR:OpenDeviceError!\n"); return; }now=j=0; //PortWriteByte(0x28b,0x81); //初始状态为0层while(!kbhit()) {PortWriteByte(0x28b,0x81); //设置8255的A口输出C口低输入 PortWriteByte(0x288,led[now]);//数码管显示PortWriteByte(0x28a,0x0f); //c口初始化后四位为0x0fPortReadByte(0x28a,&data); //读取c口数据低四位 i=data;if(i!=0x0f){i=data;Sleep(50);PortWriteByte(0x28b,0x88);//设置A口输出C高四位输入PortWriteByte(0x28a,0xf0);//c口初始化高四位为0xf0 PortReadByte(0x28a,&data); //读取c口数据高四位i=i|data; //〔C口高四位与低四位即键盘的行与列相与得出所按的键〕 //记录按键八位码if(i==0x77)j=0; //得出目的楼层elseif(i==0x7b)j=1;elseif(i==0x7d)j=2;elseif(i==0x7e)j=3;elseif(i==0xb7)j=4;elseif(i==0xbb)j=5;elseif(i==0xbd)j=6;elseif(i==0xbe)j=7;elseif(i==0xd7)j=8;else;} goal=j; if(now!=goal) { if(now>goal) { for(;now>goal;now--) { PortWriteByte(0x28b,0x81); PortWriteByte(0x288,led[now]);//数码管显示 Sleep(1000); //每层停一秒 } PortWriteByte(0x28b,0x81); PortWriteByte(0x288,led[goal]);//数码管显示 //PortWriteByte(0x28b,0x80); PortWriteByte(0x289,0x80); //扬声器开,PB7变成高电平 Sleep(100); PortWriteByte(0x288,0x00); //扬声器关 } else { for(;now<goal;now++) { PortWriteByte(0x28b,0x81); PortWriteByte(0x288,led[now]);//数码管显示 Sleep(1000); } PortWriteByte(0x28b,0x81); PortWriteByte(0x288,led[goal]);//数码管显示 //PortWriteByte(0x28b,0x80); PortWriteByte(0x289,0x80); //扬声器开 Sleep(100); PortWriteByte(0x288,0x00); //扬声器关 }} PortWriteByte(0x28b,0x81); PortWriteByte(0x288,led[goal]);//数码管显示 } Cleanup(); /*关闭设备*/}三、实验现象:数码管显示数字为1〔表示电梯初始状态停在第一层〕,此时LED显示灯全灭〔表示没有键入目的楼层〕;从键盘上键入数字4,相应的LED显示灯亮,数码管显示每隔2秒从1到4递增,当到达4时停下并开扬声器,表示电梯从一楼上升到达四楼,相应的LED灯灭。在电梯运行过程中不相应其他键入信息,知道停在四楼。电梯到达四楼后假设键入大于四的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药理学知识培训课件
- 论文写作指南
- 2025年度餐饮加盟连锁经营合作协议书3篇
- 2025年度广告传媒拆伙合同协议4篇
- 专业艺术教师劳务合作合同(2024版)一
- 二零二四医院护士劳动合同范本:护理危机管理与责任界定3篇
- 2025年茶山茶叶采摘与加工承包经营合同4篇
- 2025年度快递快递业务市场营销承包合同3篇
- 2025年度餐饮行业节能减排合作协议范本3篇
- 2025年度情侣忠诚保障不分手协议书电子版下载3篇
- 直播带货助农现状及发展对策研究-以抖音直播为例(开题)
- 腰椎间盘突出疑难病例讨论
- 《光伏发电工程工程量清单计价规范》
- 2023-2024学年度人教版四年级语文上册寒假作业
- (完整版)保证药品信息来源合法、真实、安全的管理措施、情况说明及相关证明
- 营销专员绩效考核指标
- 陕西麟游风电吊装方案专家论证版
- 供应商审核培训教程
- 【盒马鲜生生鲜类产品配送服务问题及优化建议分析10000字(论文)】
- 肝硬化心衰患者的护理查房课件
- 2023年四川省乐山市中考数学试卷
评论
0/150
提交评论