久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機ADC0804模數轉換學習

51單片機ADC0804模數轉換學習

作者: 時間:2012-08-02 來源:網絡 收藏

while(1) //進入死循環不停地做
{
adwr=1; /*-----------------------------------------*/
_nop_();
adwr=0; / *啟動AD轉換(根據時序圖來的)*/
_nop_();
adwr=1; /*-----------------------------------------*/

for(a=10;a>0;a--)
{
display(A1,A2,A3); //兼具顯示和延時的作用,因為轉換需要經過一定的時間,用這個for循環可以起到延時的作用
}

P1=0xff; //讀取P1口之前先給其寫全1

adrd=1; //rd置1(根據時序圖可知)
_nop_(); //延時一個機器周期(根據時序圖可知)
adrd=0; //rd置0(根據時序圖可知)
_nop_(); //延時一個機器周期
adval=P1; //A/D轉換后的數據賦給adval
adrd=1; //轉換后的數字信號(二進制的信號應該已經譯成了十進制了)讀出(也是根據時序圖可知)

A1=adval/100; /*-----------------------------------------*/
A2=adval%100/10; /*分離轉換后的十進制數,用來給數碼管顯示*/
A3=adval%10; /*-----------------------------------------*/

}
}
/*-------------------------------------------------------------------------------*/

void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--) //i=xms即延時約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);


評論


相關推薦

技術專區

關閉