本项制作直接利用STC12C5A60S2单片机自带的AD转换器。能够测试0-5V电压的数字电压表表头,并有OLED模块显示数值。正好手头有这两个小东西,寻思着可以做个什么小东西玩玩。
这是STC12模块
这是OLED模块
测试效果
测量模块GND电压
测量模块3.3V电压
测量模块5V电压(用电压表实际测试电压为4.5V)
主程序
#include
#include
#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);
}
}
备注: 在检测外部电压的时候要共地。
END
活动时间:5月18日-7月31日
奖项设置:
一等奖(1名):大疆 DJI Mini 2 SE 航拍机(¥ 2388)
二等奖(2名):京东卡500元
三等奖(2名):京东卡300元
鼓励参与奖(10名):京东卡50元
活动要求:
可以是单纯的拆解过程、也可以是单纯的DIY、也可以是拆解+改造。
点击阅读原文,参加活动!