1.protues仿真图
程序:
#include <reg52.h>
#include <intrins.h>
sbit OE=P3^0;
sbit EOC=P3^1;
sbit CLK=P3^4;
sbit ST=P3^2;
#define uchar unsigned char
#define uint unsigned int
uint tab1[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x80};//驱动信号 0~9以及.
uchar tab2[]={0xf7,0xfb,0xfd,0xfe}; //x.xxx
uint disp[]={0,0,0,0};
#define ADC P0
int t;
void delay(char x)
{
int i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void timer () interrupt 1
{
CLK=~CLK;
}
void dateproc(int x)
{
unsigned int result;
result=x*196;
disp[0]=result/10000; //获取最高位
disp[1]=(result/1000)%10;
disp[2]=(result/100)%10;
disp[3]=(result/10)%10;
}
void display()
{
char j;
for(j=0;j<4;j++)
{
P1=0xff;
P1=tab2[j];
P2=tab1[disp[j]];
delay(1);
P2=0x00;
if(P1=0xf7)
{
P2=tab1[disp[0]]|0x80;
}
}
}
main()
{
EA=1;
ET0=1;
TMOD=0X02;
TH0=0Xff;
TL0=0Xff;
TR0=1;
while(1)
{
ST=0;
ST=1;
ST=0;
while(!EOC);
OE=1;
t=ADC;
dateproc(t);
display();
}
}