51單片機(jī)ADC0804模數(shù)轉(zhuǎn)換學(xué)習(xí)
while(1) //進(jìn)入死循環(huán)不停地做模數(shù)轉(zhuǎn)換
{
adwr=1; /*-----------------------------------------*/
_nop_();
adwr=0; / *啟動(dòng)AD轉(zhuǎn)換(根據(jù)時(shí)序圖來的)*/
_nop_();
adwr=1; /*-----------------------------------------*/
for(a=10;a>0;a--)
{
display(A1,A2,A3); //兼具顯示和延時(shí)的作用,因?yàn)檗D(zhuǎn)換需要經(jīng)過一定的時(shí)間,用這個(gè)for循環(huán)可以起到延時(shí)的作用
}
P1=0xff; //讀取P1口之前先給其寫全1
adrd=1; //rd置1(根據(jù)時(shí)序圖可知)
_nop_(); //延時(shí)一個(gè)機(jī)器周期(根據(jù)時(shí)序圖可知)
adrd=0; //rd置0(根據(jù)時(shí)序圖可知)
_nop_(); //延時(shí)一個(gè)機(jī)器周期
adval=P1; //A/D轉(zhuǎn)換后的數(shù)據(jù)賦給adval
adrd=1; //轉(zhuǎn)換后的數(shù)字信號(hào)(二進(jìn)制的信號(hào)應(yīng)該已經(jīng)譯成了十進(jìn)制了)讀出(也是根據(jù)時(shí)序圖可知)
A1=adval/100; /*-----------------------------------------*/
A2=adval%100/10; /*分離轉(zhuǎn)換后的十進(jìn)制數(shù),用來給數(shù)碼管顯示*/
A3=adval%10; /*-----------------------------------------*/
}
}
/*-------------------------------------------------------------------------------*/
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延時(shí)約xms毫秒
for(j=110;j>0;j--);
}
void display(uchar bai,uchar shi,uchar ge)//顯示子函數(shù)
{
dula=1;
P0=table[bai];
dula=0;
P0=0xff;
wela=1;
P0=0x7e;
wela=0;
delayms(5);
評(píng)論