小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

128*64(ST7565P控制器)程序

 香格里拉-埃菲爾 2011-12-28
128*64(ST7565P控制器)程序參考
//ST7565P控制器(128*64)
//這些參考程序是在項(xiàng)目中提取出來的,希望能夠給大家提供一個(gè)參考
//有并行和串行兩種接法,我用的是串行輸出

//定義LCD顯示的全局變量
#define CS (1<<2) // Out
#define A0 (1<<3) // Out
#define SI (1<<4) // Out
#define SCL (1<<5) // Out
#define RST (1<<6) // Out
#define LCD_LED (1<<7)// Out

#define LCD_DATA 1
#define LCD_COMMAND 0

BYTE gContrast=40; // LCD 對比度0-63
//--------------------------------------------------------------------------
//液晶屏初始化
//--------------------------------------------------------------------------
void LCDInit(void)
{
CLR(rPDATC,RST); // RST=0;
DelayMS(50);
SET(rPDATC,RST); // RST=1;
DelayMS(50);
LCDWriteByte(0xa2,LCD_COMMAND); //lcd bias select 1/9 BIAS
LCDWriteByte(0xa1,LCD_COMMAND); //ADC select,REVERSE 127-->0(a0,a1)
LCDWriteByte(0xc0,LCD_COMMAND); //com select,NORMAL 0-->63(c8,c0)
LCDWriteByte(0x26,LCD_COMMAND); //RESISTOR RATIO
LCDWriteByte(0x81,LCD_COMMAND); //ELECTRONIC VOLUME mode setting 100B 對比度命令
LCDWriteByte(0x10,LCD_COMMAND); //Set reference voltagel register 對比度數(shù)值
LCDWriteByte(0x2f,LCD_COMMAND); //power control(VB,VR,VF=1,1,1)
DelayMS(50);
LCDWriteByte(0xaf,LCD_COMMAND); //set display on
LCDWriteByte(0xf8,LCD_COMMAND); //set booster ratio
LCDWriteByte(0x00,LCD_COMMAND);
}
//--------------------------------------------------------------------------
//寫數(shù)據(jù)或命令(串行方式)
//--------------------------------------------------------------------------
void LCDWriteByte(char data,BYTE command)
{
CLR(rPDATC,CS); //CS=0
if(command == 0)
{
CLR(rPDATC,A0); //A0=0,命令
LCDShiftWrite(data);
}
else
{
SET(rPDATC,A0); //A0=1,數(shù)據(jù)
LCDShiftWrite(data);
}
SET(rPDATC,CS); //CS=1;
}
//--------------------------------------------------------------------------
//串口移位輸出
//--------------------------------------------------------------------------
void LCDShiftWrite(char data)
{
unsigned char i;
unsigned char Series,Temp;

CLR(rPDATC,SCL); //SCL=0
Series = data;
for(i=8;i>0;i--)
{
CLR(rPDATC,SCL); //SCL=0
Temp=Series & 0x80;
if(Temp)
{
SET(rPDATC,SI);//SI=1
}
else
{
CLR(rPDATC,SI);//SI=0
}
SET(rPDATC,SCL); //SCL=1
Series = Series << 1;
}
}
//--------------------------------------------------------------------------
//LCDSetXY: 設(shè)置LCD坐標(biāo)函數(shù)
//輸入?yún)?shù):X:0-127 Y:0-8
//
//編寫日期:2006-1-17
//
//最后修改日期:
//--------------------------------------------------------------------------
void LCDSetXY(BYTE x, BYTE y)
{
LCDWriteByte(0xB0|y,LCD_COMMAND);// Page(Row)
LCDWriteByte(0x10|((x+4)>>4),LCD_COMMAND);// Column high
LCDWriteByte((0x00|(x+4))&0x0f,LCD_COMMAND);// Column low
}
//--------------------------------------------------------------------------
//LCD_clear: LCD清屏函數(shù)
//
//編寫日期:2006-1-17
//
//最后修改日期:
//--------------------------------------------------------------------------
void LCDcls(void)
{
UINT32 i,n;

for(i=0;i<9;i++)
{
LCDSetXY(0,i);

for(n=0;n<128;n++)
{
LCDWriteByte(0x00,LCD_DATA);
}
}

}
//--------------------------------------------------------------------------
// 清屏,窗口范圍內(nèi)清零
//--------------------------------------------------------------------------
void LCDclsWin(BYTE Row1,BYTE Col1,BYTE Row2,BYTE Col2)
{
UINT32 i,j;

if (Row2>8)
Row2=8;
if (Col2>127)
Col2=127;
for(i=Row1;i<=Row2;i++)
{
LCDSetXY(Col1,i);
for(j=Col1;j<Col2;j++)
{
LCDWriteByte(0x00,LCD_DATA);
}
}
}

//--------------------------------------------------------------------------
//液晶屏RESET
//--------------------------------------------------------------------------
void LCDReset(void)
{
LCDWriteByte(0xe2, LCD_COMMAND);
}
//--------------------------------------------------------------------------
//關(guān)液晶屏
//--------------------------------------------------------------------------
void LCDOff(void)
{
LCDWriteByte(0xae, LCD_COMMAND);
}
//--------------------------------------------------------------------------
//調(diào)節(jié)對比度
//--------------------------------------------------------------------------
void LCDContrast(BYTE Level)
{
BYTE Num,Temp1,Temp2;
Temp1 = (Level/16)<<4;
switch(Level%16)
{
case 10:
Temp2 = 0x0a;
break;
case 11:
Temp2 = 0x0b;
break;
case 12:
Temp2 = 0x0c;
break;
case 13:
Temp2 = 0x0d;
break;
case 14:
Temp2 = 0x0e;
break;
case 15:
Temp2 = 0x0f;
break;
default:
Temp2 = Level%16;
break;
}
Num = Temp1|Temp2;
LCDWriteByte(0x81,LCD_COMMAND);
LCDWriteByte(Num,LCD_COMMAND);
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多