?? 8.5.c
字號:
#include <reg52.h>
#include <absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define LcdCommand XBYTE[0xFFFF]
#define LcdDataWrite XBYTE[0xFFFE]
uchar code ZKWU[]=
{0x00,0x10,0x1F,0xF8,0x10,0x10,0x10,0x10,0x1F,0xF0,0x00,0x00,0x00,0x10,0x3F,
0xF8,0x01,0x00,0x01,0x04,0xFF,0xFE,0x02,0x80,0x02,0x40,0x04,0x20,0x18,0x1C,0x60,
0x08};
uchar code ZKLIN[]=
{0x10,0x20,0x10,0x20,0x10,0x20,0x10,0x20,0xFD,0xFE,0x10,0x20,0x10,0x60,0x38,0x70
,
0x34,0xB0,0x54,0xA8,0x51,0x28,0x92,0x26,0x14,0x24,0x10,0x20,0x10,0x20,0x10,0x20}
;
void Initialize(void);
void delay(uint);
void SetCursor(uchar,uchar);
void WriteOneWork(uchar,uchar,uchar *);
void WriteLine(uchar,uchar,uchar);
void main(void)
{
SP=0x60;
EA=0;
delay(0x30);
Initialize();
delay(0x9);
LcdCommand=0x4f; /* 光標地址自動向下增一 */
WriteOneWork(0,0,ZKWU);
WriteOneWork(0x2,0x80,ZKLIN);
while(1);
}
/******************************** 初始化LCD函數
********************************/
void Initialize(void)
{
uint i;
LcdCommand=0x40; /* ---------LCD SYSTEM SET系統設置令,8個參數-----
--- */
LcdDataWrite=0x30;
LcdDataWrite=0x87;
LcdDataWrite=0x07;
LcdDataWrite=39; /* 顯示域長度為320dot */
LcdDataWrite=0x36; /* 確定液晶工作頻率 */
LcdDataWrite=239; /* 顯示屏高度為240dot */
LcdDataWrite=40; /* 顯示屏一行所占顯示緩沖區字節數(L) */
LcdDataWrite=0; /* 顯示屏一行所占顯示緩沖區字節數(H) */
delay(0x9);
LcdCommand=0x44; /* ---------LCD SCROLL顯示區設置命令,最多10個參
數--------- */
LcdDataWrite=0x00; /* 顯示1區對應的顯示RAM起始高8位地址 */
LcdDataWrite=0x00; /* 顯示1區對應的顯示RAM起始低8位地址 */
LcdDataWrite=240; /* 顯示1區占用240個dot行 */
LcdDataWrite=0x80; /* 顯示2區對應的顯示RAM起始低8位地址 */
LcdDataWrite=0x25; /* 顯示2區對應的顯示RAM起始高8位地址 */
LcdDataWrite=240; /* 顯示3區占用240個dot行 */
LcdDataWrite=0x00; /* 顯示3區對應的顯示RAM起始低8位地址 */
LcdDataWrite=0x4b; /* 顯示3區對應的顯示RAM起始高8位地址 */
delay(0x9);
LcdCommand=0x5a; /* 水平卷動,初始化時必須清零 */
LcdDataWrite=0x00;
delay(0x9);
LcdCommand=0x5b; /* 各個顯示區的合成方式,1個參數 */
LcdDataWrite=0x1c; /* 參數:顯示方式為三屏圖形疊加,邏輯或 */
delay(0x9);
LcdCommand=0x59; /* 打開顯示,1個參數 */
LcdDataWrite=0x04; /* 只顯示第一個區并關閃爍 */
delay(0x9);
LcdCommand=0x4c; /* 光標自動向右增一?*/
delay(0x9);
LcdCommand=0x46; /* 設定光標位置命令 */
LcdDataWrite=0; /* 從0000位置開始 */
LcdDataWrite=0;
delay(0x9);
LcdCommand=0x42; /* 允許MPU連續地把顯示數據寫入顯示區內命令 */
for(i=0;i<32760;i++)
{
LcdDataWrite=0; /* 將32K顯緩全部清零,即LCD不顯示任何東西 */
}
}
/* --------------------------設定光標,允許顯示------------------------- */
void SetCursor(uchar CursorHIGH,uchar CursorLOW)
{
delay(0x9);
LcdCommand=0x46; /* 設定光標位置命令 */
LcdDataWrite=CursorLOW; /* 從0000位置開始 */
LcdDataWrite=CursorHIGH;
delay(0x9);
LcdCommand=0x42; /* 允許MPU連續地把顯示數據寫入顯示區內命令 */
}
/* ---------------------------在指定位置顯示一個漢字---------------------------
*/
void WriteOneWork(uchar CurHIGH,uchar CurLOW,uchar * ZiKu)
{
uchar i;
SetCursor(CurHIGH,CurLOW); /* 設定光標,允許顯示 */
i=0;
do
{
LcdDataWrite=ZiKu[i];
i=i+2;
}
while(i<0x1e);
SetCursor(CurHIGH,CurLOW+1);
i=1;
while(i<0x1f)
{
LcdDataWrite=ZiKu[i];
i=i+2;
}
}
/* ----------------------延時子程序----------------------------- */
void delay(uint delx)
{
uint i=0;
while(i<delx)
{
i++;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -