单片机ADC0809数码管程序PCB.doc
文本预览下载声明
12 AIWl
J 3 2 —
?SIXTHS
12
5
■
INS
3
INS
4
IN7
5
SI
6
BX
7
PB
8
(E
9
ax
)0
11
n
12
B
P1I
14
PD.a?5nn ro.KADIl R).aAD3 叭曲 HMMMi PMAI 用 R)AA]?
PKtAS J Pig I PL3A1Q PIX/MH P2.4/M3 PWAJ3I
P2.1/M3
L
⑹2 ixx J
R INI J
f 1
LJ
沐J
si
S2
2
25① A弘 27 S? 5F^r
m
n
A
10
F
9
S2
8
7
B
6
S4
5
G
4
C
3H
H
o
■
D
1
E
29
IW INI IN
IN7
SD\RT BX am CE a xxx \W1-) \咖?丿
OH7
\in
旳辰 J
E2 im J
% J
I
K;I2
程序:
#includeat89x51.h
sbit al=P3A2;
sbit bl=P3Al;
sbit cl=P3A0;
sbit clk=P3A3;
sbit st=P3A6;
sbit eoc=P3A5;
sbit oe=P3A4;
sbit key=P3A7;
unsigned char code dispbitcode[9] = {
0xf7,0xfb,0xfd,0xfe,0x7f,0xbf,0xdf,0xef,0xff}; 〃数码管位分布(自左至右)
unsigned char code dispcode[] = {
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x70,0x07,0x7^0x6^0x40,0x77,0x7C,0x39,0x5E,0x79,0x71}; //
数码管字段 04,2,3,4,5,6,7,9 unsigned long int ad_data=0; unsigned long int DATA=0;
unsigned long int ddata=O;
unsigned char dispbuf[8]={0};
unsigned char dispcount=0,count=0;
void delay(unsigned int Ms)
{
unsigned char i;
for(; Ms != 0; Ms-)
{
for(i = 1; i != 0; i-);
}
}
void Display}unsigned long dat)
{
unsigned char i;
for(i = 0; i != 8; i++)
{
P2 = OxFF; 〃消除重影
P0 = dispcode[dat%10];
P2 = dispbitcode[i]; dat /= 10; delay(255);
}
}
void time」nit()
{
TMOD=Oxl2;
TH0=6;
TL0=6;
TRO=1;
ETO=1;
THl=(65536-1000)/256; TLl=(65536-1000)%256; TR1=1;
ET1=1;
EA=1;
} void adc0809_init() {
st=O;
st=l;
st=O;
oe=0;
unsigned long int adc_data(unsigned char id)
switch(id)
j
case 0:
al=0;bl=0;cl=0;break;
case 1:
al=l;bl=O;cl=O;break;
case 2:
al=O;bl=l;cl=O;break;
case 3:
al=l;bl=l;cl=O;break;
case 4:
al=O;bl=O;cl=l;break;
case 5:
al=l;bl=O;cl=l;break;
case 6:
al=O;bl=l;cl=l;break;
case 7:
} while(!eo oe=l;
al=l;bl=l;cl=l;break;
);
DATA=P1; oe=0;
st=O;
st=l;
st=O;
oe=0;
ad data=DATA; ad_data*=500; ad_data/=255; ad_data*=5; retur n( ad_data);
} void main()
{
unsigned char i=0; unsigned char aa=0; time」nit(); adc0809_init();
while(l)
{
if(key==O)
{
delay(lOOOO); if(key==O)
count++;
if(count=8)co un t=O; }
}
data(O);break; data(l);break; data(2);break; data(3);break; dat
显示全部