<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> STM32 >> 瀏覽文章

        stm8AD轉換測電壓

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年05月01日   【字體:
         
        #include "stm8s105c_s.h"
        #define shuzhi PB_ODR
        int a,b,c,d;//用于存放ac轉換值
        long int t;//用于延時
        long int ad_value;
        int shumaguan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
        //0到9
        void shumaguan1(long int ad_value1)//用于顯示
        {
         
        d=ad_value1/1000;//得到ac轉換的整數部分
        c=ad_value100/100;//得到ac轉換的第1 位小數
        b=ad_value10/10;//得到ac轉換的第2位小數
        a=ad_value1;//得到ac轉換的第3位小數
         
        PD_ODR=0B00001110;
        shuzhi=shumaguan[a];
        for(t=0;t<1000;t++);
        shuzhi=0x00;
        PD_ODR=0B00001101;
        shuzhi=shumaguan[b];
        for(t=0;t<1000;t++);
        shuzhi=0x00;
        PD_ODR=0B00001011;
        shuzhi=shumaguan[c];
        for(t=0;t<1000;t++);
        shuzhi=0x00;
        PD_ODR=0B00000111;
        shuzhi=shumaguan[d];
        for(t=0;t<1000;t++);
        shuzhi=0x00;
        }
        void jingzhen(void)//開16兆晶振
        {
        CLK_ECKR |=0x1;           //開啟外部時鐘    
          while(!(CLK_ECKR&0x2)); //等待外部時鐘   
          CLK_CKDIVR &= 0xF8;     //CPU無分頻 16M   
          CLK_SWR = 0xB4;            //選擇外部時鐘    
          while(!(CLK_SWCR&0x8));   
          CLK_SWCR |=0x2;           //使能外部時鐘
        }
        main()
        {
        PD_DDR=0B00001111;
        PD_CR1=0B00001111;
        PB_DDR=0XFF;
        PB_CR1=0XFF;
        //數碼管引腳
        jingzhen();
        //Init_UART2();
        PG_DDR=0B00000010;
        PG_CR1=0B00000010;
        // 初始化A/D 模塊
        ADC_CR2 = 0x00; // A/D 結果數據左對齊
        ADC_CR1 = 0x70; // ADC 時鐘=主時鐘/18=16/18MHZ
        // ADC 轉換模式=單次
        // 禁止ADC 轉換
        ADC_CSR = 0B00001001; // 選擇通道9,PE6
        ADC_TDRL = 0x20;
         
         
         
         
        PD_DDR=0B00001111;
        PD_CR1=0B00001111;
        PB_DDR=0XFF;
        PB_CR1=0XFF;
        while(1)// 進入無限循環
        {
        ADC_CR1 = 0x01; // CR1 寄存器的最低位置1,使能ADC 轉換
        for(t=0;t<400;t++); // 延時一段時間,至少7uS,保證ADC 模塊的上電完成
        ADC_CR1 = ADC_CR1 | 0x01; // 再次將CR1 寄存器的最低位置1,開始AD轉換
        while((ADC_CSR & 0x80) == 0); // 等待ADC 結束
        ad_value = ((int)ADC_DRH<<2);// 讀出ADC 結果的高8 位并右移2 位
        ad_value |= ADC_DRL;//讀出ADC 結果的低8 位
        ad_value=((ad_value)*5000)/1024;
         
        shumaguan1(ad_value);
         
         
        }
        }
        關閉窗口

        相關文章

        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