📄 lcd12864.lst
字号:
C51 COMPILER V8.05a LCD12864 11/06/2007 16:45:41 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN .\Target\LCD12864.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\LCD12864.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\LST\
-LCD12864.lst) OBJECT(.\Target\LCD12864.obj)
line level source
1 //*************************************************************************************************
2 //* *
3 //* ******************************LCD12864驱动程序************************** *
4 //* *
5 //*************************************************************************************************
6 #include "includes.h"
7
8 #define RST P2_0
9 #define E P2_1
10 #define RW P2_2
11 #define DI P2_3
12 #define CS1 P2_5
13 #define CS2 P2_4
14 #define LCDPORT P0
15
16
17 #define BUSYSTATUS P0_7 //忙状态位。
18
19 #define LCDSTARTROW 0xC0 //设置起始行指令。
20 #define LCDPAGE 0xB8 //设置页指令。
21 #define LCDLINE 0x40 //设置列指令。
22
23
24
25
26 //*************************************************************************************************
27 //* *
28 //* ********************************读忙标志位********************************* *
29 //* *
30 //*************************************************************************************************
31 bit bCheckBusy()
32 {
33 1 LCDPORT=0xFF;
34 1 RW=1;
35 1 DI=0;
36 1 E=1;
37 1 E=0;
38 1 return BUSYSTATUS;
39 1 }
40
41 //*************************************************************************************************
42 //* *
43 //* ********************************写数据********************************* *
44 //* *
45 //*************************************************************************************************
46 void vWriteData(unsigned char ucData)
47 {
48 1 while(bCheckBusy());
49 1 LCDPORT=0xFF;
50 1
51 1 RW=0;
52 1 DI=1;
53 1 LCDPORT=ucData;
54 1 E=1;
C51 COMPILER V8.05a LCD12864 11/06/2007 16:45:41 PAGE 2
55 1 E=0;
56 1 }
57
58 //*************************************************************************************************
59 //* *
60 //* ********************************写指令********************************* *
61 //* *
62 //*************************************************************************************************
63 void vWriteCMD(unsigned char ucCMD)
64 {
65 1 while(bCheckBusy());
66 1 LCDPORT=0xFF;
67 1
68 1 RW=0;
69 1 DI=0;
70 1 LCDPORT=ucCMD;
71 1 E=1;
72 1 E=0;
73 1 }
74
75 //*************************************************************************************************
76 //* *
77 //* ********************************LCD初始化函数******************************* *
78 //* *
79 //*************************************************************************************************
80 void vLCDInitialize()
81 {
82 1 CS1=1;
83 1 CS2=1;
84 1 vWriteCMD(0x38); //8位形式,两行字符。
85 1 vWriteCMD(0x0F); //开显示。
86 1 vWriteCMD(0x01); //清屏。
87 1 vWriteCMD(0x06); //画面不动,光标右移。
88 1 vWriteCMD(LCDSTARTROW); //设置起始行。
89 1 }
90
91 //*************************************************************************************************
92 //* *
93 //* ******************************显示自定义行********************************* *
94 //* *
95 //*************************************************************************************************
96 //在8×128的格子里显示自定义长度的一行
97 void vShowCustomRow(unsigned char ucPage,unsigned char ucLine,unsigned char ucWidth,unsigned char *ucaRow)
98 {
99 1 unsigned char ucCount; //取值范围:ucPage:0~7;ucLine:0~127;
100 1 if(ucLine<64) //ucWidth:0~127;ucLine+ucWidth<1128。
101 1 {
102 2 CS1=1;
103 2 CS2=0;
104 2 vWriteCMD(LCDPAGE+ucPage);
105 2 vWriteCMD(LCDLINE+ucLine);
106 2 if((ucLine+ucWidth)<64)
107 2 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -