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

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

QQ登錄

只需一步,快速開(kāi)始

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

STC8G1K08A單片機(jī)ADC不起作用

[復(fù)制鏈接]
ID:1055402 發(fā)表于 2024-9-20 14:23 | 顯示全部樓層 |閱讀模式
void IO_Init()
{
        P3M1 = 0x04;//0000 0100  p3.2高阻輸入 作為ADC輸入口
        P3M0 = 0x08;//0000 1000  p3.3推挽輸出
        P5M1 = 0x20;//0010 0000  p5.5高阻輸入 未使用
        P5M0 = 0x10;//0001 0000         p5.4推挽輸出
}
void ADC_Init()
{
    P_SW2 |= 0x80;
    ADCTIM = 0x3f;                              //設(shè)置ADC內(nèi)部時(shí)序
    P_SW2 &= 0x7f;
    ADCCFG = 0x2f;                              //設(shè)置ADC時(shí)鐘為系統(tǒng)時(shí)鐘/2/6  右對(duì)齊  20K
    ADC_CONTR = 0xc2;                           //使能ADC模塊
}
void ADC_Read(void)
{
        unsigned int i16Tem;                       
        ADC_CONTR |= 0x40;                          //繼續(xù)AD轉(zhuǎn)換       
        _nop_();
        _nop_();
        while (!(ADC_CONTR & 0x20));                //查詢ADC完成標(biāo)志
               
       
            ADC_CONTR &= ~0x20;                         //清中斷標(biāo)志

      i16Tem = ADC_RES<<8|ADC_RESL;  // 讀取通道2 (P3.2) 的ADC值
    ADC_CH =i16Tem;
}

void ADC_Test(void)
{
        ifADC_CH>560)
        {
                PWM_Output_Capp1(200);
        }
        else if(ADC_CH <= 512 ) &&ADC_CH >= 256 ))
        {
                PWM_Output_Capp1(50);
        }
        else
        {
                PWM_Output_Capp1(256);
        }
       
}

void main()
{
        IO_Init();      //引腳初始化
        EA = 0;
        PWM_Init();
        ADC_Init();
        TIM_Init();
        Timer0_Init();       
        EA = 1;
        Data_Init();
       
    while (1)
                {
                        PWM_Output_Capp2(256);
                        ADC_Read();
                        ADC_Test();
                }
                       
}

以上是程序的部分代碼,按照手冊(cè)和案例程序?qū)懙模琍WM輸出都是正常的,但是ADC輸入好像不起作用

回復(fù)

使用道具 舉報(bào)

ID:170318 發(fā)表于 2024-9-21 09:10 | 顯示全部樓層
void ADC_Read(void)
{
        unsigned int i16Tem;
       ADC_CONTR|=0x02;               // 設(shè)定轉(zhuǎn)換的通道,P3.2是0100,增加這句               
        ADC_CONTR |= 0x40;                          //繼續(xù)AD轉(zhuǎn)換      
        _nop_();
        _nop_();
        
        while (!(ADC_CONTR & 0x20));                //查詢ADC完成標(biāo)志
               
      
            ADC_CONTR &= ~0x20;                         //清中斷標(biāo)志

      i16Tem = ADC_RES<<8|ADC_RESL;  // 讀取通道2 (P3.2) 的ADC值
    ADC_CH =i16Tem;
}
回復(fù)

使用道具 舉報(bào)

ID:170318 發(fā)表于 2024-9-21 09:11 | 顯示全部樓層
程序中缺少“開(kāi)啟轉(zhuǎn)換通道”這條語(yǔ)句
回復(fù)

使用道具 舉報(bào)

ID:170318 發(fā)表于 2024-9-21 09:12 | 顯示全部樓層
同時(shí)還缺少ADC寄存器清零的語(yǔ)句
回復(fù)

使用道具 舉報(bào)

ID:170318 發(fā)表于 2024-9-21 09:16 | 顯示全部樓層
程序中缺少開(kāi)啟“轉(zhuǎn)換通道”
回復(fù)

使用道具 舉報(bào)

ID:1055402 發(fā)表于 2024-9-21 16:14 | 顯示全部樓層
jhczy 發(fā)表于 2024-9-21 09:16
程序中缺少開(kāi)啟“轉(zhuǎn)換通道”


void ADC_Read(void)
{
        unsigned int i16Tem;
       ADC_CONTR|=0x02;               // 設(shè)定轉(zhuǎn)換的通道,P3.2是0100,增加這句               
        ADC_CONTR |= 0x40;                          //繼續(xù)AD轉(zhuǎn)換      
        _nop_();
        _nop_();
        
        while (!(ADC_CONTR & 0x20));                //查詢ADC完成標(biāo)志
               
      
            ADC_CONTR &= ~0x20;                         //清中斷標(biāo)志

      i16Tem = ADC_RES<<8|ADC_RESL;  // 讀取通道2 (P3.2) 的ADC值
    ADC_RES=0;
    ADC_RESL=0;
    ADC_CH =i16Tem;
}

