STC12C5410AD单片机的AD程序两位数码管显示 下载本文

STC12C5410AD单片机的AD程序两位数码

管显示

/*用的是主程序中转换AD,在以后的使用中要用中断的方法才能节约CPU的使用率,本程序中是用P1.0为输入,用的是单片机本身的10位AD,最大1024分辨率,除以10后最大为102,用两位的数码管,所以只能在99以内,在程序中大于99的数,就只能显示99,也可用三位数码管显示.*/ #include;

#define uchar unsigned char #define uint unsigned int

#define duan P1 //数码管段码输出端 sfr ADC_CONTR = 0xc5; sfr ADC_DATA = 0xc6; sfr ADC_LOW2 = 0xbe; sfr P1M0 =0x91; sfr P1M1 =0x92;

sbit sw=P2^7; //数码管的十位选通 sbit gw=P2^6; //数码管的个位选通 uint shu,ad_shu;

uchar code tab[]={ 0xEE,/*0*/

0x48,/*1*/ 0xD6,/*2*/ 0xDC,/*3*/ 0x78,/*4*/ 0xBC,/*5*/ 0xBE,/*6*/ 0xC8,/*7*/ 0xFE,/*8*/ 0xFC,/*9*/ };

void delay( ) { uchar a;

for(a=10;a>;0;a--); }

void desplay(int bb) { uint ab; ab=bb;

if(ab>;99) ab=99; duan=tab[ab/10]; sw=0;

delay(); sw=1;

duan=tab[ab]; gw=0; delay(); gw=1; }

void main() {

ADC_CONTR=0xe0; //开A/D转换器

P1M0=0x01; //定义P1.0为AD输入端口,让态

P1M1=0x01; //定义P1.0为AD输入端口,让态 while(1) {

ADC_CONTR|=0x08;

while((ADC_CONTR & 0x10)==0); ADC_CONTR&=0xe7; ad_shu=ADC_DATA; ad_shu

P1.0为高阻P1.0为高阻