基于-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)随着 楼层的 增高,使用继电器的数量

4、越来越多,造价和体积也越来越大; (2)继电 器这种触点式的电控元器件不宜长时间频繁工作, 因而采用在电梯系统当中常发 生触电表面 烧结、控制失灵的故障。因此我们设计一个 3 层自动电梯模拟升降控制系统, 通过乘客的自行按键达 到升降功能。采用单片机作为控制核心进行仿真。本次设计是应用 AT89C51芯片进行设计制作的模拟电梯控制系统, 通过乘客 的按键达到对电梯升降的控制,并且模拟电梯的运行状态。在设计方案中,通过对各个 P 口的合理安排和统一协调,通过按键、和 LED 数码管来实现对设计设计方案的仿真演示。 另外在实验程序中通过对不同按键键 码在功能上的分配, 在按键按下之后使 CPU做相

5、应的工作,即 LED数码管显示与 之相应的楼层和使彩灯显示相应的电梯状态。 最后,结合 PCB板的实际接线情况 进行编程。使实验顺利仿真。五控制系统的硬件系统设计 5.1.AT89C51 单片机介绍 微型计算机系统的硬件部分通常由五部分组成:中央处理器 CPU 、数据存储器 RAM、程序存储器 ROM、定时/ 计数器、 I/O 接口。MCS-51单片机内部的总体硬件结构:1、中央处理单元 CPU( 8 位) 用于数据处理、位操作(位测试、置位、复位) 。2、只读存储器 ROM(4KB或 8KB) 用于永久性存储应用程序,掩膜 ROM、EPRO、MEEPRO。M3、随机存取存取器 RAM(128

6、B 或 256B) 用于程序运行中存储工作变量和数据。4、并行输入 /输出口 I / O (32线)4个 8 位并行 I/O 口 P0、P1、P2、P3口用作系统总线、扩展外存、 I / O 接 口芯片。5、串行输入 / 输出口 UART (二线)1 个全双工的异步串行口;用于串行通信。6、定时/ 计数器 T ( 16位增量可编程)2 个或三个 16 位定时器 / 计数器;它与 CPU之间各自独立工作, 当它计数满 时向 CPU中断。7、时钟电路 fosc振荡频率 fosc 在 1.212Mhz; 分为内部振荡器、外接振荡电路。8、中断系统5 源中断、 2 个中断优先级; ,可编程进行控制。5

7、.2 硬件系统原理框图彩灯控#includevoid Zero();void Delay_ms(unsigned int Time);void Display(unsigned int n,unsigned char a);void Flash(unsigned int Time);void KBScan();void dl_ms();void Destination();void Up();void Down();unsignedcharcodeTAB38=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 与查询

8、式键盘硬件相连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;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;/*清零)*/unsigned int l

