📄 vmeter.c
字号:
#include <pic.h>
#include "HD44780.h"
const char own[]={
/*ri*/0x2F,0x29,0x29,0x2F,0x29,0x29,0x2F,0x20,
/*yue*/0x2F,0x29,0x2F,0x29,0x2F,0x29,0x33,0x20,
/*nian*/0x28,0x2F,0x32,0x2F,0x2A,0x3F,0x22,0x20,
/*2*/0x2E,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,
/*0*/0x2E,0x31,0x31,0x31,0x31,0x31,0x2E,0x20,
/*5*/0x3E,0x28,0x3E,0x2A,0x2A,0x2A,0x3F,0x20,
/*.*/0x20,0x20,0x20,0x24,0x20,0x20,0x20,0x20,
/*lv*/0x2E,0x2A,0x2E,0x20,0x3F,0x31,0x3F,0x20,
};
unsigned char volts[]="0.00"; //0.00
const char *string="U=0.00V"; //U=0.00V
const char *warn="DANGER!"; //WARN!
const char *normal="NORMAL."; //NORMAL
unsigned int V=8,Old_V=0;
bit step;
void Display(void)
{
volts[0]=V/1000;
volts[2]=(V-volts[0]*1000)/100;
volts[3]=(V-volts[0]*1000-volts[2]*100)/10;
volts[0]|=0x30;
volts[2]|=0x30;
volts[3]|=0x30;
volts[1]='.';
PutString(1,3,volts);
return;
}
void main(void)
{
TRISA0=1;
TRISB=0x00;
TRISE0=0;
LCD_Begin(MODE_4BIT);
ADCON0=0x41;
ADCON1=0x8e;
SetChar(8,own);
PutString(1,1,string);
PutString(2,4,"\xb\xc\xc\xd\xa\xb\x9\xe\xf");
while(1)
{
ADGO=1;
while(ADGO==1){;}
Old_V=V;
V=((ADRESH<<8)+ADRESL)*4.91;
if(Old_V!=V)Display();
if(V>3500)
{
PORTB=~PORTB;
if(step=!step)PutString(1,10,warn);
else PutString(1,10," ");
RE0=0;
}
else
{
PORTB=0;
PutString(1,10,normal);
RE0=1;
}
DelayS(1);
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -