一、前言
在數(shù)字電路中,電平只有高和低兩種狀態(tài),而在模擬電路中,電平理論上有無數(shù)個狀態(tài),在使用過程中就需要將兩者聯(lián)系起來。ADC0832是一款A/D轉(zhuǎn)換芯片,是模擬電路與數(shù)字電路轉(zhuǎn)換的一種渠道。本設計通過比較輸入端電壓的大小從而點亮不同顏色的LED燈。電壓4.5~5V時為綠燈,3.5~4.5V為黃燈,低于3.5V為紅燈。如果有想法,在此基礎上還可以加入蜂鳴報警功能,電壓低于多少時進行報警。此設計電路簡單容易操作。
二、ADC0832介紹
1、基本信息
引腳功能:
引腳編號 | 引腳功能 | 描述 |
---|---|---|
1 | CS- | 低電平芯片使能端 |
2 | CH0 | 模擬信號輸入通道0 |
3 | CH1 | 模擬信號輸入通道1 |
4 | GND | 低電平(地) |
5 | D1 | 數(shù)據(jù)信號輸入,選擇通道控制 |
6 | D0 | 數(shù)據(jù)信號輸入,轉(zhuǎn)換數(shù)據(jù)輸出 |
7 | CLK | 時鐘輸入 |
8 | VCC | 高電平 |
特點:
(1)8位分辨率;
(2)雙通道A/D轉(zhuǎn)換;
(3)供電電壓在0~5之間;
(4)低功耗;
(5)工作頻率為250KHZ,轉(zhuǎn)換時間為32微妙;
2、使用
在正常使用情況下ADC0832與單片機的接口為4條數(shù)據(jù)線,分別為CS-、CLK、D0、D1。但D0D1在使用時并未同時有效并與單片機端口,所以在電路連接時可連于同一引腳。
當ADC0832為工作時端口CS為高電平,此時芯片處于禁用狀態(tài),CLK、D0和D1電平任意。
當ADC0832工作時需先將CS端口置于低電平,并且維持低電平直至轉(zhuǎn)換結(jié)束。開始轉(zhuǎn)換工作時,單片機向時鐘輸入端CLK輸入脈沖信號,此時使用D1的輸入通道選擇功能。在第一個脈沖下降之前D1必須為高電平,用來表示啟動信號。在第2、3個脈沖下降之前DI端應輸入2位數(shù)據(jù)用于選擇通道功能,到第3 個脈沖的下降之后DI端的輸入電平就失去輸入作用﹐此后DO/DI端則開始利用數(shù)據(jù)輸出DO進行轉(zhuǎn)換數(shù)據(jù)的讀取。從第4個脈沖下沉開始由DО端輸出轉(zhuǎn)換數(shù)據(jù)最高位 DATA7,隨后每一個脈沖下降DO端輸出下一位數(shù)據(jù)。直到第11個脈沖時發(fā)出最低位數(shù)據(jù)DATA0,一個字節(jié)的數(shù)據(jù)輸出完成。最后將CS置高電平禁用芯片,直接將轉(zhuǎn)換后的數(shù)據(jù)進行處理就可以了。
三、硬件連接

CS連接P20;CLK連接P21;DI、DO連接P22;CH0、CH1為信號輸入端。
四、軟件代碼

main主函數(shù)
啟動定時器,根據(jù)比較后的值判斷需要點亮的LED燈。
void main(void)
{
uchar AD1;
uint vt1;
uint while_times = 0;
delayms(300);
ET0 = 1;
TR0 = 1;
ET1 = 1;
TR1 = 1;
EA = 1; //打開總中斷
CLK = 0; //ADC0832初始化
CS = 1;
while(1)
{
AD1 = Get_AD_Result1();
vt1= (500.0/256.0)*AD1;
if(vt1>=450)
{
led1=0;led2=1;led3=1;
}
else if(vt1>=350&&vt1<450)
{
led1=1;led2=0;led3=1;
}
else if(vt1<350)
{
led1=1;led2=1;led3=0;
}
}
}
獲取AD轉(zhuǎn)換結(jié)果(0通道)
uchar Get_AD_Result1() //包含11個CLK下降沿
{
uchar i, dat;
CS = 1; //ADC0832未工作時,CS端為高電平,此時芯片禁用
CLK =1;
CS = 0;
DIDO = 1; CLK = 0; CLK = 1; //SCLK第一個下降沿來到時,DI = 1啟動ADC0832
DIDO = 1; CLK = 0; CLK = 1; //SCLK第二個下降沿
DIDO = 0; CLK = 0; CLK = 1; //SCLK第三個下降沿,發(fā)送1,0選擇通道cho
DIDO = 1; //釋放總線
for(i = 0; i < 8; i++) //第4個下降沿到第11個下降沿
{
CLK = 0; //clk處于下降沿,每一個下降沿DO端輸入下一個
if(DIDO) dat |= 0x01;
// dat = dat | 0x01,dat和0x01做“或”的運算,意思是最低位置1,其它位保持不變。
CLK = 1; //clk處于上升沿
dat <<= 1; //數(shù)據(jù)左移
}
return (dat);
CS = 1; //ADC0832停止工作
}
五、效果展示



六、代碼鏈接
關注公眾號“小小創(chuàng)客者”回復“ADC0832電量指示電路”獲得代碼,如有錯誤歡迎指正。
審核編輯:湯梓紅
-
單片機
+關注
關注
6063文章
44925瀏覽量
646982 -
指示電路
+關注
關注
0文章
32瀏覽量
17380 -
adc0832
+關注
關注
3文章
83瀏覽量
28682
發(fā)布評論請先 登錄
《單片機實踐項目》之基于51單片機+ADC0832的數(shù)字電壓表的設計(兩種ADC0832電路仿真圖繪制) 精選資料分享
基于ADC0832的單片機數(shù)據(jù)采集系統(tǒng)設計課程設計
adc0832簡單應用c程序
使用51單片機控制1602液晶屏和ADC0832的程序與proteus電路圖

adc0832在ad中怎么畫_51單片機adc0832匯編程序
使用51單片機和ADC0832應用LCD1602的程序和仿真資料

基于單片機的數(shù)字電壓表制作——ADC0832模數(shù)轉(zhuǎn)換應用程序

《單片機實踐項目》之基于51單片機+ADC0832的數(shù)字電壓表的設計(兩種ADC0832電路仿真圖繪制)

【單片機基礎】ADC0832詳解

評論