基于单片机的卷动窗帘设计.docx
《基于单片机的卷动窗帘设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的卷动窗帘设计.docx(23页珍藏版)》请在冰豆网上搜索。
基于单片机的卷动窗帘设计
河南理工大学
《单片机应用与仿真训练》设计报告
题目:
基于单片机的遥控窗帘设计
姓名:
张光辉闫玖波______
学号:
311008002724311008002728
专业班级:
电信10-5班___________
指导老师:
刘巍____________
所在学院:
_电气工程与自动化学院___
2013年3月10日
摘要
本设计是基于单片机的遥控窗帘设计,采用低功耗、高性能CMOS8位微控制器STC89C5;通过键盘控制或者远程遥控可以实现对窗帘的遥控;利用直流电机正、反转,以控制窗帘的上升和下降;并通过霍尔传感器的反馈信号对窗帘位置进行检测并控制其运行状态,以防止窗帘在上升或下降过程中发生过卷,损害窗帘设备。
在设计中,直流电机用专用的驱动集成芯片电路L298N驱动,L298N属于H桥集成电路,输出电流大,功率强,最大输出功率200W。
软件设计上有核心板的二极管显示窗帘的运行状态。
无线遥控是由PT2262/PT2272编码解码芯片组成的无线发送接收模块,通过PT2272接收输出端A,B,C输出信号控制单片机,通过监控指令键盘的输入读出相应的发射码,软件采用不同的脉冲宽度来对发射码进行编码。
单片机通过软件对接收到的数据进行解码,还原出发送端的数据,准确地控制电动机动作。
同时,根据磁钢接近霍尔器件的感应面输出外部脉冲,由于磁钢的磁场强度与距离成正相关的关系,当窗帘开幕或关幕到尽头的时候,磁场增强会使霍尔传感器发出一个交替变化的电平信号,这个信号可以直接送到单片机中,通过单片机收到信号电平的改变,对电机发出停止信号,最终达到防过卷的功能,从而控制窗帘的停止。
实现窗帘的智能控制,使人们能够更好地享受到现代科技进步为人们生活带来的方便。
关键字:
STC89C52无线控制PT2262/PT2272霍尔传感器L298N直流电机
1.概述……………………………………………………………………3
1.1课程设计的背景及意义……………………………………………3
1.2课程设计的目的及要求……………………………………………3
2.系统总体方案及硬件设计……………………………………………4
2.1系统总体方案………………………………………………………4
2.2单片机控制模块……………………………………………………4
2.3电机驱动模块………………………………………………………7
2.4无线模块……………………………………………………………8
2.5防过卷模块…………………………………………………………8
3.软件设计………………………………………………………………10
3.1系统程序流程图……………………………………………………10
3.2各个元件的定义……………………………………………………10
3.3有线及无线键盘的扫描……………………………………………11
3.4初始化程序…………………………………………………………12
4.Proteus软件仿真……………………………………………………13
4.1Proteus软件介绍…………………………………………………13
4.2Proteus仿真………………………………………………………13
5.课程设计体会…………………………………………………………15
参考文献……………………………………………………………………16
附1:
源程序代码…………………………………………………………17
附2:
系统原理图…………………………………………………………20
1概述
1.1课程设计的背景及意义
随着社会信息化的加快,人们的工作,生活和通讯,信息的关系日益紧密。
信息化的社会在改变人们的生活方式与工作习惯的同时,也对传统的住宅提出了挑战,社会,技术以及经济的进步更使人们的观念随之剧变。
人们对家居的要求早已不只是物理空间,更为关注的一个安全,方便,舒适的居家环境。
近几年来,随着科学技术的发展和人民生活水平的日益提高,城市建设步伐的加快,一栋栋居民楼、写字楼、宾馆拔地而起。
进入寻常百姓的家用电器品种与数量愈来愈多,这些家用电器有的能减轻人们的家务、有的能丰富人们的文娱生活,有的则能提高人们的生活质量……
为了进一步满足人们高水准生活的需要,家用电器产品性能也在不断的更新换代,从始初的晶体管、到电子管;由模拟到数字;由分立元件到集成电路;从普通向高性能、多功能型;由手动控制向无线遥控、向智能化发展。
因此,在很多的电子产品中也用到了遥控技术。
目前,随着遥控技术的不断成熟,遥控窗帘正在得到越来越广泛的使用,其中的自动开幕和关幕以及自动停止(即防过卷功能)可以满足不同用户的需求,不仅方便而且实用。
因此,我们选了这个课程设计,用单片机来实现对窗帘的手动及遥控控制功能。
1.2课程设计的目的及要求
两人一组进行设计,共同协作完成设计:
1)首先按设计题目要求制订方案。
2)设计出硬件原理图。
3)焊接电路。
4)对设计的硬件、软件调试,直至正确地实现系统功能。
设计系统的功能目标:
1)控制窗帘的开关、利用直流电机正反转实现。
2)防过卷功能。
3)具有无线遥控和手动按键控制两种功能。
4)能够指示运行状态。
2系统总体方案及硬件设计
2.1系统总体方案
通过对系统要求的分析与论证,系统既要实现远程控制,又要满足手动控制,且要有防卷功能,及能够指示运行状态,最终将系统分为五个模块,即单片机控制系统、手动控制的按键电路、无线接收和发送模块、电机驱动模块、状态指示模块。
其中,手动控制的按键电路以及状态显示模块可以分别由单片机STC89C52核心板上的按键电路、二极管显示电路的软件设计实现。
远程控制方面,利用无线发送模块发送指令,由接收模块接收并传至单片机系统,信号经过单片机处理后,发出相应的指令驱动电机,使其正反转,此时,状态指示模块作出相应的反应,以告知系统工作状况。
系统的基本框图如图所示:
2.2单片机控制模块
STC89C52引脚图
STC89C52单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的CMOS8位单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。
具有8K在系统可编程Flash存储器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
1)STC89C52单片机的具有以下标准功能:
8k字节Flash
512字节RAM
32位I/O口线
内置看门狗定时器
内置4KBEEPROM
MAX810复位电路
2个16位定时器/计数器
一个6向量2级中断结构
全双工串行口
PDIP封装
ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序。
另外STC89X52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
2)STC89C52RC单片机的工作模式
掉电模式:
典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序
空闲模式:
典型功耗2mA
正常工作模式:
典型功耗4mA~7mA
掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备
3)各引脚功能如下:
VCC(40引脚):
电源电压
VSS(20引脚):
接地
P0端口(P0.0~P0.7P0.7,39~32引脚):
P0口是一个漏极开路的8位双向I/O口。
作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入每个引脚能驱动写入“1”时,可以作为高阻抗输入。
在访问外部程序和数据存储器时在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线位数据的复用总线。
此时,P0口内部上拉电阻有效。
在FlashROM编在程时,P0端口接收指令字节端口接收指令字节;而在校验程序时,则输出指令字节则输出指令字节。
验证时,要求外接上拉电阻。
P1端口(P1.0~P1.7,1~8引脚):
P1口是一个带内部上拉电阻的8位双向I/O口。
P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。
P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。
此外,P1.0和P1.1还可以作为定时器/计数器2的外部技术输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。
在对FlashROM编程和程序校验时,P1接收低8位地址。
P2端口(P2.0~P2.7,21~28引脚):
P2口是一个带内部上拉电阻的8位双向I/O端口。
P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。
P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(I)。
在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX@DPTR”指令)时,P2送出高8位地址。
在访问8位地址的外部数据存储器(如执行“MOVX@R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。
在对FlashROM编程和程序校验期间,P2也接收高位地址和一些控制信号。
P3端口(P3.0~P3.7,10~17引脚):
P3是一个带内部上拉电阻的8位双向I/O端口。
P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。
对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。
P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。
在对FlashROM编程或程序校验时,P3还接收一些控制信号。
RST(9引脚):
复位输入。
当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。
看门狗计时完成后,RST引脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
ALE/ROG(30引脚)地址锁存控制信号:
(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在Flash编程时,此引脚(ROG)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址位8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOV指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址位8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
SEN(29引脚):
是外部程序存储器选通信号。
当AT89C51RC从外部程序存储器执行外部代码时,SEN在每个机器周期被激活两次,而访问外部数据存储器时,SEN将不被激活。
A/VPP(31引脚)访问外部程序存储器控制信号:
为使能从0000H到FFFFH的外部程序存储器读取指令,A必须接GND。
注意加密方式1时,A将内部锁定位RESET。
为了执行内部程序指令,A应该接VCC。
在Flash编程期间,A也接收12伏VPP电压。
XTAL1(19引脚):
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2(18引脚):
振荡器反相放大器的输入端。
2.3电机驱动模块
L298有两路电源分别为逻辑电源和动力电源,下图中6V为逻辑电源,12V为动力电源。
ENA与ENB直接接入6V逻辑电源也就是说两个电机时刻都工作在使能状态。
由于我们使用的电机是线圈式的,在从运行状态突然转换到停止状态和从顺时针状态突然转换到逆时针状态时会形成很大的反向电流,在电路中加入二极管的作用就是在产生反向电流的时候进行泄流,保护芯片的安全。
管脚图
驱动直流电机原理图
2.4无线模块
PT2262/2272是一对带地址、数据编码功能的无线遥控发射/接收芯片。
其中发射芯片PT2262-IR将载波振荡器、编码器和发射单元集成于一身,使发射电路变得非常简洁。
接收芯片PT2272的数据输出位根据其后缀不同而不同,数据输出具有“暂存”和“锁存”两种方式
PT2272的暂存功能是指当发射信号消失时,PT2272的对应数据输出位即变为低电平。
而锁存功能是指,当发射信号消失时,PT2272的数据输出端仍保持原来的状态,直到下次接收到新的信号输入。
该实验采用的是具有锁存功能的PT2272.
2.5防过卷模块
霍尔位置传感器是一种检测物体位置的磁场传感器。
用它们可以检测磁场及其变化,可在各种与磁场有关的场合中使用。
霍尔位置传感器以霍尔效应原理为其工作基础。
霍尔传感器引脚:
管脚功能如下:
1
VDD
电源
2
GND
接地
3
OUT
输出
工作磁体和霍尔接近开关间的运动方式有:
(a)对移;(b)侧移;(c)旋转;(d)隔断(e)锁定。
该实验采用霍尔传感器的侧移触发方式。
在防过卷功能模块中,采用霍尔传感器监测窗帘是否向上或向下过卷,进而控制电机的运行。
3软件设计
3.1系统程序流程图
软件设计主要有初始化和扫描程序。
首先系统对各个端口和信号标志位进行初始化,为以后的程序运行做准备;单片机系统对无线接收和按键输入端口不断地进行扫描,当有输入信号时,系统对信号进行判断,以分辨出是无线输入信号及按键输入信号还是霍尔元件提供的信号,然后在进行相应的驱动指令,对电机进行控制。
同时,单片机系统也会对指示灯进行显示,以告知人们当前的工作状态。
系统的程序流程图如图所示:
系统程序流程图
3.2各个元件的定义
无线键盘定义
sbitA=P0^2;
sbitB1=P0^3;
sbitC=P0^4;
sbitI=P1^0;
有线键盘定义
sbitL1=P0^5;
sbitL2=P0^6;
sbitL3=P0^7;
sbitH1=P3^6;
电机控制信号定义
sbitIN1=P2^0;
sbitIN2=P2^1;
指示灯控制信号定义
sbitFlag_up=P2^3;
sbitFlag_down=P2^2;
sbitFlag_warning_up=P2^5;
sbitFlag_warning_down=P2^4;
3.3有线及无线键盘的扫描
无线键盘扫描
if(I==1)
{
if(A==1)
key=1;
if(B1==1)
key=0;
if(C==1)
key=2;
}
有线键盘扫描
H1=0;
if(L1==0)
{delay_ms(10);
if(L1==0)
key=1;
}
if(L2==0)
{delay_ms(10);
if(L2==0)
key=0;
}
if(L3==0)
{delay_ms(10);
if(L3==0)
key=2;
}
}
3.4初始化程序
Flag_up=1;Flag_down=1;
Flag_warning_up=1;Flag_warning_down=1;
4Proteus软件仿真
4.1Proteus软件介绍
Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。
从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,能够实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
它是目前最好的仿真单片机及外围器件的工具。
1.Proteus可提供的仿真元器件资源:
仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。
同时可提供的仿真仪表资源:
示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。
理论上同一种仪器可以在一个电路中随意的调用。
2.Proteus可提供的调试手段Proteus提供了比较丰富的测试信号用于电路的测试。
这些测试信号包括模拟信号和数字信号。
4.2Proteus仿真
1.按按键1或无线遥控A时,若窗帘未运动到上方最大位置,电机正转,色上方灯(D4)亮;若窗帘运动到上方最大位置,红色上方灯(D6)亮。
2.按按键2或无线遥控B时,电机停止转动,所有指示灯灭。
3.按按键3或无线遥控C时,若窗帘未运动到下方最大位置,电机正转,色上方灯(D10)亮;若窗帘运动到下方最大位置,红色下方灯(D12)亮。
仿真图
5课程设计体会
通过本次课程设计,使我对单片机有了更深入的理解。
单片机是一门实践性较强的课程,为了学好这门课程,必须在掌握理论知识的同时,加强实践。
在这次的课程设计中,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。
更重要的是,在本次实验中,我们学会了很多学习的方法,而这才是日后最实用的,真的是受益匪浅。
实验过程中,我们遇到了很多问题,从起初的一知半解,到最后的完全领悟,然后到熟练应用,每一步都非常的艰难,但是我们很珍惜这次机会。
回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,才会提高自己的综合实际能力和独立思考能力,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,但可喜的是最终都得到了解决。
在设计的过程中我们都会遇到很多的问题,但往往是一个小问题都会导致实验的失败,这就要我们花大量的时间去思索和改正,这是一个很艰辛的过程,但同时也是你收获最大的过程。
参考文献
[1]余发山,王福忠.《单片机原理及应用技术》.徐州:
中国矿业大学出版社,2008.6
[2]李光才.《单片机课程设计实例指导》.[M]:
北京:
北京航空航天大学出版社,2004
[3]王丽、杨伟丰.《电机无线遥控系统设计的研究大众科技》.2009,11124-125
[4]微机原理与单片机接口技术
附1:
源程序代码
#include
unsignedintid,jd,kd,key;
//霍尔感应器反馈信号
sbitOUT1=P0^0;
sbitOUT2=P0^1;
//无线键盘定义
sbitA=P0^2;
sbitB1=P0^3;
sbitC=P0^4;
sbitI=P1^0;
//有线键盘定义
sbitL1=P0^5;
sbitL2=P0^6;
sbitL3=P0^7;
sbitH1=P3^6;
//电机控制信号定义
sbitIN1=P2^0;
sbitIN2=P2^1;
//指示灯控制信号定义
sbitFlag_up=P2^3;
sbitFlag_down=P2^2;
sbitFlag_warning_up=P2^5;
sbitFlag_warning_down=P2^4;
//延时函数
voiddelay_ms(kd)
{
for(id=0;id{for(jd=0;jd<922;jd++);}
}
//键盘扫描函数
keyscan()
{
//无线键盘扫描
if(I==1)
{
if(A==1)
key=1;
if(B1==1)
key=0;
if(C==1)
key=2;
}
//有线键盘扫描
H1=0;
if(L1==0)
{delay_ms(10);
if(L1==0)
key=1;
}
if(L2==0)
{delay_ms(10);
if(L2==0)
key=0;
}
if(L3==0)
{delay_ms(10);
if(L3==0)
key=2;
}
}
//主函数
main()
{
while
(1)
{keyscan();
//指示灯信号初始化
Flag_up=1;Flag_down=1;
Flag_warning_up=1;Flag_warning_down=1;
switch(key)
{
case0:
//电机刹车
{IN1=1;IN2=1;}break;
case1:
{if(OUT1==0)//电机刹车
{Flag_warning_up=0;delay_ms(10);
IN1=1;IN2=1;}
else//电机正转
{Flag_up=0;delay_ms(10);
IN1=1;IN2=0;}
}break;
case2:
{if(OUT2==0)//电机刹车
{Flag_warning_down=0;delay_ms(10);
IN1=1;IN2=1;}
else//电机逆转
{Flag_down=0;delay_ms(10);
IN1=0;IN2=1;}
}break;
}
}
}
附2:
系统原理图
仿真图
实物图