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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

GY906紅外測溫單片機程序_Keil 附MLX90614英文資料

  [復制鏈接]
跳轉到指定樓層
樓主
程序已經經過測試,正常運行,并且能夠通過GY906讀取溫度數據。
下為程序代碼截圖:


MLX90614英文資料


單片機源程序如下:
  1. #include "reg52.h"
  2. #include "intrins.h"

  3. //************************************
  4. #define  uint  unsigned int
  5. #define  uchar unsigned char
  6. #define  Nack_counter  10

  7. //************** 端口定義**************
  8. //LCD 控制線接口
  9. uchar flag1;
  10. sbit  LCD_RS=P2^7;
  11. sbit  LCD_EN=P2^6;
  12. //GY906 端口定義
  13. sbit  SCL=P2^0;// 時鐘線
  14. sbit  SDA=P2^1;// 數據線

  15. //************ 數據定義****************
  16. bdata uchar flag;//可位尋址數據
  17. sbit bit_out=flag^7;
  18. sbit bit_in=flag^0;
  19. uchar DataH,DataL,Pecreg;
  20. //************ 函數聲明*****************************************
  21. void   IIC_Start();                 //GY906 發起始位子程序
  22. void   IIC_Stop();                 //GY906發結束位子程序
  23. uchar  GY906_RX_Byte(void);              //GY906 接收字節子程序
  24. void   GY906_tx_Bit(void);             //GY906發送位子程序
  25. void   GY906_TX_Byte(uchar dat_byte);     //GY906 接收字節子程序
  26. void   GY906_rx_Bit(void);           //GY906接收位子程序
  27. void   delay(uint N);              //延時程序
  28. uint   memread(void);             // 讀溫度數據
  29. void   LcdInit(void);        //LCD 初始化子程序
  30. void   LcdCheckBusy(void);         //LCD 判斷忙子程序
  31. void   LcdWriteCmd(uchar cmd);     //LCD 寫命令子程序
  32. void   LcdWriteData(uchar dat);       //LCD 寫數據子程序
  33. void   display(uint Tem);           // 顯示子程序
  34. //*************主函數*******************************************
  35. void main()
  36. {
  37.         uint Tem;
  38.         //函數部分
  39.         SCL=1;SDA=1;_nop_();
  40.         _nop_();_nop_();_nop_();
  41.         SCL=0;
  42.         delay(1000);
  43.         SCL=1;
  44.         LcdInit();
  45.         while(1)
  46.         {
  47.          Tem=memread();
  48.          display(Tem);
  49.          delay(20);
  50.         }
  51. }
  52. //*********輸入轉換并顯示*********
  53. void display(uint Tem)
  54. {
  55. uint T,a,b;
  56. T=Tem*2;
  57.   LcdWriteCmd(0x01);//清屏
  58. if(T>=27315)
  59. {
  60.    T=T-27315;
  61.    a=T/100;
  62.    b=T-a*100;
  63. //---------------------------
  64.    if(a>=100)
  65.    {
  66.     LcdWriteData(0x30+a/100);
  67.     a=a%100;
  68.     LcdWriteData(0x30+a/10);
  69.     a=a%10;
  70.     LcdWriteData(0x30+a);
  71.    }
  72.    else if(a>=10)
  73.    {
  74.     LcdWriteData(0x30+a/10);
  75.     a=a%10;
  76.     LcdWriteData(0x30+a);
  77.    }
  78.    else
  79.    {
  80.     LcdWriteData(0x30+a);
  81.    }
  82.    LcdWriteData(0x2e);// 顯示點
  83.    //---------------------------
  84.   if(b>=10)
  85.   {
  86.     LcdWriteData(0x30+b/10);
  87. //    b=b%10;
  88. //    LcdWriteData(0x30+b);
  89.   }
  90.   else
  91.   {
  92.     LcdWriteData(0x30);
  93. //    LcdWriteData(0x30+b);
  94.   }
  95. }
  96. //==========
  97. else
  98. {
  99.   T=27315-T;
  100.   a=T/100;
  101.     b=T-a*100;
  102.   LcdWriteData(0x2d);
  103. //--------------------------
  104.   if(a>=10)
  105.   {
  106.     LcdWriteData(0x30+a/10);
  107.     a=a%10;
  108.     LcdWriteData(0x30+a);
  109.   }
  110.   else
  111.   {
  112.     LcdWriteData(0x30+a);
  113.   }
  114.   LcdWriteData(0x2e);//顯示點
  115. //--------------------------
  116.   if(b>=10)
  117.   {
  118.     LcdWriteData(0x30+b/10);
  119.     b=b%10;
  120.     LcdWriteData(0x30+b);
  121.   }
  122.   else
  123.   {
  124.     LcdWriteData(0x30);
  125.     LcdWriteData(0x30+b);
  126.   }
  127. }
  128. }

  129. //************************************
  130. void IIC_Start(void)
  131. {
  132.    SDA=1;
  133.    _nop_();_nop_();_nop_();_nop_();_nop_();
  134.    SCL=1;
  135.    _nop_();_nop_();_nop_();_nop_();_nop_();
  136.    SDA=0;
  137.    _nop_();_nop_();_nop_();_nop_();_nop_();
  138.    SCL=0;
  139.    _nop_();_nop_();_nop_();_nop_();_nop_();
  140. }
  141. //------------------------------
  142. void IIC_Stop(void)
  143. {

  144.    SCL=0;
  145.    _nop_();_nop_();_nop_();_nop_();_nop_();
  146.    SDA=0;
  147.    _nop_();_nop_();_nop_();_nop_();_nop_();
  148.    SCL=1;
  149.    _nop_();_nop_();_nop_();_nop_();_nop_();
  150.    SDA=1;
  151. }
  152. //--------- 發送一個字節---------
  153. void  GY906_TX_Byte(uchar dat_byte)
  154. {
  155.    char i,n,dat;
  156.    n=Nack_counter;
  157. TX_again:
  158.    dat=dat_byte;
  159.    for(i=0;i<8;i++)
  160.    {
  161.      if(dat&0x80)
  162.       bit_out=1;
  163.      else
  164.       bit_out=0;
  165.      GY906_tx_Bit();
  166.      dat=dat<<1;
  167.    }
  168.    
  169.       GY906_rx_Bit();
  170.    if(bit_in==1)
  171.    {
  172.     IIC_Stop();
  173.     if(n!=0)
  174.     {n--;goto Repeat;}
  175.     else
  176.      goto exit;
  177.    }
  178.    else
  179.     goto exit;
  180. Repeat:
  181.     IIC_Start();
  182.     goto TX_again;
  183. exit: ;
  184. }
  185. //-----------發送一個位---------
  186. void  GY906_tx_Bit(void)
  187. {
  188.   if(bit_out==0) SDA=0;
  189.   else SDA=1;
  190.   _nop_();
  191.   SCL=1;
  192.   _nop_();_nop_();_nop_();_nop_();
  193.   _nop_();_nop_();_nop_();_nop_();
  194.   SCL=0;
  195.   _nop_();_nop_();_nop_();_nop_();
  196.   _nop_();_nop_();_nop_();_nop_();
  197. }
  198. //---------- 接收一個字節--------
  199. uchar GY906_RX_Byte(void)
  200. {
  201.   uchar i,dat;
  202.   dat=0;
  203.   for(i=0;i<8;i++)
  204.   {
  205.     dat=dat<<1;
  206.     GY906_rx_Bit();
  207.     if(bit_in==1)
  208.      dat=dat+1;
  209.   }
  210.   GY906_tx_Bit();
  211.   return dat;
  212. }

  213. //---------- 接收一個位----------
  214. void GY906_rx_Bit(void)
  215. {
  216.   SDA=1;bit_in=1;
  217.   SCL=1;
  218.   _nop_();_nop_();_nop_();_nop_();
  219.   _nop_();_nop_();_nop_();_nop_();
  220.   bit_in=SDA;
  221.   _nop_();
  222.   SCL=0;
  223.   _nop_();_nop_();_nop_();_nop_();
  224.   _nop_();_nop_();_nop_();_nop_();
  225. }
  226. //------------ 延時--------------
  227. void delay(uint N)
  228. {
  229.   uint i;
  230.   for(i=0;i<N;i++)
  231.      _nop_();
  232. }
  233. //------------------------------
  234. uint memread(void)
  235. {
  236.   IIC_Start();
  237.   GY906_TX_Byte(0xB4);  //Send SlaveAddress ==============================
  238.   //GY906_TX_Byte(0x00);
  239.   GY906_TX_Byte(0x07);  //Send Command
  240.   //------------
  241.   IIC_Start();
  242.   GY906_TX_Byte(0x01);
  243.   bit_out=0;
  244.   DataL=GY906_RX_Byte();
  245.   bit_out=0;
  246.   DataH=GY906_RX_Byte();
  247.   bit_out=1;
  248.   Pecreg=GY906_RX_Byte();
  249.   IIC_Stop();
  250.   return(DataH*256+DataL);
  251. }
  252. //******************LCD 顯示子函數***********************

  253. /*********************************************************/
  254. // 液晶顯示初始化
  255. /*********************************************************/
  256. void LcdInit(void)        // 初始化LCD
  257. {
  258.    LcdWriteCmd(0x01);
  259.    LcdWriteCmd(0x0c);
  260.    LcdWriteCmd(0x06);
  261.    LcdWriteCmd(0x38);
  262. }

  263. void LcdCheckBusy(void) //LCD 忙標志判斷
  264. {
  265.         flag1=0x80;
  266. ……………………

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

所有資料51hei提供下載:
GY906_紅外測溫.zip (4.12 MB, 下載次數: 304)

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

使用道具 舉報

沙發
ID:284488 發表于 2020-7-27 08:50 | 只看該作者
感謝樓主分享,不知有沒有電路圖可分享,謝謝啦!
回復

使用道具 舉報

板凳
ID:587076 發表于 2020-9-5 18:55 | 只看該作者
電路圖加一
回復

使用道具 舉報

地板
ID:818452 發表于 2020-9-14 11:17 來自手機 | 只看該作者
加上電路原理圖吧,樓主
回復

使用道具 舉報

5#
ID:582255 發表于 2020-10-2 22:48 | 只看該作者
請問一下樓主,這個用的是什么樣顯示
回復

使用道具 舉報

6#
ID:899147 發表于 2022-4-17 14:52 | 只看該作者
T= (DataH:DataL)*0.02-273.15
回復

使用道具 舉報

7#
ID:899147 發表于 2022-4-17 14:53 | 只看該作者
T= (DataH:DataL)*0.02-273.15
回復

使用道具 舉報

8#
ID:1017106 發表于 2022-4-19 22:03 | 只看該作者
如果單片機使用stc8f2k64s4,延遲該怎么改呢?改了很久不能用
求助
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人精品国产免费网站 | 亚洲精品2| 国产精品久久一区 | 综合色站导航 | 在线观看亚 | 激情小说综合网 | 日韩精品在线免费 | 国产精品a级 | 精品国产欧美日韩不卡在线观看 | 久久精品一区二 | 久久久精品一区二区 | 奇米超碰在线 | 黄色一级毛片免费看 | 超碰网址 | 黄色片a级 | 91丨九色丨国产在线 | 九九色综合 | 国产黄色在线观看 | 色男人的天堂 | av国产精品 | 久久人爽 | 亚洲精品一区av在线播放 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 亚洲第一视频网站 | 亚洲欧洲精品成人久久奇米网 | 日韩中文字幕在线视频观看 | 亚洲视频区 | 国产亚洲精品91 | 国产一区二区精品 | 天天综合网7799精品 | 欧美在线观看免费观看视频 | 伊人春色成人网 | 日韩精品成人免费观看视频 | 玖玖免费| 中文字幕在线中文 | 精品国产精品 | 韩国av影院 | 久久国内| 精品乱子伦一区二区三区 | 毛片一区二区 | 国产成人精品网站 |