基于STC89C51单片机的模拟电梯设计精品资料.docx
《基于STC89C51单片机的模拟电梯设计精品资料.docx》由会员分享,可在线阅读,更多相关《基于STC89C51单片机的模拟电梯设计精品资料.docx(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目录一、 设计任务11.1 设计内容与要求1二、设计系统主要功能的说明22.1 设计设备的选择22.2 设计原理2三、硬件电路设计33.1电源部分33.2按键部分43.3 数码管显示原理53.4电机驱动原理53.5单片机最小系统6四、软件设计流程74.1 延时程序控制74.1.1 循环延时服务控制84.1.2 编码按键扫描控制84.2 软件的实现84.2.1主程序的实现84.2.2子函数服务程序的实现94.2.3 键盘扫描的实现方法9五、软、硬件的调试115.1 调试方案的确定115.2 调试过程11六、设计心得11参考文献13附录A 模拟电梯的程序15摘要: 本设计是使用宏晶公司的STC89
2、C51RC加外围器件作控制单元,用数码管显示,制作的经济实惠的电梯模拟系统。其原理图可分为按键部分、显示部分、电机部分、最小系统部分。两个按键(一个电梯内,一个电梯外)对应一个楼层,另有开门、关门两个按键。芯片一旦检测到某楼层的按键被按下,就会在对应端口输出5V高电平驱动电机来到该楼层,程单序会延迟几分钟,等人进入电梯后,关门,去到要去的楼层。在整个过程中,数码管会显示楼层数。最小系统为单片机提供时钟信号和复位功能。 关键词:STC89C51 单片机 模拟电梯 四位一体数码管一、 设计任务(选题) 随着科技的发展,单片机因强大的功能、低廉的价格,越来越被广泛使用,成为很多电子产品中不可缺少的部
3、分。同时因为单片机是模拟电子与数字电子的结合品,它的应用对于我们电子专业来说是一门必要掌握的课程。 电梯对人们来说已经是必不可少了乘载工具,所以将单片机应用于实际的生活中,才达到学以致用、举一反三的境界。二、 方案设计1.处理部分:现在的单片机越来越注重功耗和处理数据快慢的问题,目前最低功耗最有发展潜力的单片机是美国TI公司的MSP430系列。不过这里为了学以致用和节约成本,同时电梯的处理数据就不需要那么高的速度,所以选用8位的STC89C51单片机。2.显示部分:本来可以用15*18的点阵,可是考虑到成本和接电路布线的繁琐,更糟糕的是那耗电大而不是实际的电路就没必要。所以直接用四位的数码管显
4、示就好了。3.控制部分:本来可以用4*4的键盘,现在只用了四位数码管代表三层楼,所以只用3个按键代表梯内3层楼,3个按键代表梯外3层楼,加上“关门”和“开门(延时)键各一个,总共8个键组成编码式按键就行了。功能:三、 硬件部分1.原理框图2.原理图细分电源部分:用变压器把交流电220V转为交流电9V(不能小于或者等于交流电5伏,因为三端稳压管7805的输入端输出端电波压差为2.5V),交流9V经过整流桥D1后得到平均值为8.1V单方向全波脉动电压,其中停含有较大的汶波,为了得到平滑的电压,在其后面加滤波电容滤除交流成分。涤纶电容104可用来抵消输入端的电感效应,还可以消除电源的高频干扰。一般取
5、值是0.1-1uF。波动较大8.1V电压经7805的1脚输入,输出端输出稳定的5V,最后还要用电解电容10uF和涤纶电容104再次滤波,使电压更稳定,以供单片机和其他元器件需要。按键部分:8个按键分别是电梯外三个键代表想电梯来到的每一层楼,电梯内三个键代表想要去的三层楼,一个关门键和一个开门键。它们一边直接接地,另一边直接接STC的P1和P3口,这样就可以用高低电平去判断,然后执行对应键的操作函数。显示部分:用一个四位的共阳数码管,再用四个9015(PNP)三极管去控制显示。这样就不会占用四个I/O而浪费资源。当然数码管还要加上100的限流电阻。再备用一个LED灯。电机部分:用P20和P21输
6、出高低之间去驱动8550组成的对称电路,从而控制电机的正转和反转。晶振部分:用12M和30pF的涤纶电容使单片机STC89C51起振,从而为单片机STC89C51提供频率信号。最小系统:用一个按键、200和利用电容(电解电容22uF)充放电原理去使STC89C51重新上电复位。四、 软件部分1. 程序流程图五、 调试和验证首先布局好电路的摆布,如何让人一目了然,如何好看。跟着把电路焊接完毕。 先不要急着把单片机插上去整个系统调试,而是先测试电源部分5V正常与否。当我测试到5V波动很大或者直接没有时,发现三端稳压管7805之后的那个涤纶电容104已经击穿了,换了一个之后电源稳定正常了。 然后在仿
7、真软件Proteus上对照自己设计的电路画了个电路图,因为上面没有9015三极管只有通用的PNP三极管只好用这个来替补。当我在Keil C51上随便编了一个显示5678的函数把它灌入仿真软件上调试时,发现数码管四位都是显示8。然后我再倒头看看程序是否错误,感觉真的没错啊。又用另外的方式编写了显示1234的程序,它还是一样显示4444。我就在Keil 上一步一步地调试程序,真的感觉没有错,当时一时懵了。最后我就做了决定,直接把把程序烧进上,插上到电路板上,那显示竟然与自己编写的完全一致喔。那时一片黑云散了,心情很好。 后来觉得调试不方便,不可能每次都要把程序烧进单片机上在电路板上调试。我就仿真软
8、件上把那个通用三极管换成反相放大器,这样调试就好了。六、心得每一次努力都总会有或多或少的收获,所以当我们做每一件事时都要全力以赴,否则就不要去做。这对我们以后工作乃至生活形成一个良好的习惯和心态。结论谢辞在、 首先感谢各位老师三年来的教导。俗话说入靠师傅,修行在个人。刚接触这个专业时,还不清楚学什么,能学到什么,而现在虽说七、参考文献 谭浩强编著.C语言程序设计胡宴如、耿苏燕编著.模拟电子技术 刘守义、杨宏丽、王静霞编著.单片机应用技术 郑鹏思、林远长、董前程、矫津毅编著.Protel99 SE附录A模拟电梯程序#includesbit key3=P11;sbit key2=P10;sbit
9、key1=P12;sbit key4=P13;sbit key5=P14;sbit key6=P37;sbit key7=P36; /关门升降sbit key8=P35; /开门延时键sbit P24=P24;sbit P25=P25;sbit P26=P26;sbit P27=P27;sbit zhengzhuan=P20; /电动机正转sbit fanzhuan=P21; /电动机反转unsigned int i,j;unsigned char sanlou=0;unsigned charerlou=0;bit biaozhi=0;unsigned charyilou=0;unsigned
10、 char qusanlou=0;unsigned char querlou=0;unsigned char quyilou=0; unsigned char code tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/-延时1ms函数-void delay(unsigned int t) for(i=0;it;i+) for(j=0;j121;j+) ; /-外按三楼函数-void display3(void) if(qusanlou=1) for(i=0;i500;i+) for(j=0;j121;j+) ; if(P26=0)/
11、如果现在在一楼则显示从一楼到三楼函数 P2=0xb0; P0=tab1; for(i=0;i500;i+) for(j=0;j121;j+) if(key2=0) /判读外二楼有没有人按下 delay(10); while(key2=0); erlou=1; if(key8=0&qusanlou=1);/同时要是之前的内三楼键按下才有效 delay(10); while(key8=0); delay(1000); /如果再次开门就延时1s if(key7=0) delay(10); while(key7=0); i=200;/把i变成200跳出延时函数 zhengzhuan=1; fanzhu
12、an=0; /电机正转 delay(1000); delay(1000); delay(1000); delay(1000);/上一层楼的时间 P2=0xd0; P0=tab2; for(i=0;i500;i+) for(j=0;j121;j+) if(key8=0&qusanlou=1); /同时要是内三楼键按下才有效 delay(10); while(key8=0); delay(1000); /如果再次开门就延时1s if(key7=0) delay(10); while(key7=0); i=200;/把i变成200跳出延时函数 if(erlou=1) delay(1000); /在二
13、楼停留多1s当模拟有人进出 zhengzhuan=0; fanzhuan=0; /电机停止 zhengzhuan=1; fanzhuan=0; /电机正转 delay(1000); delay(1000); delay(1000); delay(1000);/上一层楼的时间 P2=0xe0; P0=tab3; for(i=0;i500;i+) for(j=0;j121;j+) if(key8=0&qusanlou=1); /同时要是内三楼键按下才有效 delay(10); while(key8=0); delay(1000); /如果再次开门就延时1s if(key7=0) delay(10)
14、; while(key7=0); i=200;/把i变成200跳出延时函数 if(P25=0) P2=0xd0; P0=tab2; zhengzhuan=1; fanzhuan=0; /电机正转 delay(1000); delay(1000); delay(1000); delay(1000); P2=0xe0; P0=tab3; if(P24=0)/如果现在还是显示3楼 P2=0xe0; P0=tab3; sanlou=0; erlou=0; qusanlou=0; zhengzhuan=0; fanzhuan=0; /电机停止/-外按二楼函数,不过最后还是到先三楼去-void displ
15、ay2(void) if(querlou=1) for(i=0;i500;i+) for(j=0;j121;j+) ; if(P26=0) /如果现在在一楼则显示从一楼到二楼再到三楼函数 P2=0xb0; P0=tab1; for(i=0;i500;i+) for(j=0;j121;j+) if(key8=0&querlou=1); /同时要是内二楼键按下才有效 delay(10); while(key8=0); delay(1000); /如果再次开门就延时1s if(key7=0) delay(10); while(key7=0); i=200;/把i变成200跳出延时函数 zhengzh
16、uan=1; fanzhuan=0; /电机正转 delay(1000); delay(1000); delay(1000); delay(1000); /上一层楼的时间 P2=0xd0; P0=tab2; for(i=0;i500;i+) for(j=0;j121;j+) if(key8=0&querlou=1); /同时要是内二楼键按下才有效 delay(10); while(key8=0); zhengzhuan=0; fanzhuan=0; /电机停止 delay(1000); /如果再次开门就延时1s if(key7=0) delay(10); while(key7=0); i=20
17、0;/把i变成200跳出延时函数 zhengzhuan=0; fanzhuan=0; /电机停止 delay(1000); delay(1000); delay(1000);/在二楼停留多1s当模拟有人进出 zhengzhuan=1; fanzhuan=0; /电机正转 delay(1000); delay(1000); delay(1000); delay(1000);/上一层楼的时间 P2=0xe0; P0=tab3; for(i=0;i500;i+) for(j=0;j121;j+) if(key8=0&querlou=1); /同时要是内二楼键按下才有效 delay(10); whil
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于STC89C51单片机的模拟电梯设计 精品资料 基于 STC89C51 单片机 模拟 电梯 设计 精品 资料
限制150内