找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2824|回復(fù): 8
收起左側(cè)

STC8單片機的AD電壓數(shù)碼管顯示轉(zhuǎn)換不出來

[復(fù)制鏈接]
ID:265485 發(fā)表于 2021-4-4 14:32 | 顯示全部樓層 |閱讀模式
/********************************************************************
                         AD轉(zhuǎn)換初始化程序
*********************************************************************/
void InitADC()
{
   P1ASF = 0x80;          //設(shè)置P1.7口AD轉(zhuǎn)換,必須加
   P1M0=0X80;
   P1M1=0X80;        //設(shè)置P1.7口為開漏模式,使用AD功能
    ADC_RES = 0;                   //AD數(shù)據(jù)寄存器清空
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL;//打開AD電源,轉(zhuǎn)換周期210
    _nop_();                        //延時一個機器周期
    _nop_();
        _nop_();                        //延時一個機器周期
}
/********************************************************************
                         AD轉(zhuǎn)換控制程序
*********************************************************************/
uchar ADCRead(uchar px)          //轉(zhuǎn)換輸出的數(shù)據(jù) (PX為通道口)
{
    ADC_CONTR = ADC_POWER | ADC_SPEEDLL |px| ADC_START;//開始轉(zhuǎn)換
    _nop_();                        //延時一個機器周期
    _nop_();                                                //延時一個機器周期
    _nop_();                                                //延時一個機器周期
    _nop_();                                                //延時一個機器周期
    while (!(ADC_CONTR & ADC_FLAG));//等待轉(zhuǎn)換結(jié)束
    ADC_CONTR &= ~ADC_FLAG;         //關(guān)閉AD轉(zhuǎn)換
    return ADC_RES;                //返回數(shù)據(jù)
}

if(ba==1){dat=((ADCRead(7)*51)/255);dat1=dat*2;ba=0;} //51是單片機的工作電壓,單片機的工作電壓是多少這個就是多少
//          if(ba==1){dat=ADCRead(7);dat1=dat*100/249;ba=0;}
          if((y==0)&&(z==0)){zs=1;led(dat1);} //zs標志位控制小數(shù)點
          if(y==1){zs=0;led(s1);}
          if(y==2){zs=0;led(s2);}
          if(y==3){zs=1;z=0;led(s);}
          if(dat1>s){out=0;}else{out=1;}
          KeyRead(); //按鍵掃描
          key_1();
          key_2();
          if(k==1)
          {
             Sector_Erase(0);
                 Byte_Program(0x0001,s1);  //寫入扇區(qū)
                 Byte_Program(0x0002,(s2/10));  //寫入扇區(qū)
                 k=0;
          }
回復(fù)

使用道具 舉報

ID:265485 發(fā)表于 2021-4-4 14:33 | 顯示全部樓層
為什么轉(zhuǎn)換不出來ADC數(shù)值呢 是哪里沒有打開嗎請問有沒有神
回復(fù)

使用道具 舉報

ID:265485 發(fā)表于 2021-4-4 15:56 | 顯示全部樓層
請問一下是哪里設(shè)置得有問題嗎為什么 轉(zhuǎn)換不出來呢
回復(fù)

使用道具 舉報

ID:469589 發(fā)表于 2021-4-4 17:40 | 顯示全部樓層
沒看見你關(guān)于DTA1核DATA的數(shù)據(jù)格式定義,是浮點數(shù)嗎,如果是定點的,應(yīng)該做量程轉(zhuǎn)化是擴大成16位數(shù)據(jù),然后再運算,否則只能是零
回復(fù)

使用道具 舉報

ID:469589 發(fā)表于 2021-4-4 17:50 | 顯示全部樓層
{float dat=ADCRead(7);    float  dat1=dat*100/249;  ba=0;}
回復(fù)

使用道具 舉報

ID:814525 發(fā)表于 2021-4-4 19:56 | 顯示全部樓層
看你的相關(guān)ADC程式,是STC15系列用法。如果使用的是STC8,ADC相關(guān)寄存器和STC15不同,參考資料進行修改并調(diào)用STC8頭文件。

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:213173 發(fā)表于 2021-4-4 20:36 | 顯示全部樓層
wanli2018 發(fā)表于 2021-4-4 14:33
為什么轉(zhuǎn)換不出來ADC數(shù)值呢 是哪里沒有打開嗎請問有沒有神

STC8沒有P1ASF寄存器
使用模擬輸入要設(shè)置端口高阻模式不是開漏模式。
STC8有官方示例,可以參考。
回復(fù)

使用道具 舉報

ID:430492 發(fā)表于 2022-4-13 16:34 | 顯示全部樓層
   P1M0=0X80;
   P1M1=0X80;        //設(shè)置P1.7口為開漏模式,使用AD功能
這樣的寫法其實不太規(guī)范,建議改為:
   P1M0 &=0X7f;        //0x01111111;
   P1M1 |=0X80;        //0x10000000,設(shè)置P1.7口為高阻模式,使用AD功能
這樣的好處就是除了要設(shè)定位外,其余位不受影響。
回復(fù)

使用道具 舉報

ID:975054 發(fā)表于 2022-4-23 00:15 | 顯示全部樓層
P1ASF = 0x80;          //設(shè)置P1.7口AD轉(zhuǎn)換,必須加
   P1M0=0X80;
   P1M1=0X80;        //設(shè)置P1.7口為開漏模式,使用AD功能

一開頭就錯的太多了.....
按總工程師的意見辦就好!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表