
开源协议
:GPL 3.0
创建时间:2024-07-17 13:37:44更新时间:2024-08-22 06:18:17
描述
项目简介
基于CW32的数字电压电流表
项目功能
数字电压电流表结合了ADC的技术与电路测量原理,能够精确地将模拟的电压电流信号转换为数字显示,便于电子工程师直观读取和分析
项目参数
- 本项目使用立创·地文星CW32F030C8T6开发板(核心板)作为主控
- 使用数码管显示电压电流值
原理解析(硬件说明)
此处可填写项目的设计原理,将设计的原理拆分解析,示例:
本项目由以下部分组成,电源部分、数码管显示部分、主控部分、电压电流采样部分,本项目主要是通过adc对电压电流进行采样,利用数码管显示。
电源供电电路:
数码管显示电路
......
软件代码
数码管显示代码,控制gpio的低8位让8段数码管显示:
void Seg_Display(uint8_t Pos,uint8_t Num)
{
int i;
uint8_t Dis_Value = Seg_Table[Num];
GPIO_LowByte_Write(CW_GPIOA,Dis_Value);
switch(Pos)
{
case 0:
GPIO_WritePin(CW_GPIOA,GPIO_PIN_8,GPIO_Pin_RESET); //PA8,COM1
break;
case 1:
GPIO_WritePin(CW_GPIOA,GPIO_PIN_11,GPIO_Pin_RESET); //PA9,COM2
break;
case 2:
GPIO_WritePin(CW_GPIOA,GPIO_PIN_12,GPIO_Pin_RESET); //PA10,COM3
break;
case 3:
GPIO_WritePin(CW_GPIOA,GPIO_PIN_15,GPIO_Pin_RESET); //PA11,COM4
break;
case 4:
GPIO_WritePin(CW_GPIOB,GPIO_PIN_3,GPIO_Pin_RESET); //PA12,COM5
break;
case 5:
GPIO_WritePin(CW_GPIOB,GPIO_PIN_4,GPIO_Pin_RESET); //PA15,COM6
break;
default:
break;
}
}
电压电流采集:
void Volt_Cal(void)
{
float t,KT1;
V_Buffer = Mean_Value_Filter(Volt_Buffer,ADC_SAMPLE_SIZE);//使用均值滤波
I_Buffer = Mean_Value_Filter(Curr_Buffer,ADC_SAMPLE_SIZE); //使用均值滤波
V_Buffer = (V_Buffer * ADC_REF_VALUE >> 12) * (R2 + R1)/R1;
// 四舍五入
if(V_Buffer % 10 >= 5)
{
V_Buffer = V_Buffer / 10 + 1;
}
else
{
V_Buffer = V_Buffer / 10;
}
ADC_GetSqr1Result(&I_Buffer); ///当前采集值显示出来
I_Buffer=I_Buffer * ADC_REF_VALUE >> 12;
/**mv =I_Buffer * ADC_REF_VALUE >> 12,
R = 100mr,
10ma = mv/R/10=mv/0.1/10 = mv
*/
}
设计图

BOM


添加到专辑
0
0
分享
侵权投诉
评论