久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4427|回復: 9
打印 上一主題 下一主題
收起左側

stc8f單片機0.96 oled GPS和串口1通訊源程序

  [復制鏈接]
跳轉到指定樓層
樓主
IIC驅動oled   串口1和GPS通訊,波特率38400,功能簡單,僅有GPS顯示和速度時間顯示。需要的隨便玩,注釋不是很清楚,見諒。
制作出來的實物圖如下:


單片機源程序如下:
  1. #include "oled.h"
  2. void sysinit(); //系統初始化
  3. void Timer0Init(void);   //T0初始化
  4. void UartInit(void);                //9600bps@27.000MHz
  5. void hex_show(u8 a,u8 b,u8 c,u8 d,u8 e);//顯示原碼
  6. void OLED_Show2m(u8 x,u8 y,u8 num,u8 size2);//顯示2個數字
  7. void jingwei();
  8. unsigned char jc,js,jcc;//計次處理
  9.   unsigned char str0[80];        // 存放收到的數據
  10.         unsigned char code digit[ ]={"0123456789ABCDEF"}; //定義字符數組顯示數字


  11. int main(void)
  12. {       
  13.     sysinit();SBUF=0x66;
  14. //             DHT11_receive();        //探頭數據讀取  
  15.         ////                OLED_Clear(); //清
  16.         while(1)
  17.         {       
  18. //                OLED_Clear(); //清屏
  19. //       OLED_Show2m(33,3,55,16);//顯示THI               
  20. //                   OLED_Show2m(102,3,23,16);//顯示濕度               
  21. //       OLED_Showwd(44,6,231,16);//顯示溫度
  22. //       hex_show(str0[60],str0[1],str0[2],str0[23],str0[24]);
  23. //                SBUF=str1[4];       
  24.                 jingwei();
  25. //                delay_ms(800);
  26.         }                 
  27. }

  28. void jingwei()
  29. {
  30.         unsigned char hh,mm,ss,vv,jd1,wd1;
  31.         unsigned int  jd,wd;
  32.         if(str0[17]==0x41)//數據有效
  33. {
  34.                
  35.         hh=(str0[7]-0x30)*10+(str0[8]-0x30)+8;     //轉換為UT8時區
  36.         mm=(str0[9]-0x30)*10+(str0[10]-0x30);     //轉換為UT8時區
  37.         ss=(str0[11]-0x30)*10+(str0[12]-0x30);     //轉換為UT8時區
  38.        
  39.         jd=(str0[32]-0x30)*10000+(str0[33]-0x30)*1000 //經度 xxxxx’xx
  40.             +(str0[34]-0x30)*100+(str0[35]-0x30)*10+(str0[36]-0x30);
  41.         jd1=((str0[38]-0x30)*100+(str0[39]-0x30)*10+(str0[40]-0x30))*0.06;
  42.        
  43.         wd=(str0[19]-0x30)*1000+(str0[20]-0x30)*100  //緯度 xxxx’xx
  44.             +(str0[21]-0x30)*10+(str0[22]-0x30);
  45.         wd1=((str0[24]-0x30)*100+(str0[25]-0x30)*10+(str0[26]-0x30))*0.06;
  46.        
  47.         if(str0[46]<=0x39)  //速度
  48.            {vv=((str0[46]-0x30)+(str0[48]-0x30)/10)*1.852+0.5;}  //速度個位(節)
  49.         else {vv=((str0[46]-0x30)*10+(str0[47]-0x30)+(str0[49]-0x30)/10)*1.852+0.5;}        //速度2位(節)
  50.        
  51.   OLED_ShowChar(0,0,(digit[hh/10]),16);  //小時 1
  52.   OLED_ShowChar(8,0,(digit[hh%10]),16);  //小時 2
  53.         OLED_ShowString(16,0,":",16); //:
  54.   OLED_ShowChar(22,0,(digit[mm/10]),16);  //分鐘 1
  55.   OLED_ShowChar(30,0,(digit[mm%10]),16);  //分鐘 2
  56.         OLED_ShowString(38,0,":",16); //:
  57.         OLED_ShowChar(44,0,(digit[ss/10]),16);  //秒鐘 1
  58.   OLED_ShowChar(52,0,(digit[ss%10]),16);  //秒鐘 2
  59.        
  60.         OLED_ShowString(70,0,"V:",16); //:
  61.          OLED_ShowChar(84,0,(digit[vv/10]),16);  //速度 1
  62.          OLED_ShowChar(92,0,(digit[vv%10]),16);  //速度 2
  63.         OLED_ShowString(100,0,"Kmh",16); //:
  64.         /*經度 5+2*/
  65.         OLED_ShowCHinese( 0,3,0);//經
  66.         OLED_ShowCHinese(18,3,2);//度
  67.   OLED_ShowString(36,3,":",16); //:
  68.           OLED_ShowChar(44,3,(digit[jd/10000]),16);     //經度1
  69.                 OLED_ShowChar(52,3,(digit[jd%10000/1000]),16);   //經度1
  70.                 OLED_ShowChar(60,3,(digit[jd%1000/100]),16);     //經度1
  71.         OLED_ShowString(68,3,"'",16); //:
  72.                 OLED_ShowChar(74,3,(digit[jd%100/10]),16);   //經度1
  73.                 OLED_ShowChar(82,3,(digit[jd%10]),16);   //經度1
  74.   OLED_ShowString(90,3,"'",16); //:
  75.                 OLED_ShowChar(96,3,(digit[jd1/10]),16);   //經度1
  76.                 OLED_ShowChar(104,3,(digit[jd1%10]),16);   //經度1
  77.                 if(str0[44]==0x45){OLED_ShowString(116,3,"E",16);}
  78.                 else              {OLED_ShowString(116,3,"W",16);}
  79.         /*緯度4+2*/
  80. OLED_ShowCHinese(0,6,1);//經
  81. OLED_ShowCHinese(18,6,2);//度
  82.         OLED_ShowString(36,6,":",16); //:
  83.                 OLED_ShowChar(42,6,(digit[wd/1000]),16);   //經度1
  84.                 OLED_ShowChar(50,6,(digit[wd%1000/100]),16);   //經度1
  85.         OLED_ShowString(58,6,"'",16); //:
  86.                 OLED_ShowChar(64,6,(digit[wd%100/10]),16);   //經度1
  87.                 OLED_ShowChar(72,6,(digit[wd%10]),16);   //經度1       
  88.         OLED_ShowString(80,6,"'",16); //:       
  89.           OLED_ShowChar(86,6,(digit[wd1/10]),16);   //經度1       
  90.           OLED_ShowChar(94,6,(digit[wd1%10]),16);   //經度1       
  91.                
  92.         if(str0[30]==0x4E){OLED_ShowString(116,6,"N",16);}
  93.                 else            {OLED_ShowString(116,6,"S",16);}
  94. }
  95.   else {OLED_ShowString(20,3,"Waiting GPS",16); }

  96. }
  97.         void UART1(void) interrupt 4  // 串行口1中斷函數
  98. {       
  99.        
  100.         if(RI)                              // 只處理接收中斷
  101.         {
  102.                 RI=0;                        //清除標志位               
  103.         str0[jc]=SBUF;//依次存放數據
  104.                 if(jc==0)
  105.                 {
  106.      if(SBUF==0x24) {jc++;} else {jc=0;}          // 判斷幀頭是否正確       
  107.           }
  108.                 else {jc++; if(SBUF==0x0A) {jc=0;} }
  109.          }
  110.       
  111. }





  112. void sysinit()
  113. {
  114.          OLED_Init();//初始化OLED
  115.                 OLED_Clear(); //清屏
  116.          OLED_ShowCHinese(37,3,0);//啟
  117.    OLED_ShowCHinese(55,3,1);//動
  118.    OLED_ShowCHinese(73,3,2);//中
  119.    UartInit();//串口1初始化
  120.          Timer0Init();//定時器0初始化
  121.    delay_ms(800);       
  122.          OLED_Clear(); //清屏
  123. //   OLEDGS();//顯示頁面格式
  124. }

  125. void UartInit(void)                //38400bps@22.1184MHz
  126. {
  127.         SCON = 0x50;                //8位數據,可變波特率
  128.         AUXR |= 0x01;                //串口1選擇定時器2為波特率發生器
  129.         AUXR |= 0x04;                //定時器2時鐘為Fosc,即1T
  130.         T2L = 0x70;                //設定定時初值
  131.         T2H = 0xFF;                //設定定時初值
  132.         AUXR |= 0x10;                //啟動定時器2
  133.         ES   = 1;                // 開串口1中斷
  134.         EA   = 1;                // 開總中斷       
  135. }
  136. void Timer0Init(void)                //25毫秒@27MHz
  137. {
  138.         AUXR &= 0x7F;                //定時器時鐘12T模式
  139.         TMOD &= 0xF0;                //設置定時器模式
  140.         TL0 = 0x46;                //設置定時初值
  141.         TH0 = 0x24;                //設置定時初值
  142.         TF0 = 0;                //清除TF0標志
  143.         TR0 = 1;                //定時器0開始計時
  144. //        ET0=1;   //定時器0中斷
  145.         EA   = 1;                // 開總中斷       
  146. }

  147. void hex_show(u8 a,u8 b,u8 c,u8 d,u8 e)
  148. ……………………

  149. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有程序51hei提供下載:
