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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(基于51单片机的蓝牙智能光控窗帘.docx)为本站会员(b****4)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于51单片机的蓝牙智能光控窗帘.docx

1、基于51单片机的蓝牙智能光控窗帘基于51单片机的蓝牙智能光控窗帘1、?思路系?用 STC12C5A60S2 作?主控芯片,用以完成?系?行机构的控制、信息?理和液晶?示。 ?片机控制直流?速?机?窗帘、窗?的控制。 光照?度、?度信?均通?牙模?至?片机,?理后?机?窗?、窗帘的自?控制。根据?方案和要求,可?路分? 5 部分,分?牙?控,?感器?据采集,?机?控制,?片机主控和?源部分。2、系?构此方案控制采用51?片机的最小系?步?机控制窗?和窗帘的拉?和?。家居推拉窗及窗帘控制系?可以利用?牙?模?根据室外?境亮度?境亮度光控。以及光控?下?境亮度的控制?的?整等等。?控制?可?是一款多

2、功能的推拉窗及窗帘控制系?方案。系?件?框?如下:1. 光?度?感器 BH1750FVI不?分光源?字型?境光?度?感器BH1750FVI是日本 株式?社近些年推出的一种?式串行?接口的集成?路,可以根据收集的光?度?据?行?境?,其具有165535的高分辨率,可支持?大范?的光照?度?化。BH1750FVI?构框?如?所示。 ?1 BH1750FVI?构框?构框?可容易看出,外部光照被接近人眼反?的 高精度光敏二极管探?到后,通?集成?算放大器? ?流? ?,由模?器?取 位?字? 据,然后被?和界面?行?据?理与存?。? ?部的振?器提供?部?,通?相?的指令操作即 可?取出?部存?的光照

3、?据。?据?使用?准的 ?,按照?序要求操作起?也非常方便。2. ?感器: DHT11?字?度?感器是一款含有已校准?字信?出的?度复合?感器。它?用?用的?字模?采集技?和?度?感技?,确保?品具有极高的可靠性与卓越的?期?定性。?感器包括一?阻式感?元件和一?NTC?元件,并与一?高性能8位?片机相?接。因此?品具有品?卓越、超快?、抗干扰能力?、性价比极高等优?。每?DHT11?感器都在极?精确的?度校?室中?行校准。校准系?以程序的形式?存在OTP?存中,?感器?部在?信?的?理?程中要?用?些校准系?。?制串行接口,使系?集成?得?易快捷。超小的体?、极低的功耗,信?距离可?20米以

4、上,使其成?各?用甚至最?苛刻的?用?合的最佳?。?品? 4 ?排引?封?。?接方便,特殊封?形式可根据用?需求而提供。3. ?机?L298N 的?明及?用恒?恒流?式2A ?芯片L298NL298 是SGS 公司的?品,比?常?的是15 ?Multiwatt 封?的L298N,?部同?包含4 通道?路。可以方便的?直流?机,或一?相步?机。L298N 芯片可以?二相?机,也可以?一?四相?机,?出?最高可?50V,可以直接通?源?出?;可以直接用?片机的IO 口提供信?;而且?路?,使用比?方便。L298N 可接受?准TTL ?平信?VSS,VSS 可接457 V ?。4 ?VS 接?源?,

5、VS ?范?VIH ?2546 V。?出?流可?2 A,可?感性?。1 ?和15 ?下管的?射极分?引出以便接入?流采?阻,形成?流?感信?。L298 可?2 ?机,OUT1,OUT2 和OUT3,OUT4 之?可分?接?机,本?置我?用?一台?机。5,7,10,12 ?接?入控制?平,控制?机的正反?。EnA,EnB 接控制使能端,控制?机的停?。表1 是L298N 功能?。L298N ?模?的?用In3,In4 的?与表1 相同。由表1 可知EnA ?低?平?,?入?平?机控制起作用,?EnA ?高?平,?入?平?一高一低,?机正或反?。同?低?平?机停止,同?高?平?机?停。L298N

6、控制器原理如下:3、控制?件流程?(多?)1. ?感器控制程序凡是利用一定的物性(物理、化?、生物)法?、定理、定律、效?等?行能量?与信息?,并且?出与?入?格一一?的器件和?置均可?感器;?感器又被?器、?器、?器、敏感元件、?能器和一次?表等。?感器一般由敏感元件、?元件和?量?路三部分?成,有?加上?助?源。系?中的?感器是感受被?量的大小并?出相?的可用?出信?的器件或?置。? 据?用?据。?系?的几?功能?立地分隔?的?候,?必?由一 ?地方向另一?地方?据,?据?就是完成?种?功能。2. 中?控制程序?感器模?的?据并判?正确?,?中?程序?T1口?行初始化,?而接收?自?模?的

