基于单片机的智能魔方.doc





《基于单片机的智能魔方.doc》由会员分享,可在线阅读,更多相关《基于单片机的智能魔方.doc(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、单片机协会英码杯暨第五届电子设计大赛智能魔方 -队伍:魔鬼的步伐一 项目名称智能魔方二概要“智能魔方”是一款集成多种智能家居功能与一体的智能小盒,其功能包含智能环境监测和智能安防以及智能开关三种,通过独立自制的手机app“智能魔方”,我们可以更加方便的实时实行我们的指令来控制智能小盒,从而实现以下功能实时监测出该地的温度.湿度以及PM2.5数值,更加精准的应对环境变化以做出调整。手机终端app通过触摸发出开关指令,从而实现灯的开关,门的开关等多数开关功能。智能安防如夜间将智能小盒放置与合适位置,当有可疑人物出现时变发出报警信号。本系统的设计包含硬件设计以及app设计两部分。硬件部分,我们以ST
2、C89C52加强型单片机为控制核心,自行设计了一套智能家居系统。该系统分为温湿度传感器,PM2.5传感器,红外检测模块,蓝牙模块,蜂鸣器,小灯等模块的制作,通过电路设计以及算法设计,将硬件部分的功能整合至一起,同时外观设计形成该智能小盒,使系统更加多元化和智能化。App设计部分:基于Android和Java的独立设计,我们通过两个月的时间自主学习并且独立研发了app“智能魔方”,通过该app,更加智能的操控智能小盒,实现“软硬结合”,更加智能地进行环境质量的监测和智能安防的控制以及智能遥控。三设计原理1.硬件设计(1)STC单片机电路及原理介绍中央处理器CPU采用的是STC89增强型系列单片机
3、,具有低功耗、超低价;高速、高可靠;强抗静电、强抗干扰的特点,这有利于该项目基本功能的实现同时节省成本便于推广。(2) 电源部分以12V对智能魔方进行供电,并用7805芯片稳压至5V给单片机供电,1117芯片稳压至3.3V给蓝牙模块供电。(3) 温湿度电路部分该电路实现监测温湿度功能。(4) PM2.5电路部分该电路实现监测PM2.5功能。(5) 蓝牙电路部分蓝牙为智能小盒实现无线数据传输。(6) 智能安防电路部分利用红外模块,当可疑人员经过我们的智能小盒便会立即报警,发出响声。(7) 智能开关电路部分(以开关灯为例)实现手机APP操控的智能开关。(8) 程序储存电路部分存储温湿度数据的电路。
4、(9)程序#include#include#include void nop()_nop_();_nop_();void delay20ms() /20ms 误差 -0.000000000003us unsigned char a,b,c; for(c=5;c0;c-) for(b=89;b0;b-) for(a=247;a0;a-); void delay1(uint m)uint n; for(n=0;nm;n+);void delay(uchar n) /2n+1 usuchar i;for(i=0;in;i+)_nop_();_nop_();_nop_();_nop_();_nop_(
5、);_nop_();_nop_();void startdht()dht=1;dht=0;delay20ms();dht=1;delay(15);uchar read_dht()uchar i,temp;dat=0;while(dht);for(i=0;i8;i+)while(!dht);delay(25);if(dht)temp=1;while(dht);elsetemp=0;dat=dat1;dat=dat|temp;return dat;void start() /启动I2C总线sda=1;nop();scl=1;nop();sda=0;nop();scl=0;nop();void st
6、op() /停止I2C总线sda=0;nop();scl=1;nop();sda=1;nop();void writebyte(uchar j) /写一个字节uchar i,temp; temp=j; for (i=0;i8;i+) temp=temp1; scl=0; nop(); sda=CY;/temp左移时,移出的值放入了CY中 nop(); scl=1;/待sda线上的数据稳定后,将scl拉高 nop(); scl=0; nop(); sda=1; nop();uchar readbyte() /读一个字节 uchar i,j,k=0; scl=0; nop(); sda=1; fo
7、r (i=0;i8;i+) nop(); scl=1; nop(); if(sda=1) j=1; elsej=0; k=(k1)|j; scl=0; nop();return(k);void clock() /I2C总线时钟 uchar i=0; scl=1; nop(); while(sda=1)&(i255) i+; scl=0; nop();/从24c02的地址address中读取一个字节数据/uchar read24c02(uchar address) uchar i; start(); writebyte(0xa0); clock(); writebyte(address); cl
8、ock(); start(); writebyte(0xa1); clock(); i=readbyte(); stop(); delay1(100); return(i);/向24c02的address地址中写入一字节数据info/void write24c02(uchar address,uchar info) start(); writebyte(0xa0); clock(); writebyte(address); clock(); writebyte(info); clock(); stop(); delay1(5000); /这个延时一定要足够长,否则会出错。因为24c02在从sd
9、a上取得数据后,还需要一定时间的烧录过程。uchar ad()uint flag,result;ADC_CONTR=0xe1;ADC_CONTR|=0x08; /启动AD转换while(flag=0) /等待AD转换结束flag=(ADC_CONTR&0x10); /查询ADC_FLAG位是否置1result=ADC_DATA;ADC_CONTR&=0xef;return (result);void init() uint i; /*串口初始化*/ TMOD=0x21; TH1=0xfd; TL1=0xfd; /装初值 TR1=1; /启动定时器1 REN=1; / 使能接收 SM0=0; S
10、M1=1; /设置串口为工作方式1 EA=1; ES=1; /*24C02初始化*/ scl=1; nop(); sda=1; nop();/*设置P11为AD*/ P1M0=0x02; P1M1=0x02;/*定时器0初始化*/ ET0=1; TH0=0x4c; /对TH0 TL0赋值 TL0=0x00; /使定时器0.05秒中断一次 TR0=1; /开始计时 /*数据初始化*/ add1=0; add2=30; add3=60; pelay=0; beep=0; tt=0; /*清除24C02原有数据*/ for(i=0;i84;i+) write24c02(i,0);void main(
11、)init();while(1);void timer0() interrupt 1 using 0 /定时中断服务函数TH0=0x4c; /对TH0 TL0赋值 ,每隔0.05s发出一次中断。TL0=0x00; /重装计数初值times+; /每过250ust tcnt加一if(times=200) /计满200次(10秒)时 times=0; /重新再计tt+;if(tt=360) /计满1小时tt=0;/重新再计/*记录PM2.5数据*/led=0;delay(140);temp=ad();delay(20);led=1;delay(4840);if(add1=24)uchar i,t;
12、for(i=1;i24;i+)t=read24c02(i);write24c02(i-1,t);write24c02(-add1,rh); write24c02(add1,temp);add1+;/*记录湿度、温度数据*/startdht();dht=1;if(!dht)while(!dht);while(dht);rhc=read_dht();rlc=read_dht();thc=read_dht();tlc=read_dht();ckc=read_dht();dht=1;sum=rhc+rlc+thc+tlc;if(sum=ckc)rh=rhc;th=thc;if(add2=54)ucha
13、r i,t;for(i=31;i54;i+)t=read24c02(i);write24c02(i-1,t);write24c02(-add2,rh);write24c02(add2,rh);add2+;if(add3=84)uchar i,t;for(i=61;i84;i+)t=read24c02(i);write24c02(i-1,t);write24c02(-add3,rh);write24c02(add3,th);add3+; void ser() interrupt 4uchar j,k;ES=0;RI=0;a=SBUF;switch(a)case A:/读取并发送当前数据start
14、dht();dht=1;if(!dht)while(!dht);while(dht);rhc=read_dht();rlc=read_dht();thc=read_dht();tlc=read_dht();ckc=read_dht();dht=1;sum=rhc+rlc+thc+tlc;if(sum=ckc)th=thc;tshi=th/10;tge=th%10;rh=rhc;rshi=rh/10;rge=rh%10;led=0;delay(140);temp=ad();delay(20);led=1; delay(4840);temp=temp*500/256;bai=temp/100;sh
15、i=temp%100/10;ge=temp%10; SBUF=tabletshi;while(!TI);TI=0;SBUF=tabletge;while(!TI);TI=0; SBUF=z;while(!TI);TI=0;SBUF=tablershi;while(!TI);TI=0;SBUF=tablerge;while(!TI);TI=0;SBUF=z;while(!TI);TI=0;SBUF=tablebai;while(!TI);TI=0;SBUF=tableshi;while(!TI);TI=0;SBUF=tablege;while(!TI);TI=0;SBUF=#;while(!TI
16、);TI=0; break; case B:/读取并发送历史数据 for(k=60;k84;k+)th=read24c02(k);tshi=th/10;tge=th%10;SBUF=tabletshi;while(!TI);TI=0;SBUF=tabletge;while(!TI);TI=0;SBUF=z;while(!TI);TI=0;ES=1;for(j=30;j54;j+)rh=read24c02(j);rshi=rh/10;rge=rh%10;SBUF=tablershi;while(!TI);TI=0;SBUF=tablerge;while(!TI);TI=0;if(j53)SBUF
17、=z;while(!TI);TI=0;SBUF=#;while(!TI);TI=0;break;case E : /红外开启beep=1;break;case F : /红外关闭beep=0;break;case G : /继电器闭合pelay=1;break;case H :/继电器断开pelay=0;break; ES=1;#define uint unsigned int#define uchar unsigned charsbit led=P32;sbit sda=P37; sbit scl=P10;sbit dht=P33;sbit beep=P17;sbit pelay=P35;u
18、int tt;uchar times,a,add1;uchar bai,shi,ge,val,temp;uchar dat,rh,rhc,rlc,th,thc,tlc,ckc,sum,rshi,rge,tshi,tge,add2,add3;uchar code table=0123456789;2. 软件app设计(1) 界面介绍(2) 程序文档(3)Android app开发原理见附件二Android蓝牙开发小结四 功能展示1. 环境监测功能首先用户可以将智能小盒固定于家中的某处想安放的位置,之后放置一段时间以后,用户根据我们开发的app智能魔方查看了解相应的温湿度以及PM2.5的值,从而对
19、家中室内的环境做出相应的调整和防护措施,这样的做法相对于传统的单一查看天气预报具有更强的精确性的针对性,更加自如的了解自身周围的环境质量。同时,不仅可以通过该app了解当时刻的温湿度和PM2.5的值,同时亦可了解全天的温湿度和PM2.5的情况。特别对于PM2.5值的监测,我们会以下表通过APP端进行优良等质量的反馈。2. 智能开关功能首先也是将智能小盒固定于家中的某处想安放的位置,之后用户根据想要控制的家中电器如空调电视以及灯光,将这些电器与智能小盒做一定的连接之后,便可以使得我们的智能小盒瞬间成为一个遥控开关,通过我们的app智能魔方对电器进行开关的控制。Ps答辩当天我们以智能控制灯光为例进
20、行讲解。3. 智能安防功能固定我们的智能小盒,只要用户在手机APP端打开安防开关,当有盗贼进入相应的位置时,智能小盒变会报警,发出响声,告诉用户“贼来了”。五 使用说明1. 固定使用首先用户可以将智能小盒固定于家中的某处想安放的位置,之后放置一段时间以后,用户根据我们开发的app智能魔方查看了解相应的温湿度以及PM2.5的值,从而对家中室内的环境做出相应的调整和防护措施,这样的做法相对于传统的单一查看天气预报具有更强的精确性的针对性,更加自如的了解自身周围的环境质量。同时,不仅可以通过该app了解当时刻的温湿度和PM2.5的值,同时亦可了解全天的温湿度和PM2.5的情况。特别对于PM2.5值的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 智能 魔方

限制150内