📄 lcd.c
字号:
#include <pic.h>
/*LCD取模:xDCEGFBA*/
/* 0 1 2 3 4 5 6 7 8 9*/
const unsigned char LCD_MODEL[11]={0x77,0x22,0x5b,0x6b,0x2e,0x6d,0x7d,0x23,0x7f,0x6f,0x00};
/*LCD初始化函数*/
void Init_LCD(void)
{
/*COM0*/
LCDDATA0=0x00;
LCDDATA1=0x00;
/*COM1*/
LCDDATA3=0x00;
LCDDATA4=0x00;
/*COM2*/
LCDDATA6=0x00;
LCDDATA7=0x00;
/*COM3*/
LCDDATA9=0x00;
LCDDATA10=0x00;
/*SEG0-SEG9使能*/
LCDSE0=0xff;
LCDSE1=0x03;
/*使能LCD驱动模块,休眠模式下禁止LCD驱动模块,无LCD写错误,使能VLCD引脚*/
/*时钟选择FOSC/8192,公共端选择1/4(COM<3:0>)*/
LCDCON=0xd3;
/*B型波形,1/3偏置模式,使能LCD驱动模块,允许写入LCDDATAx寄存器*/
/*LCD预分频比选择位:LP<3:0>=0010=1:3,LCD帧频率=64Hz*/
LCDPS=0xb3;
}
/*LCD显示函数,显示范围-1999~1999*/
void LCDNUMI(int num)
{
/*个位,十位,百位*/
unsigned char g=0,s=0,b=0;
if(num<0)
{
SEG0COM2=1;/*显示负号*/
/*再存储器中,负数用补码表示,应此只要对补码取反+1即可获得对应的正数*/
num=~num;/*负数取绝对值*/
num++;
}
else
{
SEG0COM2=0;/*清除负号*/
}
if(num>999)
{
SEG1COM2=1;/*千位显示1*/
num-=1000;
}
else
{
SEG1COM2=0;/*清除千位*/
}
b=num/100;/*取百位的值*/
num%=100;/*对一百取余*/
s=num/10;/*取十位的值*/
g=num%10;/*取个百位的值*/
if(SEG1COM2==0&&b==0)/*当千位,百位都为零时百位不显示*/
{
if(s==0)/*当千位,百位,十位都为零时百十位不显示*/
{
s=10;
}
b=10;
}
LCDDATA0=(LCDDATA0&0x03)|((LCD_MODEL[g]<<6)&0xc0)|((LCD_MODEL[s]<<4)&0x30)|((LCD_MODEL[b]<<2)&0x0c);
LCDDATA3=(LCDDATA3&0x03)|((LCD_MODEL[g]<<4)&0xc0)|((LCD_MODEL[s]<<2)&0x30)|((LCD_MODEL[b])&0x0c);
LCDDATA6=(LCDDATA6&0x03)|((LCD_MODEL[g]<<2)&0xc0)|((LCD_MODEL[s])&0x30)|((LCD_MODEL[b]>>2)&0x0c);
LCDDATA9=(LCDDATA9&0xab)|((LCD_MODEL[g])&0xc0)|((LCD_MODEL[s]>>2)&0x30)|((LCD_MODEL[b]>>4)&0x0c);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -