标题:
STC12C5A60S2单片机系列温度采集和AD电压采集程序
[打印本页]
作者:
lixiongkuku
时间:
2023-3-3 15:15
标题:
STC12C5A60S2单片机系列温度采集和AD电压采集程序
STC系列的单片机,进行自身AD采集和LCD12864显示
单片机源程序如下:
#include <STC12C5A.h>
#include <LCD12864.h>
#include <DS18B20.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code dis1[]="Vout: ";
uchar code dis2[]="Temp: ";
/*
sfr ADC_CONTR = 0xBC; //ADC control register
sfr ADC_RES = 0xBD; //高8位转换结果
sfr ADC_LOW2 = 0xBE; //低2位转换结果
sfr P1ASF = 0x9D; //P1 功能控制寄存器 1001 1101*/
uint AD_data1,AD_data2;
int Temp,Voltage;
unsigned char Get_ADC1(void)
{
unsigned int ADC_Result;
ADC_CONTR = ADC_CONTR|0x80; //开启AD电源 ADC_CONTR=1; 0X80= 1000 0000
P1ASF = P1ASF | 0x10; //设置ADC通道为模拟模式
ADC_CONTR = 0xe0; //设置ADC转换通道 通道CHS2=1 ADC_FLAG=1;
ADC_RES = 0x00; //清零转换结果寄存器
ADC_CONTR = ADC_CONTR | 0x08; //ADC_CONTR=0XEC;
while(!(ADC_CONTR & 0x10)); //等待转换完成
ADC_CONTR = ADC_CONTR & 0xe0; //清标志
ADC_Result = ADC_RES; //提取采集到的数据
return ADC_Result;
}
void main()
{
uchar i,j;
LCD12864_init();//初始化液晶显示器
Init_DS18B20(); //初始化温差传感器
while(1){
AD_data1 = (int)(((float)Get_ADC1())*500/256);
Voltage=(int)AD_data1; //读取电压值
LCD12864_POS(0,0); //第一行显示电压值
for(i=0;i<5;i++){
LCD12864_write_dat(dis1[i]);
} //显示“Vout :”
LCD12864_write_dat(0xA0); //显示空格
LCD12864_write_dat(0xA0); //显示空格
LCD12864_write_dat(0xA0); //显示空格
LCD12864_write_dat(Voltage/1000+0x30);
LCD12864_write_dat(Voltage/100%10+0x30);
LCD12864_write_dat(0x2e); //显示小数点
LCD12864_write_dat(Voltage/10%10+0x30);
LCD12864_write_dat(Voltage%10+0x30);
LCD12864_write_dat(0xA0); //显示空格
LCD12864_write_dat(0x56); //显示V
LCD12864_write_dat(0xA0); //显示空格
/**************/
Temp=Read_Tem()*100; //读取温度,并扩大
LCD12864_POS(2,0); //第一行显示电压值
for(j=0;j<5;j++){
LCD12864_write_dat(dis2[j]);
} //显示“Temp :”
LCD12864_write_dat(0xA0); //显示空格
LCD12864_write_dat(0xA0); //显示空格
LCD12864_write_dat(0xA0); //显示空格
LCD12864_write_dat(Temp/1000+0x30);
LCD12864_write_dat(Temp/100%10+0x30);
LCD12864_write_dat(0x2e); //显示小数点
LCD12864_write_dat(Temp/10%10+0x30);
LCD12864_write_dat(Temp%10+0x30);
LCD12864_write_dat(0xA0); //显示空格
LCD12864_POS(2,7);
LCD12864_write_dat(0xa1); //写温度符"℃"
LCD12864_write_dat(0xe6); //写温度符"℃"
}
}
复制代码
Keil代码下载:
DS18B20测温 LCD12864显示 自身8位AD采集.zip
(51.33 KB, 下载次数: 51)
2023-3-3 15:14 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
lixiongkuku
时间:
2023-3-3 15:19
大学生入门刚需,欢迎复制粘贴去用
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1