基于C51单片机的三层电梯控制_第1页
基于C51单片机的三层电梯控制_第2页
基于C51单片机的三层电梯控制_第3页
基于C51单片机的三层电梯控制_第4页
基于C51单片机的三层电梯控制_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、一课程设计题目基于51单片机的三层电梯控制二课程设计的目的1学习P口的使用方法2掌握如何利用单片机控制LED动态显示3掌握动态扫描显示的基本原理,动态显示的控制电路及控制程序4掌握微机控制系统的键盘组成及工作原理5认识微机控制系统的键盘设计,了解单片机键盘的特点和应用三设计要求设计一个自动电梯模拟升降控制系统,通过乘客的自行按键达到电梯的升降功能。结合硬件与软件对应.端口P0。0-0。6用来控制LED灯的亮与灭,其中从低位到高位分别为一层灯,二层灯,三层灯(前述三个信号为电梯内请求信号,乘客在电梯内部方可置为有效),一层上灯,二层上灯,二层下灯,三层下灯(上述四个信号为电梯外部信号,乘客在电梯

2、外部方可置为有效)P2口与键盘对应连接,数码管采用串行输入方式,键盘从低位到高位分别为一层按键,二层按键,三层按键,一层上升按键,二层上升按键,二层下降按键,三层下降按键。P1.0与数码管的时钟输入端相连,P1。1与数码管的串行口相连,用来显示电梯的上升下降和当前所在楼层,电梯门是否开启三种状态,p表示上升,d表示下降,1,2,3表示当前楼层,如果数码管闪烁,表示电梯门开启,反之则关断。四控制系统的总体设计方案微型计算机的出现使计算机在逻辑处理和工业控制等方面的非凡能力得到了更好的体现.尤其是其非凡的嵌入能力对于满足嵌入式应用需求具有独特的优势.随着城市建设的不断发展,楼群建筑不断增多,电梯在

3、当今社会的生活中有着广泛的应用.电梯作为楼群建筑中垂直运行的交通工具已与人们的日常生活密不可分。 实际上电梯是根据外部呼叫信号(呼梯信号)以及自身控制规律等运行的,而呼叫是随机的,电梯实际上是一个人机交互式的控制系统,单纯用顺序控制或逻辑控制 是不能满足控制要求的,因此,大部分电梯控制系统都采用随机逻辑方式控制。在目前广泛使用的电梯控制系统中,绝大多数为继电器控制型,所有的逻辑及控制关系完全由诸多继电器互相配合来完成,该控制系统的缺点是:(1)随着楼层的 增高,使用继电器的数量越来越多,造价和体积也越来越大;(2)继电器这种触点式的电控元器件不宜长时间频繁工作,因而采用在电梯系统当中常发生触电

4、表面 烧结、控制失灵的故障。因此我们设计一个3层自动电梯模拟升降控制系统,通过乘客的自行按键达到升降功能.采用单片机作为控制核心进行仿真。本次设计是应用AT89C51芯片进行设计制作的模拟电梯控制系统,通过乘客的按键达到对电梯升降的控制,并且模拟电梯的运行状态.在设计方案中,通过对各个P口的合理安排和统一协调,通过按键、和LED数码管来实现对设计设计方案的仿真演示。另外在实验程序中通过对不同按键键码在功能上的分配,在按键按下之后使CPU做相应的工作,即LED数码管显示与之相应的楼层和使彩灯显示相应的电梯状态。最后,结合PCB板的实际接线情况进行编程。使实验顺利仿真。五控制系统的硬件系统设计5。

5、1。AT89C51单片机介绍微型计算机系统的硬件部分通常由五部分组成:中央处理器CPU 、数据存储器RAM、程序存储器ROM、定时/计数器、I/O接口。MCS51单片机内部的总体硬件结构:1、中央处理单元CPU(8位)用于数据处理、位操作(位测试、置位、复位)。2、只读存储器ROM(4KB或8KB)用于永久性存储应用程序,掩膜ROM、EPROM、EEPROM。3、随机存取存取器RAM(128B 或256B)用于程序运行中存储工作变量和数据。4、并行输入/输出口 I / O(32线)4个8位并行I/O口P0、P1、P2、P3口用作系统总线、扩展外存、I / O接口芯片。5、串行输入/输

