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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4452|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

利用新增的ADC第九通道測(cè)量?jī)?nèi)部固定的測(cè)試內(nèi)部BandGap參考電壓來(lái)計(jì)算工作電壓

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:444712 發(fā)表于 2018-12-19 14:43 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式


   本示例在Keil開發(fā)環(huán)境下請(qǐng)選擇Intel的8058芯片型號(hào)進(jìn)行編譯,若無(wú)特別說(shuō)明,工作頻率一般為11.0592MHz


      ADC的第9通道是用來(lái)測(cè)試內(nèi)部BandGap參考電壓的,由于內(nèi)部BandGap參考電壓很穩(wěn)定,不會(huì)隨芯片的工作電壓的改變而變化,所以可以通過測(cè)量?jī)?nèi)部BandGap參考電壓,然后通過ADC的值便可反推出VCC的電壓,從而用戶可以實(shí)現(xiàn)自己的低壓檢測(cè)功能.  
      ADC的第9通道的測(cè)量方法:首先將P1ASF初始化為0,即關(guān)閉所有P1口的模擬功能然后通過正常的ADC轉(zhuǎn)換的方法讀取第0通道的值,即可通過ADC的第9通道讀取當(dāng)前內(nèi)部BandGap參考電壓值.
     用戶實(shí)現(xiàn)自己的低壓檢測(cè)功能的實(shí)現(xiàn)方法:首先用戶需要在VCC很精準(zhǔn)的情況下(比如5.0V),測(cè)量出內(nèi)部BandGap參考電壓的ADC轉(zhuǎn)換值(比如為BGV5),并這個(gè)值保存到EEPROM中,然后在低壓檢測(cè)的代碼中,在實(shí)際VCC變化后,所測(cè)量出的內(nèi)部BandGap參考電壓的ADC轉(zhuǎn)換值(比如為BGVx),通過計(jì)算公式: 實(shí)際VCC = 5.0V * BGV5 / BGVx,即可計(jì)算出實(shí)際的VCC電壓值,需要注意的是,第一步的BGV5的基準(zhǔn)測(cè)量一定要精確.

實(shí)現(xiàn)的源程序如下:

#include "reg51.h"
#include "intrins.h"

#define FOSC    11059200L
#define BAUD    115200

typedef unsigned char BYTE;
typedef unsigned int WORD;

#define     URMD    0               //0:使用定時(shí)器2作為波特率發(fā)生器
                                    //1:使用定時(shí)器1的模式0(16位自動(dòng)重載模式)作為波特率發(fā)生器
                                    //2:使用定時(shí)器1的模式2(8位自動(dòng)重載模式)作為波特率發(fā)生器

sfr P0M1 = 0x93;
sfr P0M0 = 0x94;
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;
sfr P4M1 = 0xb3;
sfr P4M0 = 0xb4;
sfr P5M1 = 0xC9;
sfr P5M0 = 0xCA;
sfr P6M1 = 0xCB;
sfr P6M0 = 0xCC;
sfr P7M1 = 0xE1;
sfr P7M0 = 0xE2;

sfr T2H   = 0xd6;                   //定時(shí)器2高8位
sfr T2L   = 0xd7;                   //定時(shí)器2低8位

sfr  AUXR       =   0x8e;           //輔助寄存器

sfr ADC_CONTR   =   0xBC;           //ADC控制寄存器
sfr ADC_RES     =   0xBD;           //ADC高8位結(jié)果
sfr ADC_LOW2    =   0xBE;           //ADC低2位結(jié)果
sfr P1ASF       =   0x9D;           //P1口第2功能控制寄存器

#define ADC_POWER   0x80            //ADC電源控制位
#define ADC_FLAG    0x10            //ADC完成標(biāo)志
#define ADC_START   0x08            //ADC起始控制位
#define ADC_SPEEDLL 0x00            //540個(gè)時(shí)鐘
#define ADC_SPEEDL  0x20            //360個(gè)時(shí)鐘
#define ADC_SPEEDH  0x40            //180個(gè)時(shí)鐘
#define ADC_SPEEDHH 0x60            //90個(gè)時(shí)鐘

void InitUart();
void InitADC();
void SendData(BYTE dat);
BYTE GetADCResult();
void Delay(WORD n);
void ShowResult();

void main()
{
    P0M0 = 0x00;
    P0M1 = 0x00;
    P1M0 = 0x00;
    P1M1 = 0x00;
    P2M0 = 0x00;
    P2M1 = 0x00;
    P3M0 = 0x00;
    P3M1 = 0x00;
    P4M0 = 0x00;
    P4M1 = 0x00;
    P5M0 = 0x00;
    P5M1 = 0x00;
    P6M0 = 0x00;
    P6M1 = 0x00;
    P7M0 = 0x00;
    P7M1 = 0x00;

    InitUart();                     //初始化串口
    InitADC();                      //初始化ADC

    while (1)
    {
        ShowResult();               //顯示ADC結(jié)果
    }
}

