欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

只需一步,快速開始

搜索
查看: 7502|回復(fù): 4
收起左側(cè)

基于熱敏電阻的單片機(jī)溫度測(cè)量系統(tǒng)設(shè)計(jì)源碼與電路圖

[復(fù)制鏈接]
ID:308992 發(fā)表于 2018-4-16 09:33 | 顯示全部樓層 |閱讀模式
本課題用一種基于單片機(jī)的數(shù)據(jù)采集系統(tǒng)方案,該方案根據(jù)熱敏電阻隨溫度變化而變化的特性,采用串聯(lián)分壓電路。單片機(jī)采集熱敏電阻的電壓,通過A/D轉(zhuǎn)換將模擬量電壓信號(hào)轉(zhuǎn)換成數(shù)字量電壓信號(hào),經(jīng)過查表轉(zhuǎn)換得到溫度值,控制液晶屏實(shí)時(shí)顯示溫度值。本系統(tǒng)中所用到的器件是STC89C52單片機(jī)、NTC熱敏電阻和LCD1602液晶顯示屏。

原理圖如下

圖1 總體電路原理圖

圖1 總體電路原理圖


單片機(jī)源程序如下:
  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,                   //溫度補(bǔ)償表
  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. //*********延時(shí)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. //**********延時(shí)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. //**********寫數(shù)據(jù)*******************
  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轉(zhuǎn)換模塊**************
  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;//控制命令結(jié)束
  129.         _nop_();
  130.         _nop_();
  131.         dat=0;
  132.         for(i=0;i<8;i++)
  133.         {
  134.                 dat|=ADDO;//收數(shù)據(jù)
  135.                    ADCLK=1;
  136.                    _nop_();
  137.                    _nop_();
  138.                    ADCLK=0;//形成一次時(shí)鐘脈沖
  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;//形成一次時(shí)鐘脈沖
  153.             _nop_();
  154.             _nop_();
  155.         }
  156.         
  157.         ADCS=1;//拉低CS端
  158.         ADCLK=0;//拉低CLK端
  159.         ADDO=1;//拉高數(shù)據(jù)端,回到初始狀態(tài)
  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);                                 //顯示溫度符號(hào)
  223.                  write_data('C');        
  224.          }
  225. }
  226. //***************主函數(shù)***********************
  227. void main()
  228. {
  229.         lcd1602init();                   //液晶初始化
  230.         while(1)
  231.         {
  232.                 ad=ADC0832(0);           //讀取溫度值
  233.                 disp();                  //調(diào)用顯示程序
  234.         }
  235. }
復(fù)制代碼

完整的Word格式文檔51黑下載地址:
基于單片機(jī)的溫度測(cè)量?jī)x的設(shè)計(jì).docx (495.57 KB, 下載次數(shù): 142)



回復(fù)

使用道具 舉報(bào)

ID:353425 發(fā)表于 2018-6-17 20:10 | 顯示全部樓層
實(shí)用不過你用的是差分還是單通道
回復(fù)

使用道具 舉報(bào)

ID:669969 發(fā)表于 2020-1-19 14:52 來自觸屏版 | 顯示全部樓層
為什么液晶顯示不出來啊
回復(fù)

使用道具 舉報(bào)

ID:741037 發(fā)表于 2020-4-29 16:29 | 顯示全部樓層
很棒的 很實(shí)用
回復(fù)

使用道具 舉報(bào)

ID:763026 發(fā)表于 2020-5-28 09:15 | 顯示全部樓層
好兄弟,led怎么不亮
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表