⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 show_temp.c

📁 这是一款温度采集并用液晶显示温度的程序
💻 C
字号:
#include "VolMeasure.h"                             //定义了一个结构体
#include "SPLC501User.h"
#include "SPCE061A.h"
#include "logo.h"
extern float Degree;
extern int temp;
float Temp_Degree(float Vol_Value);
unsigned int AD_Read(void);
//========================================================================
//========================================================================
int Show_Temp(void)
{
	float Vol_Value;
    int i=0,j=0,k=0,m;
    float fVolVal;
    float De;
	int uiVolFlag=0,uiVolFlagOne=0;
	long int uiVolFlagHow=0;
    unsigned int uiData;
    long int liDataVol;
   	struct ST_VolValude VolValude;                     
	*P_SystemClock=0x0088;
   	VolValude.VolTureValudeB=7;                       //初始化电压采集值              
	LCD501_SetPaintMode(0);
	LCD501_FontSet(0);                                                 //清屏
   	fVolVal=0.0;
	while(1)                                              //主循环
	{
    	*P_DAC_Ctrl = 0;
    	*P_ADC_Ctrl = C_ADCE+C_MIC_DIS+C_AGCN+C_DAC_OUT3mA+C_VEXTREF_DIS+C_V2VREFB_DIS;  
    	uiData = *P_ADC_LINEIN_Data;	                      		
		while((*P_ADC_MUX_Ctrl&0x8000)!= 0x8000);  
		*P_ADC_MUX_Ctrl=C_ADC_CH1;			
                                                      	  //播放语音后会改变P_ADC_Ctrl的设置
		uiData=AD_Read();                                 //丢掉第一个数
	 	j=0;
		for(i=0;i<20;i++)                                 //采20个数据到VolValude.VolValudeA[j]						
		{
			*P_Watchdog_Clear=C_WDTCLR;
			uiData=AD_Read();
			VolValude.VolValudeA[j]= uiData;
			j++;
		}

	    uiVolFlagOne=0xff;
	   	uiVolFlag=0;
		j=0;
		uiData=0;
		liDataVol=0;
	    for(i=0;i<20;i++)
	    {
	    	liDataVol=liDataVol+VolValude.VolValudeA[j];
	    	j++;
	   	}
	    uiData=liDataVol/20;                        
       	VolValude.VolTureValudeA=(float)uiData*3.3/0xffc0;          //得到电压值
        fVolVal=VolValude.VolTureValudeB-VolValude.VolTureValudeA;

	       	k=0;                     
	       	Vol_Value=VolValude.VolTureValudeA;         //取得要在LCD上显示的数据,存入VolValude.LCD[j]
			De=Temp_Degree(Vol_Value);
        	VolValude.LCD[1]=(int)De/100%10;
        	VolValude.LCD[2]=(int)De/10%10;
        	VolValude.LCD[3]=(int)De%10;
         	VolValude.LCD[4]=temp%10;
         	LCD501_PutChar(86,30,('.'));
         	LCD501_Bitmap(99 ,33,(unsigned int *)encoding_19);    //oC
			LCD501_PutChar(58,30,('0'+VolValude.LCD[1]));	    //预留百位
			LCD501_PutChar(68,30,('0'+VolValude.LCD[2]));	
			LCD501_PutChar(78,30,('0'+VolValude.LCD[3]));	
			LCD501_PutChar(90,30,('0'+VolValude.LCD[4]));
			
			return;

//		}
	}
}
//================================================================
unsigned int AD_Read(void)
{
	unsigned int bData;
	while(!(*P_ADC_MUX_Ctrl&0x8000));		//等待采样完成
    bData=*P_ADC_LINEIN_Data; 
    bData = bData&0xffc0;
	return bData;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -