#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dispbitcode[]={0x03,0xf3,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};
uchar dispbuf[6];
uint i,j,getdata,temp,temp1;
uchar count,d,k=1;
sbit CLK=P2^7;
sbit ST=P2^3;
sbit OE=P2^0;
sbit EOC=P2^2;
sbit adda=P2^4;
sbit addb=P2^5;
sbit addc=P2^6;
sbit seg0=P1^7;
sbit seg1=P3^2;
sbit seg2=P3^3;
sbit seg3=P3^4;
sbit seg4=P3^5;
sbit seg5=P3^6;
sbit seg6=P3^7;
sbit key1=P3^1;
void Delay(uint i);
void Display();
void key(void);
void key()
{
if(key1==0)
{
Delay(30);//按键消抖
while(key1==0);//判断是否真的消抖
k++;
if(k>=9)
k=1;
}
}
void adc0809()
{
ST=0; // 初始化时
OE=0; //使ST和OE信号全为低电平
ST=1; //ST 为转换启动信号。当ST 上跳沿时,所有内部寄存器清零;
ST=0; // ST下跳沿时,开始进行A/D 转
/*选择通道*/
{
if(k==1)
{
adda=0; addb=0; addc=0;
}
if(k==2)
{
adda=1; addb=0; addc=0;
}
if(k==3)
{
adda=0; addb=1; addc=0;
}
if(k==4)
{
adda=1; addb=1; addc=0;
}
if(k==5)
{
adda=0; addb=0; addc=1;
}
if(k==6)
{
adda=1; addb=0; addc=1;
}
if(k==7)
{
adda=0; addb=1; addc=1;
}
if(k==8)
{ adda=1; addb=1; addc=1;}
}
* a+ N! i9 e! p* q5 Q' W$ p! gif(EOC==1) //当EOC 为高电平时,表明转换结束
{
OE=1; //OE=1,输出转换得到的数据
getdata=P0;
OE=0; //输出数据线呈高阻状态
}
}
void main()
{
3 t1 v+ h3 W% D9 l! ]7 cwhile(1)
{TMOD=0x10;
TH1=(65536-200)/256;
TL1=(65536-200)%256;
EA=1;
ET1=1;
TR1=1;
key();
{
adc0809();
temp=getdata*1.0/255*500;
dispbuf[0]=temp%10;
dispbuf[1]=temp/10%10;
dispbuf[2]=temp/100;
dispbuf[3]=8;//正向显示8
dispbuf[4]=k;//通道显示
dispbuf[5]=0;//待用
Display();
}
}
}
void Delay(uint i)
{
uint j;
for(;i>0;i--)
{
for(j=0;j<125;j++);
}
}
void Display()
5 m; @ l' i8 u6 o. {" I8 D" h/ X( \
{
P1=dispbitcode[dispbuf[3]];//端口显示位+第一管口亮
seg0=0;
seg1=0;
seg2=0;
seg3=0;
seg4=1;
seg5=0;
seg6=0;
Delay(5);
P1=0xff;
P1=dispbitcode[dispbuf[0]];//个位+第四管口亮
seg1=1;
seg2=0;
seg3=0;
seg4=0;
seg5=0;
seg6=0;
Delay(5);
P1=0xff;
P1=dispbitcode[dispbuf[1]];//十位+第三管口亮
seg1=0;
seg2=1;
seg3=0;
seg4=0;
seg5=0;
seg6=0;
Delay(5);
P1=0xff;
P1=dispbitcode[dispbuf[2]];//百位+第二管口亮
seg0=0;
seg1=0;
seg2=0;
seg3=1;
seg4=0;
seg5=0;
seg6=0;
Delay(5);
P1=0xff;
P1=dispbitcode[dispbuf[4]];//第2管口亮
seg1=0;
seg2=0;
seg3=0;
seg4=0;
seg5=1;
seg6=0;
Delay(5);
P1=0xff;
P1=dispbitcode[dispbuf[5]];//第1管口亮
seg1=0;
seg2=0;
seg3=0;
seg4=0;
seg5=0;
seg6=1;
Delay(5);
P1=0xff;
}
void t1(void) interrupt 3
{
TH1=(65536-200)/256;
TL1=(65536-200)%256;
CLK=~CLK;
}
! z% ?# J3 F e2 ~* b8 D$ I* o. ?下载: