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