新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 30. 四位數數字溫度計

        30. 四位數數字溫度計

        作者: 時間:2016-11-18 來源:網絡 收藏
        1.溫度傳感器AD590基本知識
        AD590產生的電流與絕對溫度成正比,它可接收的工作電壓為4V-30V,檢測的溫度范圍為-55℃-+150℃,它有非常好的線性輸出性能,溫度每增加1℃,其電流增加1uA。
        AD590溫度與電流的關系如下表所示
        攝氏溫度
        AD590電流
        經10KΩ電壓
        0℃
        273.2uA
        2.732V
        10℃
        283.2uA
        2.832V
        20℃
        293.2uA
        2.932V
        30℃
        303.2uA
        3.032V
        40℃
        313.2uA
        3.132V
        50℃
        323.2uA
        3.232V
        60℃
        333.2uA
        3.332V
        100℃
        373.2uA
        3.732V
        AD590引腳圖

        2.實驗任務
        利用AD590溫度傳感器完成溫度的測量,把轉換的溫度值的模擬量送入ADC0809的其中一個通道進行A/D轉換,將轉換的結果進行溫度值變換之后送入數碼管顯示。
        3.電路原理

        圖4.30.1
        4.系統板上硬件連線
        (1).把“單片機系統”區域中的P1.0-P1.7與“動態數碼顯示”區域中的ABCDEFGH端口用8芯排線連接。
        (2).把“單片機系統”區域中的P2.0-P2.7與“動態數碼顯示”區域中的S1S2S3S4S5S6S7S8端口用8芯排線連接。
        (3).把“單片機系統”區域中的P3.0與“模數轉換模塊”區域中的ST端子用導線相連接。
        (4).把“單片機系統”區域中的P3.1與“模數轉換模塊”區域中的OE端子用導線相連接。
        (5).把“單片機系統”區域中的P3.2與“模數轉換模塊”區域中的EOC端子用導線相連接。
        (6).把“單片機系統”區域中的P3.3與“模數轉換模塊”區域中的CLK端子用導線相連接。
        (7).把“模數轉換模塊”區域中的A2A1A0端子用導線連接到“電源模塊”區域中的GND端子上。
        (8).把“模數轉換模塊”區域中的IN0端子用導線連接到自制的AD590電路上。
        (9).把“單片機系統”區域中的P0.0-P0.7用8芯排線連接到“模數轉換模塊”區域中的D0D1D2D3D4D5D6D7端子上。
        5.程序設計內容
        (1).ADC0809的CLK信號由單片機的P3.3管腳提供
        (2).由于AD590的溫度變化范圍在-55℃-+150℃之間,經過10KΩ之后采樣到的電壓變化在2.182V-4.232V之間,不超過5V電壓所表示的范圍,因此參考電壓取電源電壓VCC,(實測VCC=4.70V)。由此可計算出經過A/D轉換之后的攝氏溫度顯示的數據為:
        如果(D*2350/128)<2732,則顯示的溫度值為-(2732-(D*2350/128))
        如果(D*2350/128)≥2732,則顯示的溫度值為+((D*2350/128)-2732)
        6.匯編源程序
        (略)
        7.C語言源程序
        #include
        #include
        unsignedcharcodedispbitcode[]={0xfe,0xfd,0xfb,0xf7,
        0xef,0xdf,0xbf,0x7f};
        unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
        0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
        unsignedchardispbuf[8]={10,10,10,10,10,10,0,0};
        unsignedchardispcount;
        unsignedchargetdata;
        unsignedlongtemp;
        unsignedchari;
        bitsflag;
        sbitST=P3^0;
        sbitOE=P3^1;
        sbitEOC=P3^2;
        sbitCLK=P3^3;
        sbitLED1=P3^6;
        sbitLED2=P3^7;
        sbitSPK=P3^5;
        voidmain(void)
        {
        ST=0;
        OE=0;
        TMOD=0x12;
        TH0=0x216;
        TL0=0x216;
        TH1=(65536-4000)/256;
        TL1=(65536-4000)%256;
        TR1=1;
        TR0=1;
        ET0=1;
        ET1=1;
        EA=1;
        ST=1;
        ST=0;
        getdata=148;
        while(1)
        {
        ;
        }
        }
        voidt0(void)interrupt1using0
        {
        CLK=~CLK;
        }
        voidt1(void)interrupt3using0
        {
        TH1=(65536-4000)/256;
        TL1=(65536-4000)%256;
        if(EOC==1)
        {
        OE=1;
        getdata=P0;
        OE=0;
        temp=(getdata*2350);
        temp=temp/128;
        if(temp<2732)
        {
        temp=2732-temp;
        sflag=1;
        }
        else
        {
        temp=temp-2732;
        sflag=0;
        }
        i=3;
        dispbuf[0]=10;
        dispbuf[1]=10;
        dispbuf[2]=10;
        if(sflag==1)
        {
        dispbuf[7]=11;
        }
        else
        {
        dispbuf[7]=10;
        }
        dispbuf[3]=0;
        dispbuf[4]=0;
        dispbuf[5]=0;
        dispbuf[6]=0;
        while(temp/10)
        {
        dispbuf=temp%10;
        temp=temp/10;
        i++;
        }
        dispbuf=temp;
        ST=1;
        ST=0;
        }
        P1=dispcode[dispbuf[dispcount]];
        P2=dispbitcode[dispcount];
        dispcount++;
        if(dispcount==8)
        {
        dispcount=0;
        }
        }


        關鍵詞: 四位數數字溫度

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 彰化市| 杨浦区| 凤冈县| 山阴县| 霍林郭勒市| 海安县| 泾川县| 如皋市| 崇左市| 南华县| 高阳县| 桐柏县| 封开县| 苗栗县| 道真| 陇南市| 兴仁县| 北碚区| 益阳市| 石台县| 桃园县| 毕节市| 项城市| 永康市| 泽州县| 台南市| 聂荣县| 乐安县| 泾源县| 田东县| 平陆县| 吉木乃县| 新野县| 桑日县| 沁源县| 辉县市| 丹寨县| 泾川县| 错那县| 曲沃县| 长海县|