本帖最后由 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 电位指示
|