本帖最后由 jinglixixi 于 2021-8-27 10:15 编辑
前面介绍了串行数码管显示,在此基础上若添加上A/D转换则可对模拟信号进行采集及显示,其效果如图1所示。
图1 模拟信号采集
为了使PC2作为模拟信号采集端口,通过MCC可对该引脚加以功能配置,其内容如图2所示。
图2 MCC引脚配置 对应的引脚命名见图3,为使A/D正常进行,其时钟设置见图4。
图3 引脚命名
图4 时钟设置
在使用MCC生成框架代码后,实现图示效果的主程序如下: void main(void)
{
int v,d;
float s;
// Initialize the device
SYSTEM_Initialize();
DELAY_milliseconds(50);
Init_MAX7219();
DELAY_milliseconds(200);
Write_Max7219(0xff,0x00);
Write_Max7219(1,8);
Write_Max7219(2,7);
Write_Max7219(3,6);
Write_Max7219(4,5);
Write_Max7219(5,4);
Write_Max7219(6,3);
Write_Max7219(7,2);
Write_Max7219(8,1);
ADCC_Initialize();
ADCC_StartConversion(channel_ANC2);
while (1)
{
// Add your application code
LED_SetHigh();
DELAY_milliseconds(1000);
LED_SetLow();
DELAY_milliseconds(1000);
v=ADCC_GetSingleConversion(channel_ANC2);
// A/D为12位
Write_Max7219(1,v%10);
if(v>10) Write_Max7219(2,v%100/10);
else Write_Max7219(2,0x0f);
if(v>100) Write_Max7219(3,v%1000/100);
else Write_Max7219(3,0x0f);
if(v>1000) Write_Max7219(4,v/1000);
else Write_Max7219(4,0x0f);
s=v*3.3/409.5;
d=s;
Write_Max7219(5,0x0f);
Write_Max7219(6,d%10);
Write_Max7219(7,(d%100/10)|0x80);
Write_Max7219(8,0x0f);
}
}
图4 双值显示
此外,在添加线型LED模块的情况下,还可实现图5所示的电位高低的指示。 图5 电位指示 |