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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12665|回復: 25
收起左側

51單片機MLX90614非接觸紅外測溫程序中文資料,帶電路親測有效

  [復制鏈接]
ID:655794 發表于 2019-12-4 11:27 | 顯示全部樓層 |閱讀模式
這個模塊采用I2C通訊,只需要接兩個上拉電阻,就可以了,還是很好用的。推薦一波
51hei.png 51hei.png

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

  130. //************************************
  131. void   start_bit(void)
  132. {
  133.    SDA=1;
  134.    _nop_();_nop_();_nop_();_nop_();_nop_();
  135.    SCL=1;
  136.    _nop_();_nop_();_nop_();_nop_();_nop_();
  137.    SDA=0;
  138.    _nop_();_nop_();_nop_();_nop_();_nop_();
  139.    SCL=0;
  140.    _nop_();_nop_();_nop_();_nop_();_nop_();

  141. }
  142. //------------------------------
  143. void   stop_bit(void)
  144. {

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

  217. //---------- 接收一個位----------
  218. void receive_bit(void)
  219. {
  220.   SDA=1;bit_in=1;
  221.   SCL=1;
  222.   _nop_();_nop_();_nop_();_nop_();
  223.   _nop_();_nop_();_nop_();_nop_();
  224.   bit_in=SDA;
  225.   _nop_();
  226.   SCL=0;
  227.   _nop_();_nop_();_nop_();_nop_();
  228.   _nop_();_nop_();_nop_();_nop_();
  229. }
  230. //------------ 延時--------------
  231. void   delay(uint N)
  232. {
  233.   uint i;
  234.   for(i=0;i<N;i++)
  235.   
  236.      _nop_();
  237. }
  238. //------------------------------
  239. uint memread(void)
  240. {
  241.   start_bit();
  242.   tx_byte(0xB4);  //Send SlaveAddress ==============================
  243.   //tx_byte(0x00);
  244.   tx_byte(0x07);  //Send Command
  245.   //------------
  246.   start_bit();
  247.   tx_byte(0x01);
  248.   bit_out=0;
  249.   DataL=rx_byte();
  250.   bit_out=0;
  251.   DataH=rx_byte();
  252.   bit_out=1;
  253.   Pecreg=rx_byte();
  254.   stop_bit();
  255.   return(DataH*256+DataL);
  256. }
  257. //******************LCD 顯示子函數***********************
  258. void init1602(void)        // 初始化LCD
  259. {
  260.    dis_cmd_wrt(0x01);
  261.    dis_cmd_wrt(0x0c);
  262.    dis_cmd_wrt(0x06);
  263.    dis_cmd_wrt(0x38);
  264.    
  265.    }

  266. void chk_busy_flg(void) //LCD 忙標志判斷
  267. {
  268.    flag1=0x80;
  269.   while(flag1&0x80)
  270. {
  271.    P2=0xff;
  272.    RS=0;
  273.    RW=1;
  274.    LCDE=1;
  275.    flag1=P2;
  276.    LCDE=0;
  277. }
  278. }

  279. void dis_cmd_wrt(uchar cmd)    // 寫命令子函數
  280. {
  281.    chk_busy_flg();
  282.    P2=cmd;
  283.    RS=0;
  284.    RW=0;
  285.    LCDE=1;
  286.    LCDE=0;
  287. }

  288. void dis_dat_wrt(uchar dat) // 寫數據子函數
  289. {
  290.   chk_busy_flg();
  291.   if(flag1==16)
  292.   {
  293.    P2=0XC0;
  294.    RS=0;
  295.    RW=0;
  296.    LCDE=1;
  297.    LCDE=0;
  298.   }
  299.    P2=dat;
  300.    RS=1;
  301.    RW=0;
  302.    LCDE=1;
  303.    LCDE=0;
  304. }
復制代碼

所有資料51hei提供下載:
YX62425-MAX90614非接觸紅外測溫-190518.zip (17.78 MB, 下載次數: 509)


評分

參與人數 2黑幣 +63 收起 理由
absflash + 13 贊一個!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:678308 發表于 2019-12-31 17:42 | 顯示全部樓層
對應這個代碼的電路原理圖沒有嗎
回復

使用道具 舉報

ID:678308 發表于 2019-12-31 18:10 | 顯示全部樓層
對應的電路原理圖   單片機和lcd的連接
回復

使用道具 舉報

ID:84495 發表于 2020-2-19 16:35 | 顯示全部樓層
非常時期,這個東西還是挺不錯的,可以搞個測溫槍了
回復

使用道具 舉報

ID:84495 發表于 2020-2-19 16:48 | 顯示全部樓層
樓主測試的精度如何,我的614還沒到貨,
回復

使用道具 舉報

ID:695384 發表于 2020-2-20 23:51 | 顯示全部樓層
MLX90614esf-baa  5K
回復

使用道具 舉報

ID:373684 發表于 2020-2-21 10:56 | 顯示全部樓層
MLX90614 一百多1塊啊。好貴啊。做不出來就麻煩了

回復

使用道具 舉報

ID:373684 發表于 2020-2-21 11:35 | 顯示全部樓層
是不是用Aduino 做的
回復

使用道具 舉報

ID:696181 發表于 2020-2-21 16:59 來自觸屏版 | 顯示全部樓層
好像下載不了
回復

使用道具 舉報

ID:696181 發表于 2020-2-21 17:09 | 顯示全部樓層
有原理圖嗎
回復

使用道具 舉報

ID:384489 發表于 2020-2-24 17:21 | 顯示全部樓層
這個系列BAA都炒到95塊了還不好買,DCC直接買不到。
回復

使用道具 舉報

ID:89286 發表于 2020-2-25 10:53 | 顯示全部樓層
thanks for sharing
回復

使用道具 舉報

ID:697813 發表于 2020-2-25 11:14 | 顯示全部樓層
說實在話。沒有原理圖,只有程序,,很難搞明白工作原理的。
回復

使用道具 舉報

14#
無效樓層,該帖已經被刪除
ID:56665 發表于 2020-2-25 11:44 | 顯示全部樓層
不知道以前MLX90614模組價格是多少,現在這個價格太貴了。
回復

使用道具 舉報

ID:373684 發表于 2020-2-26 09:23 | 顯示全部樓層
m182892 發表于 2020-2-25 11:44
不知道以前MLX90614模組價格是多少,現在這個價格太貴了。

TB要70多啊
回復

使用道具 舉報

ID:700929 發表于 2020-3-4 23:27 來自觸屏版 | 顯示全部樓層
對應仿真圖沒有嗎
回復

使用道具 舉報

ID:679425 發表于 2020-3-5 14:12 | 顯示全部樓層
謝謝樓主分享。!
回復

使用道具 舉報

ID:580340 發表于 2020-3-6 18:37 | 顯示全部樓層
m182892 發表于 2020-2-25 11:44
不知道以前MLX90614模組價格是多少,現在這個價格太貴了。

75買的
回復

使用道具 舉報

ID:688939 發表于 2020-3-21 22:20 | 顯示全部樓層
這玩意現在買太坑,年前那個寶BAA 25塊錢一個,年后100多都不零售,就因為這個我的項目都改了
回復

使用道具 舉報

ID:369306 發表于 2020-4-3 10:10 | 顯示全部樓層
很好的資料  
回復

使用道具 舉報

ID:735912 發表于 2020-5-7 13:35 | 顯示全部樓層
這個能加報警功能嗎
回復

使用道具 舉報

23#
無效樓層,該帖已經被刪除
ID:746300 發表于 2020-5-8 14:31 | 顯示全部樓層
absflash 發表于 2020-2-19 16:35
非常時期,這個東西還是挺不錯的,可以搞個測溫槍了

這里面的文件怎么用啊,,,
回復

使用道具 舉報

25#
無效樓層,該帖已經被刪除
ID:604918 發表于 2020-9-20 22:10 | 顯示全部樓層
求個原理圖
回復

使用道具 舉報

ID:217419 發表于 2020-9-27 21:21 | 顯示全部樓層
對應的電路原理圖   單片機和lcd的連接
回復

使用道具 舉報

ID:826428 發表于 2020-11-28 21:25 | 顯示全部樓層
這不是smbus總線通信嗎,還是我認錯了,雖然和i2c很像
回復

使用道具 舉報

29#
無效樓層,該帖已經被刪除
ID:136485 發表于 2021-10-11 09:05 | 顯示全部樓層
下載看看,不過現在這個傳感器貴
回復

使用道具 舉報

31#
無效樓層,該帖已經被刪除
32#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 四虎永久在线精品免费一区二 | 91麻豆精品一区二区三区 | 成人精品国产一区二区4080 | 免费观看www7722午夜电影 | 九九热精品视频 | 精品一区二区三区四区在线 | 人人干人人看 | www日本高清视频 | 狠狠综合久久av一区二区老牛 | 性色的免费视频 | 亚洲一区在线观看视频 | 黄色一级免费 | 欧美精品久久久久 | 精品视频在线一区 | 国产高清精品在线 | 国产精品美女www爽爽爽视频 | 人人cao | 久久亚洲一区二区三区四区 | 国产1区在线 | av成人在线观看 | 国产激情一区二区三区 | 亚洲天堂成人在线视频 | 在线婷婷| 精品久久久久久久久久久下田 | 国产精品日韩在线观看 | 亚洲国产精品一区二区三区 | 99视频免费在线观看 | 久久专区 | 成人久久久| 精品久久久久久久久久久久久久 | 精品国产免费人成在线观看 | 久久一区二区三区电影 | 亚洲久在线| 中文字幕av在线播放 | 美女一级毛片 | 日韩视频在线免费观看 | 日本不卡一区二区三区 | 国产精品久久久久久久午夜片 | 国产一区视频在线 | 亚洲中字在线 | 成人精品免费视频 |