#include<>#defineucharunsignedchar#defineuintunsignedintuchartemp,dianya0,dianya1;ucharcodeLED[]={ 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71}; //共阴数码管断码0~9~a~fuchardisbuff[4]; //显示缓冲器(数组)sbitclk=P3^3; //芯sbitEOC=P3^2; // 片sbitOE=P3^0; // 引sbitstart=P3^1; // 脚sbitadress_A=P3^4; // 定// 义voiddelay(uintz){ while(z--);}voidtimer0init(){ TMOD=0x01;//设置定时器0为工作方式1 TH0=(65536-1)/256;//定时器0高八位赋值1us中断一次 TL0=(65536-1)%256;//定时器0低八位赋值 EA=1; //开总中断 ET0=1; //开定时器0中断 TR0=1; //启动定时器0 }voiddisplay(){// disbuff[0]=dianya%10;//个位// disbuff[1]=dianya/10%10;//十// disbuff[2]=dianya/100%10;//百// disbuff[3]=dianya/1000; //千 P2=0xfe; //打开第一个数码管 P0=LED[disbuff[3]]; //给数码管送数据(段码) delay(60); //延时,防止数码管重影 P2=0xfd; // 以 P0=LED[disbuff[2]]; // 下 delay(60); // 功 P2=0xfb; // 能 P0=LED[disbuff[1]]; // 类 delay(60); // 同 P2=0xf7; P0=LED[disbuff[0]]; delay(60);}voidmain(){ timer0init(); //定时器0初始化 while(1) { adress_A=0; //打开通道0 delay(10); //延时等待芯片反应 start=1;//开始ADC转换// while(!EOC);//等待转换完成标志(未知原因,此语句导致数码管不能显示) OE=1;//输出允许
程序ADC0809模拟检测电压数码管显示 来自淘豆网m.daumloan.com转载请标明出处.