void ADC_Test(void)
{
        if(ADC_CH>560)
        {
                PWM_Output_Capp1(10);
        }
        else if((ADC_CH <= 500 ) &&(ADC_CH >= 100 ))
        {
                PWM_Output_Capp1(10);
        }
        else
        {
                PWM_Output_Capp1(256);
        }
       
}
我嘗試著修改了代碼,能讀取到ADC值,但是這個(gè)值似乎有些問(wèn)題,我的PWM1是控制繼電器的,我在對(duì)板子上電以后,繼電器上電瞬間會(huì)吸合,然后立刻就斷開(kāi)了。ADC輸入引腳的電壓一直是1.5V,MCU的供電電壓是3.3V,所以理論上ADC_CH 的值應(yīng)該是466左右,但是執(zhí)行的是PWM_Output_Capp1(256);
回復(fù)

使用道具 舉報(bào)

ID:1055402 發(fā)表于 2024-9-21 16:27 | 顯示全部樓層

void ADC_Test(void)
{
        if(ADC_CH<100)
        {
                PWM_Output_Capp1(10);
        }
        else if((ADC_CH <= 500 ) &&(ADC_CH >= 100 ))
        {
                PWM_Output_Capp1(10);
        }
        else
        {
                PWM_Output_Capp1(256);
        }
       
}
我修改條件后,上電后繼電器吸合,此時(shí)ADC輸入引腳電壓為1.5V,我將ADC輸入引腳電壓降為0,但是繼電器并沒(méi)斷開(kāi),感覺(jué)像是ADC在上電瞬間工作了一下,之后就沒(méi)用了。
回復(fù)

使用道具 舉報(bào)

ID:170318 發(fā)表于 2024-9-23 08:47 | 顯示全部樓層
2256024237 發(fā)表于 2024-9-21 16:27
void ADC_Test(void)
{
        if(ADC_CH

上電瞬間吸合一下,是端口設(shè)置的問(wèn)題,應(yīng)該將驅(qū)動(dòng)繼電器(當(dāng)然不能直接控制繼電器的)工作的IO端口先設(shè)為高阻,這樣上電瞬間就不會(huì)吸合
回復(fù)

使用道具 舉報(bào)

ID:170318 發(fā)表于 2024-9-23 08:54 | 顯示全部樓層
2256024237 發(fā)表于 2024-9-21 16:14
void ADC_Read(void)
{
        unsigned int i16Tem;

void ADC_Read(void)
{
        unsigned int i16Tem;
       ADC_RES=0;
       ADC_RESL=0;
(應(yīng)放在這里)
       ADC_CONTR|=0x02;               // 設(shè)定轉(zhuǎn)換的通道,P3.2是0100,增加這句               
        ADC_CONTR |= 0x40;                          //繼續(xù)AD轉(zhuǎn)換      
        _nop_();
        _nop_();
        
        while (!(ADC_CONTR & 0x20));                //查詢ADC完成標(biāo)志
               
      
            ADC_CONTR &= ~0x20;                         //清中斷標(biāo)志

      i16Tem = ADC_RES<<8|ADC_RESL;  // 讀取通道2 (P3.2) 的ADC值
//   ADC_RES=0;
//   ADC_RESL=0;
    ADC_CH =i16Tem;
}
回復(fù)

使用道具 舉報(bào)

ID:1055402 發(fā)表于 2024-9-24 09:15 | 顯示全部樓層
jhczy 發(fā)表于 2024-9-23 08:54
void ADC_Read(void)
{
        unsigned int i16Tem;

謝謝,我再去試一下
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 伊人久久综合 | 麻豆国产一区二区三区四区 | 成人黄色小视频 | 999毛片 | 五月播播 | 欧美国产日韩一区二区 | 四虎地址 | 成人在线网址 | 97视频在线 | 夜夜躁狠狠躁日日躁av | 韩国精品一区二区 | 成人三级视频 | 亚洲国产精品久久 | 亚洲二区在线 | 黄色三级av | 国产一二三 | 成人免费看片在线观看 | 99精品视频在线 | 亚洲播放 | 亚洲精品福利 | 天天cao | 欧美日韩亚洲一区 | 久久天堂av | 国产精品福利视频 | aaaaaa毛片| 一区二区三区网站 | 综合五月| 日本黄a三级三级三级 | 国产麻豆一区二区三区 | 五月天色综合 | 免费成人蒂法网站 | 欧美手机在线 | 亚洲欧美日韩综合 | 日本香蕉视频 | 日韩在线视频观看 | 国产成人午夜高潮毛片 | 日韩精品一区在线 | 午夜激情视频在线观看 | 少妇中文字幕 | 中国农村毛片免费播放 | 视频一区在线观看 |