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

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

QQ登錄

只需一步,快速開始

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

mlx90614跟我的單片機(jī)一直不能通訊,下面是程序,求各位大佬幫助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:297539 發(fā)表于 2018-4-3 19:01 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
各位大佬,我的單片機(jī)一直不能跟MLX90614t通訊,希望大家可以幫忙解決,有點(diǎn)急,麻煩各位了。
  1. #include"HT66F2390.h"


  2. #include"oled.h"(這是oled的程序文件,不在下面)

  3. #ifndef HW_H
  4. #define HW_H
  5. #define uchar unsigned char
  6. #define Nack 10
  7. //*******端口定義***********
  8. //mlx90614
  9. #define SDA _pf4
  10. #define SCL _pg0
  11. #define RamAccess 0x00
  12. #define AbmientTempAddr  0x03  //周圍溫度
  13. #define IR1Addr    0x04
  14. #define IR2Addr    0x05
  15. #define LineAbmientTempAddr 0x06     //環(huán)境溫度
  16. #define LineObj1TempAddr 0x07  //目標(biāo)溫度,紅外溫度
  17. #define EepomAccess 0x20
  18. #define Mode 0x60
  19. #define ExitMode 0x61
  20. #define ReadFlag 0xf0
  21. #define LineObj2TempAddr 0x08 //eepom address  EEPROM地址
  22. int out=0, in=0;

  23. //*******函數(shù)聲明**********
  24. void start_bit();       //MLX90614 發(fā)起始位子程序
  25. void stop_bit();       //MLX90614 發(fā)結(jié)束位子程序
  26. uchar rx_byte(void);      //MLX90614 接收字節(jié)子程序
  27. void send_bit(void);      //MLX90614 發(fā)送位子程序
  28. void tx_byte(uchar dat_byte);    //MLX90614 接收字節(jié)子程序
  29. void jieshou();     //MLX90614 接收位子程序  //延時(shí)程序
  30. void delay_h(unsigned int k);      //延時(shí)
  31. unsigned int memread(void);      //讀溫度數(shù)據(jù)
  32. void display_h(unsigned int Tem);

  33. //*********輸入轉(zhuǎn)換并顯示*********
  34. void display_h(unsigned int Tem)
  35. {
  36. unsigned int T,a,b;
  37.     uchar c;
  38. T=Tem*2;
  39. if(T>=27315)
  40.    {
  41.    T=T-27315;
  42.    a=T/100;
  43.     b=T-a*100;
  44.   
  45.    if(a>=100)
  46.     {
  47.      c=a/100;
  48.       write_wx1(c,1,6);//oled 顯示程序函數(shù)
  49.      a=a%100;
  50.      c=a/10;
  51.       write_wx1(c,7,6) ;
  52.      c=a%10;
  53.       write_wx1(c,13,6) ;
  54.     }
  55.    else if(a>=10)
  56.     {
  57.      c=a/10;
  58.      write_wx1(11,1,6);
  59.       write_wx1(c,7,6) ;
  60.      c=a%10;
  61.       write_wx1(c,13,6) ;
  62.      }
  63.    else
  64.     {
  65.     write_wx1(11,1,6);
  66.     write_wx1(11,7,6) ;
  67.     c=a%10;
  68.      write_wx1(c,13,6) ;
  69.     }
  70.      write_wx1(2,19,6) ;
  71. //分隔開
  72.    
  73.    
  74. if(b>=10)
  75.   {
  76.    b=b/10;
  77.     write_wx1(b,25,6);
  78.   }
  79.   else
  80.   {
  81.     write_wx1(0,25,6) ;
  82.   }
  83.    
  84.   }
  85.   
  86.   
  87. else
  88.    {
  89.    T=27315-T;
  90.    a=T/100;
  91.    b=T-a*100;
  92.    if(a>=10)
  93.     {
  94.      c=a/10;
  95.       write_wx1(c,7,6) ;
  96.      c=a%10;
  97.       write_wx1(c,13,6) ;
  98.      }
  99.     else
  100.     {
  101.      c=a%10;

  102.       write_wx1(c,7,6) ;
  103.     }
  104.       write_wx1(2,19,6) ;
  105. //分隔開
  106.    if(b>=10)
  107.     {
  108.      c=b/10;
  109.       write_wx1(c,25,6) ;
  110.     }
  111.    else
  112.      {
  113.       write_wx1(c,25,6) ;
  114.      }
  115.    }
  116. }

  117. void delay_h(unsigned int k)
  118. {
  119.    while(k--);
  120.    
  121.    
  122.   }
  123. //*********開始觸發(fā)*******
  124. void start_bit(void)
  125. {
  126. SDA=1;
  127. delay(5);
  128. SCL=1;
  129. delay(5);
  130. SDA=0;
  131. delay(5);  
  132. SCL=0;
  133. delay(5);
  134. }
  135. //*********結(jié)束*******
  136. void stop_bit(void)
  137. {
  138. SCL=0;
  139. delay(5);
  140. SDA=0;
  141. delay(5);
  142.    SCL=1;
  143. delay(5);
  144. SDA=1;
  145. }

  146. //---------發(fā)送一個(gè)字節(jié)---------
  147. void tx_byte(uchar dat_byte)
  148. {
  149. uchar i,n,dat;
  150.   n=Nack;
  151.    
  152. TX_again:
  153.   dat=dat_byte;
  154.   
  155. for(i=0;i<8;i++)
  156.   {
  157.    if(dat&0x80)
  158.     out=1;
  159.    else
  160.    {
  161.     out=0;
  162.    }
  163.    send_bit();
  164.   
  165.    dat=dat<<1;
  166.   }
  167.    
  168.   jieshou();//
  169.   
  170.   if(in==1)//?
  171.   {
  172.          stop_bit();
  173.     if(n!=0)
  174.     {
  175.      n--;
  176.      goto Repeat;
  177.     }
  178.    
  179.     else
  180.      goto exit;
  181.    }
  182.   
  183.    else
  184.    {
  185.     goto exit;
  186.    }
  187.    
  188.    Repeat:
  189.    start_bit();
  190.    goto TX_again;
  191.    
  192.    exit:    ;
  193.     }
  194. //*********發(fā)送一個(gè)位*******
  195. void send_bit(void)
  196. {

  197. if(out==1)
  198.   SDA=1;
  199. else
  200. {
  201.   SDA=0;
  202. }
  203. delay(5);

  204. SCL=1;
  205.     delay(8);
  206. SCL=0;
  207.   delay(8);  
  208. }

  209. //----------接收一個(gè)字節(jié)--------
  210. uchar rx_byte(void)
  211. {
  212. uchar i,dat;

  213. dat=0;

  214. for(i=0;i<8;i++)
  215. {
  216.    dat=dat<<1;
  217.    jieshou();//
  218.    if(in==1)
  219.     dat=dat+1;
  220.   }
  221.   SDA=0;
  222.   send_bit();//?
  223.   
  224. return dat;
  225. }

  226. //----------接收一個(gè)位----------
  227. void jieshou()
  228. {
  229.     SDA=1;
  230.    
  231.   in=1;
  232.   SCL=1;
  233.     delay(8);
  234.   in=SDA;
  235. delay(1);
  236.   SCL=0;
  237. delay(8);
  238. }
  239. //-----------讀溫度--------------
  240. unsigned int memread(void)
  241. {
  242.   uchar DataH,DataL,Pecreg;
  243.    
  244.   start_bit();
  245.   
  246.   tx_byte(0x00);      //Send SlaveAddress
  247.   
  248. tx_byte(0x07);   //Send Command
  249.   start_bit();
  250.   
  251.   tx_byte(0x1);
  252.   
  253.   out=0;
  254.   DataL=rx_byte();
  255.   out=0;
  256.   DataH=rx_byte();
  257.   out=1;//
  258.   Pecreg=rx_byte();
  259.   stop_bit();
  260.   
  261. return(DataH*256+DataL);
  262. }

  263. #endif




  264. 主函數(shù):
  265. #include "HT66F2390.h"
  266. #include"hw.h"
  267. #include"oled.h"
  268. void main()
  269. {
  270.   unsigned int tem;
  271.   
  272. _wdtc = 0xa8;
  273. _pec = 0x00;
  274. _scc = 0x00;
  275. _pfc = 0x00;
  276.     _hirc0 =0;
  277.     _hirc1 =0;
  278.    

  279. Init();
  280. qp();
  281. write_x(5,10);
  282.   
  283. SCL=1;
  284.     SDA=1;
  285.    delay(4);
  286.     SCL=0;
  287.     delay(1000);
  288.     SCL=1;   
  289. while(1)
  290. {
  291.   
  292.    
  293.   tem =memread();
  294.      display_h(tem);
  295.      delay(20);
  296. }
復(fù)制代碼


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

使用道具 舉報(bào)

沙發(fā)
ID:727893 發(fā)表于 2020-4-21 14:55 來自觸屏版 | 只看該作者
樓主請(qǐng)問Oled.h的代碼是什么
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产成人av好男人在线观看 | 亚洲一二三在线 | 亚洲欧美精品在线 | 日韩欧美不卡 | 成人免费视频 | 在线亚州| 国产成人精品网站 | 亚洲成人观看 | 欧美日韩国产不卡 | 精品三区| 羞羞视频网站在线观看 | 国产视频1区2区 | 天堂资源视频 | 欧美一区二区三区免费电影 | 久久美女视频 | 夜夜草天天草 | 黄色免费观看网站 | 欧美黄色性生活视频 | 一区中文字幕 | 亚洲网站在线观看 | 亚洲成人一级 | 女人天堂av | h网站在线观看 | 日韩欧美一级片 | 天啪| 国产成人99av超碰超爽 | 美女131mm久久爽爽免费 | 久久久久亚洲精品 | 亚洲综合精品 | 91精品国产91久久久久久密臀 | 国产欧美精品一区二区三区 | 人人草人人干 | 91久久精品国产91久久性色tv | 成人久久久久 | 日韩av一区二区在线观看 | 久久久精品一区 | 久久久久久中文字幕 | 婷婷久久综合 | 中文成人在线 | 国产91一区 | 成人激情视频免费在线观看 |