本文是基于89c51的八路ad转换系统设计
一)硬件部分:
二)程序部分:
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define adc0809 xbyte[0x7fff]
uchar code seg7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code act[4]={0xfe,0xfd,0xfb,0xf7};
sbit p1_7=p1^7;
sbit p2_6=p2^6;
sbit p3_3=p3^3;
bit flag;
uchar m;
uint x[8];
void d200us(void);
void delay(uint k);
/******************************/
void main(void)
{
tmod=0x01;
th0=-(1000/256);
tl0=-(1000%6);
tr0=1;
ie=0x82;
while(1)
{
if(!p2_6){delay(30);if(!p2_6)flag=!flag;delay(300);}
adc0809=m;
while(!p3_3);
x[m]=adc0809;
m ;
if(m>7)m=0;
delay(50);
}
}
/************************************/
void delay(uint k)
{
uint i,j;
for(i=0;i for(j=0;j60;j )
{;}}
}
/***********************************/
void timer0(void) interrupt 1 using 1
{static uchar disbit,n;static uint cnt;
th0=-(1000/256);
tl0=-(1000%6);
switch(disbit)
{
case 0:{p1=seg7[n];if(flag)p1_7=1;else p1_7=0;}break;
case 1:{p1=seg7[(x[n]*49/25)/100];p1_7=1;}break;
case 2:{p1=seg7[(x[n]*49/25)0/10];}break;
case 3:{p1=seg7[(x[n]*49/25)0];}break;
default:break;
}
p2=act[disbit];
disbit ;cnt ;
if(disbit>3)disbit=0;
if(!flag)
{if(cnt>500){cnt=0;n ;}}
if(n>7)n=0;
}