赞
踩
这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉小洪学长自己做的项目系统达不到老师的要求。为了大家能够顺利以及最少的精力通过毕设,小洪学长分享优质毕业设计项目,今天要分享的是基于51单片机蓝牙上传温湿度控制舵机开关
基于51单片机蓝牙上传温湿度控制舵机开关
1、可以通过六角开关可以选择发送、接收模式和手动、自动模式。
2、在发送模式下,自动上报温湿度,在接收模式下又分为在自动模式下,如果光照强度超过设定阈值或者雨滴传感器检测到雨滴时,舵机转到90度。
3、如果光照强度不超过设定阈值或者雨滴传感器没有检测到雨滴,舵机转到90度。
4、手动模式,可以通过手机APP蓝牙发送指令“*”,舵机转回0度;手机通过蓝牙发送指令“#”,舵机转到90度。
6、在手动模式下,光照传感器和雨滴传感器均功能无效。
7、雨滴传感器和光照传感器均可以通过传感器上的电位器调节检测的灵敏度。
本系统由STC89C52单片机电路+雨滴传感器电路+光照传感器+温湿度传感器+蓝牙模块电路+舵机电路(模拟遮阳篷)+开关电路+电源电路组成
4、实现效果
整体展示
STC89C52RC单片机使用范围十分广泛,而且是每个电子设备设计者的首选芯片,此款芯片深得广大用户的喜爱。这款单片机是基于8051单片机进行加强改造的,在对于指令代码的编写时能完全兼容传统8051单片机,所以在程序的编写方面更加便捷。其优点就是有很高的可靠性、价格实惠、功耗比较低,STC89C52RC单片机芯片在技术方面最主要的优点就是采用了Flash存贮器技术,这种技术的使用不仅降低了制造的成本,并且在软件和硬件方面都能与8051单片机完全兼容,还采用了高密度非易失存储制造技术制造,将多功能8位CPU和闪烁存储器组合在单个芯片中,所以可以被中国的大多数用户接受。其程序的电可擦写特性,使得开发与试验更加容易,也为了很多嵌入式控制系统提供了一种灵活性高且价廉的方案选择。
在芯片内部有12时钟/机器周期和6时钟/机器周期,我们可以进行随意的选择。它的工作电压为:5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)。其工作频率在0~40MHz之间,和普通的8051单片机相比更加方便,在实际使用中它的工作频率可达48MHz。我们能使用的应用程序空间为8K字节,在片上集成512字节RAM。芯片上有32个通用的I/O口,就是4组分别是P1、P2、P3、P4,每组各有8个I/O口。复位后的4组接口是准双向口/弱上拉,当被作为总线扩展使用时,就不用加上拉电阻,而作为I/O口使用时,就需加上拉电阻。在芯片内部内置的ISP(在系统可编程)和IAP(在应用可编程)技术,让其编程和仿真都变得十分简便,省去使用专用编程器和专用仿真器的麻烦,并且还可以直接通过串口(RxD/P3.0,TxD/P3.1)下载用户程序,下载速度很快,这使得程序的烧写更加容易。还有看门狗的功能。外部中断4路,下降沿中断或低电平触发电路,Power Down模式可由外部中断低电平触发中断方式唤醒。共有3个16位定时器/计数器,即定时器T0、T1、T2。通用异步串行口(UART),还可用定时器软件实现多个UART。
STC89C52RC引脚功能说明:
VCC(40引脚):电源电压
VSS(20引脚):接地
P0端口(P0.0~P0.7,39~32引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P0口内部上拉电阻有效。在Flash ROM编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。
P1端口(P1.0~P1.7,1~8引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动(吸收或者输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有内部上拉电阻,那些被外部拉低的引脚会输出一个电流。
P2端口(P2.0~P2.7,21~28引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电平,这时可用作输入口。P2作为输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。
在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX @DPTR”指令)时,P2送出高8位地址。在访问8位地址的外部数据存储器(如执行“MOVX @R1”指令)时,P2口引脚上的内容(就是专用寄存器(SFR)区中的P2寄存器的内容),在整个访问期间不会改变。在对Flash ROM编程和程序校验期间,P2也接收高位地址和一些控制信号。
P3端口(P3.0~P3.7,10~17引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。
STC89C52RC单片机的芯片引脚图,如图所示。
图 STC89C52RC单片机引脚图
对于每个单片机系统中都会有晶振电路,晶振在整个单片机系统中起到举足轻重的作用。它结合单片机内部电路,产生时钟频率,有了这个基础单片机才能执行全部的指令,完成所需的功能。同时,时钟频率产生的快慢直接影响单片机运行速度的快慢,时钟频率越高,相对的单片机运行的速度也是越快的。晶振其实就是电能与机械能相互转化的晶体共振技术,为其单片机提供稳定、精确的单频振荡。
晶振电路一般会有两个电容组成,也叫做负载电容。其单片机的工作状态一般会处于并联谐振状态。而其中负载电容的大小会根据晶振的要求来选取确定值。晶振的频率就是在它提供的负载电容下完成的测试,使其减小误差的产生。同时也能保证温漂产生的误差,选取相同的电容值,是为了保证晶振电路的正常运行,如果两个电容的取值不同,甚至相差过大的话,都会容易造成谐振的不平衡,导致停振或干脆振不起来。
在此次的设计中XTAL1和XTAL2端外接石英晶体作为定时元件,在STC89C52RC芯片内部有用于构成振荡器的高增益反向放大器,从而实现自激振荡,产生时钟。晶体振荡器的工作频率一般在1.2~12MHZ之间选择,电容C1、C2一般在10PF~40PF之间取值都是可以的。在这里我选用了12MHZ的工作频率和两个22PF的电容构成晶振电路,STC89C52RC单片机的晶振电路如图3.2所示。
图 晶振电路
复位电路也是单片机中重要的一部分,在单片机启动运行时,首先要进行复位操作,而单片机自己又不能独自完成,所以要结合外部电路进行复位操作。如图3.3为复位电路图。RST引脚是复位信号的输入端。当输入连续两个机器周期以上高电平时为有效,当晶振频率为12MHZ时,复位信号持续的时间应超过2us才能完成复位操作。当我们加上复位电路,单片机上电以后,RST引脚会先保持一小段时间的高电平而后变为低电平,这就是单片机复位的过程。
图 复位电路
- #include <reg52.h>
- #include <intrins.h>
- #include <stdio.h>
- #include "dht21.h"
-
- #define MODE_AUTO 0x01
- #define MODE_OPTI 0x02
-
- #define MODE_AUTO1 0x03
- #define MODE_OPTI1 0x04
-
- sbit key=P2^1; //初始对应引脚
- sbit motor=P1^1; //初始对应引脚
- sbit ligh=P1^0;
- sbit relay=P1^2;
- sbit setkey=P1^3;
- sbit setkey1=P1^5;
- sbit fengshan=P2^0;
-
- unsigned int sum1=255;
- unsigned int sum2=0;
-
- bit motor_faly=0; //读取标志
-
- unsigned int moTimHigh,moTimlow; //电机控制 高低电平处理时间
-
- unsigned char setMode = MODE_AUTO; //模式
- unsigned char setMode1 = MODE_AUTO1; //模式
-
- unsigned long time_20ms=0; //定时变量
- unsigned char dis0[16]; //数组暂存
- unsigned char read_dht21=0; //读取标志
-
- void Init_Timer0(void);//函数声明
- void UART_Init(void);
- void uartSendByte(unsigned char dat);
- void SendStr(unsigned char *s,unsigned char length);
-
- void main (void)
- {
- Init_Timer0(); //定时器0初始化
-
- UART_Init(); //串口初始化
-
- DelayMs(120);
- SendStr("ready ok!",9);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。