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

標題: 基于熱敏電阻的單片機溫度測量系統設計源碼與電路圖 [打印本頁]

作者: 晴陽    時間: 2018-4-16 09:33
標題: 基于熱敏電阻的單片機溫度測量系統設計源碼與電路圖
本課題用一種基于單片機的數據采集系統方案,該方案根據熱敏電阻隨溫度變化而變化的特性,采用串聯分壓電路。單片機采集熱敏電阻的電壓,通過A/D轉換將模擬量電壓信號轉換成數字量電壓信號,經過查表轉換得到溫度值,控制液晶屏實時顯示溫度值。本系統中所用到的器件是STC89C52單片機、NTC熱敏電阻和LCD1602液晶顯示屏。

原理圖如下


單片機源程序如下:
  1. #include<reg52.h>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit rs=P0^5;
  6. sbit rw=P0^6;
  7. sbit e=        P0^7;
  8. sbit ADCS=P1^0;
  9. sbit ADCLK=P1^1;
  10. sbit ADDI=P1^2;
  11. sbit ADDO=P1^2;
  12. uchar code tab3[]="Low-temperature ";  
  13. uchar code tab4[]="Over-temperature";
  14. uchar code tab5[]="     Error      ";
  15. uchar code tab6[]="  Temp:";
  16. uchar code tab7[]="     Normal     ";
  17. uchar code tab1[]="0123456789";
  18. uchar code tab2[]=
  19.           {79,78,77,76,75,74,73,72,                   //溫度補償表
  20.            71,70,69,68,67,67,66,65,
  21.            64,63,63,62,61,60,60,59,
  22.            58,58,57,56,56,55,54,54,
  23.            53,53,52,52,51,50,50,49,
  24.            49,48,48,47,47,46,46,45,
  25.            45,44,44,43,43,43,42,42,
  26.            41,41,40,40,39,39,39,38,
  27.            38,37,37,36,36,36,35,35,
  28.            34,34,34,33,33,33,32,32,
  29.            31,31,31,30,30,30,29,29,
  30.            28,28,28,27,27,27,26,26,
  31.            26,26,25,25,24,24,23,23,
  32.            23,22,22,22,21,21,21,20,
  33.            20,20,19,19,19,18,18,18,
  34.            17,17,17,16,16,16,15,15,
  35.            15,14,14,13,13,13,12,12,
  36.            12,11,11,11,10,10,10,9,
  37.            9,9,8,8,7,7,7,6,
  38.            6,6,5,5,4,4,4,3,
  39.            3,3,2,2,1,1,1,0,
  40.            0,1,1,2,2,2,3,3,
  41.            4,4,5,5,6,6,7,7,
  42.            8,8,9,9,10,10,11,11,
  43.            12,12,13,14,15,15,16,17,
  44.            17,18,19,19,20};
  45. uint ad,ad1;
  46. //*********延時50us*t*******************
  47. void delay_50us(uint t)
  48. {
  49.         uchar j,z;
  50.         for(z=t;z>0;z--)
  51.                 for(j=19;j>0;j--);
  52. }
  53. //**************************************
  54. //**********延時1ms*z*******************
  55. void delay(uint z)
  56. {
  57.     uint x,y;
  58.     for(x=z;x>0;x--)
  59.         for(y=110;y>0;y--);
  60. }
  61. //**************************************
  62. //*********寫指令****************
  63. void write_com(uchar com1)
  64. {
  65.         e=0;
  66.         rs=0;
  67.         rw=0;
  68.         P2=com1;
  69.         delay_50us(10);
  70.     e=1;
  71.         delay_50us(20);
  72.         e=0;  
  73. }
  74. //**********寫數據*******************
  75. void write_data(uchar dat1)
  76. {
  77.     e=0;
  78.     rs=1;
  79.     rw=0;
  80.     P2=dat1;
  81.     delay_50us(10);
  82.     e=1;
  83.     delay_50us(20);
  84.     e=0;        
  85. }
  86. //*****液晶初始化*******************
  87. void lcd1602init()
  88. {
  89.         delay_50us(300);
  90.         write_com(0x38);
  91.         write_com(0x08);
  92.         write_com(0x01);
  93.     write_com(0x06);
  94.         write_com(0x0c);
  95. }
  96. //***********AD轉換模塊**************
  97. uint ADC0832(uchar channel)
  98. {
  99.         uchar i;
  100.         uint dat=0;
  101.         uchar ndat=0;
  102.         if(channel==0)channel=2;
  103.         if(channel==1)channel=3;
  104.         ADDI=1;
  105.         _nop_();
  106.         _nop_();
  107.         ADCS=0;//拉低CS端
  108.         _nop_();
  109.         _nop_();
  110.         ADCLK=1;//拉高CLK端
  111.         _nop_();
  112.         _nop_();
  113.         ADCLK=0;//拉低CLK端,形成下降沿1
  114.         _nop_();
  115.         _nop_();
  116.         ADCLK=1;//拉高CLK端
  117.         ADDI=channel&0x1;
  118.         _nop_();
  119.         _nop_();
  120.         ADCLK=0;//拉低CLK端,形成下降沿2
  121.         _nop_();
  122.         _nop_();
  123.         ADCLK=1;//拉高CLK端
  124.         ADDI=(channel>>1)&0x1;
  125.         _nop_();
  126.         _nop_();
  127.         ADCLK=0;//拉低CLK端,形成下降沿3
  128.         ADDI=1;//控制命令結束
  129.         _nop_();
  130.         _nop_();
  131.         dat=0;
  132.         for(i=0;i<8;i++)
  133.         {
  134.                 dat|=ADDO;//收數據
  135.                    ADCLK=1;
  136.                    _nop_();
  137.                    _nop_();
  138.                    ADCLK=0;//形成一次時鐘脈沖
  139.             _nop_();
  140.             _nop_();
  141.             dat<<=1;
  142.             if(i==7)dat|=ADDO;
  143.         }
  144.         for(i=0;i<8;i++)
  145.         {               
  146.             ndat>>=1;
  147.                 if(ADDO==1)
  148.                 ndat|=0x80;
  149.             ADCLK=1;
  150.             _nop_();
  151.             _nop_();
  152.             ADCLK=0;//形成一次時鐘脈沖
  153.             _nop_();
  154.             _nop_();
  155.         }
  156.         
  157.         ADCS=1;//拉低CS端
  158.         ADCLK=0;//拉低CLK端
  159.         ADDO=1;//拉高數據端,回到初始狀態
  160.     if(dat==ndat)
  161.         {
  162.             return(ndat);
  163.         }
  164.         else
  165.         {
  166.                 return(0x00);
  167.         }           
  168. }

  169. //**************顯示模塊***********************
  170. void disp()
  171. {
  172.      ad1=ad-29;
  173.          write_com(0x80);
  174.          if(ad<29)
  175.          {
  176.               uchar i;
  177.                   for(i=0;i<16;i++)
  178.                   {
  179.                           write_data(tab4[i]);
  180.                   }
  181.                   write_com(0x80+0x40);
  182.                    for(i=0;i<16;i++)
  183.                   {
  184.                           write_data(tab5[i]);
  185.                   }               
  186.          }
  187.                   else if(ad>233)
  188.          {
  189.                    uchar i;
  190.                   for(i=0;i<16;i++)
  191.                   {
  192.                           write_data(tab3[i]);
  193.                   }        
  194.                    write_com(0x80+0x40);
  195.                    for(i=0;i<16;i++)
  196.                   {
  197.                           write_data(tab5[i]);
  198.                   }               
  199.          }                 
  200.          else if(ad>=29&&ad<=233)
  201.          {           
  202.               uchar i;
  203.                   for(i=0;i<16;i++)
  204.                   {
  205.                           write_data(tab7[i]);
  206.                   }        
  207.                   write_com(0x80+0x40);
  208.                   for(i=0;i<7;i++)
  209.                           write_data(tab6[i]);                        
  210.                    if(ad>197)
  211.                   {
  212.                             write_data('-');
  213.                           write_data(tab1[(tab2[ad1])/10]);
  214.                           write_data(tab1[(tab2[ad1])%10]);        
  215.                   }
  216.                   else
  217.                   {
  218.                           write_data(' ');
  219.                           write_data(tab1[tab2[ad1]/10]);
  220.                           write_data(tab1[tab2[ad1]%10]);
  221.                   }
  222.                   write_data(0xdf);                                 //顯示溫度符號
  223.                  write_data('C');        
  224.          }
  225. }
  226. //***************主函數***********************
  227. void main()
  228. {
  229.         lcd1602init();                   //液晶初始化
  230.         while(1)
  231.         {
  232.                 ad=ADC0832(0);           //讀取溫度值
  233.                 disp();                  //調用顯示程序
  234.         }
  235. }
復制代碼

完整的Word格式文檔51黑下載地址:
基于單片機的溫度測量儀的設計.docx (495.57 KB, 下載次數: 142)




作者: 128xyy    時間: 2018-6-17 20:10
實用不過你用的是差分還是單通道
作者: cpzhenkeai    時間: 2020-1-19 14:52
為什么液晶顯示不出來啊
作者: 13643703500    時間: 2020-4-29 16:29
很棒的 很實用
作者: 木比白    時間: 2020-5-28 09:15
好兄弟,led怎么不亮




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲久久 | 一区二区三区av | 91精品国产乱码久久久久久久久 | 色综合天天天天做夜夜夜夜做 | 日韩在线不卡视频 | 欧美日韩一区不卡 | 欧美激情 一区 | 亚洲国产二区 | 韩三级在线观看 | 97久久国产 | 久久婷婷麻豆国产91天堂 | 亚洲免费视频在线观看 | 免费精品视频一区 | 亚洲免费人成在线视频观看 | 91精品久久久久久久久中文字幕 | 日韩精品久久久 | 亚洲理论在线观看电影 | 91人人视频在线观看 | 日韩高清一区二区 | 国内精品久久久久久 | 看av网址 | 国产欧美一区二区三区日本久久久 | 国产精品成av人在线视午夜片 | 亚洲一区不卡 | 男人天堂视频在线观看 | h视频免费在线观看 | 国产精品国产三级国产aⅴ中文 | 天天操天天怕 | 亚洲视频第一页 | 色视频成人在线观看免 | 中文二区| 国产精品久久久久久 | 欧美极品少妇xxxxⅹ免费视频 | 欧美一级黄色片 | 亚洲男人的天堂网站 | 在线播放中文 | 国产精品久久久久久久久久久免费看 | 99视频在线免费观看 | 日韩一二三| av一级久久 | 国产精品久久久久久久久久免费看 |