
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit rd=P3^7;
sbit wr=P3^6;
sbit cs0=P3^5;
sbit hc=P3^4;
void delay(uint );
void format0804();
void display(uchar aa );
unsigned char code table1[]= //共阳段码控制
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
unsigned char code dispbit[8]=
{0xfe,0xfd,0xfb,0xf7,0xef,0xdF,0xbF,0x7F}; //位选控制 查表的方法控制
uchar aa,adc0804;
void main()
{
//uint adc0804;
cs0=0;
P1=0xff;//为P1口读取数据做准备,与P1口相连的某个引脚若为低,则P1相应位被拉低,
hc=1; //以此来读取数据
while(1)
{
/*wr=1;
delay(1);
wr=0;
rd=1;
delay(1);
wr=1;
rd=0;
adc0804=P1;//根据时序DAC0804时序图,只能在些读取其输出值
delay(1);
rd=1;
delay(1); */
format0804();
adc0804=P1; //在rd=0才能读取P1口状态,
display(adc0804);
}
}
void delay(uint z)
{
uint j;
for(z;z>0;z--)
for(j=110;j>0;j--);
}
void format0804()
{
wr=1;
//delay(1);
wr=0;
wr=1;//根据时序ADC0804时序图,只有wr端存在上升沿就可读取模拟值
rd=1;
//delay(1);
rd=0; //根据时序ADC0804时序图,只有rd低电平时才能向外发送信号
//adc0804=P1;
//delay(1);
//rd=1;
}
void display(uchar aa)
{
uchar ledout[10],i;
ledout[0]=table1[aa%10000/1000]; //千位
ledout[1]=table1[aa%1000/100]; //百位带小数点
ledout[2]=table1[aa%100/10]; //十位
ledout[3]=table1[aa%10]; //个位
for(i=0;i<4;i++)
{
P2=dispbit[i];//位选 先位选再段选
P0=ledout[i]; //段码
delay(1);
}
}