9、ift=1; /* unsigned int status=1; /*用于产生时钟信号 */ 用于产生串行输入信号 ( 显示电梯所在楼层 */ 电梯上行为 1,下行为 0*/orunsigned char request3=0,0,0; /*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

10、(unsigned int Time)unsigned int i=0,j=0;for(i=0;iTime;+i)KBScan();for(j=0;j125;+j);/ 显示某一楼层 void Display(unsigned int 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;f

11、or(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=TABn-1k;dl_ms();P1_0=1;dl_ms();P1_0=0;/ 闪烁显示到达楼层void Flash(unsigned int Time) unsigned char i;for(i=0;iTime;i+)Zero();Delay_ms(1000);KBScan();Display(lift,status);Delay_ms(1000);KBScan();Zero();Delay_ms(10

12、00);KBScan();/ 查询式键盘扫描void KBScan()if(P2!=0xff)dl_ms();if(P2!=0xff)switch(P2)case 0xfe: P0_0=1;request0=1;break; /*case 0xfd: P0_1=1;request1=1;break; /*case 0xfb: P0_2=1;request2=1;break; /* case 0xf7: P0_3=1;request0=1;break; /*case 0xef: P0_4=1;request1=1;break; /* case 0xdf: P0_5=1;request1=1;br

13、eak; /* case 0xbf: P0_6=1;request2=1;break; /*电梯内请求 1 楼*/ 电梯内请求 2 楼*/ 电梯内请求 3 楼*/ 电梯外 1 楼请求向上 */ 电梯外 2 楼请求向上 */ 电梯外 2 楼请求向下 */ 电梯内 3楼请求向下 */错误请求 */default: break;/*/ 消抖延时void dl_ms()unsigned char i;for(i=0;i=1;-j)if(requestj-1=1)dst=j;break;else if(status=0) / 则将目的楼层设为该楼/ 并将其对应的 request 置 1,然后跳出若电梯向

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

15、elserequestlift-1=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);Delay_ms(800); elseDelay_ms(3000);lift+;void main()P0=0;while(1) / 电梯程序的循环Display(lift,status);Destination(); / 查询有无楼层请求到达if(dst=lift) / 请求的楼层比要到达的楼层高Up(); / 电梯向上走e

16、lseDown(); / 否则电梯向下走七 . 软硬件调试系统调试包括硬件调试和软件调试, 而且两者是密不可分的。 我们设计好的 硬件电路和软件程序, 只有经过联合调试, 才能验证其正确性; 软硬件的是否达 到设计任务的要求,也只有经过调试,才能发现问题并加以解决、完善,最终实现设计目的。7.1 硬件调试 硬件调试仅这里作比较简单的介绍,不必费太多的心思。7.2 软件调试软件调试一般包括分块调试和联机调试两个阶段。 程序的分块调试一般在单 片机开发装置上进行, 可根据所调程序功能块的入口参量初值编制一个特殊的程 序段,并连同被调程序功能块一起在开发装置上运行; 也可配合对应硬件电路单 独运行某

17、程序功能块, 然后检查是否正确, 如果执行结果与预想的不一致, 可以 通过单步运行或设置断点的方法, 查出原因并加以改正, 直到运行结果正确为止。 这时该 程序功能块已调试完毕,可去掉附加程序段。其它程序功能块可按此法 进行调试。程序联机调试就是将已调试好的各程序功能块按总体结构联成一个完 整程序, 在所研制的硬件电路上运行。 从而试验程序整体运行的完整性、 正确性 和与硬件电路的配合情况。 软件调试主要在电脑上进行仿真模拟。 先全部编译文 件,观察是否有错误和警告,在确定没有错误和警告的情况下,点击DEBU。G 进去仿真阶段。 本次的实验难度系数其实并不大, 关键是要看各部分负责的同学的 协

18、助与互动,当然这也与老师的细心教导是分不开的。除此之外,对系统软件的熟悉和对程序编写的熟练程度也很大意义上起到了 加快实验速度,减少差错,减轻工作量的作用。对于这些过程与步骤的熟悉与了解能很好的帮助我们解决在实际应用当中 碰到的诸多问题, 比如说在程序当中设计到延时, 但是具体延时的时间, 我们要 从几个方面考虑, 最后调试了很多次, 试验了很多次的时间参数, 最后才找到了 一个比较合适的延时参数。 除了认为的设定他的数值以外, 我们还要熟悉和掌握 芯片的自身功能, 也就是它的运算速度。 只要知道了运算速度, 那么大致上的时 间就可以根据计算认为得到。还有在关于程序先后运行顺序的设置上也很有讲

19、究。 如果安排不好程序执行 的步骤,将会造成电梯门没关便开始上升下降或者 LED动态显示暂时熄灭不显示 等由于程序执行顺序所导致的问题。 所以,合理的安排步骤, 并且配合这块芯片 本身的功能,可以发挥出事半功倍的效果。但是在调试过程中还是出现了一些问题比如延时程序设定时间太短, 数组定 义错误,引脚对应错误等等我认为对于我们这些初学者来说, 出现这种错误也是在情理之中的, 关键的 问题是如何解决这些问题,我们通过同组同学的讨论和向外组同学和老师的请 教,经过了一次一次的调试,修改,历经整整 2 天的时间完成了程序,我们组员 表示在这次的设计当中学到了很多,下次我们会珍惜这机会的。八实验小结 一

20、周的课程设计马上就要结束了, 对于这周的课程设计大体也有了不少自己的学 习经验和对于这课程设计的心得, 我们这小组做的是电梯升降序控制器, 以下便 是我的对其简单的小结: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

提交评论