电压采集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); } }