51 单片机 AD 转换程序及仿真图 仅供初初学者参考AD 程序: #include #include sbit P2_4 = P2^4; sbit P2_5 = P2^5; sbit P2_6 = P2^6; sbit P2_7 = P2^7; sbit P3_0 = P3^0; sbit P3_3 = P3^3; sbit P3_2 = P3^2; sbit P3_1 = P3^1; #define ALE P2_4 #define START P2_5 #define OE P2_6 #define EOC P2_7 unsigned char code led_number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00 }; //LED 灯的数据 unsigned char q; void delay(void) //延时函数{ unsigned char a,b,c; for(c=189;c>0;c--) for(b=230;b>0;b--) for(a=33;a>0;a--);} void display(unsigned char led1) //数码管动态显示程序{ P3 = 0X00; P3 = led_number[led1]; } unsigned char abc_0808(unsigned char chanel) 、//AD 采样函数 { unsigned char dd; P2 &= 0XF8; P2 |= chanel; ALE= 1; START= 1; ALE= 0; START = 0; _nop_(); _nop_(); while(EOC == 0); OE= 1; dd= P1; OE= 0; return(dd); } main() { unsigned char m; unsigned int a = 13; while(1) { q=abc_0808(0x01);a=q*20; m = a/1000; display(m);delay();q=abc_0808(0x00);a=q*20; m = a/1000; display(m);delay(); } }仿真图: