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
|