|
用stm32f103c8t6单片机和hc-08蓝牙模块实现一个雏形物联网功能新手刚接触,程序写的不好的地方请指教,勿喷,谢谢
手机连接是hc-08蓝牙模块后,输入初始密码,正确后单片机通过串口给手机发一个密码正确,然后你可以在手机上发送开灯,单片机上的LED灯亮,手机显示LED亮...也可以在手机上,输入更改密码,单片机发送先输入初始密码,正确后输入新密码,然后密码修改成功。
因为这个中文显示乱码,我不知道怎么解决,所以放2张截屏图片。
蓝牙控灯.rar
(313.54 KB, 下载次数: 131)
- //////////////////////////////////////////////////////////////////////////////////
- //本程序只供学习使用,未经作者许可,不得用于其它任何用途
- //版权所有,盗版必究。
- //
- //
- //////////////////////////////////////////////////////////////////////////////////
- #include "stm32f10x.h"
- //#include "led.h"
- //#include "key.h"
- //#include "usart.h"
- //#include "timer.h"
- #include "bluetooth.h"
- int main(void)
- {
- //char ch;
- /*获取数据*/
- LED_Init();
- // USART1_Initialise(9600);
- USART_Config1();
- TIM3_Int_Init(999,71);
- printf("请输入密码\r\n如果修改密码请输入 更改密码\r\n");
- //USART1_SendStr( USART1,"这是一个哈哈哈实验\n");
- while(1)
- {
- pd();
- jg();
- quit();
- }
- }
复制代码
- #include "bluetooth.h"
- //////////////////////////////////////////////////////////////////////////////////
- //本程序只供学习使用,未经作者许可,不得用于其它任何用途
- //修改日期:2019.1.1
- //版权所有,盗版必究。
- //
- //
- //////////////////////////////////////////////////////////////////////////////////
- uint16_t j;
- u8 BackData[255];
- char hh[]="哈哈";
- u8 count;
- u8 TIME3_ON;
- u8 i,passwordPIN_flag=0,ok=0,correct_flag1=0;
- char dengl[]="开灯";
- char dengm[]="关灯";
- char baoj[]="报警";
- char guanb[]="关闭";
- char out[]="退出";
- u8 out_flag=0;
- char mima[]="更改密码";
- char old_mima[6]="888888";
- char* read_data;
- void clean_rebuff(void)
- {
- while(i)
- BackData[--i] = 0;
- }
- void Change_password()
- {
- if(strstr(read_data,mima) != 0)
- {
- passwordPIN_flag=1;
- printf("请输入旧密码\r\n");
- ok=0;
- }
- if(passwordPIN_flag==1)
- {
- if(ok==1)
- {
- if((BackData[0]==old_mima[0])&&(BackData[1]==old_mima[1])&&(BackData[2]==old_mima[2])&&(BackData[3]==old_mima[3])&&(BackData[4]==old_mima[4])&&(BackData[5]==old_mima[5]))
- {
- printf("请输入新密码\r\n");
- passwordPIN_flag = 2;
- clean_rebuff();
- ok=0;
- }
- else
- {
- passwordPIN_flag=1;
- printf("密码错误 \r\n");
- }
- }
- }
- if(passwordPIN_flag==2)
- {
- if(ok==1)
- {
- old_mima[0]=BackData[0];
- old_mima[1]=BackData[1];
- old_mima[2]=BackData[3];
- old_mima[3]=BackData[3];
- old_mima[4]=BackData[5];
- old_mima[5]=BackData[5];
- printf("密码修改成功\r\n");
- printf("新密码为%s\r\n ", old_mima);
- printf("请输入密码 \r\n");
- ok=0;
- passwordPIN_flag=0;
- }
- }
- }
- void Input_password()
- {
- if(passwordPIN_flag==0)
- {
- if(ok==1)
- {
- if((BackData[0]==old_mima[0])&&(BackData[1]==old_mima[1])&&(BackData[2]==old_mima[2])&&(BackData[3]==old_mima[3])&&(BackData[4]==old_mima[4])&&(BackData[5]==old_mima[5]))
- {
- correct_flag1 =1;
- printf("密码正确 \r\n可输入 开灯 关灯 报警 关闭报警\r\n或者退出\r\n ");
- ok=0;
- passwordPIN_flag=3;
- }
- else
- {
- passwordPIN_flag=0;
- printf("密码错误 \r\n");
- out_flag=0;
- }
-
- }
- }
- }
- void quit()
- {
- if(strstr(read_data,out) != 0)
- {
- correct_flag1=0;
- out_flag=1;
- passwordPIN_flag=0;
- printf("您已成功退出 \r\n");
- printf("请输入密码 \r\n");
- ok=0;
- Input_password();
- }
- }
- void pd()
- {
- if(count > 5)
- {
- Change_password();
- Input_password();
- count = 0;
- TIME3_ON = 0;
- clean_rebuff();
- }
- }
- void choice()
- {
- //u8 sum;
- if(correct_flag1 == 1)
- {
- if(strstr(read_data,dengl) != 0)
- {
- LED0=0;
- printf("led亮 \r\n");
- }
- if(strstr(read_data,dengm) != 0)
- {
- LED0=1;
- printf("led灭 \r\n");
- }
- if(strstr(read_data,baoj) != 0)
- {
-
- bee=1;
- //GPIO_SetBits(GPIOB,GPIO_Pin_9);
- printf("以报警 \r\n");
- }
- if(strstr(read_data,guanb) != 0)
- {
- bee=0;
- printf("以关闭报警 \r\n");
- }
- }
- }
- void jg()
- {
- if(correct_flag1==1)
- {
- choice();
- }
- }
- void USART2_IRQHandler(void)
- {
- if(USART_GetITStatus(DEBUG_USARTx2, USART_IT_RXNE) != RESET)//判断读寄存器是否非空
- {
- TIME3_ON = 1;
- ok=1;
- BackData[i] = USART_ReceiveData(DEBUG_USARTx2);
- i++;
- read_data = (char *) & BackData;
- count = 0;
- }
- }
复制代码
|
评分
-
查看全部评分
|