7、新?据,比?判?后?到命令地址?而?机?行?和通?示器?示出?。中?控制程序3. ?机?程序步?机?行?自控制器的命令,判?其命令是否正确,若不正确?返回,若正确?行命令,比?做出相?的?作,?窗帘及推拉窗到?指定的位置?停止,器流程?如下。4、主要程序的指令:附?一:?牙?模?附?二:DHT11?字?度?感器附?三:光?度?感器BH1750附?一:?牙?模?:修改at:#include / 引用程式庫SoftwareSerial BT(8, 9); / 接收腳, 傳送腳char val; / 儲存接收資料的變數void setup() Serial.begin(9600); / 與電腦序列埠

8、連線 Serial.println(BT is ready!); / 設定藍牙模組的連線速率 BT.begin(9600);void loop() / 若收到序列埠監控視窗的資料,則送到藍牙模組 if (Serial.available() val = Serial.read(); BT.print(val); / 若收到藍牙模組的資料,則送到序列埠監控視窗 if (BT.available() val = BT.read(); Serial.print(val); ?机:void setup() Serial.begin(9600);void loop() while(Serial.avai

9、lable() char c=Serial.read(); if(c=A) Serial.println(Hello I am amarino); 主机:void setup() Serial.begin(9600);void loop() Serial.println(A); / ?送A while(1); 附?二:DHT11?字?度?感器:U8 code table2= wendu shidu ;U8 code table3= . . ;sbit RS=P26;sbit RW=P25;sbit E=P27;void write_com(U8 com) E=0; RS=0; RW=0; De

10、lay(5); E=1; P0=com; E=0;void write_date(U8 date) E=0; RS=1; RW=0; Delay(5); E=1; P0=date; E=0; P0=0; void init() U8 num; Delay(15); write_com(0x38); write_com(0x38); write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); for(num=0;num15;num+) write_date(table2num); Delay(1); write_com(

11、0x80+0x40); for(num=0;num0;x-) for(y=110;y0;y-);void delay_10us() U8 i; i-; i-; i-; i-; i-; i-; void COM(void) /?据0 1确? U8 i; for(i=0;i8;i+) U8FLAG=2; while(!P1_0)&U8FLAG+); /1bit是否?束 delay_10us(); delay_10us(); delay_10us(); U8temp=0;/ 26us28us 表示?0 if(P1_0)U8temp=1; / 超?28us依然?高?平 表示?1 U8FLAG=2; w

12、hile(P1_0)&U8FLAG+); if(U8FLAG=1)break;/U8FLAG溢出超?跳出for循? /判?据位是0?是1 / 如果高?平高?定0高?平值?据位? 1 U8comdata=1; U8comdata|=U8temp; void RH(void) /-?度?取子程序 - P1_0=0; Delay(34); /主机拉低高于18ms P1_0=1; /?由上拉?阻拉高 主机延?20us delay_10us(); delay_10us(); delay_10us(); delay_10us(); P1_0=1;/主机?入 判?机?信? if(!P1_0)/判?机是否有低

13、?平?信? 如不?跳出,?向下?行 U8FLAG=2; while(!P1_0)&U8FLAG+);/判?机是否?出 80us 的低?平?信?是否?束 U8FLAG=2; while(P1_0)&U8FLAG+);/判?机是否?出 80us 的高?平, 如?出?入?据接收? COM();/?据接收? U8RH_data_H_temp=U8comdata; /?度整?8位 COM(); U8RH_data_L_temp=U8comdata; /?度小?8位 COM(); U8T_data_H_temp=U8comdata; /?度整?8位 COM(); U8T_data_L_temp=U8com

14、data; /?度小?8位 COM(); U8checkdata_temp=U8comdata; /校?位 P1_0=1; U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp); if(U8temp=U8checkdata_temp) /?据校? 正确?行 U8RH_data_H=U8RH_data_H_temp; U8RH_data_L=U8RH_data_L_temp; U8T_data_H=U8T_data_H_temp; U8T_data_L=U8T_data_L_temp; U8check

15、data=U8checkdata_temp; /*main.c*/#include #include U16 a,b,t; U8 flag,i;void main() RW=1; t=0; flag=0; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; init(); P1_0=1; P2=0xff; Delay(40); while(1) RH(); write_dht11(0,U8T_data_H); write_dht11(3,U8T_data_L); write_dht11(9,U

