lcd12864.lst
来自「点阵LCD显示应用,LCD12864驱动程序的演示程序」· LST 代码 · 共 204 行
LST
204 行
C51 COMPILER V8.05a LCD12864 08/24/2007 15:13:14 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE LCD12864
OBJECT MODULE PLACED IN LCD12864.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sources\LCD12864.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\LCD1
-2864.lst) OBJECT(LCD12864.obj)
line level source
1 //*************************************************************************************************
2 //* *
3 //* ******************************LCD12864驱动程序************************** *
4 //* *
5 //*************************************************************************************************
6
7 //*************************************************************************************************
8 //* *
9 //* ******************************头文件及宏定义************************** *
10 //* *
11 //*************************************************************************************************
12 #include <at89x51.h>
13
14 #define RST P2_0
15 #define E P2_1
16 #define RW P2_2
17 #define DI P2_3
18 #define CS1 P2_5
19 #define CS2 P2_4
20 #define LCDPORT P0
21
22
23 #define BUSYSTATUS P0_7 //忙状态位。
24 //#define DISONSTATUS P0_5 //显示开关状态位。
25 //#define RSTSTATUS P0_4 //复位状态位。
26
27
28 #define LCDSTARTROW 0xC0 //设置起始行指令。
29 #define LCDPAGE 0xB8 //设置页指令。
30 #define LCDLINE 0x40 //设置列指令。
31
32
33
34 //*************************************************************************************************
35 //* *
36 //* ********************************读忙标志位********************************* *
37 //* *
38 //*************************************************************************************************
39 bit bCheckBusy()
40 {
41 1 LCDPORT=0xFF;
42 1 RW=1;
43 1 DI=0;
44 1 E=1;
45 1 E=0;
46 1 return BUSYSTATUS;
47 1 }
48
49 //*************************************************************************************************
50 //* *
51 //* ********************************控制器选择********************************* *
52 //* *
53 //*************************************************************************************************
54 void vChipSelect(unsigned char ucCS1,unsigned char ucCS2)
C51 COMPILER V8.05a LCD12864 08/24/2007 15:13:14 PAGE 2
55 {
56 1 CS1=ucCS1;
57 1 CS2=ucCS2;
58 1 }
59
60 //*************************************************************************************************
61 //* *
62 //* ********************************写数据********************************* *
63 //* *
64 //*************************************************************************************************
65 void vWriteData(unsigned char ucData)
66 {
67 1 while(bCheckBusy());
68 1 LCDPORT=0xFF;
69 1
70 1 RW=0;
71 1 DI=1;
72 1 LCDPORT=ucData;
73 1 E=1;
74 1 E=0;
75 1 }
76
77 //*************************************************************************************************
78 //* *
79 //* ********************************写指令********************************* *
80 //* *
81 //*************************************************************************************************
82 void vWriteCMD(unsigned char ucCMD)
83 {
84 1 while(bCheckBusy());
85 1 LCDPORT=0xFF;
86 1
87 1 RW=0;
88 1 DI=0;
89 1 LCDPORT=ucCMD;
90 1 E=1;
91 1 E=0;
92 1 }
93
94 //*************************************************************************************************
95 //* *
96 //* ********************************指令辅助函数********************************* *
97 //* *
98 //*************************************************************************************************
99
100 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
101 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<LCD初始化函数>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
102 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
103 void vLCDInitialize()
104 {
105 1 CS1=1;
106 1 CS2=1;
107 1 vWriteCMD(0x38); //8位形式,两行字符。
108 1 vWriteCMD(0x0F); //开显示。
109 1 vWriteCMD(0x01); //清屏。
110 1 vWriteCMD(0x06); //画面不动,光标右移。
111 1 }
112 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
113 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置起始行>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
114 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
115 void vSetStartRow(unsigned char ucStartRow)
116 {
C51 COMPILER V8.05a LCD12864 08/24/2007 15:13:14 PAGE 3
117 1 vWriteCMD(LCDSTARTROW+ucStartRow);
118 1 }
119
120 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
121 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置页>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
122 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
123 void vSetPage(unsigned char ucPage)
124 {
125 1 vWriteCMD(LCDPAGE+ucPage);
126 1 }
127
128 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
129 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置列>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
130 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
131 void vSetLine(unsigned char ucLine)
132 {
133 1 vWriteCMD(LCDLINE+ucLine);
134 1 }
135
136
137 //*************************************************************************************************
138 //* *
139 //* ********************************高级函数*********************************** *
140 //* *
141 //*************************************************************************************************
142
143 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
144 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置位置>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
145 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
146 void vSetPosition(unsigned char ucChipSelect,unsigned char ucPage,unsigned char ucLine)
147 { //取值范围:
148 1 switch(ucChipSelect) //ucChipSelect:0~255;
149 1 { //ucPage:0~7;
150 2 case 1:CS1=1;CS2=0;break; //ucLine:0~63。
151 2 case 2:CS1=0;CS2=1;break;
152 2 default:CS1=1;CS2=1;
153 2 }
154 1 vSetPage(ucPage);
155 1 vSetLine(ucLine);
156 1 }
157
158
159 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
160 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<在指定位置显示一个汉字>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
161 //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
162 void vShowOneChin(unsigned char ucRow,unsigned char ucOrder,unsigned char *ucaChinMap)
163 { //取值范围:
164 1 unsigned char ucCount; //ucRow:0~3;
165 1 //ucOrder:0~7。
166 1 vSetPosition(ucOrder/4+1,ucRow*2,ucOrder%4*16);
167 1 for(ucCount=0;ucCount<16;ucCount++)
168 1 vWriteData(*(ucaChinMap+ucCount));
169 1
170 1 vSetPosition(ucOrder/4+1,ucRow*2+1,ucOrder%4*16);
171 1 for(ucCount=16;ucCount<32;ucCount++)
172 1 vWriteData(*(ucaChinMap+ucCount));
173 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 230 ----
CONSTANT SIZE = ---- ----
C51 COMPILER V8.05a LCD12864 08/24/2007 15:13:14 PAGE 4
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 5
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?