一、前言
在數(shù)字電路中,電平只有高和低兩種狀態(tài),而在模擬電路中,電平理論上有無(wú)數(shù)個(gè)狀態(tài),在使用過(guò)程中就需要將兩者聯(lián)系起來(lái)。ADC0832是一款A(yù)/D轉(zhuǎn)換芯片,是模擬電路與數(shù)字電路轉(zhuǎn)換的一種渠道。本設(shè)計(jì)通過(guò)比較輸入端電壓的大小從而點(diǎn)亮不同顏色的LED燈。電壓4.5~5V時(shí)為綠燈,3.5~4.5V為黃燈,低于3.5V為紅燈。如果有想法,在此基礎(chǔ)上還可以加入蜂鳴報(bào)警功能,電壓低于多少時(shí)進(jìn)行報(bào)警。此設(shè)計(jì)電路簡(jiǎn)單容易操作。
二、ADC0832介紹
1、基本信息
引腳功能:
引腳編號(hào) | 引腳功能 | 描述 |
---|---|---|
1 | CS- | 低電平芯片使能端 |
2 | CH0 | 模擬信號(hào)輸入通道0 |
3 | CH1 | 模擬信號(hào)輸入通道1 |
4 | GND | 低電平(地) |
5 | D1 | 數(shù)據(jù)信號(hào)輸入,選擇通道控制 |
6 | D0 | 數(shù)據(jù)信號(hào)輸入,轉(zhuǎn)換數(shù)據(jù)輸出 |
7 | CLK | 時(shí)鐘輸入 |
8 | VCC | 高電平 |
特點(diǎn):
(1)8位分辨率;
(2)雙通道A/D轉(zhuǎn)換;
(3)供電電壓在0~5之間;
(4)低功耗;
(5)工作頻率為250KHZ,轉(zhuǎn)換時(shí)間為32微妙;
2、使用
在正常使用情況下ADC0832與單片機(jī)的接口為4條數(shù)據(jù)線,分別為CS-、CLK、D0、D1。但D0D1在使用時(shí)并未同時(shí)有效并與單片機(jī)端口,所以在電路連接時(shí)可連于同一引腳。
當(dāng)ADC0832為工作時(shí)端口CS為高電平,此時(shí)芯片處于禁用狀態(tài),CLK、D0和D1電平任意。
當(dāng)ADC0832工作時(shí)需先將CS端口置于低電平,并且維持低電平直至轉(zhuǎn)換結(jié)束。開始轉(zhuǎn)換工作時(shí),單片機(jī)向時(shí)鐘輸入端CLK輸入脈沖信號(hào),此時(shí)使用D1的輸入通道選擇功能。在第一個(gè)脈沖下降之前D1必須為高電平,用來(lái)表示啟動(dòng)信號(hào)。在第2、3個(gè)脈沖下降之前DI端應(yīng)輸入2位數(shù)據(jù)用于選擇通道功能,到第3 個(gè)脈沖的下降之后DI端的輸入電平就失去輸入作用﹐此后DO/DI端則開始利用數(shù)據(jù)輸出DO進(jìn)行轉(zhuǎn)換數(shù)據(jù)的讀取。從第4個(gè)脈沖下沉開始由DО端輸出轉(zhuǎn)換數(shù)據(jù)最高位 DATA7,隨后每一個(gè)脈沖下降DO端輸出下一位數(shù)據(jù)。直到第11個(gè)脈沖時(shí)發(fā)出最低位數(shù)據(jù)DATA0,一個(gè)字節(jié)的數(shù)據(jù)輸出完成。最后將CS置高電平禁用芯片,直接將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行處理就可以了。
三、硬件連接
CS連接P20;CLK連接P21;DI、DO連接P22;CH0、CH1為信號(hào)輸入端。
四、軟件代碼
main主函數(shù)
啟動(dòng)定時(shí)器,根據(jù)比較后的值判斷需要點(diǎn)亮的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個(gè)CLK下降沿
{
uchar i, dat;
CS = 1; //ADC0832未工作時(shí),CS端為高電平,此時(shí)芯片禁用
CLK =1;
CS = 0;
DIDO = 1; CLK = 0; CLK = 1; //SCLK第一個(gè)下降沿來(lái)到時(shí),DI = 1啟動(dòng)ADC0832
DIDO = 1; CLK = 0; CLK = 1; //SCLK第二個(gè)下降沿
DIDO = 0; CLK = 0; CLK = 1; //SCLK第三個(gè)下降沿,發(fā)送1,0選擇通道cho
DIDO = 1; //釋放總線
for(i = 0; i < 8; i++) //第4個(gè)下降沿到第11個(gè)下降沿
{
CLK = 0; //clk處于下降沿,每一個(gè)下降沿DO端輸入下一個(gè)
if(DIDO) dat |= 0x01;
// dat = dat | 0x01,dat和0x01做“或”的運(yùn)算,意思是最低位置1,其它位保持不變。
CLK = 1; //clk處于上升沿
dat <<= 1; //數(shù)據(jù)左移
}
return (dat);
CS = 1; //ADC0832停止工作
}
五、效果展示
六、代碼鏈接
關(guān)注公眾號(hào)“小小創(chuàng)客者”回復(fù)“ADC0832電量指示電路”獲得代碼,如有錯(cuò)誤歡迎指正。
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6030文章
44491瀏覽量
632029 -
指示電路
+關(guān)注
關(guān)注
0文章
32瀏覽量
17227 -
adc0832
+關(guān)注
關(guān)注
3文章
83瀏覽量
28345
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論