|
程序在这里
#include<reg51.h>
#include "intrins.h"
#define uchar unsigned char
#define uint unsigned int
typedef unsigned char U8; /* defined for unsigned 8-bits integer variable */
typedef unsigned int U16;
sbit rs=P2^5;
sbit rw=P2^6 ;
sbit e=P2^7;
sbit ADCS =P3^5; //ADC0832 chip seclect
sbit ADDI =P3^7; //ADC0832 k in
sbit ADDO =P3^7; //ADC0832 k out
sbit ADCLK =P3^6; //ADC0832 clock signal
unsigned int temp;
unsigned char dispbuf[4];
uchar getdata;
void Delay(U16 j)
{
U8 i;
for(;j>0;j--)
{
for(i=0;i<27;i++);
}
}
//1602D′Ö¸áîoˉêy
void xiezhilin(uchar zhilin)
{
rs = 0 ;
rw = 0 ;
e = 0 ;
P0 = zhilin ;
Delay(100);
e = 1 ;
Delay(100);
e = 0 ;
}
//1602D′êy¾Yoˉêy
void xiesu(uchar suzi)
{
rs = 1 ;
rw = 0 ;
e = 0 ;
P0 = suzi ;
Delay(100);
e = 1 ;
Delay(100);
e = 0 ;
}
//1602¿ØÖÆÏÔê¾oˉêy
void xianshi(uchar dizhi, uchar suzi)
{
xiezhilin(dizhi);
xiesu(suzi);
}
//×a»»3é¿éòÔÔú1602ÏÔê¾μÄêyÖμ
void LCDdisplay(void)
{
xianshi(0x80+0,'V');
xianshi(0x80+1,'a');
xianshi(0x80+2,'l');
xianshi(0x80+3,'u');
xianshi(0x80+4,'e');
xianshi(0x80+5,':');
xianshi(0x80+6,0x30+dispbuf[2]);
xianshi(0x80+7,0x30+dispbuf[1]);
xianshi(0x80+8,0x30+dispbuf[0]);
xianshi(0x80+9,'G');
xianshi(0x80+10,'E');
xianshi(0x80+11,'\0');
}
//AD0832¶áè¡êy¾Yoˉêy
unsigned int Adc0832(unsigned char channel)
{
uchar i=0;
uchar j;
uint dat=0;
uchar ndat=0;
if(channel==0)channel=2;
if(channel==1)channel=3;
ADDI=1;
_nop_();
_nop_();
ADCS=0;
_nop_();
_nop_();
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
ADCLK=1;
ADDI=channel&0x1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
ADCLK=1;
ADDI=(channel>>1)&0x1;
_nop_();
_nop_();
ADCLK=0;
ADDI=1;
_nop_();
_nop_();
dat=0;
for(i=0;i<8;i++)
{
dat|=ADDO;
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
dat<<=1;
if(i==7)dat|=ADDO;
}
for(i=0;i<8;i++)
{
j=0;
j=j|ADDO;
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;
_nop_();
_nop_();
j=j<<7;
ndat=ndat|j;
if(i<7)ndat>>=1;
}
ADCS=1;
ADCLK=0;
ADDO=1;
dat<<=8;
dat|=ndat;
return(dat);
}
void main()
{
xiezhilin(0x01);
xiezhilin(0x38);
xiezhilin(0x0c);
while(1)
{
getdata=Adc0832(0);
if(0<=getdata<=255)
{
int vary=getdata*100;
temp=(int)(vary/51);
dispbuf[2]=(temp/100)%10;
dispbuf[1]=(temp/10)%10;
dispbuf[0]=temp%10;
}
LCDdisplay();
}
}
|
|