GPS接收.zip (155.38 KB, 下載次數: 116)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏8 分享淘帖 頂1 踩
回復

使用道具 舉報

沙發
ID:501401 發表于 2020-11-14 19:49 | 只看該作者
gps是什么型號的模塊?
回復

使用道具 舉報

板凳
ID:499469 發表于 2020-11-18 16:00 來自手機 | 只看該作者
louruijia 發表于 2020-11-14 19:49
gps是什么型號的模塊?

只要是串口通信的   使用圖中協議的都可以的
回復

使用道具 舉報

地板
ID:35873 發表于 2021-4-9 01:34 | 只看該作者
不錯  不知道那種剪線的模塊能不能用  有空試下
回復

使用道具 舉報

5#
ID:80768 發表于 2021-4-9 10:56 | 只看該作者
圖上是你家坐標嗎,我要去找你
回復

使用道具 舉報

6#
ID:1091279 發表于 2023-8-20 11:13 | 只看該作者
請問能把程序移植到stm32c8上嗎
回復

使用道具 舉報

7#
ID:517502 發表于 2023-12-3 16:22 來自手機 | 只看該作者
1091212269 發表于 2020-11-18 16:00
只要是串口通信的   使用圖中協議的都可以的

請問串口1是那個引腳
單片機下載程序晶振頻率選擇多少
回復

使用道具 舉報

8#
ID:517502 發表于 2023-12-3 17:25 | 只看該作者
1091212269 發表于 2020-11-18 16:00
只要是串口通信的   使用圖中協議的都可以的

串口1是那個單片機引腳呀?
回復

使用道具 舉報

9#
ID:325642 發表于 2024-5-1 11:05 | 只看該作者
下載學習,最近在學習GPS
回復

使用道具 舉報

10#
ID:325642 發表于 2024-5-1 11:05 | 只看該作者
下載學習,最近在學習GPS,看資料不錯
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久蜜桃av一区二区天堂 | 国产一级在线 | 欧洲视频一区二区 | 欧美日韩一 | 91五月天 | 久久久久亚洲精品国产 | 国产精品日韩在线观看 | 亚洲国产精品久久久久婷婷老年 | 在线中文视频 | 天天操伊人 | 99在线国产 | 欧美激情一区 | 午夜在线 | 日韩电影一区二区三区 | a级片在线观看 | 久久伊人精品一区二区三区 | 中文字幕在线一区 | 日韩在线免费视频 | 免费在线观看成人 | 亚洲一区二区三区在线播放 | 伊人网一区 | 日本一区二区三区四区 | 免费看国产一级特黄aaaa大片 | 亚洲精品美女 | 国产欧美性成人精品午夜 | 午夜手机在线视频 | 欧美一级电影免费 | 人人爱干 | 福利网址 | 三级成人在线 | 日韩久久久久久久 | 日本成人区 | 在线日韩视频 | 成人av一区二区三区 | 99久久99热这里只有精品 | 中文字幕综合 | 成人久久久 | 日韩在线视频一区 | 国产精品国产 | 日韩高清电影 | 国产色婷婷精品综合在线播放 |