#include <reg51.h>
#include <1602.c>
#include <mcp3204.c>
unsigned int code rt[21]={14230,13602,13005,12439,11900,11388,10901,10438,9998,9578,
9181,8799,8437,8092,7763,7449,7150,6865,6592,6332,6084}; //0~20度阻值表
void main(void)
{
//定义变量
unsigned int ad_dat=0,RT=0,T=0;
unsigned char disbuf[16]={0},i=0;
//单片机及外围部件初始化
lcd_init();
//实现功能
while(1)
{
ad_dat=mcp3204(0);
disbuf[0]=(ad_dat/10)/100;
disbuf[1]=(ad_dat/10)%100/10;
disbuf[2]=(ad_dat/10)%10; //求电压值,保留两位小数
disbuf[3]=ad_dat/1000;
disbuf[4]=ad_dat%1000/100;
disbuf[5]=ad_dat%100/10;
disbuf[6]=ad_dat%10; //将AD转换数字量转换为十进制
RT=40960000/ad_dat-10000; //求热敏电阻阻值
disbuf[7] =RT/10000;
disbuf[8] =RT%10000/1000;
disbuf[9] =RT%1000/100;
disbuf[10]=RT%100/10;
disbuf[11]=RT%10; //将NTC阻值转换为十进制
for(i=0;i<21;i++) //求温度数值
{
if(RT ==rt[i])
T=i*100;
else
{
if((RT<rt[i]) && (RT>rt[i+1]))
T=(rt[i]-RT)*100/(rt[i]-rt[i+1])+i*100;
}
}
disbuf[12]=T/1000;
disbuf[13]=T%1000/100;
disbuf[14]=T%100/10;
disbuf[15]=T%10; //将温度数值转换为十进制
WriteCommandLcd(0x80);
WriteDataLcd('U');
WriteDataLcd('=');
WriteDataLcd(disbuf[0]+48);
WriteDataLcd('.');
WriteDataLcd(disbuf[1]+48);
WriteDataLcd(disbuf[2]+48);
WriteDataLcd('V');
WriteCommandLcd(0x88);
WriteDataLcd('R');
WriteDataLcd('T');
WriteDataLcd('=');
WriteDataLcd(disbuf[7]+48);
WriteDataLcd(disbuf[8]+48);
WriteDataLcd(disbuf[9]+48);
WriteDataLcd(disbuf[10]+48);
WriteDataLcd(disbuf[11]+48);
WriteCommandLcd(0xc0);
WriteDataLcd(disbuf[3]+48);
WriteDataLcd(disbuf[4]+48);
WriteDataLcd(disbuf[5]+48);
WriteDataLcd(disbuf[6]+48);
WriteCommandLcd(0xc8);
WriteDataLcd('T');
WriteDataLcd('=');
WriteDataLcd(disbuf[12]+48);
WriteDataLcd(disbuf[13]+48);
WriteDataLcd('.');
WriteDataLcd(disbuf[14]+48);
WriteDataLcd(disbuf[15]+48);
}
}