电压采集lcd显示程序

  • 格式:docx
  • 大小:15.43 KB
  • 文档页数:3

#include

#define uchar unsigned char

#define uint unsignedint

uintval;

floatver;

unsignedint temp1,sh1,ge1,n1,m1;

sbitlcden=P3^5; //使能端

sbitlcdrs=P3^7; //数据命令选择端

sbitrw=P3^6;

void delay(uint x) //y延时

{

uinti,k;

for(i=0;i

{

k=110;

while(k--);

}

}

//***********************ad模块************************

void ADC_init() //初始化ad

{ P1M0|=0x01;

P1M1|=0x01; //P1^0漏开

P1=0XFF;

P1ASF=0X01; //设置通道

ADC_RES=0; //清空寄存器

ADC_CONTR=0XE8;

delay(2);

}

voidADC_sample()

{

ADC_CONTR&=0xF8; // 更换转换通道 0

ADC_CONTR&=0xEF; // bit 4 清转换完成标志位ADC_FLAG

ADC_CONTR|=0x08; // 开始AD转换 bit 3...ADC_START

while(!(ADC_CONTR&0x10)); // 等待转换一次完成 ...判断转换完成标志位ADC_FLAG

val=ADC_RES;

val=val<<8;

val=val|ADC_RESL; //

}

//***********************************************************************************

//*********************************** 显示模块********************************************

void write_com(uchar com)//根据写时序图写出指令程序

{

lcdrs=0;

rw=0;

P0=com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

void write_data(uchar date)//根据写时序图写出数据程序

{

lcdrs=1;

rw=0;

P0=date;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

voidinit()

{

lcden=0; //使能端为低电平

write_com(0x38);/*显示模式设置 00111000 设置16*2显示 5*7点阵 8位数据接口*/

write_com(0x0f);

/*显示开关及光标设置 00001DCB

D=1,开显示 D=0,关显示

C=1,显示光标 C=0,不显示光标

B=1,光标闪烁 B=0,光标不闪烁*/

write_com(0x06);//地址指针自动+1且光标+1,写字符屏幕不会移动

write_com(0X01);

write_com(0X80);

}

void display()

{

ver=val*2.485/1024/32.15;//系数调整

temp1=(int)ver;

sh1=temp1/10;

ge1=temp1%10;

n1=(int)((ver-temp1)*10); m1=(int)(ver*100)%10;

write_com(0X80);

write_data(sh1+'0');

write_data(ge1+'0');

write_data('.');

write_data(n1+'0');

write_data(m1+'0');

}

//*********************************************************************

void main()

{

ADC_init();

init();

while(1)

{

ADC_sample();

display();

delay(5000);

}

}