📄 temp_sensor.c
字号:
/******************************************************************************
* *
* ********** *
* ************ *
* *** *** *
* *** ++ *** *
* *** + + *** CHIPCON *
* *** + *
* *** + + *** *
* *** ++ *** *
* *** *** *
* ************ *
* ********** *
* *
*******************************************************************************
Filename: temp_sensor.c
Target: cc1110
Author: kja
Revised: 2/3-2006
Revision: 1.0
Description:
This application show the chip temperature on the LCD display.
******************************************************************************/
#include "app_ex.h"
#include "lcd.h"
#define MAX_TEMP 50
#define DEGREE_SYMBOL_ADDRESS 0x01
void initTempSensor(void);
INT8 getTemperature(void);
void temp_sensor_main(void);
INT8 const __code conversionValues[] = {-40,-35,-32,-30,-25,-20,-15,-12,-10,-7,-5,0,5,7,10,12,15,17,20,22,25,28,30,32,35,38,40,45,50};
/******************************************************************************
*
*
******************************************************************************/
void initTempSensor(void){
DISABLE_ALL_INTERRUPTS();
SET_MAIN_CLOCK_SOURCE(CRYSTAL);
*((BYTE __xdata*) 0xDF26) = 0x80;
initLcd();
}
/******************************************************************************
*
*
******************************************************************************/
INT8 getTemperature(void){
INT8 volatile adcV;
halWait(0x01);
ADC_SINGLE_CONVERSION(ADC_REF_1_25_V | ADC_14_BIT | ADC_TEMP_SENS);
ADC_SAMPLE_SINGLE();
while(!ADC_SAMPLE_READY());
adcV = ADCL;
adcV = ADCH;
return conversionValues[adcV - 0x42];
}
/******************************************************************************
*
*
******************************************************************************/
#ifdef COMPLETE_APPLICATION
void temp_sensor_main(void){
#else
void main(void){
#endif
char temperature[10];
char degreeSymbol[] = {0x07, 0x05, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00};
INT16 avgTemp;
UINT8 i = 0;
initTempSensor();
initNewSymbol(degreeSymbol, CHAR1_ADDRESS);
lcdUpdateLine(LINE1, (char *)"Chip temp. is:");
while(!stopApplication()){
avgTemp = 0;
for(i = 0 ; i < 64 ; i++)
{
avgTemp += getTemperature();
}
avgTemp /= 64;
sprintf(temperature, (char *)"%d%cC", (INT8)avgTemp, DEGREE_SYMBOL_ADDRESS);
lcdUpdateLine(LINE2, temperature);
halWait(250);
halWait(250);
halWait(250);
halWait(250);
}
}
/******************************************************************************
*
*
******************************************************************************/
#ifdef COMPLETE_APPLICATION
void temp_sensor_init(APPLICATION *a){
a->menuText = (char *)"Temp Sensor";
a->description = (char *)"";
a->main_func = temp_sensor_main;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -