久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 13039|回復: 4
打印 上一主題 下一主題
收起左側

stc12c5a60s怎么把ADC_RES和ADC_RESL寄存器的值存入數組?

[復制鏈接]
跳轉到指定樓層
樓主
ID:102000 發表于 2016-3-21 16:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
100黑幣
在弄AD轉換,轉換后的AD值在寄存器里,想要轉化為實際值來比較
要怎么從寄存器中讀出來?

最佳答案

查看完整內容

以下內容來源于《51單片機輕松入門-基于STC15W4K系列》第9章 功能:將AD轉換結果發計算機顯示。 #include "UART.H" // 包含IAP15W4K58S4寄存器定義文件 #define VCC 4.972 // 存放用萬用表實測的單片機供電電壓 unsigned int ADC_P11() { unsigned int i; // 用于軟件延時程序 unsigned char status; // 用于判斷AD轉換結束的標志 unsigned int AD_Dat=0; // 10 ...
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:60379 發表于 2016-3-21 16:37 | 只看該作者
以下內容來源于《51單片機輕松入門-基于STC15W4K系列》第9章
功能:將AD轉換結果發計算機顯示。
#include "UART.H"   // 包含IAP15W4K58S4寄存器定義文件
#define VCC 4.972   // 存放用萬用表實測的單片機供電電壓
unsigned int ADC_P11()
{
        unsigned int i;                    // 用于軟件延時程序
        unsigned char status;        // 用于判斷AD轉換結束的標志
        unsigned int AD_Dat=0;  // 10位AD轉換值
        unsigned char Tmp;            // 臨時變量用于將AD轉換出來的2個字節合成一個字節               
        ADC_CONTR|=0x80;              // 開AD轉換電源,第一次使用時要打開內部模擬電源
        for (i=0;i<10000;i++);  // 適當延時等待AD轉換供電穩定,一般延時1ms以內即可,為了縮短AD
                            // 調用時間,可把這2行剪切到主程序中去。
        P1ASF|=0x02;                        // 選擇P1.1作為AD轉換通道,0x02= 0000 0010        
        ADC_CONTR=0xE1;         // 選擇P1.1作為AD轉換通道,最高轉換速度,清轉換完成標志。
        for (i=0;i<1000;i++);   // 如果是多通道模擬量進行AD轉換,則更換AD轉換通道后要適當延時,
// 使輸入電壓穩定,延時量取20μs~200μs即可,與輸入電壓源的內阻有關,如果輸入電壓信號源的內
// 阻在10K以下,可不加延時,如果是單通道模擬量轉換,則不需要更換AD轉換通道,也不需要加延時。
        ADC_CONTR|=0x08;        // 啟動 A/D 轉換,ADC_START=1。
        status=0;
        while(status==0)              // 等待AD轉換結束。
        {
            status=ADC_CONTR&0x10;   // 判斷ADC_FLAG是否等于1,0x10=0001 0000B。
        }
        ADC_CONTR&=0xE7;             // 將ADC_FLAG清0, 0xE7=1110 0111B,ADC_FLAG=0,ADC_START=0。        
        AD_Dat = ADC_RES;                // 默認高字節高8位。
        AD_Dat <<= 2;
        Tmp = ADC_RESL;         // 默認低字節低2位。
        Tmp &= 0x03;            // 屏蔽無關位
        AD_Dat |= Tmp;                // 高低字節拼接成一個10位數。
        return AD_Dat;
}  
void main(void)
{         
        float Vin;                                   // 存放計算出來的外部輸入電壓
        unsigned int ADvalue;               // 存放AD轉換返回的結果
        UART_init();                                   // 串口初始化9600/22.1184MHz
        printf("串口初始化完畢");
        while(1)
        {                          
                ADvalue=ADC_P11();                   // 采樣P1.1口模擬輸入電壓
                Vin=VCC*ADvalue/1023;      // 注意是1023才正確
                printf("%.3f     ",Vin);                 
                delay500ms();
        }                              // 若不用串口顯示,此行可設置斷點仿真觀察結果
}


評分

參與人數 1黑幣 +60 收起 理由
admin + 60 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:102000 發表于 2016-3-21 21:27 | 只看該作者
無量壽經 發表于 2016-3-21 20:15
以下內容來源于《51單片機輕松入門-基于STC15W4K系列》第9章
功能:將AD轉換結果發計算機顯示。
#include ...

我先前理解錯了,現在沒問題了,還是謝謝你
回復

使用道具 舉報

地板
ID:347181 發表于 2018-6-7 21:03 | 只看該作者
無量壽經 發表于 2016-3-21 16:37
以下內容來源于《51單片機輕松入門-基于STC15W4K系列》第9章
功能:將AD轉換結果發計算機顯示。
#include ...

Vin=VCC*ADvalue/1023;
為什么要除1023呢
1023這個數值怎么來的
回復

使用道具 舉報

5#
ID:248659 發表于 2020-3-11 17:15 | 只看該作者
瑋666 發表于 2018-6-7 21:03
Vin=VCC*ADvalue/1023;
為什么要除1023呢
1023這個數值怎么來的

10位ad有1024
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲性网 | 久久久久亚洲精品 | 欧美中国少妇xxx性高请视频 | 亚洲成av人影片在线观看 | 人和拘一级毛片c | 四虎首页 | 狠狠色综合网站久久久久久久 | 欧美一区二区免费在线 | 日韩精品中文字幕一区二区三区 | 国产精品欧美一区二区三区不卡 | 一本大道久久a久久精二百 国产成人免费在线 | 亚洲综合一区二区三区 | 天堂在线网 | 性色在线| 日韩国产欧美视频 | 精品在线一区 | 免费看啪啪网站 | 91精品国产色综合久久 | 国产精久久久久久久妇剪断 | 日韩欧美成人精品 | 北条麻妃一区二区三区在线观看 | 久久久精品在线 | 欧美激情一区二区三区 | 欧美激情综合 | 一区精品视频 | 妞干网福利视频 | av在线电影网 | 激情五月婷婷丁香 | 欧美性生活网 | 亚洲欧洲一区二区 | 一区二区三区视频在线 | 精品videossex高潮汇编 | 日韩视频在线播放 | 国产精品99久久久久久www | 国产在线视频一区二区 | 国产精品www| 国产精品成人在线观看 | 99tv| 毛片在线看看 | 欧美精品1区2区 | 欧美日韩综合视频 |