?? lcd.c
字號(hào):
#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初始化函數(shù)*/
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驅(qū)動(dòng)模塊,休眠模式下禁止LCD驅(qū)動(dòng)模塊,無(wú)LCD寫錯(cuò)誤,使能VLCD引腳*/
/*時(shí)鐘選擇FOSC/8192,公共端選擇1/4(COM<3:0>)*/
LCDCON=0xd3;
/*B型波形,1/3偏置模式,使能LCD驅(qū)動(dòng)模塊,允許寫入LCDDATAx寄存器*/
/*LCD預(yù)分頻比選擇位:LP<3:0>=0010=1:3,LCD幀頻率=64Hz*/
LCDPS=0xb3;
}
/*LCD顯示函數(shù),顯示范圍-1999~1999*/
void LCDNUMI(int num)
{
/*個(gè)位,十位,百位*/
unsigned char g=0,s=0,b=0;
if(num<0)
{
SEG0COM2=1;/*顯示負(fù)號(hào)*/
/*再存儲(chǔ)器中,負(fù)數(shù)用補(bǔ)碼表示,應(yīng)此只要對(duì)補(bǔ)碼取反+1即可獲得對(duì)應(yīng)的正數(shù)*/
num=~num;/*負(fù)數(shù)取絕對(duì)值*/
num++;
}
else
{
SEG0COM2=0;/*清除負(fù)號(hào)*/
}
if(num>999)
{
SEG1COM2=1;/*千位顯示1*/
num-=1000;
}
else
{
SEG1COM2=0;/*清除千位*/
}
b=num/100;/*取百位的值*/
num%=100;/*對(duì)一百取余*/
s=num/10;/*取十位的值*/
g=num%10;/*取個(gè)百位的值*/
if(SEG1COM2==0&&b==0)/*當(dāng)千位,百位都為零時(shí)百位不顯示*/
{
if(s==0)/*當(dāng)千位,百位,十位都為零時(shí)百十位不顯示*/
{
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);
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -