ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:1.31MB ,
资源ID:5999550      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5999550.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于51单片机与若干传感器的智能开关窗系统课程设计报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于51单片机与若干传感器的智能开关窗系统课程设计报告.docx

1、基于51单片机与若干传感器的智能开关窗系统课程设计报告传感器实验导论课程设计报告基于51单片机与若干传感器的智能开关窗系统基于单片机与若干传感器的智能开关窗系统引言近年来, 随着物联网技术的迅速发展,智能家居成为家庭信息化和社会信息化发展的重要组成部分,智能家居又称智能住宅,当家庭智能网关将家庭中各种各样的家电设备通过家庭总线技术连接在一起时,就构成了功能强大、高度智能化的现代智能家居系统。智能家居强调人的主观能动性,重视人与居住环境的协调,能够随心所欲地控制居住环境。时光飞逝,日夜如梭。智能家居系统在经历了早期混乱的概念纷争之后,目前已经逐渐进入理性时代。如今的智能家居市场已经不再是海尔、微

2、软等专业家电控制和IT厂家的天下,越来越多的楼宇对讲厂商开始涉及并深入到智能家居行业,猛烈地冲击着楼宇对讲市场格局,从而使得市场竞争更加激烈。尽管如此,用户的需求才是第一位的,所以各厂家的产品研发主要以市场需求为导向。由于我国房地产行业的迅速发展,也带动了我国门窗幕墙行业的迅速发展,随着消费者生活水平的提高,智能化的产品如雨后春笋,正逐步发展和壮大。而我们的智能窗户就是在这样的环境下应运而生的,因此具有广阔的市场空间和应用前景。第一章 总体设计方案本次设计以51单片机作为微控制器,使用DS18B2温度传感器、光敏电阻、雨水传感器采集窗户内外的温度、光照、是否下雨等信息,进而使用ULN2003达

3、林顿陈列驱动四相五线步进电机带动窗户的打开与关闭。系统设计主要分为以下几个部分:单片机和控制电路、温度检测电路、光照检测电路、雨水检测电路、电机驱动电路。整个系统的系统框图如下:我们本次课程设计目标是当温度在20到30度之间、光照充足且无雨的情况下,窗户关闭,液晶显示OFF;三个条件有一个不满足则窗户打开,液晶显示ON。第二章 硬件原理与介绍本人在这次课设中负责步进电机驱动及控制模块的电路设计与相关程序的编写以及LCD1602液晶的程序控制,因此本部分将着重介绍步进电机模块与LCD1602液晶的相关硬件原理。一、 28BYJ-48步进电机2.1.1 步进电机的工作原理步进电机是一种将电脉冲转化

4、为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。可以通过控制脉冲个来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。本次设计是采用步进电机28BYJ48型四相八拍电机,电压为DC5VDC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。四相步进电机可以在不同的通电方式下运行,常见

5、的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。),双(双相绕组通电)四拍(AB-BC-CD-DA-AB-。),八拍(A-AB-B-BC-C-CD-D-DA-A。)。四相步进电机原理图其相序分配表如下:2.1.2 步进电机24BYJ48的相关电气参数1.额定电压:12VDC(另有电压:5V、6V、24V)2.相数:43.减速比:1/64(另有减速比:1/16、1/32)4.步距角:5.625/645.驱动方式:4相8拍6.直流电阻:2007%(25)(按客户要求而定:80、130欧姆)7.空载牵入频率:600Hz8.空载牵出频率:1000Hz9.牵入转矩:34.3mN.m(120Hz)

6、10.自定位转矩:34.3mN.m11.绝缘电阻:10M(500V)12.绝缘介电强度:600VAC/1mA/1S13.绝缘等级:A14.温升:50K(120Hz)15.噪音:40dB(120Hz)16.重量:大约40g17.未注公差按:GB1804-m18.转向:CCW2.1.3 步进电机的基本术语2.1.3.1 相数产生不同对极N、S磁场的激磁线圈对数,常用m表示。2.1.3.2 拍数完成一个磁场周期性变化所需脉冲数或导电状态用n表示,或指电机转过一个齿距角所需脉冲数,比如说本次设计中使用的24BYJ48有单(单相绕组通电)四拍(A-B-C-D-A。),双(双相绕组通电)四拍(AB-BC-

7、CD-DA-AB-。),八拍(A-AB-B-BC-C-CD-D-DA-A。)2.1.3.3 步距角对应一个脉冲信号,电机转子转过的角位移用表示。=360度(转子齿数J*运行拍数),以常规二相,转子齿为50齿电机为例。四拍运行时步距角为=360度/(50*4)=1.8度(俗称整步),八拍运行时步距角为=360度/(50*8)=0.9度(俗称半步)。2.1.3.4 信号分配四相步进电机按照其通电方式的不同,可以分为单四拍,双四拍和双八拍三种工作方式。单四拍与双四拍的步距角相等,均为11.25度,而八拍的步距角则是单四拍与双四拍的一半,5.625度。单(单相绕组通电)四拍(A-B-C-D-A。),双

8、(双相绕组通电)四拍(AB-BC-CD-DA-AB-。),八拍 (A-AB-B-BC-C-CD-D-DA-A。)。这里选取的是单双八拍的工作方式。由于步进电机的驱动电流较大,单片机不能直接驱动,一般都是使用ULN2003达林顿阵列驱动,当然,使用下拉电阻或三极管也是可以驱动的,只不过效果不是那么好,产生的扭力比较小。 二、 ULN2003达林顿陈列芯片步进电机的驱动采用ULN2003芯片。ULN2003 是高耐压、大电流达林顿陈列, 由七个硅 NPN 达林顿管组成。 ULN2003 的每一对达林顿都串联一个 2.7K 的基极电阻 , 在 5V 的工作电压下它能与 TTL 和 CMOS 电路直接

9、相连, 可以直接处理原先需要标准逻辑缓冲器来处理的数据。 ULN2003 工作电压高, 工作电流大, 灌电流可达 500mA , 并且能够在关态时承受 50V 的电压, 输出还可以在高负载电流并行运行。采用DIP-16或者SOP-16塑料封装。其引脚及内部原理图如下: 本设计中实验1、2、3、4脚做输入端,16、15、14、13做相对应的输出端,起到放大的作用,以驱动电机。ULN2003的典型应用电路如下图:三、LCD1602液晶1602液晶也叫1602字符型液晶 它是一种专门用来显示字母、数字、符号等的点阵型液晶模块 它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个

10、字符。目前市面上字符液晶绝大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。其各引脚功能见下图:其典型接口电路如下图:其基本操作时序为: 读状态 输入:RS=L,RW=H,E=H 输出:DB0DB7=状态字 写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无 读数据 输入:RS=H,RW=H,E=H 输出:DB0DB7=数据 写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无第三章 各模块硬件设计本人在这次课设中负责步进电机驱动及控制模块的电路设计与

11、相关程序的编写以及LCD1602液晶的程序控制,因此本部分将介绍步进电机模块与LCD1602液晶的电路设计。一、步进电机驱动及接口电路本电路模块用于单片机对步进电机的控制及使用ULN2003芯片对步进电机进行驱动。 原理图如下:由于所选24BYJ48步进电机为四相步进电机,故只需4个单片机IO口控制,此处使用单片机的IO口P1.0-P1.3,使用ULN2003的引脚1-4做输入,16-13引脚做输出口。二、按键电路(用于扩展功能) 本次设计为了便于今后功能扩展使用了8个按键。 原理图如下: 这次课设中我们使用了两个按键,分别用于控制电机点动正转、点动反转。三、1602液晶接口电路 1602液晶

