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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 4427|回復(fù): 9
打印 上一主題 下一主題
收起左側(cè)

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

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:499469 發(fā)表于 2020-11-14 08:09 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
IIC驅(qū)動(dòng)oled   串口1和GPS通訊,波特率38400,功能簡(jiǎn)單,僅有GPS顯示和速度時(shí)間顯示。需要的隨便玩,注釋不是很清楚,見(jiàn)諒。
制作出來(lái)的實(shí)物圖如下:


單片機(jī)源程序如下:
  1. #include "oled.h"
  2. void sysinit(); //系統(tǒng)初始化
  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個(gè)數(shù)字
  7. void jingwei();
  8. unsigned char jc,js,jcc;//計(jì)次處理
  9.   unsigned char str0[80];        // 存放收到的數(shù)據(jù)
  10.         unsigned char code digit[ ]={"0123456789ABCDEF"}; //定義字符數(shù)組顯示數(shù)字


  11. int main(void)
  12. {       
  13.     sysinit();SBUF=0x66;
  14. //             DHT11_receive();        //探頭數(shù)據(jù)讀取  
  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)//數(shù)據(jù)有效
  33. {
  34.                
  35.         hh=(str0[7]-0x30)*10+(str0[8]-0x30)+8;     //轉(zhuǎn)換為UT8時(shí)區(qū)
  36.         mm=(str0[9]-0x30)*10+(str0[10]-0x30);     //轉(zhuǎn)換為UT8時(shí)區(qū)
  37.         ss=(str0[11]-0x30)*10+(str0[12]-0x30);     //轉(zhuǎn)換為UT8時(shí)區(qū)
  38.        
  39.         jd=(str0[32]-0x30)*10000+(str0[33]-0x30)*1000 //經(jīng)度 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;}  //速度個(gè)位(節(jié))
  49.         else {vv=((str0[46]-0x30)*10+(str0[47]-0x30)+(str0[49]-0x30)/10)*1.852+0.5;}        //速度2位(節(jié))
  50.        
  51.   OLED_ShowChar(0,0,(digit[hh/10]),16);  //小時(shí) 1
  52.   OLED_ShowChar(8,0,(digit[hh%10]),16);  //小時(shí) 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.         /*經(jīng)度 5+2*/
  65.         OLED_ShowCHinese( 0,3,0);//經(jīng)
  66.         OLED_ShowCHinese(18,3,2);//度
  67.   OLED_ShowString(36,3,":",16); //:
  68.           OLED_ShowChar(44,3,(digit[jd/10000]),16);     //經(jīng)度1
  69.                 OLED_ShowChar(52,3,(digit[jd%10000/1000]),16);   //經(jīng)度1
  70.                 OLED_ShowChar(60,3,(digit[jd%1000/100]),16);     //經(jīng)度1
  71.         OLED_ShowString(68,3,"'",16); //:
  72.                 OLED_ShowChar(74,3,(digit[jd%100/10]),16);   //經(jīng)度1
  73.                 OLED_ShowChar(82,3,(digit[jd%10]),16);   //經(jīng)度1
  74.   OLED_ShowString(90,3,"'",16); //:
  75.                 OLED_ShowChar(96,3,(digit[jd1/10]),16);   //經(jīng)度1
  76.                 OLED_ShowChar(104,3,(digit[jd1%10]),16);   //經(jīng)度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);//經(jīng)
  81. OLED_ShowCHinese(18,6,2);//度
  82.         OLED_ShowString(36,6,":",16); //:
  83.                 OLED_ShowChar(42,6,(digit[wd/1000]),16);   //經(jīng)度1
  84.                 OLED_ShowChar(50,6,(digit[wd%1000/100]),16);   //經(jīng)度1
  85.         OLED_ShowString(58,6,"'",16); //:
  86.                 OLED_ShowChar(64,6,(digit[wd%100/10]),16);   //經(jīng)度1
  87.                 OLED_ShowChar(72,6,(digit[wd%10]),16);   //經(jīng)度1       
  88.         OLED_ShowString(80,6,"'",16); //:       
  89.           OLED_ShowChar(86,6,(digit[wd1/10]),16);   //經(jīng)度1       
  90.           OLED_ShowChar(94,6,(digit[wd1%10]),16);   //經(jīng)度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中斷函數(shù)
  98. {       
  99.        
  100.         if(RI)                              // 只處理接收中斷
  101.         {
  102.                 RI=0;                        //清除標(biāo)志位               
  103.         str0[jc]=SBUF;//依次存放數(shù)據(jù)
  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);//動(dòng)
  118.    OLED_ShowCHinese(73,3,2);//中
  119.    UartInit();//串口1初始化
  120.          Timer0Init();//定時(shí)器0初始化
  121.    delay_ms(800);       
  122.          OLED_Clear(); //清屏
  123. //   OLEDGS();//顯示頁(yè)面格式
  124. }

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

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

  149. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

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


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:501401 發(fā)表于 2020-11-14 19:49 | 只看該作者
gps是什么型號(hào)的模塊?
回復(fù)

使用道具 舉報(bào)

板凳
ID:499469 發(fā)表于 2020-11-18 16:00 來(lái)自手機(jī) | 只看該作者
louruijia 發(fā)表于 2020-11-14 19:49
gps是什么型號(hào)的模塊?

只要是串口通信的   使用圖中協(xié)議的都可以的
回復(fù)

使用道具 舉報(bào)

地板
ID:35873 發(fā)表于 2021-4-9 01:34 | 只看該作者
不錯(cuò)  不知道那種剪線(xiàn)的模塊能不能用  有空試下
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

6#
ID:1091279 發(fā)表于 2023-8-20 11:13 | 只看該作者
請(qǐng)問(wèn)能把程序移植到stm32c8上嗎
回復(fù)

使用道具 舉報(bào)

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

請(qǐng)問(wèn)串口1是那個(gè)引腳
單片機(jī)下載程序晶振頻率選擇多少
回復(fù)

使用道具 舉報(bào)

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

串口1是那個(gè)單片機(jī)引腳呀?
回復(fù)

使用道具 舉報(bào)

9#
ID:325642 發(fā)表于 2024-5-1 11:05 | 只看該作者
下載學(xué)習(xí),最近在學(xué)習(xí)GPS
回復(fù)

使用道具 舉報(bào)

10#
ID:325642 發(fā)表于 2024-5-1 11:05 | 只看該作者
下載學(xué)習(xí),最近在學(xué)習(xí)GPS,看資料不錯(cuò)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品免费一区二区三区四区 | 精品一区二区av | 日日干夜夜操 | 久久在线 | 久久久久久99 | 国产精品视频一区二区三区四蜜臂 | 视频一区二区中文字幕日韩 | 亚洲免费在线播放 | 欧美精品一区二区在线观看 | 中文在线一区二区 | 在线观看a视频 | 亚洲a一区 | 91精品亚洲 | 成人免费日韩 | 国产成人精品久久二区二区91 | 一级片在线视频 | 欧美成人在线影院 | 亚洲精品视频免费观看 | 可以在线看的黄色网址 | 成人av网站在线观看 | 激情久久网 | 北条麻妃99精品青青久久 | 91精品91久久久 | 国产一区二区在线看 | 99re在线| 国产美女久久 | 成人欧美一区二区三区黑人孕妇 | 精品欧美一区二区精品久久久 | 九九久久在线看 | 精品无码久久久久久国产 | 污书屋 | 国产精品久久久久久久久久久免费看 | 国产色播av在线 | 国产精品日产欧美久久久久 | 一区二区中文 | 95国产精品| 国产精品视频网 | 欧美激情精品久久久久久免费 | 99精品欧美一区二区蜜桃免费 | 成人网在线看 | 国产精品亚洲第一 |