#include <reg51.h>
#define LCDLCDDisp_Off 0x3e
#define LCDLCDDisp_On 0x3f
#define Page_Add 0xb8//頁(yè)地址
#define LCDCol_Add 0x40//列地址
#define Start_Line 0xC0//行地址
/*****液晶顯示器的端口定義*****/
#define data_ora P0 /*液晶數(shù)據(jù)總線(xiàn)*/
sbit LCDMcs=P2^4 ; /*片選1*/
sbit LCDScs=P2^3 ; /*片選2*/
sbit LCDDi=P2^0 ; /*數(shù)據(jù)/指令 選擇*/
sbit LCDRW=P2^1 ; /*讀/寫(xiě) 選擇*/
sbit LCDEnable=P2^2 ; /*讀/寫(xiě) 使能*/
unsigned char code Bmp1[]=
{
/*------------------------------------------------------------------------------
源文件 / 文字 : 來(lái)自剪貼板!武漢理工大學(xué)
寬×高(像素): 128×16
字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/256字節(jié)
數(shù)據(jù)轉(zhuǎn)換日期 : 2010-7-29 17:52:57
顯示的漢字:武漢理工大學(xué)
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x20,0x20,0x24,0x24,0x24,0xE4,0x24,0x20,0x20,0xFE,0x20,0x24,0x28,0x20,
0x00,0x20,0xC2,0x0C,0x80,0x60,0x04,0x7C,0x84,0x04,0x04,0xC4,0x3E,0x04,0x00,0x00,
0x88,0x88,0xF8,0x88,0x88,0x00,0xFC,0x24,0x24,0xFC,0x24,0x24,0xFE,0x04,0x00,0x00,
0x08,0x08,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x0C,0x08,0x00,0x00,0x20,0x20,
0x20,0x20,0x20,0x20,0xFE,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x40,0x30,0x10,
0x52,0x5C,0x50,0x52,0x5C,0x50,0xD8,0x56,0x10,0x50,0x30,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x20,0x60,0x3F,0x20,0x20,0x1F,0x12,0x12,0x10,0x07,0x18,0x20,0x40,0x78,
0x00,0x04,0x04,0x7E,0x41,0x40,0x20,0x10,0x0B,0x04,0x0B,0x10,0x20,0x60,0x20,0x00,
0x10,0x30,0x1F,0x08,0x48,0x40,0x4B,0x49,0x49,0x7F,0x49,0x49,0x6B,0x40,0x08,0x20,
0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x40,0x40,
0x20,0x10,0x08,0x06,0x01,0x02,0x04,0x08,0x10,0x20,0x60,0x20,0x00,0x04,0x04,0x04,
0x04,0x04,0x24,0x44,0x3F,0x05,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char code Bmp2[]=
{
/*------------------------------------------------------------------------------
源文件 / 文字 : 信息工程學(xué)院
寬×高(像素): 128×16
字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/256字節(jié)
數(shù)據(jù)轉(zhuǎn)換日期 : 2010-7-29 18:34:04
顯示的漢字:信息工程學(xué)院
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x40,0xF0,0x0E,0x00,0x28,0x28,0x28,0x2A,0x2C,0x28,0x28,0x28,0x08,0x00,
0x00,0x00,0x00,0xF8,0xA8,0xAC,0xAA,0xA8,0xA8,0xA8,0xFC,0x08,0x00,0x00,0x00,0x00,
0x08,0x08,0x08,0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x0C,0x08,0x00,0x00,0x20,0x24,
0xA4,0xFC,0x26,0x24,0x00,0x7C,0x24,0x24,0x24,0x24,0x7C,0x00,0x00,0x40,0x30,0x10,
0x52,0x5C,0x50,0x52,0x5C,0x50,0xD8,0x56,0x10,0x50,0x30,0x00,0x00,0xFC,0x04,0x64,
0x9C,0x20,0x58,0x48,0x4A,0x4C,0x48,0x48,0x18,0x08,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0x00,0x00,0x01,0x7D,0x25,0x25,0x25,0x25,0x7D,0x01,0x00,0x00,
0x00,0x20,0x18,0x03,0x3A,0x42,0x46,0x5A,0x42,0x42,0x73,0x00,0x08,0x30,0x00,0x20,
0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x08,0x06,
0x01,0x7F,0x01,0x42,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,0x00,0x04,0x04,0x04,
0x04,0x04,0x24,0x44,0x3F,0x05,0x04,0x04,0x04,0x06,0x04,0x00,0x00,0x7F,0x04,0x08,
0x47,0x41,0x21,0x1F,0x01,0x01,0x3F,0x41,0x41,0x79,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char code Bmp3[]=
{
/*------------------------------------------------------------------------------
源文件 / 文字 : 通信工程
寬×高(像素): 128×
字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/256字節(jié)
數(shù)據(jù)轉(zhuǎn)換日期 : 2010-7-29 18:36:04
顯示漢字:通信工程
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x42,
0xCC,0x00,0x00,0xF4,0x54,0x5C,0xF4,0x5C,0x56,0xF4,0x00,0x00,0x00,0x80,0x40,0xF0,
0x0E,0x00,0x28,0x28,0x28,0x2A,0x2C,0x28,0x28,0x28,0x08,0x00,0x00,0x08,0x08,0x08,
0x08,0x08,0xF8,0x08,0x08,0x08,0x08,0x0C,0x08,0x00,0x00,0x20,0x24,0xA4,0xFC,0x26,
0x24,0x00,0x7C,0x24,0x24,0x24,0x24,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x10,
0x0F,0x10,0x20,0x5F,0x42,0x42,0x5F,0x42,0x52,0x5F,0x40,0x40,0x00,0x00,0x00,0x7F,
0x00,0x00,0x01,0x7D,0x25,0x25,0x25,0x25,0x7D,0x01,0x00,0x00,0x20,0x20,0x20,0x20,
0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,0x08,0x06,0x01,0x7F,0x01,
0x42,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char code Bmp4[]=
{
/*------------------------------------------------------------------------------
源文件 / 文字 : 0606班
寬×高(像素): 128×16
字模格式/大小 : 單色點(diǎn)陣液晶字模,縱向取模,字節(jié)倒序/256字節(jié)
數(shù)據(jù)轉(zhuǎn)換日期 : 2010-7-29 18:37:59
顯示的漢字:0606班
------------------------------------------------------------------------------*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20,0x10,0x10,0x20,0xC0,0x00,0x00,0xC0,
0x20,0x10,0x10,0x30,0x00,0x00,0x00,0xC0,0x20,0x10,0x10,0x20,0xC0,0x00,0x00,0xC0,
0x20,0x10,0x10,0x30,0x00,0x00,0x44,0x44,0xFC,0x44,0x04,0xC0,0x00,0xFE,0x84,0x84,
0xFC,0x84,0x84,0x84,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0x1F,
0x22,0x21,0x21,0x21,0x1E,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,0x00,0x1F,
0x22,0x21,0x21,0x21,0x1E,0x00,0x10,0x10,0x0F,0x48,0x28,0x11,0x08,0x27,0x20,0x20,
0x3F,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
/****************************************************************************
函數(shù)功能:LCD延時(shí)程序
入口參數(shù):t
出口參數(shù):
****************************************************************************/
void LCDdelay(unsigned int t)
{
unsigned int i,j;
for(i=0;i<t;i++);
for(j=0;j<10;j++);
}
/****************************************************************************
狀態(tài)檢查,LCD是否忙
*****************************************************************************/
void CheckState()
{
unsigned char dat,DATA;//狀態(tài)信息(判斷是否忙)
LCDDi=0; // 數(shù)據(jù)\指令選擇,D/I(RS)="L" ,表示 DB7∽DB0 為顯示指令數(shù)據(jù)
LCDRW=1; //R/W="H" ,E="H"數(shù)據(jù)被讀到DB7∽DB0
do
{
DATA=0x00;
LCDEnable=1; //EN下降源
LCDdelay(2);//延時(shí)
dat=DATA;
LCDEnable=0;
dat=0x80 & dat; //僅當(dāng)?shù)?位為0時(shí)才可操作(判別busy信號(hào))
}
while(!(dat==0x00));
}
/*****************************************************************************
函數(shù)功能:寫(xiě)命令到LCD程序,RS(DI)=L,RW=L,EN=H,即來(lái)一個(gè)脈沖寫(xiě)一次
入口參數(shù):cmdcode
出口參數(shù):
*****************************************************************************/
void write_com(unsigned char cmdcode)
{
CheckState();//檢測(cè)LCD是否忙
LCDDi=0;
LCDRW=0;
P0=cmdcode;
LCDdelay(2);
LCDEnable=1;
LCDdelay(2);
LCDEnable=0;
}
/*****************************************************************************
函數(shù)功能:LCD初始化程序
入口參數(shù):
出口參數(shù):
*****************************************************************************/
void init_lcd()
{
LCDdelay(100);
LCDMcs=1;//剛開(kāi)始關(guān)閉兩屏
LCDScs=1;
LCDdelay(100);
write_com(LCDLCDDisp_Off); //寫(xiě)初始化命令
write_com(Page_Add+0);
write_com(Start_Line+0);
write_com(LCDCol_Add+0);
write_com(LCDLCDDisp_On);
}
/*****************************************************************************
函數(shù)功能:寫(xiě)數(shù)據(jù)到LCD程序,RS(DI)=H,RW=L,EN=H,即來(lái)一個(gè)脈沖寫(xiě)一次
入口參數(shù):LCDDispdata
出口參數(shù):
*****************************************************************************/
void write_data(unsigned char LCDDispdata)
{
CheckState();//檢測(cè)LCD是否忙
LCDDi=1;
LCDRW=0;
P0=LCDDispdata;
LCDdelay(2);
LCDEnable=1;
LCDdelay(2);
LCDEnable=0;
}
/*****************************************************************************
函數(shù)功能:清除LCD內(nèi)存程序
入口參數(shù):pag,col,hzk
出口參數(shù):
*****************************************************************************/
void Clr_Scr()
{
unsigned char j,k;
LCDMcs=0; //左、右屏均開(kāi)顯示
LCDScs=0;
write_com(Page_Add+0);
write_com(LCDCol_Add+0);
for(k=0;k<8;k++)//控制頁(yè)數(shù)0-7,共8頁(yè)
{
write_com(Page_Add+k); //每頁(yè)每頁(yè)進(jìn)行寫(xiě)
for(j=0;j<64;j++) //每頁(yè)最多可寫(xiě)32個(gè)中文文字或64個(gè)ASCII字符
{
write_com(LCDCol_Add+j);
write_data(0x00);//控制列數(shù)0-63,共64列,寫(xiě)點(diǎn)內(nèi)容,列地址自動(dòng)加1
}
}
}
/*****************************************************************************
函數(shù)功能:左屏位置顯示
入口參數(shù):page,column,hzk
出口參數(shù):
*****************************************************************************/
void Bmp_Left_Disp(unsigned char page,unsigned char column, unsigned char code *Bmp)
{
unsigned char j=0,i=0;
for(j=0;j<2;j++)
{
write_com(Page_Add+page+j);
write_com(LCDCol_Add+column);
for(i=0;i<64;i++)
write_data(Bmp[128*j+i]);
}
}
/*****************************************************************************
函數(shù)功能:右屏位置顯示
入口參數(shù):page,column,hzk
出口參數(shù):
*****************************************************************************/
void Bmp_Right_Disp(unsigned char page,unsigned char column, unsigned char code *Bmp)
{
unsigned char j=0,i=0;
for(j=0;j<2;j++)
{
write_com(Page_Add+page+j);
write_com(LCDCol_Add+column);
for(i=64;i<128;i++)
write_data(Bmp[128*j+i]);
}
}
void main()
{
init_lcd();
Clr_Scr();
LCDMcs=0; //左屏開(kāi)顯示
LCDScs=1;
Bmp_Left_Disp(0,0,Bmp1);// Bmp1為某個(gè)漢字的首地址
Bmp_Left_Disp(2,0,Bmp2);
Bmp_Left_Disp(4,0,Bmp3);
Bmp_Left_Disp(6,0,Bmp4);
LCDMcs=1; //右屏開(kāi)顯示
LCDScs=0;
Bmp_Right_Disp(0,0,Bmp1);
Bmp_Right_Disp(2,0,Bmp2);
Bmp_Right_Disp(4,0,Bmp3);
Bmp_Right_Disp(6,0,Bmp4);
while(1)
{
}
}
這是程序 |