请修改代码,让它实现(1)按下KEY0键,一次采集 ADC 测量的电压值显示在LCD上;(2)按下KEY1键,采集5次ADC 测量的电压值,求平均显示在 LCD 上。int main(void) { u16 adcx; // ADC??? float temp; // ??? float temperate; // ??? u8 times; // ??????? // ??? delay_init(); uart_init(9600); LED_Init(); LCD_Init(); T_Adc_Init(); // ??????? POINT_COLOR=RED; LCD_ShowString(60,50,200,16,16,"Mini STM32"); LCD_ShowString(60,70,200,16,16,"Temperature TEST"); LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK"); LCD_ShowString(60,110,200,16,16,"2014/3/9"); POINT_COLOR=BLUE; LCD_ShowString(60,130,200,16,16,"TEMP_VAL:"); LCD_ShowString(60,150,200,16,16,"TEMP_VOL:0.000V"); LCD_ShowString(60,170,200,16,16,"TEMPERATE:00.00C"); while(1) { // ???? if(KEY_Scan(0) == KEY0_PRES) { // ??KEY0? adcx = T_Get_Adc(ADC_CH_TEMP); // ??ADC? temp = (float)adcx * (3.3/4096); // ????? LCD_ShowxNum(132,130,adcx,4,16,0); // ??ADC? LCD_ShowxNum(132,150,temp,1,16,0); // ????? temperate = (1.43 - temp) / 0.0043 + 25; // ????? LCD_ShowxNum(140,170,(u8)temperate,2,16,0); // ????? temperate -= (u8)temperate; // ?????? LCD_ShowxNum(164,170,temperate*100,2,16,0X80); // ????? } else if(KEY_Scan(0) == KEY1_PRES) { // ??KEY1? times = 5; // ??5? adcx = 0; // ADC??? while(times--) { adcx += T_Get_Adc(ADC_CH_TEMP); // ??ADC? delay_ms(10); // ??10ms } temp = (float)adcx / 5 * (3.3/4096); // ??????? LCD_ShowxNum(132,150,temp,1,16,0); // ??????? temperate = (1.43 - temp) / 0.0043 + 25; // ??????? LCD_ShowxNum(140,170,(u8)temperate,2,16,0); // ????? temperate -= (u8)temperate; // ?????? LCD_ShowxNum(164,170,temperate*100,2,16,0X80); // ????? } LED0=!LED0; // LED?? delay_ms(250); // ??250ms } }
时间: 2023-08-29 15:05:11 浏览: 99
int main(void) {
u16 adcx; // ADC测量值
float temp; // 电压值
float temperate; // 温度值
u8 times; // 采集次数
// 初始化
delay_init();
uart_init(9600);
LED_Init();
LCD_Init();
T_Adc_Init();
// 显示欢迎信息和初始值
POINT_COLOR=RED;
LCD_ShowString(60,50,200,16,16,"Mini STM32");
LCD_ShowString(60,70,200,16,16,"Temperature TEST");
LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
LCD_ShowString(60,110,200,16,16,"2014/3/9");
POINT_COLOR=BLUE;
LCD_ShowString(60,130,200,16,16,"TEMP_VAL:");
LCD_ShowString(60,150,200,16,16,"TEMP_VOL:0.000V");
LCD_ShowString(60,170,200,16,16,"TEMPERATE:00.00C");
while(1) {
// 按下KEY0键,一次采集ADC测量的电压值显示在LCD上
if(KEY_Scan(0) == KEY0_PRES) {
adcx = T_Get_Adc(ADC_CH_TEMP); // 采集ADC测量值
temp = (float)adcx * (3.3/4096); // 计算电压值
LCD_ShowxNum(132,130,adcx,4,16,0); // 显示ADC测量值
LCD_ShowxNum(132,150,temp,1,16,0); // 显示电压值
temperate = (1.43 - temp) / 0.0043 + 25; // 计算温度值
LCD_ShowxNum(140,170,(u8)temperate,2,16,0); // 显示温度值
temperate -= (u8)temperate; // 计算小数部分
LCD_ShowxNum(164,170,temperate*100,2,16,0X80); // 显示温度值小数部分
}
// 按下KEY1键,采集5次ADC测量的电压值,求平均显示在LCD上
else if(KEY_Scan(0) == KEY1_PRES) {
times = 5; // 采集5次
adcx = 0; // 初始化ADC测量值
while(times--) {
adcx += T_Get_Adc(ADC_CH_TEMP); // 采集ADC测量值
delay_ms(10); // 延时10ms
}
temp = (float)adcx / 5 * (3.3/4096); // 计算平均电压值
LCD_ShowxNum(132,150,temp,1,16,0); // 显示平均电压值
temperate = (1.43 - temp) / 0.0043 + 25; // 计算平均温度值
LCD_ShowxNum(140,170,(u8)temperate,2,16,0); // 显示平均温度值
temperate -= (u8)temperate; // 计算小数部分
LCD_ShowxNum(164,170,temperate*100,2,16,0X80); // 显示平均温度值小数部分
}
LED0=!LED0; // LED闪烁
delay_ms(250); // 延时250ms
}
}
阅读全文