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

               找回密碼
               立即注冊

              QQ登錄

              只需一步,快速開始

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

              基于熱敏電阻的溫度傳感器

              [復(fù)制鏈接]
              ID:329771 發(fā)表于 2018-5-14 21:04 | 顯示全部樓層 |閱讀模式
              大二時候做的熱敏電阻溫度傳感器有需要的了解一下;
              多多指教
              需要的原件清單:
              元件名稱
              型號
              對應(yīng)原理圖編號
              數(shù)量
              電容
              10uF
              C1
              1
              電容
              30pF
              C2, C3
              2
              電容
              100nF
              C4
              1
              3MM 發(fā)光二極管 紅
              N-green
              L1
              1
              DC電源座子
              POWER
              P1
              1
              排阻
              102
              R1
              1
              電阻
              10k
              R2
              1
              電阻
              220
              R3
              1
              熱敏電阻
              100K(25C)
              R4
              1
              可調(diào)電阻
              10k
              R5
              1
              電阻
              30k
              R6
              1
              電阻
              1k
              R7
              1
              微動開關(guān)
              SW-PB
              S1
              1
              電源開關(guān)
              電源開關(guān)
              S2
              1
              4位數(shù)碼管
              共陰數(shù)碼管
              SMG1
              1
              51單片機
              STC89C51
              U1
              1
              模數(shù)轉(zhuǎn)換芯片
              ADC0809
              U2
              1
              可控精密穩(wěn)壓源
              TL431
              U3
              1
              晶振
              12MHz
              Y1
              1
              源程序:
              //程序頭函數(shù)
              #include <reg52.h>
              #include<intrins.h>
              //宏定義
              #define uint unsigned int
              #define uchar unsigned char
              #define Data_ADC0809 P1  //定義P1為Data_ADC0809

              //管腳聲明
              //ADC0832
              sbit SCL=P1^1;  
              sbit DO=P1^2;  
              sbit CS=P1^4;
              //顯示數(shù)組              H,   L,   -
              uchar Data_[]={
              0x5F,/*0*/
              0x44,/*1*/
              0x9D,/*2*/
              0xD5,/*3*/
              0xC6,/*4*/
              0xD3,/*5*/
              0xDB,/*6*/
              0x45,/*7*/
              0xDF,/*8*/
              0xD7,/*9*/
              0xCE,/*H*/
              0x1A,/*L*/
              0x80,/*-*/
              };
              uchar code Data_T[]={//AD數(shù)值對應(yīng)的溫度
              0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,/*0-11*///此范圍內(nèi)為無效值,讀到的數(shù)據(jù)顯示為---7
              0x89,0x88,0x87,0x86,0x85,0x84,0x83,0x82,0x81,/*12-20*/    //此范圍內(nèi)為負(fù)溫度值-9~-1
              0,1,2,3,4,5,6,6,7,8,    /*21-30*/        //以下為正溫度0-111
              9,9,10,11,11,12,13,13,14,15,  /*31-40*/
              15,16,17,17,18,18,19,19,20,21,/*41-50*/
              21,22,22,23,23,24,24,25,25,26, /*51-60*/
              26,27,27,28,28,29,29,30,30,30, /*61-70*/
              31,31,32,32,33,33,33,34,34,35, /*71-80*/
              35,36,36,36,37,37,38,38,39,39, /*81-90*/
              39,40,40,41,41,42,42,42,43,43, /*91-100*/
              44,44,44,45,45,46,46,47,47,47, /*101-110*/
              48,48,49,49,49,50,50,51,51,51, /*111-120*/
              52,52,53,53,54,54,54,55,55,56, /*121-130*/
              56,57,57,57,58,58,59,59,60,60, /*131-140*/
              60,61,61,62,62,63,63,64,64,65, /*141-150*/
              65,65,66,66,67,67,68,68,69,69, /*151-160*/
              70,70,71,71,72,72,73,73,74,74, /*161-170*/
              75,75,76,76,77,78,78,79,79,80, /*171-180*/
              80,81,82,82,83,83,84,85,85,86, /*181-190*/
              87,87,88,89,89,90,91,91,92,93, /*191-200*/
              94,94,95,96,97,98,99,99,100,101,/*201-210*/
              102,103,104,105,106,107,108,109,110,111 /*211-220*/
              };
              sbit Wei1 = P2^4;
              sbit Wei2 = P2^5;
              sbit Wei3 = P2^6;
              sbit Wei4 = P2^7;  //數(shù)碼管的位選
              //函數(shù)聲明
              void Display(uchar Data);
              uint temp,temp1;  //溫度值變量
              uchar p;   //讀取五十次ad值for循環(huán)
              unsigned char ADC_Read(bit SGL,bit ODD)
              {
              unsigned char i=0,value=0,value1=0;  
                SCL=0;
                DO=1;
                CS=0;  
                SCL=1;  
                SCL=0;
                DO=SGL;
                SCL=1;  
                SCL=0;
                DO=ODD;
                SCL=1;   
                SCL=0;  
                DO=1;
                for(i=0;i<8;i++)
                {
                 SCL=1;
                 SCL=0;
                 value<<=1;
                 if(DO)
                  value++;      
                }
                for(i=0;i<8;i++)
                {  
                 value1>>=1;
                 if(DO)
                  value1+=0x80;
                 SCL=1;
                 SCL=0;
                }
                CS=1;
                SCL=1;
                if(value==value1)   
                 return value;
              return 0;
              }
              //延時
              void delay(uint t)  //大約延時25us,不精確
              {
              uint i,j;
              for(i=0;i<t;i++)
              for(j=0;j<10;j++);
              }
              void main()  //主函數(shù)
              {
              uchar i;
              uint pp;
              P2=0;
              temp1=0;
              while(1) //進(jìn)入循環(huán)
              {
                for(i=0;i<50;i++) //讀取五十次ad值
                {
                 temp=ADC_Read(1,0); //讀取ad值
                 pp=pp+temp;  //每讀取一次就將ad值累加到pp里
                 Display(temp1); //防止讀取數(shù)據(jù)時數(shù)碼管熄滅,這里每讀取一次AD值時就調(diào)用一次顯示函數(shù)
                }
                temp1=pp/50;  //讀取完五十次ad值后,將累加值除以50得到平均值
                pp=0;    //計算完平均值后將累加值變量清零
                temp1=Data_T[temp1];//將ad值查表得到實際溫度值
              //
                for(p=0;p<50;p++) //調(diào)用五十次顯示函數(shù)
                Display(temp1);  //顯示函數(shù)
              }
              }
              //顯示           Data表示數(shù)據(jù)
              void Display(uchar Data)
              {
              Wei1=1;
              Wei2=1;
              Wei3=1;
              Wei4=1;    //關(guān)閉位選端
              P0=0xff;   //關(guān)閉顯示
              if(Data>128)  //要顯示的數(shù)值大于128,也就是負(fù)溫度值,有符號的數(shù)值,最高位如果是1,那么就代表是負(fù)數(shù)
              {
                Data=Data-128; //將數(shù)值減去128,也就是減去最高位的1,得到數(shù)值的絕對值
                P0=Data_[12]; //顯示負(fù)號“-”
                Wei1=0;   //打開第一位
                Wei2=1;   //關(guān)閉其他位
                Wei3=1;
                Wei4=1;
                delay(10);  //延時
                Wei1=1;
                Wei2=1;
                Wei3=1;
                Wei4=1;   //關(guān)閉所有位

                P0=Data_[Data/10]; //顯示溫度值的十位
                Wei1=1;
                Wei2=0;   //打開第二位
                Wei3=1;
                Wei4=1;
                delay(10);
                Wei1=1;
                Wei2=1;
                Wei3=1;
                Wei4=1;


                P0=Data_[Data%10]; //顯示溫度值的個位
                Wei1=1;   
                Wei2=1;
                Wei3=0;
                Wei4=1;
                delay(10);
                Wei1=1;
                Wei2=1;
                Wei3=1;
                Wei4=1;

                P0=~0xa7;  //顯示字母c
                Wei1=1;
                Wei2=1;
                Wei3=1;
                Wei4=0;
                delay(10);
                Wei1=1;
                Wei2=1;
                Wei3=1;
                Wei4=1;
              }
              else
              if(Data<128)  //溫度的數(shù)值小于128,也就是正數(shù)
              {
                if(Data/100==0)  //百位的數(shù)值是否為0
                P0=~0xff;  //為0就不顯示
                else   //不為0
                P0=Data_[Data/100]; //正常顯示數(shù)值
                Wei1=0;
                Wei2=1;
                Wei3=1;
                Wei4=1;
                delay(10);
                Wei1=1;
                Wei2=1;
                Wei3=1;
                Wei4=1;

                P0=Data_[Data/10%10]; //顯示溫度值的十位
                Wei1=1;
                Wei2=0;
                Wei3=1;
                Wei4=1;
                delay(10);
                Wei1=1;
                Wei2=1;
                Wei3=1;
                Wei4=1;


                P0=Data_[Data%10]; //顯示溫度值的個位
                Wei1=1;
                Wei2=1;
                Wei3=0;
                Wei4=1;
                delay(10);
                Wei1=1;
                Wei2=1;
                Wei3=1;
                Wei4=1;

                P0=~0xa7;  //顯示字母c
                Wei1=1;
                Wei2=1;
                Wei3=1;
                Wei4=0;
                delay(10);
                Wei1=1;
                Wei2=1;
                Wei3=1;
                Wei4=1;
              }
              }





              pcb.png
              原理圖.png

              電路原理,pcb 圖 程序.zip

              90.47 KB, 下載次數(shù): 63, 下載積分: 黑幣 -5

              評分

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

              查看全部評分

              回復(fù)

              使用道具 舉報

              ID:369818 發(fā)表于 2018-7-11 23:15 | 顯示全部樓層
              哇,厲害了。
              回復(fù)

              使用道具 舉報

              ID:234782 發(fā)表于 2019-2-26 16:14 | 顯示全部樓層
              多多益善,有不用AC0809的溫度采集嗎
              回復(fù)

              使用道具 舉報

              無效樓層,該帖已經(jīng)被刪除
              您需要登錄后才可以回帖 登錄 | 立即注冊

              本版積分規(guī)則

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

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

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