VID_20250610_103214
要做一个简易的电压检测器,不可或缺两部分--ADC和显示模块
上个帖子已经学会了使用SLCDC控制段码LCD屏,这个帖子来学习下ADC

下图是对参数的简单介绍

ADC处理函数,这里我没有开启回调,而是直接读取寄存器判断是否转换完成
uint16_t ADC_GetValue(void)
{
R_ADC_ScanStart(&g_adc0_ctrl);
while(g_adc0_ctrl.p_reg->ADCSR_b.ADST);
uint16_t data;
R_ADC_Read(&g_adc0_ctrl, ADC_CHANNEL_25, &data);
return data;
}
LCD显示函数
void LCD_ShowSingleNum(uint8_t pos,uint8_t num,uint8_t dot)
{
R_SLCDC_Modify(&g_slcdc0_ctrl,SegTable[(pos-1)*2],(DisTable[num*2]),0x0f);
R_SLCDC_Modify(&g_slcdc0_ctrl,SegTable[(pos-1)*2 + 1],(DisTable[num*2 + 1]) | (dot << 3),0x0f);
}
void LCD_ShowVoltge(const float num)
{
uint16_t temp = ((float)num)*100;
uint8_t a = temp/100;
uint8_t b = temp/10%10;
uint8_t c = temp%10;
uint8_t pos = 4;
LCD_ShowSingleNum(pos++,a,1);
LCD_ShowSingleNum(pos++,b,0);
LCD_ShowSingleNum(pos,c,0);
}
|