/*----------------------------
發(fā)送ADC結(jié)果到PC
----------------------------*/
void ShowResult()
{
    SendData(GetADCResult());       //顯示ADC高8位結(jié)果
//    SendData(ADC_LOW2);           //顯示低2位結(jié)果
}

/*----------------------------
讀取ADC結(jié)果
----------------------------*/
BYTE GetADCResult()
{
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL | 0 | ADC_START;
    _nop_();                        //等待4個(gè)NOP
    _nop_();
    _nop_();
    _nop_();
    while (!(ADC_CONTR & ADC_FLAG));//等待ADC轉(zhuǎn)換完成
    ADC_CONTR &= ~ADC_FLAG;         //Close ADC

    P2 = ADC_RES;

    return ADC_RES;                 //返回ADC結(jié)果
}

/*----------------------------
初始化串口
----------------------------*/
void InitUart()
{
    SCON = 0x5a;                    //設(shè)置串口為8位可變波特率
#if URMD == 0
    T2L = 0xd8;                     //設(shè)置波特率重裝值
    T2H = 0xff;                     //115200 bps(65536-18432000/4/115200)
    AUXR = 0x14;                    //T2為1T模式, 并啟動(dòng)定時(shí)器2
    AUXR |= 0x01;                   //選擇定時(shí)器2為串口1的波特率發(fā)生器
#elif URMD == 1
    AUXR = 0x40;                    //定時(shí)器1為1T模式
    TMOD = 0x00;                    //定時(shí)器1為模式0(16位自動(dòng)重載)
    TL1 = 0xd8;                     //設(shè)置波特率重裝值
    TH1 = 0xff;                     //115200 bps(65536-18432000/4/115200)
    TR1 = 1;                        //定時(shí)器1開始啟動(dòng)
#else
    TMOD = 0x20;                    //設(shè)置定時(shí)器1為8位自動(dòng)重裝載模式
    AUXR = 0x40;                    //定時(shí)器1為1T模式
    TH1 = TL1 = 0xfb;               //115200 bps(256 - 18432000/32/115200)
    TR1 = 1;
#endif
}

/*----------------------------
初始化ADC
----------------------------*/
void InitADC()
{
    P1ASF = 0x00;                   //不設(shè)置P1口為模擬口
    ADC_RES = 0;                    //清除結(jié)果寄存器
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL;
    Delay(2);                       //ADC上電并延時(shí)
}

/*----------------------------
發(fā)送串口數(shù)據(jù)
----------------------------*/
void SendData(BYTE dat)
{
    while (!TI);                    //等待前一個(gè)數(shù)據(jù)發(fā)送完成
    TI = 0;                         //清除發(fā)送標(biāo)志
    SBUF = dat;                     //發(fā)送當(dāng)前數(shù)據(jù)
}

/*----------------------------
軟件延時(shí)
----------------------------*/
void Delay(WORD n)
{
    WORD x;

    while (n--)
    {
        x = 5000;
        while (x--);
    }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-12-19 16:42 | 只看該作者
補(bǔ)全原理圖或者詳細(xì)說(shuō)明一下電路連接即可獲得100+黑幣
回復(fù)

使用道具 舉報(bào)

板凳
ID:56665 發(fā)表于 2019-7-13 16:18 | 只看該作者
測(cè)量出內(nèi)部BandGap參考電壓的ADC轉(zhuǎn)換值,這個(gè)轉(zhuǎn)換值是ADC值還是電壓值?
回復(fù)

使用道具 舉報(bào)

地板
ID:378732 發(fā)表于 2019-8-31 18:00 | 只看該作者
這就是STC程序,你給搬這里了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91久久精品国产91久久 | 四虎在线播放 | 国产精品日日夜夜 | 欧美日韩在线免费观看 | 免费视频一区二区 | 国产成人免费视频网站视频社区 | 日韩av视屏 | 亚洲入口 | 国产做爰| 欧美色性 | 成人免费在线播放视频 | 久久国产精品精品 | 久久99精品久久久久久国产越南 | 欧美一级精品片在线看 | 中文字幕亚洲欧美日韩在线不卡 | 国产激情综合五月久久 | 国产亚洲区 | 久久精品 | 伊人婷婷 | 日韩视频成人 | 国产免费拔擦拔擦8x高清 | 日本aa毛片a级毛片免费观看 | 成人免费网站www网站高清 | 二区在线观看 | 国内自拍偷拍一区 | 在线婷婷 | 免费一级毛片 | 国产精品久久久久久妇女6080 | 久久999 | 日韩精品一区二区三区在线 | 中文字幕av在线一二三区 | 久久亚洲综合 | 欧美一区二区在线播放 | 成人免费激情视频 | 国产成人精品免高潮在线观看 | 99精品欧美一区二区三区综合在线 | 国产精品久久久久久久久久久久久 | 国产精品久久久久久久7电影 | 日本成人综合 | 黄色在线观看网址 | 亚洲三区在线观看 |