6、出口 UART (二线)1个全双工的异步串行口;用于串行通信。6、定时/计数器 T(16位增量可编程)2 个或三个16位定时器/计数器;它与CPU之间各自独立工作,当它计数满时向CPU中断。7、时钟电路 fosc振荡频率fosc在1。212Mhz; 分为内部振荡器、外接振荡电路。8、中断系统 5源中断、 2个中断优先级; ,可编程进行控制。5。2硬件系统原理框图AT89C51单片机键盘彩灯控制Led数码管includereg51.hvoid Zero();void Delay_ms(unsigned int Time);void Display(unsigned int n,unsigned

7、char a);void Flash(unsigned int Time);void KBScan();void dl_ms();void Destination();void Up();void Down();unsigned char code TAB38=0,0,0,0,0,1,1,0,0,1,0,1,1,0,1,1,0,1,0,0,1,1,1,1;/*楼层数码管显示矩阵/P2与查询式键盘硬件相连sbit P2_0=P20;sbit P2_1=P21;sbit P2_2=P22;sbit P2_3=P23;sbit P2_4=P24;sbit P2_5=P25;sbit P2_6=P26

8、;sbit P2_7=P27;/P0与LED灯硬件相连sbit P0_0=P00;sbit P0_1=P01;sbit P0_2=P02;sbit P0_3=P03;sbit P0_4=P04;sbit P0_5=P05;sbit P0_6=P06;sbit P0_7=P07;sbit P1_0 = P10; /用于产生时钟信号/sbit P1_1 = P11; /用于产生串行输入信号(显示or清零)*/unsigned int lift=1; /电梯所在楼层/unsigned int status=1; /电梯上行为1,下行为0/unsigned char request3=0,0,0; /

9、13楼有无请求,有请求为1*/unsigned char dst=1; /电梯的目的楼层/清零程序void Zero() unsigned char k; P1_1=0; P1_0=0; for(k=0;k40;k+) dl_ms(); P1_0=1; dl_ms(); P1_0=0; /延时程序,以毫秒为单位,用软件计时,输入的参数void Delay_ms(unsigned int Time) unsigned int i=0,j=0; for(i=0;iTime;+i) KBScan(); for(j=0;j125;+j); /显示某一楼层void Display(unsigned in

10、t n,unsigned char a) unsigned char k; unsigned char b=0,0,0,0,0,0,0,0; if(a=1) b7=1;b6=1;b5=0;b4=0;b3=1;b2=1;b1=1;b0=0; else if(a=0) b7=0;b6=1;b5=1;b4=1;b3=1;b2=0;b1=1;b0=0; Zero(); P1_0=0; for(k=0;k8;k+) KBScan(); P1_1=bk; dl_ms();P1_0=1; dl_ms(); P1_0=0; P1_0=0; for(k=0;k8;k+) KBScan(); P1_1=TABn1

11、k;dl_ms(); P1_0=1; dl_ms(); P1_0=0; /闪烁显示到达楼层void Flash(unsigned int Time) unsigned char i; for(i=0;i<Time;i+) Zero(); Delay_ms(1000); KBScan(); Display(lift,status); Delay_ms(1000); KBScan(); Zero(); Delay_ms(1000); KBScan();/查询式键盘扫描void KBScan() if(P2!=0xff) dl_ms(); if(P2!=0xff) switch(P2) cas

12、e 0xfe: P0_0=1;request0=1;break; /*电梯内请求1楼/case 0xfd: P0_1=1;request1=1;break; /*电梯内请求2楼/case 0xfb: P0_2=1;request2=1;break; /*电梯内请求3楼/case 0xf7: P0_3=1;request0=1;break; /电梯外1楼请求向上/case 0xef: P0_4=1;request1=1;break; /电梯外2楼请求向上/case 0xdf: P0_5=1;request1=1;break; /电梯外2楼请求向下*/case 0xbf: P0_6=1;reque

