PIC16F877A PICC AD轉換程式

來源:互聯網
上載者:User
//軟體思路:選擇RAO做為類比輸入通道; //          連續轉換4次再求平均值做為轉換結果 //          最後結構只取低8位 //          結果送數位管的低3位顯示 #include<pic.h>              //包含內部資源預定義  __CONFIG(0x1832);         //晶片配置字,看門狗關,上電延時開,掉電檢測關,低壓編程關,加密,4M晶體HS振蕩  const char TABLE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0X82,0XF8,0X80,0X90};   //定義常數0-9的資料表格  void  DELAY();              //delay函數申明  void  init();               //I/O口初始化函數申明  void  display(int x);       //顯示函數申明 //------------------------------------------------   //主程式開始  void  main()                 {    int result=0x00;          //定義轉換結果寄存器    while(1)                  //死迴圈    {    int i;                    //定義迴圈次數控制寄存器    result=0x00;              //轉換結果清0    for(i=5;i>0;i--)          //求5次轉換結果的平均值      {       init();                //調用初始化函數       ADGO=0X1;              //開啟轉換過程       while(ADGO);           //等待轉換完成       result=result+ADRESL;  //累計轉換結果       }       result=result/5;       //求5次結果的平均值      display(result);        //調用顯示函數    }   } //-----------------------------------------------  //初始化函數  void  init()                  {    PORTA=0XFF;                   PORTD=0XFF;               //熄滅所有顯示    TRISA=0X1;                //設定RA0為輸入,其他為輸出                TRISD=0X00;               //設定D口全為輸出    ADCON1=0X8E;              //轉換結果靠左對齊,RA0做類比輸入口,其它做普通I/O    ADCON0=0X41;              //系統時鐘Fosc/8,選擇RA0通道,允許ADC工作    DELAY();                  //保證採樣延時    } //----------------------------------------------- //顯示函數  void display(int x)              {      int  bai,shi,ge,temp;   //定義4個臨時變數      temp=x;                 //暫存AD轉換的結果      bai=temp/0x64;          //求顯示的百位      shi=(temp%0x64)/0xa;    //求顯示的十位      ge=(temp%0x64)%0xa;     //求顯示的個位      PORTD=TABLE[bai];       //查表得百位顯示的代碼      PORTA=0x37;             //RA3輸出低電平,點亮百位顯示      DELAY();                //延時一定時間,保證顯示亮度      PORTD=TABLE[shi];       //查表得十位顯示的代碼      PORTA=0x2F;             //RA4輸出低電平,點亮十位顯示      DELAY();                //延時一定時間,保證亮度      PORTD=TABLE[ge];        //求個位顯示的代碼      PORTA=0x1F;             //RA5輸出低電平,點亮個位顯示      DELAY();                //延時一定時間,保證亮度    } //---------------------------------------------- //延時程式 void  DELAY()              //延時程式     {      int i;                 //定義整形變數      for(i=0x100;i--;);     //延時     } 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.