资源简介

51单片机ADC0809测电压12864显示程序

资源截图

代码片段和文件信息

//检测可以在板子上接上一个10K滑动变阻器,将ADC0809 26脚引出测  最大显示5V最小0V
#include 
#define lcddata P0 //12864液晶数据口
sbit RS = P2^7;
sbit RW = P2^6;
sbit EN = P2^5;

#define adcdata P1 //adc数据口
sbit start=P3^4;    //adc0809引脚
sbit eoc=P3^5;
sbit oe=P3^6;
sbit aa=P3^7;    //给adc0809提供时钟信号
sbit ale=P2^3;
sbit d3=P2^2;    //adc0809数据口选择 
sbit d2=P2^1;    //d1d2d3都为0时选中adc数据0口
sbit d1=P2^0;

uint j1j2j3k;
float l;    //用来读取数据

void zd()    //中断函数 定时计数器0
{
EA=1;
ET0=1;
TH0=0XDC;
TL0=0X00;
TR0=1;
}
void zoushi() interrupt 1
{
TH0=0XDC;
TL0=0X00;
aa=~aa;

}
uchar Lcd_CheckBusy(void)
{
    uchar Busy;
lcddata=0xff;
    RS=0;
    RW=1;
    EN=1;
    Busy=lcddata&0x80;
    EN=0;
    return Busy;
}
void Lcd_WriteData(uchar Data)
{  
while(Lcd_CheckBusy());
RS=1;
RW=0;
EN=0;
lcddata=Data;
EN=1;
EN=0;
}
void Lcd_WriteCmd(uchar i)
{  
while(Lcd_CheckBusy());
RS=0;
RW=0;
EN=0;
lcddata=i;
EN=1;
EN=0;
}
void init()
{
Lcd_WriteCmd(0x38);Lcd_WriteCmd(0x38);
Lcd_WriteCmd(0x38);Lcd_WriteCmd(0x38);  
Lcd_WriteCmd(0x08);Lcd_WriteCmd(0x01);
Lcd_WriteCmd(0x06);Lcd_WriteCmd(0x0c);
}
void clear()
{
Lcd_WriteCmd(0x01);
}
void xie(uchar xuchar yuchar *s)      
{
uchar i=0;     
if(y==0)Lcd_WriteCmd(0x80+x); 
else if(y==1)Lcd_WriteCmd(0x90+x);   
else if(y==2)Lcd_WriteCmd(0x88+x);    
else if(y==3)Lcd_WriteCmd(0x98+x);
else ;
while (*s)
{
Lcd_WriteData(*s);s++;
Lcd_WriteData(*s);s++;i++;
if(i>=8-x)
{
i=x=0;y++;
if(y==0)Lcd_WriteCmd(0x80); 
else if(y==1)Lcd_WriteCmd(0x90);   
else if(y==2)Lcd_WriteCmd(0x88);  
else if(y==3)Lcd_WriteCmd(0x98); 
else;
}
}
}


void xianshi()
{
uchar xs1[16]={“        “};
l=l/51;
k=l*100;
j1=k/100;
j2=k%100/10;
j3=k%10;
xs1[0]=j1+‘0‘;xs1[2]=j2+‘0‘;xs1[3]=j3+‘0‘;
xs1[1]=‘.‘;xs1[4]=‘V‘;xs1[5]=‘ ‘;xs1[6]=‘ ‘;xs1[7]=‘ ‘;
xs1[8]=‘ ‘;xs1[9]=‘ ‘;xs1[10]=‘ ‘;xs1[11]=‘ ‘;
xs1[12]=‘ ‘;xs1[13]=‘ ‘;xs1[14]=‘ ‘;xs1[15]=‘ ‘;
xie(00xs1               );
xie(01“                “);
xie(02“                “);
xie(03“                “);
}
void main()
{
zd();init();clear();
oe=0;start=0;ale=0;
d3=d2=d1=0;
eoc=1;
while(1)
{
start=0;ale=1;
ale=0;start=1;
while(eoc==0)
{
oe=1;start=0;ale=0;
l=adcdata;
xianshi();
}
}
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       9487  2013-11-22 20:02  adc\adc

     文件       2464  2013-11-22 20:05  adc\adc.c

     文件       4586  2013-11-22 20:02  adc\adc.hex

     文件         38  2013-11-22 20:02  adc\adc.lnp

     文件       6136  2013-11-22 20:02  adc\adc.LST

     文件      12229  2013-11-22 20:02  adc\adc.M51

     文件       9617  2013-11-22 20:02  adc\adc.OBJ

     文件      13869  2013-11-22 20:02  adc\adc.plg

    .......     55179  2013-11-22 20:05  adc\adc.uvopt

    .......     13217  2013-11-22 20:05  adc\adc.uvproj

    .......         0  2013-11-22 18:20  adc\adc_uvproj.bak

     文件       6376  2009-05-07 14:37  adc\STARTUP.A51

     目录          0  2013-11-22 20:05  adc

----------- ---------  ---------- -----  ----

               133198                    13


评论

共有 条评论