基于STM32单片机的智能手表设计
硬件方案
本设计介绍了基于单片机的智能手表定位系统的设计与实现,控制系统采用STM32核心芯片,外围电路含有液晶显示器LCD1602,GPS,GSM电路,按键和LED灯电路组成,通过LCD模块能够将实时时间以及定位经纬度显示出来。系统可以通过GSM模块直接发送定位信息到指定的手机用户上。
整体电路主要由STM32单片机核心板,LCD1602液晶显示电路,GPS模块,GSM模块,按键电路,LED灯电路及电源电路组成;原理图如图:
设计功能
- 液晶1602显示时钟,带日期,且可以显示经纬度信息,两个信息通过一个按键切换显示。
- 通过GPS定位,获取当前的经纬度信息(可以通过浏览器查看具体位置)。
- 通过电位器可以调节液晶屏的清晰度。
- 具有手电筒功能,通过另外一个按键,按下,灯亮,再次按下,灯灭。
- 通过第3个按键来发送经纬度信息给指定手机,按下后,开始发短信;
- 短信处理过程有指示灯显示;
- 接受短信的手机号码可以主动获取经纬度信息,发送"GET"给设备手机号,设备会回复信息给发送者.
软件设计
主程序
int main(void){ unsigned char i ; delay_init(); //延时函数初始化 uart_init(115200); //串口初始化为115200uart2_init(9600) ;TIM3_Int_Init(499,7199);//50ms LED_Init(); //初始化与LED连接的硬件接口 KEY_Init();led_gsm =0 ; ligh =1;//上电初始化Lcd_GPIO_init(); //初始化lcd 接口Lcd_Init(); //初始化函数delay_ms(200);ligh =0;//关闭ledLcd_Puts(0,0,(u8 *)Lin0_No);//显示 Lcd_Puts(0,1,(u8 *)Lin1_Ea);//显示i=60;while(i--) delay_ms(100);//延时UART_SendStr(USART1 ,"AT+CMGF=1\r\n",11); //设置字符集i=7;while(i--) delay_ms(100);//延时UART_SendStr(USART1 ,"AT+CSCS=\"GSM\"\r\n",15);//设置文本i=7;while(i--) delay_ms(100);//延时UART_SendStr(USART1 , "AT+CMGDA=\"DEL ALL\"\r\n",20); //删除所有短信for(i=0;i<5;i++)delay_ms(100); //延时有助于稳定led_gsm = 1;while(1){ key_scan(); if(disFlag ==1) //定时更新显示{disFlag =0;if(sysmode_GPS==1) //gps有效{
// sysmode_GPS=0; dealGps();if(disNum==0){Lcd_Puts(0,0,(u8 *)Lin0_No);//显示 Lcd_Puts(0,1,(u8 *)Lin1_Ea);//显示 }else{Lcd_Puts(0,0,(u8 *)dis0);//显示 Lcd_Puts(0,1,(u8 *)dis1);//显示 } } }if(key_m==0) //发送按键按下{delay_ms(10);if(key_m==0) { led_gsm = 0; UART_SendStr(USART1 ,"AT+CMGF=1\r\n",11); //设置字符集i=3;while(i--) delay_ms(100);//延时UART_SendStr(USART1 ,"AT+CSCS=\"GSM\"\r\n",15);//设置文本i=3;while(i--) delay_ms(100);//延时UART_SendStr(USART1 ,"AT+CMGS=\"+8618xxxxxxxxx\"\r\n",26); //测试号码 i=3;while(i--) delay_ms(100);//延时if(sysmode_GPS==1) //gps有效{sysmode_GPS=0; dealGps();UART_SendStr(USART1 ,Lin0_No,12); //发送纬度UART_SendStr(USART1 ,Lin1_Ea,12); //发送经度}else{UART_SendStr(USART1 ,"gps linking...",14); //gps无信号}delay_ms(200);UART_SendStr(USART1 ,( char *)Crtl_Z, 1); //发送i=30;while(i--) delay_ms(100);//延时发送led_gsm = 1;}}if(readFlag==1) //读取短信息标志{ readFlag=0; //读取标志清零readMesIng = 1;//读取短信过程中timeCount++ ;if((stepNum == 0)&&(timeCount>=4)) //定时读取短信{ UART_SendStr(USART1 , "AT+CMGF=1\r\n",11); //设置字符集timeCount = 0;//延时设置量 stepNum++;//进入操作过程1} else if((stepNum == 1)&&(timeCount>=4)) //定时读取短信{for(i=0;i<SIZEBUF;i++){timebuf[i]='0'; //清空timebuf} UART_SendStr(USART1 ,"AT+CMGR=1\r\n",11); timeCount = 0;//延时设置量 stepNum++;//进入操作过程1}else if((stepNum == 2)&&(timeCount >= 4)) //定时读取短信{ rebackMesFlag=INIT; for(i=0;i<(SIZEBUF-3);i++){if((timebuf[i]=='G')&&(timebuf[i+1]=='E')&&(timebuf[i+2]=='T')) //查询是否接收到GET{rebackMesFlag=OPEN_01; //状态标识打开break ;}if((timebuf[i]=='+')&&(timebuf[i+1]=='8')&&(timebuf[i+2]=='6'))//查询短信息中的号码{led_gsm = 0;rebackMesFlag = SOMEONE; //有人发送短信 AT_CMGS[9]=timebuf[i+0]; //提取号码AT_CMGS[10]=timebuf[i+1];AT_CMGS[11]=timebuf[i+2];AT_CMGS[12]=timebuf[i+3];AT_CMGS[13]=timebuf[i+4];AT_CMGS[14]=timebuf[i+5];AT_CMGS[15]=timebuf[i+6];AT_CMGS[16]=timebuf[i+7];AT_CMGS[17]=timebuf[i+8];AT_CMGS[18]=timebuf[i+9];AT_CMGS[19]=timebuf[i+10];AT_CMGS[20]=timebuf[i+11]; AT_CMGS[21]=timebuf[i+12];AT_CMGS[22]=timebuf[i+13];}}AT_CMGS[23]='"'; //整理字符串 AT_CMGS[24]=0x0d;AT_CMGS[25]=0x0a;if(rebackMesFlag != INIT){ UART_SendStr(USART1 ,"AT+CMGDA=\"DEL ALL\"\r\n",20);//删除所有短信 for(i=0;i<5;i++)delay_ms(100); //延时有助于稳定UART_SendStr(USART1 ,"AT+CMGF=1\r\n",11); //设置字符集for(i=0;i<3;i++)delay_ms(100); //延时有助于稳定UART_SendStr(USART1 ,"AT+CSCS=\"GSM\"\r\n",15); //设置干什么、for(i=0;i<3;i++)delay_ms(100); //延时有助于稳定UART_SendStr(USART1 , ( char *)AT_CMGS,26);//准备发送短信for(i=0;i<2;i++)delay_ms(100); //延时有助于稳定 if(rebackMesFlag==OPEN_01){UART_SendStr(USART1 ,Lin0_No,12); //发送纬度UART_SendStr(USART1 ,Lin1_Ea,12); //发送经度 }else{UART_SendStr(USART1 ,"CMD_ERR",7); //发送短信息命令错误}delay_ms(100); UART_SendStr(USART1 ,(char *)Crtl_Z, 1); //发送for(i=0;i<20;i++)delay_ms(100); //延时有助于稳定 }timeCount = 0;//延时设置量 stepNum++ ;//进入操作过程1}else if((stepNum == 3)&&(timeCount >= 4)) //定时读取短信{clearMesFlag++;if(clearMesFlag>10){clearMesFlag = 0;UART_SendStr(USART1 ,"AT+CMGDA=\"DEL ALL\"\r\n",20);//删除所有短信}timeCount = 0;//延时设置量 stepNum = 0 ;//进入操作过程1 led_gsm=1; //关闭指示灯readMesIng = 0;//读取短信过程中} }}
}
资料链接:https://pan.baidu.com/s/1for_ky8Pn21kkzPMUgef6g?pwd=zadp
提取码:zadp
基于STM32单片机的智能手表设计相关推荐
- 基于STM32单片机的智能手环设计(OLED显示)(Proteus仿真+程序+报告)
编号8 基于STM32单片机的智能手环设计(OLED显示) 功能描述: 由 STM32单片机+按键模拟计步+RTC时钟模块+DS18B20温度传感器模块+心率采集模块+串口模块+OLED显示模块+键盘 ...
- 基于单片机串口远程多路温湿度采集仿真-基于单片机ADC0809八路电压采集系统设计-基于单片机16x32点阵多模式显示仿真设计-基于单片机餐厅呼叫控制系统仿真设计-基于STM32单片机的智能水杯设计
1220基于单片机ADC0809八路电压采集系统设计-毕设课设资料 数码管显示,测量八路电压表. #define addo (5.0/255.0) #define zero 0.005 //用于校准A ...
- 基于stm32单片机的智能鱼缸设计(实物+原理图+源码)
资料编号:059 功能如下: 1.采用stm32单片机作为控制CPU,OLED显示万年历和温度 2.智能加热.加氧.加二氧化碳 3.采用智能自动开灯 具体功能请看下方演示视频 59-基于stm ...
- 基于STM32单片机的智能书桌设计与实现
研究结果表明,学生的读写姿势不正确率高达70%甚至85%以上[1].不良的读写姿势.不合适的光照条件会令学生不停地调整眼睛的睫状肌,容易降低睫状肌调节能力,进而导致近视[2].从长远看,不良的读写姿势 ...
- 【项目实战】基于STM32单片机的智能小车设计(有代码)
[1]背景意义 近些年随着国民生活水平的提升,以小车为载体的轮式机器人进入了我们的生活,尤其是在一些布线复杂困难的安全生活区和需要监控的施工作业场合都必须依赖轮式机器人的视频监控技术.因此,基于嵌入式 ...
- 基于STM32单片机的智能家居烟雾温度火灾防盗报警的设计与实现
功能介绍 以STM32单片机作为主控系统: LCD1602液晶显示屏来显示显示测得的值: SR501人体红外感应是否有人进行防盗: 通过烟雾传感器MQ-2获取前的烟雾值: 通过DHT11温湿度传感器来 ...
- 基于STM32单片机的智能家居测量系统设计
当今的家庭生活面临着各种环境和健康问题,周围的生活参数存在潜在的隐患,包括室温.气体中有害物质的浓度等.在新时代,人们越来越关注健康及其相关因素.随着微电子技术的应用,电器的普及,以及单片机和传感器性 ...
- 基于STM32单片机的智能停车场车位管理系统设计
摘 要 通过调查发现,现有的许多公共场所的停车位管理落后,智能化程度不高.为顺应现代自动化狂潮的发展趋势,本项目以STM32单片机为主控芯片,基于RFID智能识别技术,设计了一个具有IC识别的智能停 ...
- 基于STM32单片机的智能加湿器(Proteus仿真+程序)
标号:11 基于STM32单片机的智能加湿器 功能描述: 11.基于STM32单片机的智能加湿器 本设计由STM32F103单片机最小系统+DHT11温湿度传感器+1602液晶显示模块+声光报警模块+ ...
最新文章
- 机器学习常用算法(LDA,CNN,LR)原理简述
- Database:Database数据库的简介、类型及其区别(关系数据库VS非关系型数据库)、案例应用之详细攻略
- PyTorch - torchvision - datasets
- lds天线技术流程图_音箱耳机入门,蓝牙真无线耳机中的LDS天线 「Soomal」
- 大一计算机论文_大一计算机论文发表.doc
- 细数那些年我用过的前端开发工具
- hwpfdocument 获取第一页内容_有人专注搞这3个引流渠道,精准流量获取从此变得简单...
- 基于 CoreAudio 的音频编解码(二):音频编码
- 杭电ACM 第2007题
- 内网穿透NPS及NPC搭建(使用docker实现)
- EPLAN导入EDZ文件
- 2, 世界上第一台电子数字计算机叫什么?它诞生在哪个国家?,世界上第一台电子数字,计算机叫什么名...
- 简单彩虹动画的效果实现
- 【debug】Support for password authentication was removed on August 13, 2021.解决
- conda 虚拟环境生成对应不同的jupyter快捷方式
- TortoiseSVN 如何去掉文件夹左下角的绿色对勾的方法
- 讲讲如何将图片格式转化成base64格式的
- 几种编码方式(RZ、NRZ、NRZI、曼彻斯特编码)
- 昌平北七家空调移机-空调安装电话
- nyoj 1的个数 514 (数学)