12、接口电路原理图如下:本电路用于连接1602液晶,P2.0P2.2分别接RS、RW、EN,P0口接数据指令输入口,10K欧可调电阻用于调节液晶的对比度第四章 程序设计本人在这次课设中负责步进电机驱动及控制模块的电路设计与相关程序的编写以及LCD1602液晶的程序控制,因此本部分将介绍步进电机的编程控制方法与LCD1602液晶的编程控制。 开 关 是 否 否 是 一、总体程序流程图 我们的主程序设计目标是当温度在20到30度之间、光照充足且无雨的情况下,窗户关闭,液晶显示OFF;三个条件有一个不满足则窗户打开,液晶显示ON。二、步进电机的编程控制方法控制步进电机的关键是利用控制脉冲的快慢、顺序、个

13、数来调节电机转速、正反转、转动角度等状态。步进电机28BYJ48型四相八拍电机,电压为DC5VDC12V。当对步进电机施加一系列连续不断的控制脉冲时,它可以连续不断地转动。每一个脉冲信 号对应步进电机的某一相或两相绕组的通电状态改变一次,也就对应转子转过一定的角度(一个步距角)。当通电状态的改变完成一个循环时,转子转过一个齿距。 四相步进电机可以在不同的通电方式下运行,常见的通电方式有单(单相绕组通电)四拍(A-B-C-D-A。),双(双相绕组通电)四拍(AB-BC- CD-DA-AB-。),八拍(A-AB-B-BC-C-CD-D-DA-A。)。这里我们采用的通电方式是四相单双八拍,各相电平与

14、十六进制相序对应如下表所示:橙黄粉蓝十六制(P1口)10000xf811000xfc01000xf401100xf600100xf200110xf300010xf110010xf9所以可以定义旋转相序uchar code FFW8=0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9; /正转相序编码表uchar code REV8=0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1;/反转相序编码表下面这段程序是我们程序中的步进电机控制部分,它可以实现控制电机的正转或反转45度,以此代表窗户打开或关闭。 if(z1flag=0) /电机反

15、转,窗户打开 for(;num20;num2-) if(v0;num2-) if(v8) P1 = FFWv;v+; if(v=8) v=0; delaynms(15); num2=512; /转45度 state=1; z2flag=1; 电机转一圈即360度需要64*64=4096个脉冲,所以要想电机转45度,需要4096/8=512个脉冲,这里用num2=512来控制电机转45度。三、 LCD1602液晶的编程控制显示流程图如图3.4所示,流程图分析如下:首先对1602显示屏进行初始化(初始化大约持续10ms),然后检查忙信号,若BF=0,则获得显示RAM地址,写入相应的数据显示。若BF

16、=1,则代表模块正在进行内部操作,不接受任何外部指令和数据,直到BF=0为止。LCD显示程序流程图LCD1602基本操作时序为: 读状态 输入:RS=L,RW=H,E=H 输出:DB0DB7=状态字 写指令 输入:RS=L,RW=L,E=下降沿脉冲,DB0DB7=指令码 输出:无 读数据 输入:RS=H,RW=H,E=H 输出:DB0DB7=数据 写数据 输入:RS=H,RW=L,E=下降沿脉冲,DB0DB7=数据 输出:无第五章 心得体会为其近半个学期的传感器课程设计结束了,在这期间我收获了很多,感到很有意义。这次课设我主要负责的是步进电机模块的电路设计及软件编程,另外我还学习了LCD160

17、2液晶显示的编程控制方法。早在大二自学单片机时我就注意到步进电机这种器件,但当时只是略作了解,没有学习它的原理与编程控制,这次借课程设计的机会,我得以对步进电机进行了较为深入的了解和学习。在课设的前期我通过查阅了许多资料,学习了步进电机的工作原理。之后我开始考虑整体硬件电路的设计,显示、驱动电路的设计,最终选择使用28BYJ48型步进电机、ULN2003驱动芯片、1602液晶显示。在这之后我开始考虑要实现的电机功能,在完成了原理图与PCB图绘制、电路元件焊接后,我开始着手进行程序设计。我与我们组负责传感器和单片机电路部分的同学反复讨论,对程序不断修改、调试,最终,完成了预想的目标。我认为智能开

