目錄
一、前言
二、芯片介紹
1、ADC0832
2、74HC245
三、硬件連接
四、軟件代碼
五、效果展示
六、代碼鏈接
一、前言
通過(guò)ADC0832對(duì)電位器進(jìn)行檢測(cè)根據(jù)電壓的不同主控芯片計(jì)算出不同的數(shù)值,將所得數(shù)值進(jìn)行數(shù)模轉(zhuǎn)換顯示在數(shù)碼管上。電位器種類有很多,搖桿式電位器在可在遙控小車、遙控飛機(jī)等電子制作時(shí)進(jìn)行使用,電位器數(shù)值顯示是電位器使用的基礎(chǔ),后期可進(jìn)行多電路的添加與應(yīng)用。
二、芯片介紹
1、ADC0832
引腳功能:
引腳編號(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 | 高電平 |
2、74HC245
74HC245是方向可控的八路緩沖器,主要用于實(shí)現(xiàn)數(shù)據(jù)總線的雙向異步通信。 74HC245是兼容TTL器件引腳的高速CMOS總線收發(fā)器,典型的CMOS型三態(tài)緩沖門電路,八路信號(hào)收發(fā)器,。由于單片機(jī)或CPU的數(shù)據(jù)/地址/控制總線端口都有一定的負(fù)載能力,如果負(fù)載超過(guò)其負(fù)載能力,一般應(yīng)加驅(qū)動(dòng)器。74HC245通常在主控芯片的并行接口與外部受控設(shè)備的并行接口間添加。主要應(yīng)用于大屏顯示,以及其它的消費(fèi)類電子產(chǎn)品中增加驅(qū)動(dòng)。
引腳功能:
引腳編號(hào) | 引腳編號(hào) | 描述 |
---|---|---|
1 | DIR | 方向控制 |
2 | A0 | 數(shù)據(jù)輸入/輸出 |
3 | A1 | 數(shù)據(jù)輸入/輸出 |
4 | A2 | 數(shù)據(jù)輸入/輸出 |
5 | A3 | 數(shù)據(jù)輸入/輸出 |
6 | A4 | 數(shù)據(jù)輸入/輸出 |
7 | A5 | 數(shù)據(jù)輸入/輸出 |
8 | A6 | 數(shù)據(jù)輸入/輸出 |
9 | A7 | 數(shù)據(jù)輸入/輸出 |
10 | GND | 邏輯地 |
11 | B7 | 數(shù)據(jù)輸入/輸出 |
12 | B6 | 數(shù)據(jù)輸入/輸出 |
13 | B5 | 數(shù)據(jù)輸入/輸出 |
14 | B4 | 數(shù)據(jù)輸入/輸出 |
15 | B3 | 數(shù)據(jù)輸入/輸出 |
16 | B2 | 數(shù)據(jù)輸入/輸出 |
17 | B1 | 數(shù)據(jù)輸入/輸出 |
18 | B0 | 數(shù)據(jù)輸入/輸出 |
19 | OE- | 輸出使能 |
20 | VCC | 邏輯電源 |
DIR=1,A-B;DIR=0,B-A;
OE=0導(dǎo)通,OE=1關(guān)閉;
三、硬件連接
仿真圖
P3口連接共陰極數(shù)碼管的段碼位;P20、P21、P22、P23為數(shù)碼管的位選;
P10連接CS-;P11連接CLK;P12連接DIDO;
四、軟件代碼
main主函數(shù)
進(jìn)行定時(shí)器的初始化,ADC0832的初始化,以及數(shù)碼管段顯示的使用。
void main()
{
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)
{
DigDisplay();
AD1 = Get_AD_Result1();
vt1= (500.0/256.0)*AD1;
date[0] =smgduan[vt1/100];//千分位
date[1] =smgduan[vt1/10%10]; //百分位
date[2] =smgduan[vt1%10];//十分位
date[3] =smgduan[vt1];//個(gè)分位
}
}
數(shù)碼管位選函數(shù)。
通過(guò)switch語(yǔ)句進(jìn)行位選,P3口為數(shù)碼管段顯示口;數(shù)碼管顯示使用的是數(shù)碼管動(dòng)態(tài)掃描。
void DigDisplay()
{
int i;
for(i=0;i<8;i++)
{
switch(i) //位選,選擇點(diǎn)亮的數(shù)碼管,
{
case(0):
qian=0;bai=1;shi=1; ge=1;break;//顯示第0位
case(1):
qian=1;bai=0;shi=1; ge=1;break;//顯示第1位
case(2):
qian=1;bai=1;shi=0; ge=1;break;//顯示第2位
case(3):
qian=1;bai=1;shi=1; ge=0;break;//顯示第3位
}
P3=date[i];//發(fā)送段碼
delayms(1); //間隔一段時(shí)間掃描
P3=0x00;//消隱
}
}
ADC0832通道選擇函數(shù)。
該芯片在上篇文章中有進(jìn)行解釋,這里不進(jìn)行解釋了。
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停止工作
}
delay.c
根據(jù)需要進(jìn)行調(diào)用。
/*------------------------------------------------
uS延時(shí)函數(shù)
------------------------------------------------*/
void DelayUs2x(unsigned char t)
{
while(--t);
}
/*------------------------------------------------
mS延時(shí)函數(shù)
------------------------------------------------*/
void delayms(unsigned char t)
{
while(t--)
{
//大致延時(shí)1mS
DelayUs2x(245);
DelayUs2x(245);
}
}
五、效果展示
實(shí)物展示 https://live.csdn.net/v/217316
六、代碼鏈接
歡迎留言評(píng)論分享自己的看法;關(guān)注公眾號(hào)“小小創(chuàng)客者”回復(fù)“數(shù)碼管顯示電位器值”獲得代碼,如有錯(cuò)誤歡迎指正。
審核編輯:湯梓紅
-
單片機(jī)
+關(guān)注
關(guān)注
6023文章
44376瀏覽量
628311 -
電位器
+關(guān)注
關(guān)注
14文章
996瀏覽量
66501 -
數(shù)值
+關(guān)注
關(guān)注
0文章
80瀏覽量
14324
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論