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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機(jī)非接觸人體測溫安裝圖+原理圖+C語言程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:981841 發(fā)表于 2021-12-13 09:56 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式


電路原理圖如下:




單片機(jī)源程序如下:
  1. #include"reg52.h"
  2. #include"intrins.h"
  3. #include"common.h"
  4. #include"Key.h"
  5. #include"lcd1602.h"

  6. //************************************
  7. #define Nack_counter 10

  8. //mlx90614 端口定義
  9. sbit SCL=P3^6;//時鐘線
  10. sbit SDA=P3^7;//數(shù)據(jù)線
  11. //************數(shù)據(jù)定義****************
  12. bdata uchar flag;//可位尋址數(shù)據(jù)
  13. sbit bit_out=flag^7;
  14. sbit bit_in=flag^0;

  15. bit start_flag;
  16. uchar DataH,DataL,Pecreg;
  17. uchar flag1;

  18. uchar dis0[] = "Life Is Movement";
  19. uchar dis1[] = "  T: 000.00 C   ";
  20. uchar dis2[] = " X:     S:      ";
  21. uint Max_Tem = 3800;//最大溫度,100倍
  22. uint Min_Tem = 2000;//最小溫度
  23. uint Tem;
  24. uchar status = 0;




  25. //************函數(shù)聲明*****************************************
  26. void start_bit(); //MLX90614 發(fā)起始位子程序
  27. void stop_bit(); //MLX90614 發(fā)結(jié)束位子程序
  28. uchar rx_byte(void); //MLX90614 接收字節(jié)子程序
  29. void send_bit(void); //MLX90614 發(fā)送位子程序
  30. void tx_byte(uchar dat_byte); //MLX90614 接收字節(jié)子程序
  31. void receive_bit(void); //MLX90614 接收位子程序
  32. void delay(uint);
  33. uint memread(void); //讀溫度數(shù)據(jù)
  34. void display(uint Tem); //顯示子程序
  35. //*************主函數(shù)*******************************************
  36. void main()
  37. {
  38.     uint i,count;
  39. //函數(shù)部分
  40.     SCL=1;
  41.     SDA=1;
  42.     _nop_();
  43.     _nop_();
  44.     _nop_();
  45.     _nop_();
  46.     SCL=0;
  47.     delay(1000);
  48.     SCL=1;

  49.         dis1[11] =0xdf;
  50.         
  51.         LCD_init();                  //lcd初始化
  52.     start_flag = 0;
  53.         delay_ms(2000);
  54.     while(1)
  55.     {
  56.             count++;
  57.                 if(count<500)
  58.                 {
  59.           Tem=memread();         //讀取溫度
  60.                   delay_ms(5000);
  61.                   key_det();                 //按鍵掃描
  62.           display(Tem);                  //顯示溫度
  63.                   delay_ms(5000);
  64.               for(i=0;i<16;i++)
  65.           {
  66.                         LCD_write_char(i,0,dis1[i]);
  67.                         LCD_write_char(i,1,dis2[i]);
  68.           }
  69.                   delay_ms(500);
  70.                   count=0;
  71.                 }
  72.     }
  73. }




  74. //*********輸入轉(zhuǎn)換并裝載*********
  75. void display(uint Tem)
  76. {
  77.     uint T,a,b,min,max;
  78.     T=Tem*2;
  79.     if(T>=27315)
  80.     {
  81.         T=T-27315;
  82.                 dis1[5]=' ';             // 符號位
  83.     }
  84.     else
  85.     {
  86.         T=27315-T;   
  87.                 dis1[5]='-';             // 符號位

  88.     }
  89.     a=T/100;
  90.         b=T-a*100;
  91.         dis1[5]=a/100+0x30;      // 百位
  92.         dis1[6]=(a%100)/10+0x30; // 十位
  93.         dis1[7]=a%10+0x30;       // 個位
  94.         dis1[9]=b/10+0x30;      //十分位
  95.         dis1[10]=b%10+0x30;      //百分位        

  96.         if(Min_Tem<0)
  97.         {
  98.            dis2[3]='-';
  99.            min=-Min_Tem/100;
  100.         }
  101.         else
  102.         {
  103.            dis2[3]=' ';
  104.            min=Min_Tem/100;
  105.         }        
  106.         if(Max_Tem<0)
  107.         {
  108.            dis2[10]='-';
  109.            max=-Max_Tem/100;
  110.         }
  111.         else
  112.         {
  113.            dis2[10]=' ';
  114.            max=Max_Tem/100;
  115.         }        
  116.         
  117.         dis2[4] = min/100+0x30;                                //Min
  118.         dis2[5] = (min%100)/10+0x30;
  119.         dis2[6] = min%10+0x30;

  120.         dis2[11]= max/100+0x30;                           //Max
  121.         dis2[12]= (max%100)/10+0x30;
  122.         dis2[13]= max%10+0x30;

  123.         if(status==0)
  124.         {
  125.                 dis2[0] = ' ';
  126.                 dis2[7] = ' ';
  127.         }               

  128.         if(status==1)
  129.         {
  130.                 dis2[0] = '>';
  131.                 dis2[7] = ' ';
  132.         }
  133.                
  134.         if(status==2)
  135.         {
  136.                 dis2[0] = ' ';
  137.                 dis2[7] = '>';
  138.         }
  139.         
  140. }


  141. void start_bit(void)
  142. {
  143.     SDA=1;
  144.     _nop_();
  145.     _nop_();
  146.     _nop_();
  147.     _nop_();
  148.     _nop_();
  149.     SCL=1;
  150.     _nop_();
  151.     _nop_();
  152.     _nop_();
  153.     _nop_();
  154.     _nop_();
  155.     SDA=0;
  156.     _nop_();
  157.     _nop_();
  158.     _nop_();
  159.     _nop_();
  160.     _nop_();
  161.     SCL=0;
  162.     _nop_();
  163.     _nop_();
  164.     _nop_();
  165.     _nop_();
  166.     _nop_();
  167. }
  168. //------------------------------
  169. void stop_bit(void)
  170. {
  171.     SCL=0;
  172.     _nop_();
  173.     _nop_();
  174.     _nop_();
  175.     _nop_();
  176.     _nop_();
  177.     SDA=0;
  178.     _nop_();
  179.     _nop_();
  180.     _nop_();
  181.     _nop_();
  182.     _nop_();
  183.     SCL=1;
  184.     _nop_();
  185.     _nop_();
  186.     _nop_();
  187.     _nop_();
  188.     _nop_();
  189.     SDA=1;
  190. }
  191. //---------發(fā)送一個字節(jié)---------
  192. void tx_byte(uchar dat_byte)
  193. {
  194.     char i,n,dat;
  195.     n=Nack_counter;
  196. TX_again:
  197.     dat=dat_byte;
  198.     for(i=0; i<8; i++)
  199.     {
  200.         if(dat&0x80)
  201.             bit_out=1;
  202.         else
  203.             bit_out=0;
  204.         send_bit();
  205.         dat=dat<<1;
  206.     }
  207.     receive_bit();
  208.     if(bit_in==1)
  209.     {
  210.         stop_bit();
  211.         if(n!=0)
  212.         {
  213.             n--;
  214.             goto Repeat;
  215.         }
  216.         else
  217.             goto exit;
  218.     }
  219.     else
  220.         goto exit;
  221. Repeat:
  222.     start_bit();
  223.     goto TX_again;
  224. exit:
  225.     ;
  226. }
  227. //-----------發(fā)送一個位---------
  228. void send_bit(void)
  229. {
  230.     if(bit_out==0)
  231.         SDA=0;
  232.     else
  233.         SDA=1;
  234.     _nop_();
  235.     SCL=1;
  236.     _nop_();
  237.     _nop_();
  238.     _nop_();
  239.     _nop_();
  240.     _nop_();
  241.     _nop_();
  242.     _nop_();
  243.     _nop_();
  244.     SCL=0;
  245.     _nop_();
  246.     _nop_();
  247.     _nop_();
  248.     _nop_();
  249.     _nop_();
  250.     _nop_();
  251.     _nop_();
  252.     _nop_();
  253. }
  254. //----------接收一個字節(jié)--------
  255. uchar rx_byte(void)
  256. {
  257.     uchar i,dat;
  258.     dat=0;
  259.     for(i=0; i<8; i++)
  260.     {
  261.         dat=dat<<1;
  262.         receive_bit();
  263.         if(bit_in==1)
  264.             dat=dat+1;
  265.     }
  266.     send_bit();
  267.     return dat;
  268. }
  269. //----------接收一個位----------
  270. void receive_bit(void)
  271. {
  272.     SDA=1;
  273.     bit_in=1;
  274.     SCL=1;
  275.     _nop_();
  276.     _nop_();
  277.     _nop_();
  278.     _nop_();
  279.     _nop_();
  280.     _nop_();
  281.     _nop_();
  282.     _nop_();
  283.     bit_in=SDA;
  284. ……………………

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

所有資料51hei附件下載:
程序與原理圖.7z (583.09 KB, 下載次數(shù): 27)



03.jpg (1.24 MB, 下載次數(shù): 71)

03.jpg

IMG_20200830_175948_副本.jpg (1.13 MB, 下載次數(shù): 65)

IMG_20200830_175948_副本.jpg

評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:981841 發(fā)表于 2021-12-13 09:56 | 只看該作者
第二次的發(fā)帖
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品一区二区久久久久久久网精 | 日日干天天操 | 色播久久久 | 国产精品精品久久久久久 | 久久黄视频 | 久久成人一区 | 日韩三级在线观看 | 久久99久久98精品免观看软件 | 欧美一区二区三区免费在线观看 | 国产99久久| 成人在线观看免费 | 狠狠操狠狠操 | 狠狠综合久久av一区二区老牛 | 自拍视频精品 | 午夜影院| 九九99精品 | 成人做爰www免费看视频网站 | 在线观看毛片网站 | 成人在线免费视频 | 亚洲综合一区二区三区 | 久久一二区 | 免费av观看| 精品国产99| 亚洲影音先锋 | 婷婷综合 | 青青操av | 天天干人人 | 亚洲午夜网 | 亚洲成人免费视频在线观看 | 日韩在线播放一区 | 国产大学生情侣呻吟视频 | 中文字幕电影在线观看 | 成人美女免费网站视频 | 欧美日韩国产精品一区 | 国产男女猛烈无遮掩视频免费网站 | 国产精品福利视频 | 国产一区中文字幕 | 国产精品视频在线观看 | 欧美日韩精品久久久免费观看 | 在线播放中文字幕 | 久久人人国产 |