




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、题 目:基于stc89c51单片机的模拟电梯设计 目录一、 设计任务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 模拟电梯
2、的程序15摘要: 本设计是使用宏晶公司的stc89c51rc加外围器件作控制单元,用数码管显示,制作的经济实惠的电梯模拟系统。其原理图可分为按键部分、显示部分、电机部分、最小系统部分。两个按键(一个电梯内,一个电梯外)对应一个楼层,另有开门、关门两个按键。芯片一旦检测到某楼层的按键被按下,就会在对应端口输出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的限流电阻
6、。再备用一个led灯。电机部分:用p20和p21输出高低之间去驱动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 key
9、3=p11;sbit key2=p10;sbit 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;unsi
10、gned charyilou=0;unsigned 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(
11、j=0;j121;j+) ; if(p26=0)/如果现在在一楼则显示从一楼到三楼函数 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跳出
12、延时函数 zhengzhuan=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&qusanlou=1); /同时要是内三楼键按下才有效 delay(10); while(key8=0); delay(1000); /如果再次开门就延时1s if(key7=0) delay(10); while(key7=0); i=200;/把i变成200跳出延时函数 if(
13、erlou=1) delay(1000); /在二楼停留多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); /如果再次开门就
14、延时1s if(key7=0) delay(10); 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; /电机停止/-外按二楼
15、函数,不过最后还是到先三楼去-void display2(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=2
16、00;/把i变成200跳出延时函数 zhengzhuan=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
17、(10); while(key7=0); i=200;/把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); /同时要是
18、内二楼键按下才有效 delay(10); while(key8=0); delay(1000); /如果再次开门就延时1s if(key7=0) delay(10); while(key7=0); i=200;/把i变成200跳出延时函数 erlou=0; biaozhi=biaozhi;/为了不让在显示完上升函数时再去显示下降函数 /- / 如果现在是在三楼的话 /- if(p24=0&biaozhi=0) /如果现在在三楼的话则从三楼到二楼再到一楼 p2=0xe0; p0=tab3; for(i=0;i200;i+) for(j=0;j121;j+) if(key8=0&querlou=1
19、); /同时要是内二楼键按下才有效 delay(10); while(key8=0); delay(1000); /如果再次开门就延时1s if(key7=0) delay(10); while(key7=0); i=200;/把i变成200跳出延时函数 zhengzhuan=0; fanzhuan=1; /电机反转 delay(1000); delay(1000); delay(1000); delay(1000);/上一层楼的时间 p2=0xd0; p0=tab2; for(i=0;i200;i+) for(j=0;j121;j+) if(key8=0&querlou=1); /同时要是内
20、二楼键按下才有效 delay(10); while(key8=0); zhengzhuan=0; fanzhuan=0; /电机停止 delay(1000); /如果再次开门就延时1s if(key7=0) delay(10); while(key7=0); i=200;/把i变成200跳出延时函数 zhengzhuan=0; fanzhuan=0; /电机停止 delay(1000); /在二楼停留多2s当模拟有人进出 zhengzhuan=0; fanzhuan=1; /电机反转 delay(1000); delay(1000); delay(1000); delay(1000);/上一层
21、楼的时间 p2=0xb0; p0=tab1; for(i=0;i200;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跳出延时函数 erlou=0; biaozhi=0; querlou=0; zhengzhuan=0; fanzhuan=0; /电机停止/-外按一楼函数-void display1(void) if(qu
22、yilou=1) for(i=0;i500;i+) for(j=0;j121;j+) ; if(p24=0) /如果现在在三楼则显示从三楼到一楼函数 p2=0xe0; p0=tab3; for(i=0;i200;i+) for(j=0;j121;j+) if(key2=0)/判读外二楼有没有人按下 delay(10); while(key2=0); erlou=1; if(key8=0&quyilou=1); /同时要是内一楼键按下才有效 待添加的隐藏文字内容2 delay(10); while(key8=0); delay(1000); /如果再次开门就延时1s if(key7=0) del
23、ay(10); while(key7=0); i=200;/把i变成200跳出延时函数 zhengzhuan=0; fanzhuan=1; /电机反转 delay(1000); delay(1000); delay(1000); delay(1000);/上一层楼的时间 p2=0xd0; p0=tab2; for(i=0;i200;i+) for(j=0;j121;j+) if(key8=0&quyilou=1); /同时要是内一楼键按下才有效 delay(10); while(key8=0); zhengzhuan=0; fanzhuan=0; /电机停止 delay(2000); /如果再
24、次开门就延时2s if(key7=0) delay(10); while(key7=0); i=200;/把i变成200跳出延时函数 if(erlou=1) zhengzhuan=0; fanzhuan=0; /电机停止 delay(1000); /在二楼停留多1s当模拟有人进出 zhengzhuan=0; fanzhuan=1; /电机反转 delay(1000); delay(1000); delay(1000); delay(1000);/上一层楼的时间 p2=0xb0; p0=tab1; for(i=0;i200;i+) for(j=0;j121;j+) if(key8=0&quyilou=1); /同时要是内一楼键按下才有效 delay(10); while(key8=0); delay(2000); /如果再次开门就延时2s if(key7=0) delay(10); while(key7=0); i=200;/把i变成200跳出延时函数 yil
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国微博营销行业市场深度调研及供需与投资价值研究报告
- 2025-2030中国小龙虾加工市场供需平衡及投资前景盈利性研究报告
- 二手房卖方交易流程注意事项
- 《国宝大熊猫》相关的课外实践活动设计
- 师生合作评价在高中英语读后续写中的应用研究
- 年度志愿服务时长证明书(5篇)
- 商业合作信誉度证明书(7篇)
- 重阳节发言稿作文9篇
- 2025年小学健康与营养教育计划
- 《历史时间线探索:高中历史课程教案》
- YOLO目标检测算法的改进与优化
- 《液相色谱-质谱联用》课件
- 大数据与商业决策的应用试题及答案
- 学做卤菜签合同协议
- GB/T 15340-2025天然、合成生胶取样及其制样方法
- 公路法知识培训课件
- 《乡土中国》课件统编版高一语文必修上册
- 马拉松方案策划
- 2025年全国青少年禁毒知识竞赛题库及答案(中学生组)
- 毕业设计(论文)-基于PLC的自动上料系统设计
- 武装部面试题及答案
评论
0/150
提交评论