16、8RH_data_H); write_dht11(12,U8RH_data_L); if(flag=2)/100后flag?2,?行比? if(a=U8T_data_H&b=U8RH_data_H) Buzzer=0; while(a=U8T_data_H&b=U8RH_data_H); flag=0; test(); void timer0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; t+; if(t=2000)/100秒?一次 t=0; flag=2;/100秒后flag?2 if(flag=0)/最?始 flag

17、?0 ?值 a=U8T_data_H; b=U8RH_data_H; flag=1;/flag?化 附?三:光?度?感器BH1750:/使用?,用?只需更改GPIO_Pin_14、GPIO_Pin_15?引?,并在主函?里面?用此函?即可。void BH1750_Get_Guang( float *Zhaodu)#include stm32f10x_lib.h#define uchar unsigned char#define uint unsigned int #define DataPort P0 /LCD1602?据端口#define SlaveAddress 0x46 /定?器件在II

18、C?中的?地址,根据ALT ADDRESS地址引?不同修改 /ALT ADDRESS引?接地?地址?0x46,接?源?地址?0xB8#define BH1750_SCL GPIO_Pin_14 #define BH1750_SDA GPIO_Pin_15 /#define GPIO_I2C GPIOB#define BH1750_SCL_0() GPIOF-BRR=BH1750_SCL#define BH1750_SCL_1() GPIOF-BSRR=BH1750_SCL#define BH1750_SDA_0() GPIOF-BRR=BH1750_SDA#define BH1750_SDA_

19、1() GPIOF-BSRR=BH1750_SDA#define BH1750_SDA_STATE() (GPIOF-IDR&BH1750_SDA) / return (GPIOB-IDR & PIN_SDA) != 0; typedef unsigned char BYTE;typedef unsigned short WORD;BYTE BUF8; /接收?据?存? uchar ge,shi,bai,qian,wan; /?示?量int dis_data; /?量void Init_BH1750(void);void conversion(uint temp_data);void Sing

20、le_Write_BH1750(uchar REG_Address); /?入?据uchar Single_Read_BH1750(uchar REG_Address); /?取?部寄存器?据void Multiple_Read_BH1750(void); /?的?取?部寄存器?据/-u8 BH1750_Start(void); void BH1750_Stop(void); u8 BH1750_SendByte(u8 Data); u8 BH1750_ReceiveByte(void); void BH1750_SendACK(void); void BH1750_SendNACK(void

21、);void BH1750_Nop(void );void BH1750_Delay(unsigned int k) ;/-u8 BH1750_ACK =0; u8 BH1750_READY =0; u8 BH1750_NACK =1; u8 BH1750_BUS_BUSY =2; u8 BH1750_BUS_ERROR =3; u8 BH1750_RETRY_COUNT = 3; /重?次? void BH1750_Nop(void) u8 i=50; while(i) i-; void BH1750_Delay(unsigned int k) unsigned int i,j; for(i

22、=0;ik;i+) for(j=0;j121;j+); /* * 函?名?:IIC_START * 描 述:?送? * * ? 入:? * ? 出:? * 返 回:? * 作 者: * 修改日期:2010年6月8日 */ u8 BH1750_Start(void) BH1750_SDA_1(); BH1750_Nop(); BH1750_SCL_1(); BH1750_Nop(); if(!BH1750_SDA_STATE() /DebugPrint(TWI_START:BUSYn); return BH1750_BUS_BUSY; BH1750_SDA_0(); BH1750_Nop();

23、BH1750_SCL_0(); BH1750_Nop(); if(BH1750_SDA_STATE() /DebugPrint(TWI_START:BUS ERRORn); return BH1750_BUS_ERROR; return BH1750_READY; /* -*/ /* * Brief: IIC_STOP */ /* -*/ void BH1750_Stop(void) BH1750_SDA_0(); BH1750_Nop(); BH1750_SCL_1(); BH1750_Nop(); BH1750_SDA_1(); BH1750_Nop(); /DebugPrint(TWI_STOPn); /* -*/ /* * Brief: IIC_SendACK */ /* -*/ void BH1750_SendACK(void) BH1750_SDA_0(); BH1750_Nop(); BH1750_SCL_1(); BH1750_Nop(); BH1750_SCL_0(); BH1750_Nop(); BH1750_SDA_1(); /DebugPrint(TWI_SendACKn); /* -

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2