数值扩大20倍,在电路输入的地方改,输入电路电阻增加就可改变量程
#include "reg52.h"

#include "intrins.h"
#define ad_con P2 //转换控制
#define addata P0 // 数据
#define disdata P1 // 显示
#define uchar unsigned char
#define uint unsigned int
uchar number=0x00;
sbit ALE=P2^3;
sbit START=P2^4;
sbit OE=P2^5;
sbit EOC=P3^7;
sbit KEY1=P3^5;//单路-循环
sbit KEY2=P3^6;//通道选择
sbit DISX=disdata^7;
sbit FLAG=PSW^5;
uchar code dis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF};
uchar code scan_con[4]={0xfe,0xfd,0xfb,0xf7};
uchar data ad_data[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
uint data dis[5]={0x00,0x00,0x00,0x00,0x00};
////////////////////////////////////////////////////////////
delay1ms(uint t)//延时
{
uint i,j;
for (i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
/////////////////////////////////////////////////////////////////
keytest()//按键处理
{
if (KEY1==0)
{
FLAG=!FLAG;//标志翻转
while (KEY1==0) ;
}
if (FLAG==1) //单路
{
if (KEY2==0)
{
number++; //通道选择
if (number==8) {number=0;}
while (KEY2==0) ;
}
}
}
////////////////////////////////////////////////////////////////
scan()//扫描显示
{
uchar k,n;
int h;
if (FLAG==0) //循环
{
dis[3]=0x00; //显示通道 0
for (n=0;n<8;n++)
{
dis[2]=ad_data[n]/51; //百位 /51与转换值有关,调试时看实际值
dis[4]=ad_data[n]%51;
dis[4]=dis[4]*10;
dis[1]=dis[4]/51; //十位
dis[4]=dis[4]%51;

dis[4]=dis[4]*10;
dis[0]=dis[4]/51; //个位
for (h=0;h<500;h++)
{
for (k=0;k<4;k++)
{
disdata=dis_7[dis[k]];
if (k==2) {DISX=0;}
P3=scan_con[k];delay1ms(1);P3=0xff;
}
}
dis[3]++; //通道显示+1
keytest();
}
}
if (FLAG==1) //单路
{
dis[3]=number; //通道选择
dis[2]=ad_data[n]/51; //百位
dis[4]=ad_data[n]%51;
dis[4]=dis[4]*10;
dis[1]=dis[4]/51; //十位
dis[4]=dis[4]%51;
dis[4]=dis[4]*10;
dis[0]=dis[4]/51; //个位
for (k=0;k<4;k++)
{
disdata=dis_7[dis[k]];
if (k==2) {DISX=0;}
P3=scan_con[k];delay1ms(1);P3=0xff;
}
keytest();
}
}
/////////////////////////////////////////////////////////
test()//AD转换
{
uchar m;
uchar s=0x00;
ad_con=s;
for (m=0;m<8;m++)
{
ALE=1;_nop_();_nop_();ALE=0;
START=1;_nop_();_nop_();START=0;
_nop_();_nop_();_nop_();_nop_();
while (EOC==0);
OE=1;ad_data[m]=addata;OE=0;
s++;ad_con=s;
}
ad_con=0x00;
}
///////////////////////////////////////////////////////
main()
{
P0=0xff;
P2=0x00;
P1=0xff;
P3=0xff;
while (1)

{
test();//AD转换
scan();//显示
}
}


