A/D转换实验C源程序 #include <regx52.h> #include<absacc.h> #define uchar unsigned char #define uint unsigned int #define ADC0809 XBYTE[0xfffa] //各数字的数码管段码(共阴) uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; sbit CLK=P3^0; //时钟信号 uchar Data; //延时 void DelayMS(uint ms) { uchar i; while(ms--) for(i=0;i<120;i++); } //显示转换结果(结果是数字量0~255) void Display_Result(uchar d) { P2=0x7f; P1=DSY_CODE[d%10]; //第4 个数码管显示个位数 DelayMS(3); P2=0xbf; P1=DSY_CODE[d%100/10]; //第3 个数码管显示十位数 DelayMS(3); P2=0xdf; P1=DSY_CODE[d/100]; //第2 个数码管显示百位数 DelayMS(3); } //主程序 void main() { TMOD=0x02; //T0 工作模式 2 TH0=0x06; TL0=0x06;//周期1ms方波 IT1=1;//INT1边沿触发 IE=0x86; TR0=1; ADC0809=0; //启动 ADC0809 while(1) { Display_Result(Data); } } //INT1 中断将 ADC0809 转换结果送数码管显示 void INT1_INT() interrupt 2 { Data=ADC0809; ADC0809=0; } //T0 定时器中断给 ADC0809 提供时钟信号 void Timer0_INT() interrupt 1 { CLK=~CLK; } |