13、st2=1;break; /*电梯内3楼请求向下/ default: break; /错误请求/ /消抖延时void dl_ms() unsigned char i; for(i=0;i30;+i);/获取目的楼层void Destination() unsigned char j; /j循环控制变量 KBScan(); /有键按下 if(status=1) /若电梯向上走则从高楼层到低楼层扫描 /以此达到判断优先级的目的 for(j=3;j>=1;-j) if(requestj-1=1) dst=j; /则将目的楼层设为该楼 break; /并将其对应的request置1,然后跳出 e

14、lse if(status=0) /若电梯向下走则从低楼层到高楼层扫描 /以此达到判断优先级的目的 for(j=1;j=3;+j) if(requestj1=1) dst=j; break; /电梯向上走void Up() status=1; /置1表示电梯向上走 for(;lift=dst;lift+) /电梯到达目的楼层之前往上走 Display(lift,1); /每到达一楼就显示该楼层数 KBScan(); Destination(); /读取点阵键盘 if(requestlift1=1) /若请求到达的楼层在所在楼层和目的楼层之间则停下闪烁显示并将其对应的request清零 Dela

15、y_ms(3000); if(P0_5=1&lift=2); else requestlift1=0; switch(lift) case 1:P0_0=0;P0_3=0;break; case 2:P0_1=0;P0_4=0;break; case 3:P0_2=0;P0_6=0;break; default:break; Flash(3); Delay_ms(800); else Delay_ms(3000); lift-;/电梯向下走void Down() status=0; /置1表示电梯向上走 for(;lift=dst;lift) /电梯到达目的楼层之前往上走 Displa

16、y(lift,0); /每到达一楼就显示该楼层数 KBScan(); Destination(); /读取点阵键盘 if(requestlift1=1) /若请求到达的楼层在所在楼层和目的楼层之间则停下闪烁显示并将其对应的request清零 Delay_ms(3000); if(P0_4=1&lift=2); else requestlift1=0; switch(lift) case 1:P0_0=0;P0_3=0;break; case 2:P0_1=0;P0_5=0;break; case 3:P0_2=0;P0_6=0;break; default:break; Flash(3

17、); Delay_ms(800); else Delay_ms(3000); lift+;void main() P0=0; while(1) /电梯程序的循环 Display(lift,status); Destination(); /查询有无楼层请求到达 if(dst>=lift) /请求的楼层比要到达的楼层高 Up(); /电梯向上走 else Down(); /否则电梯向下走 七。 软硬件调试系统调试包括硬件调试和软件调试,而且两者是密不可分的。我们设计好的硬件电路和软件程序,只有经过联合调试,才能验证其正确性;软硬件的是否达到设计任务的要求,也只有经过调试,才能发现问题并加以解

18、决、完善,最终实现设计目的.7。1 硬件调试硬件调试仅这里作比较简单的介绍,不必费太多的心思。7。2 软件调试软件调试一般包括分块调试和联机调试两个阶段。程序的分块调试一般在单片机开发装置上进行,可根据所调程序功能块的入口参量初值编制一个特殊的程序段,并连同被调程序功能块一起在开发装置上运行;也可配合对应硬件电路单独运行某程序功能块,然后检查是否正确,如果执行结果与预想的不一致,可以通过单步运行或设置断点的方法,查出原因并加以改正,直到运行结果正确为止。这时该 程序功能块已调试完毕,可去掉附加程序段。其它程序功能块可按此法进行调试。程序联机调试就是将已调试好的各程序功能块按总体结构联成一个完整

19、程序,在所研制的硬件电路上运行。从而试验程序整体运行的完整性、正确性和与硬件电路的配合情况.软件调试主要在电脑上进行仿真模拟。先全部编译文件,观察是否有错误和警告,在确定没有错误和警告的情况下,点击DEBUG.进去仿真阶段.本次的实验难度系数其实并不大,关键是要看各部分负责的同学的协助与互动,当然这也与老师的细心教导是分不开的.除此之外,对系统软件的熟悉和对程序编写的熟练程度也很大意义上起到了加快实验速度,减少差错,减轻工作量的作用.对于这些过程与步骤的熟悉与了解能很好的帮助我们解决在实际应用当中碰到的诸多问题,比如说在程序当中设计到延时,但是具体延时的时间,我们要从几个方面考虑,最后调试了很

20、多次,试验了很多次的时间参数,最后才找到了一个比较合适的延时参数.除了认为的设定他的数值以外,我们还要熟悉和掌握芯片的自身功能,也就是它的运算速度。只要知道了运算速度,那么大致上的时间就可以根据计算认为得到.还有在关于程序先后运行顺序的设置上也很有讲究.如果安排不好程序执行的步骤,将会造成电梯门没关便开始上升下降或者LED动态显示暂时熄灭不显示等由于程序执行顺序所导致的问题。所以,合理的安排步骤,并且配合这块芯片本身的功能,可以发挥出事半功倍的效果。但是在调试过程中还是出现了一些问题比如延时程序设定时间太短,数组定义错误,引脚对应错误等等我认为对于我们这些初学者来说,出现这种错误也是在情理之中

21、的,关键的问题是如何解决这些问题,我们通过同组同学的讨论和向外组同学和老师的请教,经过了一次一次的调试,修改,历经整整2天的时间完成了程序,我们组员表示在这次的设计当中学到了很多,下次我们会珍惜这机会的.八实验小结一周的课程设计马上就要结束了,对于这周的课程设计大体也有了不少自己的学习经验和对于这课程设计的心得,我们这小组做的是电梯升降序控制器,以下便是我的对其简单的小结: 1。由于我们小组在之前有了明确的分工所以整体来说我们小组进程还是比较顺利的,在编程序方面在以xx同学为主力在第一天我们将其大致完成了,在电路图方面我们小组由xx利用了Poteus软件制作,虽然在之前我们并没有学过这个软件的使用方法,但经过一天的自我学习,我们最终还是按要求完成了制图. 2.第二天由于程序的基本成型,并在电路板上进行了实践的操作,流程图这一块便有我来制作了,由于我们的程序比较大应用的模块比较多说以,制作流程图还是花了我不少的时间. 3。第三天我们将写好的程序烧进了单片机,并给老师看过之后,老师指导我们修改了部分细节后,我们便开始制作最后的收尾工作,xx同学将最后的图纸完善,xxx,xxx同学进行最后的实验排版,我对流程图按照修改后的程序进行了最后的修正。 4.当然在最终的结果中还是存在些不足,但总的来说,我们这次收获了更多.在与同学和老师的交流

温馨提示

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

评论

0/150

提交评论