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)
|