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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

求教,關于STC12C5A60S2的單片機AD轉換問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:492510 發表于 2020-5-26 22:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
寫了個程序,本想用STC12C5A60S2的P1.4引腳接受濕度傳感器輸出的模擬信號,然后判斷是否達到閾值,達到閾值后通過P2.0引腳輸出高電平使水泵繼電器開關打開,可是不知道哪里出了問題實物調試一直不成功,請大神指教一下。濕度傳感器用的YL-69,比較器用的LM-393,程序如下:
#include "STC12C5A60S2.h"
#include "intrins.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;
#define ADC_POWER 0x80
#define ADC_FLAG 0x10
#define ADC_START 0x08
#define ADC_SPEEDLL 0x00
#define ADC_SPEEDL 0x20
#define ADC_SPEEDH 0x40
#define ADC_SPEEDHH 0x60
void InitADC();
BYTE GetADCResult(BYTE ch);
void Delay(WORD n);
void main()
{
InitADC();
P2=0x00;
if(GetADCResult(4)>=0.001)                        //0.001為閾值
  P2=0x01;
}
BYTE GetADCResult(BYTE ch)                       //AD轉換結果
{
ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ch|ADC_START;
_nop_();
_nop_();
_nop_();
_nop_();
while(!(ADC_CONTR&ADC_FLAG));
ADC_CONTR&=~ADC_FLAG;
return ADC_RES;
}
void InitADC()                      //AD寄存器初始化
{
P1ASF=0xff;
ADC_RES=0;
ADC_CONTR=ADC_POWER|ADC_SPEEDLL;
Delay(2);
}
void Delay(WORD n)                  //延時函數
{
WORD x;
while(n--)
{
  x=5000;
  while(x--);
}
}

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

使用道具 舉報

沙發
ID:213173 發表于 2020-5-27 07:25 | 只看該作者
用比較器判斷是否達到閾值其本身已經達到模數轉換的作用,只是不能數字控制。如果濕度傳感器輸出的模擬信號不符合單片機ADC采樣范圍應使用LM358之類的運放調整到合適范圍。控制濕度不是控制在某一個點而是控制在一定范圍。也就是設定上限和下限。樓主的main函數沒有用while(1)限制會發生無法預料的結果。

void main()
{
        BYTE Temp;
        InitADC();
        while(1)
        {
                Temp=GetADCResult(4);//采樣
                if(Temp>=0x80)//上限
                        P2=0x00;
            //上下限之間保持原態不變
                if(Temp<=0x64)//下限
                        P2=0x01;
                Delay(1000);//控制采樣周期
        }
}
回復

使用道具 舉報

板凳
ID:492510 發表于 2020-5-27 11:38 | 只看該作者
wulin 發表于 2020-5-27 07:25
用比較器判斷是否達到閾值其本身已經達到模數轉換的作用,只是不能數字控制。如果濕度傳感器輸出的模擬信號 ...

非常感謝您的幫助!
遺憾的是在修改主函數并嘗試不同上下限后還是沒能成功使P2.0引腳輸出高電平,第一次使用AD功能,可能是對相關寄存器用法不正確。
回復

使用道具 舉報

地板
ID:213173 發表于 2020-5-27 13:59 | 只看該作者
li155 發表于 2020-5-27 11:38
非常感謝您的幫助!
遺憾的是在修改主函數并嘗試不同上下限后還是沒能成功使P2.0引腳輸出高電平,第一次 ...

樓主這個程序基本是STC官方示例的應用,除了main函數有點上述的問題外其它基本正確。不能正常工作可能是硬件電路還有問題。P1.4輸入電壓范圍0~VCC,獲取ADC結果數據范圍0~255。
回復

使用道具 舉報

5#
ID:492510 發表于 2020-5-27 14:52 | 只看該作者
wulin 發表于 2020-5-27 13:59
樓主這個程序基本是STC官方示例的應用,除了main函數有點上述的問題外其它基本正確。不能正常工作可能是 ...

被您發現了哈哈,本來是一個小系統的程序,其他功能模塊基本調試正常了,只有AD這里還有些問題,就給單獨摘了出來調試。我會再琢磨琢磨的,謝謝您的指點。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品日韩一区二区 | 伊人伊成久久人综合网站 | 成人一区二区三区视频 | 二区在线视频 | 99re视频精品 | www国产精| 亚洲美女一区二区三区 | 亚洲三级视频 | 中文字幕不卡在线观看 | 精品在线看 | a欧美| 在线中文字幕国产 | 久久久精品一区二区 | 成人在线观看免费观看 | 2020天天操 | 久久无毛| 呦呦在线视频 | 性高湖久久久久久久久aaaaa | 欧美精品在线一区 | 在线日韩 | 影音先锋中文字幕在线观看 | 91在线观看免费视频 | 一区2区 | 欧美久久久久久久 | 超碰在线播 | 亚洲一二三区在线观看 | 毛色毛片免费看 | 亚洲精品久久久久久国产精华液 | 国产一区二区三区在线 | 欧美综合一区二区 | 羞羞的视频在线观看 | 精品一级 | 欧美中文字幕一区二区三区亚洲 | 一区二区三区四区在线 | 久久久久亚洲精品 | 51ⅴ精品国产91久久久久久 | 99re6在线| 日韩一区二区三区在线观看 | 一区二区三区免费 | 51ⅴ精品国产91久久久久久 | 精品国产一区二区三区日日嗨 |