• <rp id="wfxtb"><acronym id="wfxtb"></acronym></rp><em id="wfxtb"></em><dd id="wfxtb"><big id="wfxtb"><video id="wfxtb"></video></big></dd>
  • <rp id="wfxtb"></rp>

    <mark id="wfxtb"><center id="wfxtb"></center></mark>

      <rp id="wfxtb"><span id="wfxtb"><u id="wfxtb"></u></span></rp>

      <rp id="wfxtb"><object id="wfxtb"></object></rp>

      注意:訪問本站需要Cookie和JavaScript支持!請設置您的瀏覽器! 打開購物車 查看留言付款方式聯系我們
      初中電子 單片機教材一 單片機教材二
      搜索上次看見的商品或文章:
      商品名、介紹 文章名、內容
      首頁 電子入門 學單片機 免費資源 下載中心 商品列表 象棋在線 在線繪圖 加盟五一 加入收藏 設為首頁
      本站推薦:
      30. 四位數數字溫度計
      文章長度[] 加入時間[2008/5/30] 更新時間[2025/5/8 20:03:17] 級別[0] [評論] [收藏]
       
      1. 溫度傳感器AD590基本知識
      AD590產生的電流與絕對溫度成正比,它可接收的工作電壓為4V-30V,檢測的溫度范圍為-55℃-+150℃,它有非常好的線性輸出性能,溫度每增加1℃,其電流增加1uA。
      AD590溫度與電流的關系如下表所示

      攝氏溫度
      AD590電流
      經10KΩ電壓
      0℃
      273.2 uA
      2.732V
      10℃
      283.2 uA
      2.832 V
      20℃
      293.2 uA
      2.932 V
      30℃
      303.2 uA
      3.032 V
      40℃
      313.2 uA
      3.132 V
      50℃
      323.2 uA
      3.232 V
      60℃
      333.2 uA
      3.332 V
      100℃
      373.2 uA
      3.732 V

      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 <AT89X52.H>
      #include <ctype.h>
      unsigned char code dispbitcode[]={0xfe,0xfd,0xfb,0xf7,
                                        0xef,0xdf,0xbf,0x7f};
      unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
                                     0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};
      unsigned char dispbuf[8]={10,10,10,10,10,10,0,0};
      unsigned char dispcount;
      unsigned char getdata;
      unsigned long temp;
      unsigned char i;
      bit sflag;
      sbit ST=P3^0;
      sbit OE=P3^1;
      sbit EOC=P3^2;
      sbit CLK=P3^3;
      sbit LED1=P3^6;
      sbit LED2=P3^7;
      sbit SPK=P3^5;
      void main(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)
          {
            ;
          }
      void t0(void) interrupt 1 using 0
      {
        CLK=~CLK;
      }
      void t1(void) interrupt 3 using 0
      {  
        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[i]=temp%10;
              temp=temp/10;
              i++;
            }
          dispbuf[i]=temp;         
           ST=1;
           ST=0;
         }
        P1=dispcode[dispbuf[dispcount]];
        P2=dispbitcode[dispcount];
        dispcount++;
        if(dispcount==8)
          {
            dispcount=0;
          }
      }
      1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。
      2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! 以上可能是本站收集或者轉載的文章,本站可能沒有文章中的元件或產品,如果您需要類似的商品請 點這里查看商品列表!
      本站協議。 版權信息。 關于我們。 本站地圖。 營業執照。 發票說明。 付款方式。 聯系方式
      深圳市寶安區西鄉五壹電子商行——粵ICP備16073394號-1;地址:深圳西鄉河西四坊183號;郵編:518102
      E-mail:51dz$163.com($改為@);Tel:(0755)27947428
      工作時間:9:30-12:00和13:30-17:30和18:30-20:30,無人接聽時可以再打手機13537585389
      91嫩草黄片动漫版