分析: 程序启动前可将滑动电阻调至最大值,4位8段共阳极数码管初始值显示为0。拖动滑动电阻器向上,电压表电压增大,数码管显示的数值也变大。 当滑动电阻器滑至中央,电压表显示2.5V是数码管显示127; 当滑动电阻器滑至最小时,电压表显示5V数码管显示255。 工作方式2 16位 TH0=(65536-250)/256;
TL0=(65536-250)%256; C语言源码 #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int
unsigned char code tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; sbit clock=P1^4; sbit start=P1^5; sbit eoc=P1^6; sbit oe=P1^7;
void DelayMS(unsigned int ms) { unsigned char i; while(ms--) for(i=0;i<200;i++); } display(unsigned char d){ P1=0xe1; P0=tab[d/1000]; DelayMS(2); P1=0xe2; P0=tab[d/100%10]; DelayMS(2); P1=0xe4; P0=tab[d%100/10]; DelayMS(2); P1=0xe8; P0=tab[d%10]; DelayMS(2); }
init(){ TMOD=2; TL0=0x6; TH0=0x6; IE=0x82; TR0=1; } t0_int() interrupt 1 { clock=!clock;
} main() { //0111 //高4位 init(); while(1) { start=0; start=1;//清零 start=0;//启动 while(eoc==0); //等待转换结果 oe=1; //允许输出 display(P2);//显示A/D转换结果 oe=0; //关闭输出 } }
|