本项制作直接利用STC12C5A60S2单片机自带的AD转换器。能够测试0-5V电压的数字电压表表头,并有OLED模块显示数值。正好手头有这两个小东西,寻思着可以做个什么小东西玩玩。
这是STC12模块
这是OLED模块
测试效果
测量模块GND电压
测量模块3.3V电压
测量模块5V电压(用电压表实际测试电压为4.5V)
主程序
#include <STC12C5A60S2.H> #include <intrins.h> #include "oled.h" float V = 0; u32 L = 0; u8 d[5]; /********************************************************************************************* /*********************************************************************************************/ u32 Read(u32 CHA) { u8 AD_FLAG = 0; /**************************************************************************/ CHA &= 0x07; ADC_CONTR = 0x40; _nop_(); ADC_CONTR |= CHA; _nop_(); ADC_CONTR |= 0x80; delay_ms(3); /****************************************************************************/ ADC_CONTR |= 0x08; _nop_(); _nop_(); _nop_(); _nop_(); while(AD_FLAG == 0) { AD_FLAG = (ADC_CONTR & 0x10); } ADC_CONTR &= 0xe7; return(ADC_RES*4+ADC_RESL); } /*********************************************************************************************/ /********************************************************************************************* /*********************************************************************************************/ void transfer(void) { V = Read(0x00)*4.321; L=V; d[1] = L / 1000; L = L % 1000; d[2] = L / 100; L = L % 100; d[3] = L / 10; d[4] = L % 10; } /*********************************************************************************************/ void main(void) { AUXR = 0x00; P1M0 = 0xff; P1M1 = 0x00; P1ASF = 0xff; OLED_Init(); OLED_Clear(); OLED_Clear(); OLED_ShowCHinese(18,0,0); OLED_ShowCHinese(36,0,1); OLED_ShowCHinese(54,0,2); OLED_ShowCHinese(72,0,3); OLED_ShowCHinese(90,0,4); while (1) { transfer(); OLED_ShowCHinese(5,4,5); OLED_ShowCHinese(23,4,6); OLED_ShowCHinese(41,4,7); OLED_ShowChar(59,4,58); OLED_ShowNum(67,4,d[0],1,16); OLED_ShowNum(75,4,d[1],1,16); OLED_ShowChar(83,4,46); OLED_ShowNum(91,4,d[2],1,16); OLED_ShowNum(99,4,d[3],1,16); OLED_ShowNum(107,4,d[4],1,16); OLED_ShowChar(115,4,86); OLED_ShowString(20,6,"2017/11/21"); delay_ms(500); } } 其他程序在压缩包里。
数字电压表.rar (57.6 KB)
小白初次发帖,求大神指教。