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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

GY-26電子指南針資料(串口+IIC+溫度源程序)

[復制鏈接]
跳轉到指定樓層
樓主
ID:239710 發(fā)表于 2017-10-15 19:22 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
如題 我只想下個別的資料但是積分不夠,程序有51單片機版本的和pic單片機的


所有資料51hei提供下載:
GY-26電子指南針模塊電子羅盤模塊+機器人配件送資料.rar (628.2 KB, 下載次數(shù): 50)

單片機源程序如下:
  1. //  GY-26電子指南針模塊測試程序
  2. //  使用單片機:STC89C52
  3. //  晶振:  11.0592 M
  4. //  液晶屏:LCD1602
  5. #include<REG52.H>       
  6. #include<math.h>       //Keil library  
  7. #include<stdio.h>      //Keil library       
  8. #include<INTRINS.H>
  9. #define uchar unsigned char
  10. #define uint  unsigned int       
  11. #define DataPort P0           //LCD1602 數(shù)據(jù)端口       
  12. sbit    LCM_RS=P2^0;   //LCD1602 控制端口               
  13. sbit    LCM_RW=P2^1;   //LCD1602 控制端口       
  14. sbit    LCM_EN=P2^2;   //LCD1602 控制端口
  15. sbit    KEY_1 =P2^6;
  16. sbit    KEY_2 =P2^5;
  17. sbit    KEY_3 =P2^4;
  18. sbit    KEY_4 =P2^3;       
  19. //********定義變量*****************************
  20. uchar   BUF[8];        //數(shù)據(jù)緩存區(qū)
  21. uchar   cnt;           //接收數(shù)據(jù)的累計值
  22. //********定義函數(shù)*****************************
  23. void    delay(unsigned int k);
  24. void    InitLcd();
  25. void    WriteDataLCM(uchar dataW);
  26. void    WriteCommandLCM(uchar CMD,uchar Attribc);
  27. void    DisplayOneChar(uchar X,uchar Y,uchar DData);
  28. void    SeriPushSend(uchar send_data);
  29. void    ReadKey(void);
  30. void         display(void);
  31. //*********************************************
  32. //串口中斷
  33. void serial_serve(void) interrupt 4       
  34. {
  35.   if(RI==1){
  36.     RI=0;
  37.     BUF[cnt]=SBUF;
  38.         cnt++;
  39. //        if(cnt==7)flag=1;
  40.   }
  41. }
  42. //*********************************************
  43. //串口初始化
  44. //9600 bps @ 11.059 MHz
  45. void init_uart()
  46. {
  47.         TMOD=0x21;                               
  48.         TH1=0xfd;                               
  49.         TL1=0xfd;                               
  50.         SCON=0x50;
  51.         PS=1;      //串口中斷設為高優(yōu)先級別
  52.         TR0=1;           //啟動定時器                       
  53.         TR1=1;
  54.         ET0=1;     //打開定時器0中斷                       
  55.         ES=1;       
  56. }
  57. //*********LCD1602初始化**********************
  58. void InitLcd()                               
  59. {                       
  60.         WriteCommandLCM(0x38,1);       
  61.         WriteCommandLCM(0x08,1);       
  62.         WriteCommandLCM(0x01,1);
  63.         WriteCommandLCM(0x06,1);       
  64.         WriteCommandLCM(0x0c,1);
  65. }
  66. //**********檢測忙信號************************
  67. void WaitForEnable(void)       
  68. {                                       
  69.         DataPort=0xff;               
  70.         LCM_RS=0;LCM_RW=1;_nop_();
  71.         LCM_EN=1;_nop_();_nop_();
  72.         while(DataPort&0x80);       
  73.         LCM_EN=0;                               
  74. }                                       
  75. //**********寫命令至LCD***********************
  76. void WriteCommandLCM(uchar CMD,uchar Attribc)
  77. {                                       
  78.         if(Attribc)WaitForEnable();       
  79.         LCM_RS=0;LCM_RW=0;_nop_();
  80.         DataPort=CMD;_nop_();       
  81.         LCM_EN=1;_nop_();_nop_();LCM_EN=0;
  82. }                                       
  83. //**********寫數(shù)據(jù)至LCD************************
  84. void WriteDataLCM(uchar dataW)
  85. {                                       
  86.         WaitForEnable();               
  87.         LCM_RS=1;LCM_RW=0;_nop_();
  88.         DataPort=dataW;_nop_();       
  89.         LCM_EN=1;_nop_();_nop_();LCM_EN=0;
  90. }                                       
  91. //*********寫一個字符數(shù)據(jù)到指定的目標***********
  92. void DisplayOneChar(uchar X,uchar Y,uchar DData)
  93. {                                               
  94.         Y&=1;                                               
  95.         X&=15;                                               
  96.         if(Y)X|=0x40;                                       
  97.         X|=0x80;                       
  98.         WriteCommandLCM(X,0);               
  99.         WriteDataLCM(DData);               
  100. }
  101. //**********延時函數(shù)***************
  102. void delay(unsigned int k)       
  103. {                                               
  104.         unsigned int i,j;                               
  105.         for(i=0;i<k;i++)
  106.         {                       
  107.         for(j=0;j<121;j++)                       
  108.         {;}
  109.         }                                               
  110. }                                                           
  111. //*********串口數(shù)據(jù)發(fā)送******************
  112. void  SeriPushSend(uchar send_data)
  113. {
  114.     SBUF=send_data;  
  115.         while(!TI);TI=0;          
  116. }
  117. //*********按鍵檢測**********************
  118. void ReadKey(void)
  119. {

  120.     EA=0;
  121.     if(KEY_1==0){
  122.        delay(50);
  123.        if(KEY_1==0){
  124.        SeriPushSend(0XC0);                                    //發(fā)送校準命令。
  125.            display();
  126.        while(KEY_1==0);                                       //等待按鍵放開
  127.        }
  128.     }
  129.     if(KEY_2==0){
  130.        delay(50);
  131.        if(KEY_2==0){
  132.        SeriPushSend(0XC1);                                    //發(fā)送停止校準命令。
  133.            display();
  134.        while(KEY_2==0);                                       //等待按鍵放開
  135.        }
  136.     }
  137.     if(KEY_3==0){
  138.        delay(50);
  139.        if(KEY_3==0){
  140.        SeriPushSend(0XA0);                                    //發(fā)送恢復出廠命令。
  141.            display();
  142.        SeriPushSend(0XAA);                                    //發(fā)送恢復出廠命令。
  143.            display();
  144.        SeriPushSend(0XA5);                                    //發(fā)送恢復出廠命令。
  145.            display();
  146.        SeriPushSend(0XC5);                                    //發(fā)送恢復出廠命令。
  147.            display();
  148.        while(KEY_3==0);                                       //等待按鍵放開
  149.        }
  150.     }

  151.     if(KEY_4==0){
  152.        delay(50);
  153.        if(KEY_4==0){
  154.        SeriPushSend(0X3);                                    //發(fā)送設定磁偏角高8位命令。
  155.            display();
  156.        SeriPushSend(0X0);                                    //發(fā)送磁偏角高8位的數(shù)據(jù)。
  157.            display();
  158.        SeriPushSend(0X4);                                    //發(fā)送設定磁偏角低8位命令
  159.            display();
  160.        SeriPushSend(0X64);                                   //發(fā)送磁偏角低8位的數(shù)據(jù)。此時磁偏角被設定為10.0度
  161.            display();
  162.        while(KEY_4==0);                                       //等待按鍵放開
  163.        }
  164.     }
  165. /*
  166.     if(KEY_5==0){
  167.        delay(50);
  168.        if(KEY_4==0){
  169.        SeriPushSend(0XAE);                                    //發(fā)送當前角度為0度命令。
  170.            display();
  171.        while(KEY_4==0);                                       //等待按鍵放開
  172.        }
  173.     }
  174. */

  175.     EA=1;

  176. }
  177. //*******************數(shù)據(jù)接收并顯示**********************
  178. void display(void)
  179. {
  180.     uchar SUM;
  181.     uint   i ;
  182.    for (i=0;i<3000;i++);                                      //傳送數(shù)據(jù)延時
  183.           if(BUF[0]==0X0D&&BUF[1]==0X0A){                         //幀頭判斷
  184.         SUM=BUF[6]+BUF[5]+BUF[4]+BUF[3]+BUF[2]+BUF[1]+BUF[0]; //校驗和
  185.                if (BUF[7]==SUM){                                     //校驗和判斷
  186.           DisplayOneChar(0,0,BUF[2]);                         //角度百位值 寫入LCD,因為是字符類型,所以不用轉換,直接顯示
  187.           DisplayOneChar(1,0,BUF[3]);                         //角度十位值 寫入LCD
  188. ……………………

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








評分

參與人數(shù) 1黑幣 +5 收起 理由
LAYLAY21JA + 5 很給力!

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:29032 發(fā)表于 2019-4-3 15:37 | 只看該作者
謝謝分享~~
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品视频一区二区在线观看 | 国产日韩欧美在线观看 | 亚洲一区视频在线 | 手机av免费在线 | 久久精品亚洲 | 日韩中文一区 | 中日韩毛片 | 日韩三级一区 | 在线免费观看黄视频 | 粉嫩av久久一区二区三区 | 国产1页 | 国产成人精品一区二区三区视频 | 一区二区三区国产精品 | 四虎影院在线观看免费视频 | 成人性生交大片免费看r链接 | 欧美黑人激情 | 91在线视频免费观看 | 精品乱码一区二区 | 99国产视频 | www..com18午夜观看| 国产精品久久久久aaaa樱花 | 中文字幕男人的天堂 | 亚洲国产二区 | 国产日产精品一区二区三区四区 | 中文字幕不卡 | 成人免费网站www网站高清 | 国产精品一区二区三区四区 | 日本成人中文字幕在线观看 | 天天噜天天干 | 情侣酒店偷拍一区二区在线播放 | 你懂的在线视频播放 | 国产成人精品网站 | 在线播放中文字幕 | 超碰av免费| 欧美日韩国产精品 | 国产精品高清一区二区三区 | 欧美自拍另类 | 国产成人艳妇aa视频在线 | 国产重口老太伦 | 亚洲国产精品久久人人爱 | 欧美成人h版在线观看 |