欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    基于单片机的5层电梯控制系统设计资料.doc

    • 资源ID:4958013       资源大小:652.31KB        全文页数:40页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机的5层电梯控制系统设计资料.doc

    微机原理及接口技术课 程 设 计 说 明 书设计题目:基于单片机的5层电梯控制系统设计设计人: 指导教师: 专业班级: 电子信息工程20133 所在学院: 电子通信与物理学院 2006年7月课程设计任务书 专业 电子信息工程 班级 20133 学生 1设计题目:基于单片机的5层电梯控制系统设计 2设计专题: 3设计原始资料: 1 谭浩强 C程序设计(第三版) 清华大学出社; 2何宾 STC单片机原理及应用 清华大学出版社; 3 王选民 智能仪器原理及设计 清华大学出版社. 4设计应解决的主要问题: 1>选择单片机及必备外设,设计5层电梯控制系统。 2>系统实现5层电梯的上下、开关门、异常报警等。3>系统日历、温湿度检测等功能。 5附件: protues,keil,程序 6命题发出日期: 2006.7.3 设计完成日期: 2006.7.14 指导教师(签章): 系主任(签章): 指导教师对课程设计的评语 指导教师(签章): 日期: 山东科技大学 微机原理及其接口技术课程设计说明书 目录摘要 摘要 随着社会的不断发展,楼房越来越高,而电梯则成了高层楼房的必须设备。电梯从手柄开关操纵电梯、按钮控制电梯发展到了现在的群控电梯,为高层运输做出了不可磨灭的贡献。 单片机在电梯升降控制上的应用主要体现在它的逻辑开关控制功能。由于单片机具有逻辑运算,计数和定时以及数据输入输出的功能,在电梯升降过程中,各种逻辑开关控制与单片机很好的结合,很好的实现了对升降的控制。同时,电梯中可以显示温湿度以及实时时间,为人们的出行乘坐电梯提供了方便。因此设计出一款基于单片机的电梯控制系统,并显示精度高、稳定性好、能报警的温湿度显示系统及电子万年历具有重要实际意义。关键字AT89C51;AT89C52;ULN2003A,CD4511,SHT10,DS1302目录一、 温湿度显示报警系统及电子万年历的设计1、 确定设计方案.31.1温湿度显示报警系统的设计方案.31.2电子万年历的设计方案.32、 逻辑总框图.43、 系统硬件电路的设计.53.1主控制电路.53.2振荡电路.53.3复位电路.63.4温湿度测量及传感器介绍.63.5电子万年历时钟芯片介绍.83.6显示电路.93.7报警电路.104、 仿真与调试.114.1温湿度仿真原理图.114.2电子万年历仿真原理图.11二、 电梯控制系统的设计1、 方案论证.122、 电梯控制器原理图.133、 电梯硬件电路的设计.133.1单片机最小系统.133.2电梯外部电路.143.3电机驱动电路.153.4楼层显示电路.154、 调试.16三、 总结体会.17四、 参考文献.18五、附录(程序)山东科技大学 微机原理及其接口技术课程设计说明书 图表等的说明摘要 摘要:随着社会的不断发展,楼房越来越高,而电梯则成了高层楼房的必须设备。电梯从手柄开关操纵电梯、按钮控制电梯发展到了现在的群控电梯,为高层运输做出了不可磨灭的贡献。 单片机在电梯升降控制上的应用主要体现在它的逻辑开关控制功能。由于单片机具有逻辑运算,计数和定时以及数据输入输出的功能,在电梯升降过程中,各种逻辑开关控制与单片机很好的结合,很好的实现了对升降的控制。同时,电梯中可以显示温湿度以及实时时间,为人们的出行乘坐电梯提供了方便。因此设计出一款基于单片机的电梯控制系统,并显示精度高、稳定性好、能报警的温湿度显示系统及电子万年历具有重要实际意义。关键字AT89C51;AT89C52;ULN2003A , CD4511,SHT10,DS1302一、 温湿度显示报警系统及电子万年历的设计1、 确定设计方案1.1温湿度显示报警系统的设计方案温湿度报警系统的设计以单片机AT89C51为核心,利用温湿度传感器SHT10,通过控制单片机的P1口的一些端口来调节当前温湿度的显示,完成了温湿度的显示报警功能,在程序中设置温湿度范围后,达到指定范围后让LED灯的闪亮来实现温湿度控制的效果,让LED1602液晶屏接到单片机的串口上,赋值来控制1602的显示。整个方案设计包含四个部分,即:单片机最小系统部分、显示部分、温湿度数据采集部分、报警部分。1.2电子万年历的设计方案电子万年历,系统分为主控模块、时钟电路模块、按键扫描模块,LCD显示模块,电源电路、复位电路、晶振电路等模块。主控模块采用AT89C52单片机,按键模块用四个按键,用于调整时间,显示模块采用LCD1602,显示功能强大,利于控制。时钟电路模块采用DS1302时钟芯片实现对时间、日期的操作。2、逻辑总框图:温湿度报警系统的总体设计框图如下图所示万年历的总体设计框图如下图所示。3 系统硬件电路的设计3.1主控制系统温湿度报警系统选用AT89C51单片机作为中央处理器。电子万年历选用AT89C52单片机作为中央处理器。3.2振荡电路振荡电路图(3)所示,时钟振荡电路用于产生单片机正常工作时所需要的时钟信号,电路由两个30pF的瓷片电容和一个12MHz的晶振组成,并接入到单片机的XTAL1和XTAL2引脚处,使单片机工作于内部振荡模式。此电路在加电后延迟大约10ms振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率主要由石英晶振的频率决定。电路中两个电容C1、C2的作用使电路快速起振,提高电路的运行速度。 图(3)时钟振荡电路图 图(4) 复位电路3. 3复位电路 复位RST 9  在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。 34 温湿度测量发布一组测量命令(00000101表示相对湿度RH,00000011表示温度T)后,控制器要等待测量结束。这个过程需要大约20/80/320ms,分别对应8/12/14bit 测量。确切的时间随内部晶振速度,最多可能有-30%的变化。SHT10通过下拉DATA 至低电平并进入空闲模式,表示测量的结束。由于实际温度与测试参考温度25 (77)的显著不同, 湿度信号需要温度补偿。温度校正粗略对应于0.12%RH/50%RH。        true C 1 2 RH linear RH = T  25  t + t SO + RH °SHT10引脚(1) 电源引脚VDD、GND (2) 串行时钟输入SCK(3) 串行数据 DATA时钟电路主要由时钟芯片DS1302、备用电池、晶振等几部分组成。 图(5) DS1302管脚图 图(6) DS1302时钟电路DS1302各引脚的功能为:8: Vcc1:备用电池端;1: Vcc2:5V电源。7: SCLK:串行时钟,输入;  6: I/O:数据输入输出口;5: CE/RST:复位脚;2、3: X1、X2 是外接晶振脚 (32.768KHZ的晶振);4: 地(GND)。DS1302有关日历、时间的寄存器:3.6显示电路1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。7、报警电路图 当启动仿真程序时,用手调节传感器上的按键时,可以调节温度与湿度的数据转换和相应的温湿度显示数据的递增或递减。4、 仿真与调试4.1温湿度仿真原理图4.2电子万年历仿真原理图二、 电梯控制系统的设计1、 系统方案论证 按照题目要求,电梯控制系统由中心控制模块、用户选择楼层输入模块、电机控制与驱动模块和显示等组成。 方案一 采用CPLD 器件作为控制中心,对整个系统的运作进行统一管理,但这种方案要求平时有很多的知识积累和较强的专业水平,实现起来比较困难且器件较贵,不符合经济要求,而且升降电机的控制,运行时间的测量、显示等还需要单片机的配合。 方案二 采用单片机为核心,扩展相关的接口电路,实现全系统的控制,由于单片机技术目前较为成熟,自身资源丰富,硬件设计简单,并且我们在设计中尽量用软件代替硬件,可以节约成本,提高可靠性。另外单片机小系统价格便宜,符合经济性要求。同时电梯采用步进电机进行驱动,因为步进电机可经直接接收数字信号,用单片机控制非常方便,定位准确,调速简单。比较适合此控制系统的要求。2、 电梯控制器原理框图3、 电梯硬件电路的设计3.1单片机最小系统图3.1单片机最小系统单片机最小系统电路如图3-1所示,单片机采用ATMEL公司的AT89C51,晶体振荡器选12MHz,C1、C2为30p瓷片电容,与晶体振荡器构成时钟电路。电容C3按键RESET构成上电复位和手动复位电路。3.2电梯外部电路图3.2矩阵键盘电路 该矩阵键盘由14个按键组成,电源处接上拉电阻。第一排(F1、F2、F3、F4、F5)分别代表,进入电梯内部选择目的楼层;第二排(U1、U2、U3、U4、START)分别代表电梯外部一楼至四楼选择电梯上升以及电梯开动;第三排(D2、D3、D4、D5)代表二楼至五楼选择电梯下降。程序编写的时候采用列扫描法,若某一列有按键按下,通过延时消抖再次判断,相应的行线端口电平被拉低,若无键按下,则行线一直保持高电平。如图3.2所示。3.3电机驱动电路图3.3 电机驱动电路此次采用了步进电机,步进电机驱动为ULN2003,工作时耐高压、大电流,灌电流可达500mA,并且能够在关态时承受50V的电压,输出还可以在高负载电流并行运行。通过软件部分控制电机正转反转,实现电梯的升降。3.4楼层显示电路图3.4 楼层显示电路 楼层显示部分采用了七段共阴极数码管,由显示译码器CD4511驱动。到达指定楼层将对应楼层的代码发送给CD4511,再转译给数码管显示。其中A、B、C、D为输入端口,QA、QB、QC、QD、QE、QF、QG为输出端口。BI是消隐输入控制端,BI为0时,数码管处于熄灭状态,不显示数字;BI为1时,显示数字。LT为测试输入端,当BI=1,LT=0时,译码输出全为1,不管ABCD的输入状态,七段均发亮;BI=1,LT=1则正常译码显示。LE为锁定控制端,当LE=0时允许译码输出,LE=1时则保持之前状态。4、 调试 首先按照最初电路设计进行连接电路,然后写入程序,再运行测试。分别按下不同的键(不同楼层、上升或下降)测试显示情况,出现错误则查电路、找程序,直至修改运行成功。三、总结与体会 通过这次课程设计,我们了解了基于51单片机的模拟电梯的相关设计,也掌握了51单片机相关应用,对以后的单片机深入学习及应用打下基础。此次设计要求软硬件结合,使我们懂得了硬件设计与软件编程同样重要。硬件设计中的不足对软件仿真结果有极大的影响,然而软件设计运行的不足同样不能仿真成功,所以两方面都要学好,都要弄懂,才能软硬结合,实现更好地结果。此次课程设计我们三人一组分别不同的部分,其中靳湘楠负责电梯内部温湿度的检测实现,使电梯更人性化;常艳慧负责万年历时间的显示部分,给乘客带来方便;王光彩负责电梯控制部分,实现电梯的正常运行。三人一组分工明确,相互帮助,实现了最终的结果。当然,我们的设计也存在一些不足,电梯上下行的优先顺序没能实现,超重检测部分、报警部分都可以加以实现,由于时间紧迫,截止交课程设计报告只能进行至此。不过还是要感谢老师的帮助,最终实现了电梯功能。36山东科技大学 微机原理及其接口技术课程设计说明书 参考文献参考文献1 谭浩强 C程序设计(第三版) 清华大学出版社2 何宾 STC单片机原理及应用 清华大学出版社3 王选民 智能仪器原理及设计 清华大学出版社山东科技大学 微机原理及其接口技术课程设计说明书 致谢致谢页面页眉设置、字体、字号、打印格式同论文主体部分。2、温湿度显示#include<reg52.h>#include<intrins.h>#include<stdio.h>#include<string.h>#include<absacc.h>#include<math.h>#define uchar unsigned char#define uint unsigned int #define TEMPUP 28 /温度上限#define TEMPDOWN 0 /温度下限#define HUMDOWN 70 /湿度上限#define HUMUP 10 /湿度下限sbit LcdRs=P20; /1602液晶端口定义sbit LcdRw=P21; sbit LcdEn=P22;sbit led1=P30;/报警灯端口定义sbit led2=P34;sbit ACC0=ACC0;sbit ACC7=ACC7;bit start;uchar str7;#define LCD_COMMAND 0 /命令#define LCD_DATA 1 /数据#define LCD_CLEAR_SCREEN 0x01 /清屏#define LCD_HOMING 0x02 /光标返回原点/设置显示模式*#define LCD_SHOW 0x04 /显示开#define LCD_HIDE 0x00 /显示关#define LCD_CURSOR 0x02 /显示光标#define LCD_NO_CURSOR 0x00 /无光标 #define LCD_FLASH 0x01 /光标闪动 #define LCD_NO_FLASH 0x00 /光标不闪动/设置输入模式*#define LCD_AC_UP 0x02 #define LCD_AC_DOWN 0x00 #define LCD_MOVE 0x01 /画面可平移#define LCD_NO_MOVE 0x00unsigned char LCD_Wait(void);void LCD_Write(bit style,unsigned char input);/*1602液晶显示部分子程序*/void delay(uint z) /延时函数uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void LCD_Write(bit style,unsigned char input)LcdRs=style;P0=input;delay(5);LcdEn=1;delay(5);LcdEn=0;void LCD_SetDisplay(unsigned char DisplayMode) /设置输出LCD_Write(LCD_COMMAND,0x08|DisplayMode); void LCD_SetInput(unsigned char InputMode) /设置输入LCD_Write(LCD_COMMAND,0x04|InputMode); void LCD_Initial() /初始化LCD函数LcdEn=0;LCD_Write(LCD_COMMAND,0x38); /8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); /开启显示,无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC递增,画面不动 void GotoXY(unsigned char x,unsigned char y)/液晶字符输入的位置if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);void Print(unsigned char *str) /将字符输出到液晶显示while(*str!='0')LCD_Write(LCD_DATA,*str);str+; void zhuanhuan(float a)/浮点数转换成字符串函数memset(str,0,sizeof(str);sprintf(str,"%f",a);void welcome()/初始界面函数LCD_Initial();GotoXY(0,0);Print("Welcome!");GotoXY(0,1);Print("Code of sht10");delay(200);void delay_n10us(uint n) /延时n个10us12M晶振uint i;for(i=n;i>0;i-)nop_();_nop_();_nop_();_nop_();_nop_();_nop_(); /*第一部分LCD1602设置 END*/*第二部分SHT10设置 START*/sbit SCK=P10;/定义通讯时钟端口sbit DATA=P11;/定义通讯数据端口typedef unionunsigned int i; /定义了两个共用体 float f;value;enum TEMP,HUMI; /TEMP=0,HUMI=1 #define noACK 0 /用于判断是否结束通讯#define ACK 1 /结束数据传输#define STATUS_REG_W 0x06 /000 0011 0#define STATUS_REG_R 0x07/000 00111#define MEASURE_TEMP 0x03/000 0001 1#define MEASURE_HUMI 0x05/000 0010 1#define RESET 0x1e /000 1111 0/*定义函数*/void s_transstart(void); /启动传输函数void s_connectionreset(void); /连接复位函数char s_write_byte(unsigned char value); /SHT10写函数char s_read_byte(unsigned char ack); /SHT10读函数char s_measure(unsigned char*p_value,unsigned char*p_checksum,unsigned char mode); /测量温湿度函数void calc_dht90(float*p_humidity,float*p_temperature); /温湿度补偿void s_transstart(void)DATA=1;SCK=0; /Initial state_nop_();SCK=1;_nop_();DATA=0;_nop_();SCK=0;_nop_();_nop_();_nop_();SCK=1;_nop_();DATA=1;_nop_();SCK=0;void s_connectionreset(void) /连接复位函数unsigned char i;DATA=1;SCK=0; /Initial state for(i=0;i<9;i+) /9 SCK cyclesSCK=1;SCK=0;s_transstart(); /transmission start char s_write_byte(unsigned char value) /SHT10写字节函数 unsigned char i,error=0;for(i=0x80;i>0;i/=2) /shift bit for masking if (i&value) DATA=1;/masking value with i,write to SENSI-BUS else DATA=0; SCK=1; /clk for SENSI-BUS_nop_();_nop_();_nop_();/pulswith approx.3 usSCK=0;DATA=1; /release DATA-line SCK=1; /clk#9 for ack error=DATA; /check ack (DATA will be pulled down by DHT90),DATA在第9个上升沿将被DHT90自动下拉为低电平。_nop_();_nop_();_nop_(); SCK=0; DATA=1; /release DATA-line return error; /error=1 in case of no acknowledge /返回:0成功,1失败/*SHT10 读函数reads a byte form the Sensibus and gives an acknowledge in case of"ack=1"*/char s_read_byte(unsigned char ack)unsigned char i,val=0;DATA=1; /release DATA-linefor(i=0x80;i>0;i/=2) /shift bit for masking SCK=1; /clk for SENSI-BUSif(DATA) val=(val|i); /read bit _nop_();_nop_();_nop_(); /pulswith approx.3 usSCK=0;if(ack=1)DATA=0; /in case of"ack=1"pull down DATA-Lineelse DATA=1; /如果是校验(ack=0),读取完后结束通讯_nop_();_nop_();_nop_();SCK=1;_nop_();_nop_();_nop_();/pulswith approx.usSCK=0;_nop_();_nop_();_nop_();/pulswith approx.3 usDATA=1; /release DATA-linereturn val;char s_measure(unsigned char*p_value,unsigned char*p_checksum,unsigned char mode)unsigned error=0;unsigned int i;s_transstart();switch(mode)case TEMP:error+=s_write_byte(MEASURE_TEMP);break;case HUMI:error+=s_write_byte(MEASURE_HUMI);break;default:break;for(i=0;i<65535;i+) if(DATA=0) break;if(DATA) error+=1;*(p_value)=s_read_byte(ACK);*(p_value+1)=s_read_byte(ACK);*p_checksum=s_read_byte(noACK);return error; void calc_sht90(float*p_humidity,float*p_temperature)/温湿度补偿函数const float C1=-4.0;const float C2=+0.0405;const float C3=-0.0000028; const float T1=+0.01; const float T2=+0.00008;float rh=*p_humidity; /rh:Humidity Ticks 12 Bit float t=*p_temperature; /t:Temperature Ticks 14 Bit float rh_lin; /rh_lin:Humidity linearfloat rh_true; /rh_true: Temperature compensated humidityfloat t_C;/t_C:TemperatureCt_C=t*0.01-40; /calc.temperature from ticks to Crh_lin=C3*rh*rh+C2*rh+C1;/calc.humidity from ticks to%RHrh_true=(t_C-25)*(T1+T2*rh)+rh_lin;/calc.temperature compensated humidity %RHif(rh_true>100)rh_true=100; /cut if the value is outside ofif(rh_true<0.1)rh_true=0.1;/the physical possible range*p_temperature=t_C; /return temperature C*p_humidity=rh_true; /return humidity%RH/*第二部分SHT10设置END*/*主函*/void main(void)value humi_val,temp_val;unsigned char error,checksum,i;LcdRw=0;led1=0;led2=0;start=0;s_connectionreset();welcome(); /显示欢迎画面delay(2000);LCD_Initial();while(1)error=0;error+=s_measure(unsigned char*)&humi_val.i,&checksum,HUMI);error+=s_measure(unsigned char*)&temp_val.i,&checksum,TEMP);if(error!=0)s_connectionreset();elsehumi_val.f=(float)humi_val.i;temp_val.f=(float)temp_val.i;calc_sht90(&humi_val.f,&temp_val.f);/计算湿度与温度GotoXY(0,0);Print("Tep:");GotoXY(0,1);Print("Hum:");zhuanhuan(temp_val.f);/转换温度为uchar方便液晶显示GotoXY(5,0);str5=0xDF;/的符号str6=0x43;str7='0'Print(str);if(temp_val.f>TEMPUP-1|temp_val.f<TEMPDOWN-1)led1=1;elseled1=0;zhuanhuan(humi_val.f);/转换湿度为uchar方便液晶显示GotoXY(5,1);str5='%'/%的符号str6='0'/字符串结束标志Print(str);if(humi_val.f>HUMUP-1|humi_val.f<HUMDOWN-1)led2=1;elseled2=0; delay_n10us(80000); /延时约0.8s 3、万年历#include <reg51.h>#include <intrins.h>#include <string.h>#define uint unsigned int

    注意事项

    本文(基于单片机的5层电梯控制系统设计资料.doc)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开