控制电路采用继电器控制实现。继电器控制电路采用弱电控制强电的工作原理,单片机通过控制继电器的断开和吸合来控制外接家电的通断,具体控制电路如图所示。
图 继电器控制电路图
系统软件设计采用C语言编程,编译环境为Keil。
系统主程序主要包括系统的初始化、蓝牙串口通信、信号的输出控制等,系统主程序流程图如图所示
Y 将空调状态翻转 5
启动 复位 蓝牙是否接收到数据? N Y N 数据 是Y? 系统蓝牙通信模块子程序主要完成手机蓝牙指令的接收以及和单片机直接的数据通信等,此部分程序的完成是整个系统软件设计成功与否的关键所在。图4-2为系统蓝牙通信子程序流程图。
开机启动蓝牙模块 未匹配指示状态灯 判断是否与手机蓝 牙终端匹配成功? 完成匹配,切换匹配成功指示 灯状态 判断是否接收到手 机蓝牙终端发送的指令? 通过串行通信把数据传输到 单片机 开始 N
图 系统蓝牙通信子程序流程图
四.注意事项
1、首先先不要插芯片,要先测量一下各点的电压,尤其是单片机工作电压,蓝牙模块电路工作电压,在保证模块工作电压正常的前提下再安插主要先芯片,不然会烧坏芯
6
片或者模块造成不可挽回的损失;
2、系统工作之前首先要对蓝牙模块进行测试,保证蓝牙模块能够实现正常的指令收发功能。
蓝牙遥控测试主要完成继电器的开启和关闭,手机蓝牙指令“Y”控制继电器的的开启和关闭,手机蓝牙发送指令“Y”一次继电器1吸合,,再次发送指令“Y”继电器断开。
五.系统源程序
(多路继电器控制家电)
#include \
#include \#include \
//定义变量
//**************************************************** //主函数
//**************************************************** void main() { LCD12864_Reset(); //初始化液晶 LCD12864_HAIZI_SET(); //设置为普通模式
Relay1 = Relay2 = Relay3 = Relay4 = 0; //初始化设置为0,不吸合 Delay_ms(100); Uart_Init(); while(1) {
Relay1 = Flag_Relay1; Relay2 = Flag_Relay2; Relay3 = Flag_Relay3; Relay4 = Flag_Relay4; if(Flag_Relay1 == 1) {
LCD12864_NoWaitIdle_COM_Write(0x80); //设置指针 LCD12864_write_word(\冰箱状态:开\ } else {
LCD12864_NoWaitIdle_COM_Write(0x80); //设置指针 LCD12864_write_word(\冰箱状态:关\ }
if(Flag_Relay2 == 1) {
7
LCD12864_NoWaitIdle_COM_Write(0x90); LCD12864_write_word(\空调状态:开\ } else {
LCD12864_NoWaitIdle_COM_Write(0x90); LCD12864_write_word(\空调状态:关\ }
if(Flag_Relay3 == 1) {
LCD12864_NoWaitIdle_COM_Write(0x88); LCD12864_write_word(\电视状态:开\ } else {
LCD12864_NoWaitIdle_COM_Write(0x88); LCD12864_write_word(\电视状态:关\ }
if(Flag_Relay4 == 1) {
LCD12864_NoWaitIdle_COM_Write(0x98); LCD12864_write_word(\灯泡状态:开\ } else {
LCD12864_NoWaitIdle_COM_Write(0x98); LCD12864_write_word(\灯泡状态:关\ } } }
//**************************************************** //MS延时函数(12M晶振下测试)
//**************************************************** void Delay_ms(unsigned int n) { unsigned int i,j; for(i=0;i #include \ //unsigned char RX_Buffer[30]; unsigned char Num = 0; bit Flag_Relay1 = 0; bit Flag_Relay2 = 0; bit Flag_Relay3 = 0; bit Flag_Relay4 = 0; unsigned char temp = 0; void Uart_Init() { SCON = 0X50; //UART方式1;8位UART REN = 1; //不允许串行口接收数据 PCON = 0x00; //SMOD=0;波特率不加倍 //设置指针 //设置指针 //设置指针 //设置指针 //设置指针 //设置指针 8