18、关窗系统这个课题,既包含多种传感器能够充分地检验我们这学期传感器课程的学习成果,又十分具有应用价值。通过这次课设我得以学习到了步进电机的工作原理与编程控制方法,以及光敏、雨水、温度等几种传感器的使用方法。另外,在这次课设过程中涉及的LCD1602控制等内容也对我很有帮助。通过本次课设我对51单片机的编程控制、定时器中断等知识也得到了充分的复习巩固。总之,这次课设让我受益匪浅,感谢杨老师一学期来传感器课程的悉心教导,这对我们的课设得以顺利完成很有帮助。附件一、 电路原理图最小系统与步进电机模块光敏电阻模块二、 电路PCB图三、 电路实物图总体电路(所有器件):步进电机板:四、 源程序#inclu

19、de /包含单片机寄存器的头文件#include /包含_nop_()函数定义的头文件#define uchar unsigned char#define uint unsigned intuchar code digit10=0123456789; /定义字符数组显示数字uchar code Str=state:; /说明显示的是温度uchar code Error=Error!Check!; /说明没有检测到DS18B20uchar code Temp=Temp: ; /说明显示的是温度uchar code Cent=Cent; /温度单位uchar code winon=ON ; uch

20、ar code winoff=OFF; uchar code FFW8=0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9; /正转相序编码表uchar code REV8=0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1;/反转相序编码表uchar z1flag=1; uchar z2flag=1; uchar state=1; /窗户开uchar templ=20;uchar temph=30;/uint num1=2;uint num2=512;sbit yu = P35;sbit light=P36;/*以下是对液晶模块的操作程

21、序*/sbit RS=P20; /寄存器选择位,将RS位定义为P2.0引脚sbit RW=P21; /读写选择位,将RW位定义为P2.1引脚sbit E=P22; /使能信号位,将E位定义为P2.2引脚sbit BF=P07; /忙碌标志位,将BF位定义为P0.7引脚/*函数功能:延时1ms(3j+2)*i=(333+2)10=1010(微秒),可以认为是1毫秒*/void delay1ms() unsigned char i,j; for(i=0;i4;i+) for(j=0;j33;j+) ; /*函数功能:延时若干毫秒入口参数:n*/ void delaynms(unsigned cha

22、r n) unsigned char i; for(i=0;in;i+) delay1ms(); /*函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙*/bit lcd_busy(void) bit result; RS=0; /根据规定,RS为低电平,RW为高电平时,可以读状态 RW=1; E=1; /E=1,才允许读写 _nop_(); /空操作 _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 result=BF; /将忙碌标志电平赋给result E=0; /将E恢复低电平 return re

23、sult; /*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate*/void lcd_wcmd (unsigned char dictate) while(lcd_busy()=1); /如果忙就等待 RS=0; /根据规定,RS和R/W同时为低电平时,可以写入指令 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0 _nop_(); _nop_(); /空操作两个机器周期,给硬件反应时间 P0=dictate; /将数据送入P0口,即写入指令或地址 _nop_(); _nop_(); _nop_();

24、_nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:指定字符显示的实际地址入口参数:x*/ void lcd_pos(unsigned char x) lcd_wcmd(x|0x80); /显示位置的确定方法规定为80H+地址码x /*函数功能:将数据(字符的标准ASCII码)写入液晶模块入口参数:y(为字符常量)*/ void lcd_wdat(unsigned char y) w

25、hile(lcd_busy()=1); RS=1; /RS为高电平,RW为低电平时,可以写入数据 RW=0; E=0; /E置低电平(根据表8-6,写指令时,E为高脉冲, / 就是让E从0到1发生正跳变,所以应先置0 P0=y; /将数据送入P0口,即将数据写入液晶模块 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=1; /E置高电平 _nop_(); _nop_(); _nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间 E=0; /当E由高电平跳变成低电平时,液晶模块开始执行命令 /*函数功能:对LCD的显示模式进行初始化设置*/void lcd_init(void) delaynms(15); /延时15ms,首次写指令时应给LCD一段较长的反应时间 lcd_wcmd(0x38); /显示模式设置:162显示,57点阵,8位数据接口 delaynms(5); /延时5ms,给硬件一点反应时间 l

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1