|
ADC0808仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
單片機源程序如下:
- #include <reg51.h>//包含頭文件reg51.h
- sbit CLOCK=P2^4;//定義ADC0809的CLOCK引腳
- sbit EOC=P2^5; //定義ADC0809的EOC引腳
- sbit START=P2^6; //定義ADC0809的START引腳
- sbit OE=P2^7; //定義ADC0809的OE引腳
- sbit high_bit=P3^0; //定義數(shù)碼管的高位位選通
- sbit low_bit=P3^1; //定義數(shù)碼管的低位位選通
- unsigned char ADC_val;//定義AD轉(zhuǎn)換結(jié)果暫存
- unsigned char table[]=
- {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
- };//0~9的段碼表
- unsigned char table1[]=
- {0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,
- };//0.~9.的段碼表
- void display(unsigned char);//顯示函數(shù)聲明
- void delayms(unsigned int);//延時函數(shù)聲明
- //主程序
- void main()
- {
-
- while(1)
- {
- START=0;START=1;START=0;//啟動A/D轉(zhuǎn)換
- while(EOC); //等待EOC變低
- while(!EOC);//等待EOC變低,轉(zhuǎn)換結(jié)束
- OE=1;ADC_val=P0;OE=0;//讀轉(zhuǎn)換結(jié)果
- display(ADC_val);//顯示16進(jìn)制轉(zhuǎn)換結(jié)果
- }
- }
- //顯示函數(shù)
- void display(unsigned char ADC_display)
- {
- unsigned char display_high,display_low;
- //把兩位十六進(jìn)制的模數(shù)轉(zhuǎn)換結(jié)果拆分出低位
- display_low=((ADC_display+1)*50/255)%10;
- //把低位數(shù)的段碼通過P1口送到低位數(shù)碼管
- P1=table[display_low];
- low_bit=1;//選通兩位數(shù)碼管的低位
- delayms(10);//延時10ms
- low_bit=0;
- //把兩位十六進(jìn)制的模數(shù)轉(zhuǎn)換結(jié)果拆分出高位
- display_high=((ADC_display+1)*50/255)/10;
-
- //把高位數(shù)的段碼通過P1口送到高位數(shù)碼管
- P1=table1[display_high];
- high_bit=1;//選通兩位數(shù)碼管的高位
- delayms(10);//延時10ms
- high_bit=0;
- }
- //延時函數(shù)
- void delayms(unsigned int xms)
- {
- unsigned int i,j;
- for(i=xms;i>0;i--)
- for(j=114;j>0;j--);
- }
復(fù)制代碼
所有資料51hei提供下載:
ADC0808模數(shù)轉(zhuǎn)換.rar
(64.85 KB, 下載次數(shù): 101)
2018-10-19 23:54 上傳
點擊文件名下載附件
|
|