模數(shù)轉(zhuǎn)換ADC0804的應(yīng)用(含源程序及電路)
P0=table[g_c];//顯示個(gè)位
dula=1;
dula=0;
P0=0xfb;
wela=1;
wela=0;
delay(5);
}
void main()//主程序
{
uchar a,A1,A2,A2t,A3;
while(1)
{
wela=1;
P0=0;//選通ADCS
adwr=0;//AD寫入(隨便寫個(gè)什么都行,主要是為了啟動(dòng)AD轉(zhuǎn)換)
_nop_();
adwr=1;
P0=0xff;//關(guān)閉ADCS
delay(10);
wela=0;//關(guān)閉有AD片選信號(hào)鎖存器的鎖存端以防止在操作數(shù)碼管時(shí)使AD的片選發(fā)生變化
for(a=20;a>0;a--)//需要注意的是ADC0804在寫和讀之間的時(shí)間間隔要足夠長(zhǎng)否則無(wú)法讀出數(shù)據(jù)
{//這里把顯示部分放這里的原因也是為了增加寫讀之間的時(shí)間隔
display(A1,A2,A3);
}//送去顯示各位。
wela=1;//重新打開有AD片選信號(hào)鎖存器的鎖存端
P1=0xff;//讀取P1口之前先給其寫全
P0=0;//選通ADCS
adrd=0;//AD讀使能
adval=P1;//AD數(shù)據(jù)讀取賦給P1口
adrd=1;
P0=0xff;//關(guān)閉ADCS
adwr=0;
P1=adval;//同時(shí)把AD的值送八個(gè)發(fā)光二極顯示
A1=adval/100;//分出百,十,和個(gè)位
A2t=adval%100;
A2=A2t/10;
A3=A2t%10;
};
}
DIY機(jī)械鍵盤相關(guān)社區(qū):機(jī)械鍵盤DIY
評(píng)論