本帖最后由 jinglixixi 于 2019-12-19 12:07 编辑
前面介绍了OLED屏的驱动显示,在此基础上若添加上A/D转换则可对模拟信号进行采集及显示,其效果如图1所示。
图1 模拟信号采集
为能使用PB6和PC2作为模拟信号采集口,通过MCC可对引脚功能加以配置,其内容如图2所示。
图2 MCC引脚配置
对应的引脚命名见图3,为使A/D正常进行,其时钟设置见图4。
图3 引脚命名
图4 时钟设置
在使用MCC生成框架代码后,实现图示效果的主程序如下:
- void main(void)
- {
- unsigned int jg;
- SYSTEM_Initialize();
- OLED_Init();
- __delay_ms(1);
- OLED_CLS();
- OLED_P8x16Str(0,0,"PIC16F18446");
- OLED_P8x16Str(0,2,"OLED Display");
- ADCC_Initialize();
- ADCC_StartConversion(channel_ANC2);
- while (1)
- {
- led0_Toggle();
- __delay_ms(200);
- jg=ADCC_GetSingleConversion(channel_ANC2); //channel_ANB6
- OLED_P8x16ch(0,6,'A');
- OLED_P8x16ch(8,6,'D');
- OLED_P8x16ch(16,6,'C');
- OLED_P8x16ch(24,6,'='); // 可按4095对应一定电压值的方式进行转换,然后直接显示电压值。
- OLED_P8x16ch(32,6,jg/10000+'0'); // A/D为12位,该语句可注释掉。
- OLED_P8x16ch(40,6,jg%10000/1000+'0');
- OLED_P8x16ch(48,6,jg%1000/100+'0');
- OLED_P8x16ch(56,6,jg%100/10+'0');
- OLED_P8x16ch(64,6,jg%10+'0');
- }
- }
|