#include
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define IO_1602 P0
#define IO_0804 P1
uint temp ,date;
uchar qian,bai,shi,ge;
uchar cc[16]=" M O D E ";
sbit lcdrs=P2^0;//LCD液晶的寄存器选择端
sbit lcdrw=P2^1;//LCD液晶的读写选择端
sbit lcden=P2^2;//LCD液晶的使能端
sbit adcs=P3^2;//AD的片选信号
sbit adrd=P3^7;//外部读取转换结果的控制信号
sbit adwr=P3^6;//A/D转换器启动控制信号
sbit adintr=P3^3;//中断请求信号输出端
void delay_ms(uint t);//延时函数
void lcdxzl(uchar dat);//LCD液晶写指令函数
void lcdxsj(uchar dat);//LCD液晶写数据函数
void lcdinit();//LCD液晶初始化函数
/*void adinit();//ADC0804初始化函数
void start();//AD0804开始转化函数
uint adraed();//读取AD0804转化后的数据*/
uchar adc0804(void);
uint datpro(void);//ADC0804读出的数据处理
void display();//显示电压值函数
void delay_ms(uint t)//延时程序
{
uchar x,y;
for(t;t>0;t--)
{for(x=0;x<114;x++)
for(y=0;y<1;y++);
}
}
void lcdxzl(uchar dat) //LCD液晶写指令函数
{
lcden=0;
IO_1602=dat;
lcdrs=0;
lcdrw=0;
lcden=1;
delay_ms(10);
lcden=0;
delay_ms(10);
}
void lcdxsj(uchar dat)//LCD液晶写数据函数
{
lcden=0;
IO_1602=dat;
lcdrs=1;
lcdrw=0;
lcden=1;
delay_ms(10);
lcden=0;
delay_ms(10);
}
void lcdinit()//LCD液晶初始化函数
{
uint a;
delay_ms(15);
lcdxzl(0x38);//设置16x2显示,5x7点阵,8位数据口
delay_ms(5);
lcdxzl(0x38);//设置16x2显示,5x7点阵,8位数据口
delay_ms(5);
lcdxzl(0x01);//光标及移动设置
lcdxzl(0x06);//显示开及光标设置
lcdxzl(0x0c);//全屏清0
lcdxzl(0x80);//设置初始显示地址
delay_ms(50);
for(a=1;a<16;a++)
{
lcdxsj(cc[a]);
delay_ms(50);
}
}
void adinit()//AD0804初始化函数
{
adcs=1;
adwr=1;
adrd=1;
P3=0xff;
delay_ms(10);
}
void start()//AD0804开始转化函数
{
P1=0xff;
adcs=0;
adwr=1;
adwr=0;
delay_ms(10);
adwr=1;
delay_ms(10);
}
uint adraed()//读取AD0804转化数据
{
adcs=0;
adrd=1;
adrd=0;
delay_ms(10);
temp=P1;
delay_ms(10);
adrd=1;
adcs=1;
adwr=1;
delay_ms(10);
return (temp);
}
void display()
{
uint s;
uint a;
s=adread();
s=s*1200;
a=s*8;
lcdxzl(0x80+0x40);
lcdxsj('U');
lcdxzl(0x80+0x41);
lcdxsj(':');
lcdxzl(0x80+0x42);
lcdxsj('0'+s/1000);
lcdxzl(0x80+0x43);
lcdxsj('0'+s%1000/100);
lcdxzl(0x80+0x44);
lcdxsj('.');
lcdxzl(0x80+0x45);
lcdxsj('0'+s%100/10);
lcdxzl(0x80+0x46);
lcdxsj(0x30+s%10);
lcdxzl(0x80+0x47);
lcdxsj('V');
lcdxzl(0x80+0x4a);
lcdxsj('I');
lcdxzl(0x80+0x4b);
lcdxsj(':');
lcdxzl(0x80+0x4c);
lcdxsj('0'+s*8/10);
lcdxzl(0x80+0x4d);
lcdxsj('0'+s*8%10);
lcdxzl(0x80+0x4e);
lcdxsj('A');
}
void main()
{
lcdinit();
while(1)
{
display();//显示电压值在LCD1602
}
}
为什么我写出来的程序不能显示测出的电压