我是靠谱客的博主 干净斑马,最近开发中收集的这篇文章主要介绍基于STM32单片机智能手表设计-GPS-GSM,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

硬件设计
       

        本设计介绍了基于单片机的智能手表定位系统的设计与实现,控制系统采用STM32核心芯片,外围电路含有液晶显示器LCD1602,GPS,GSM电路,按键和LED灯电路组成,通过LCD模块能够将实时时间以及定位经纬度显示出来。系统可以通过GSM模块直接发送定位信息到指定的手机用户上。
   主要由STM32单片机+LCD1602液晶显示电路+GPS模块+GSM模块+按键电路+LED灯电路+电源电路组成;框图如图:
 

设计功能

(1)液晶1602显示时钟,带日期,且可以显示经纬度信息,两个信息通过一个按键切换显示。
(2)通过GPS定位,获取当前的经纬度信息(可以通过浏览器查看具体位置)。
(3)通过电位器可以调节液晶屏的清晰度。
(4)具有手电筒功能,通过另外一个按键,按下,灯亮,再次按下,灯灭。
(5)通过第3个按键来发送经纬度信息给指定手机,按下后,开始发短信;
(6)短信处理过程有指示灯显示;
(7)接受短信的手机号码可以主动获取经纬度信息,发送"GET"给设备手机号,设备会回复信息给发送者.

设计原理图
 

四.软件设计
(1)程序流程图
 

 

(2)主程序源码

int main(void)
 {     
    unsigned char i ;     
    delay_init();             //延时函数初始化      
    uart_init(115200);         //串口初始化为115200
    uart2_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;//关闭led
    Lcd_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=1rn",11); //设置字符集
    i=7;
    while(i--) delay_ms(100);//延时
    UART_SendStr(USART1 ,"AT+CSCS="GSM"rn",15);//设置文本
    i=7;
    while(i--) delay_ms(100);//延时
    UART_SendStr(USART1 , "AT+CMGDA="DEL ALL"rn",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=1rn",11); //设置字符集
                i=3;
                while(i--) delay_ms(100);//延时
                UART_SendStr(USART1 ,"AT+CSCS="GSM"rn",15);//设置文本
                i=3;
                while(i--) delay_ms(100);//延时
                UART_SendStr(USART1 ,"AT+CMGS="+8618105140357"rn",26); //测试号码                        
//          UART_SendStr(USART1 ,"AT+CMGS="+8615296556420"rn",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;
            }
        }
        
....                                        
         }
                    
    }                                                
}

链接:https://pan.baidu.com/s/18eQcnJTPaemJeORJ7WCl3g?pwd=o3kd 
提取码:o3kd

最后

以上就是干净斑马为你收集整理的基于STM32单片机智能手表设计-GPS-GSM的全部内容,希望文章能够帮你解决基于STM32单片机智能手表设计-GPS-GSM所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部