⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vmeter.c

📁 在picdemo2实验板上的一款lcd+adc程序
💻 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 + -