#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit out="P3"^5;
sbit led="P3"^4;
sbit A0=ACC^0;
sbit A1=ACC^1;
sbit A2=ACC^2;
sbit A3=ACC^3;
sbit A4=ACC^4;
sbit A5=ACC^5;
sbit A6=ACC^6;
sbit A7=ACC^7;
uchar disp[]={0,0,0};
uchar tab[]={0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,0x80,0x90};
uint temp;
uchar a,b;
uchar xiaoshu;
ulong tt;
void delay2us(unsigned char i)
{
while(--i);
}
void delay(uint t)
{
uint i;
while(t--)
for(i=0;i<125;i++);
}
void start()
{
out=0;
delay2us(250);
out=1;
delay2us(30);
}
void write(unsigned char dat)
{
uchar i;
ACC=dat;
for(i=8;i>0;i--)
{
if(A0)
{
out=0;
delay2us(1);
out=1;
delay2us(27);
}
else
{
out=0;
delay2us(32);
out=1;
}
ACC>>=1;
}
}
bit tbit (void)
{
bit dat;
out=0;
delay2us(2);
out=1;
_nop_();
dat=out;
delay2us(26);
return(dat);
}
uchar read(void)
{
unsigned char i,j,date=0;
for(i=8;i>0;i--)
{
j=tbit();
date=(j<<7)|(date>>1);
}
return(date);
}
void display()
{
uchar i;
int t="100";
uchar scan;
while(--t>=0)
{
scan=4;
for(i=0;i<3;i++)
{
P0=0xff;
P2=~scan;
P0=tab[disp];
if(i==1)
P0=tab[disp]&0x7f;
delay(4);
scan<<=1;
}
}
}
void main()
{
out=1;
while(1)
{
start();
write(0xcc);
write(0x44);
display();
start();
write(0xcc);
write(0xbe);
a=read();
b=read();
xiaoshu=a;
temp=(b<<4)|(a>>4);
tt=temp;
xiaoshu=xiaoshu&0x0f;
xiaoshu=xiaoshu*625/1000;
disp[2]=tt/10;
disp[1]=tt%10;
disp[0]=xiaoshu%10;
display();
}
}
文章评论(0条评论)
登录后参与讨论