?? 12864lcd.lst
字號:
C51 COMPILER V9.00 12864LCD 07/18/2012 17:58:49 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE 12864LCD
OBJECT MODULE PLACED IN 12864LCD.obj
COMPILER INVOKED BY: G:\Keil_51\C51\BIN\C51.EXE 12864液晶\12864LCD.c BROWSE INCDIR(.\Define;.\MyDseign;.\nrf24l01;.\User
-;.\12864液晶) DEBUG OBJECTEXTEND PRINT(.\12864LCD.lst) TABS(2) OBJECT(12864LCD.obj)
line level source
1 /*******************************************************************************
2 名 稱:12864液晶操作程序
3 功 能:本c文件封裝了對12864液晶的一些簡單的基本讀寫操作.
4 封裝函數(shù):
5 void Lcd_WriteCmd(unsigned char a); //寫指令
6 void Lcd_WriteData(unsigned char a); //寫數(shù)據(jù)
7 int Lcd_ReadCmd(); //讀指令
8 int Lcd_ReadData(); //讀數(shù)據(jù)
9 void Lcd_Init(); //初始化液晶
10 void Lcd_XY(unsigned char a,unsigned char b); //設定光標位置
11 void Clear_GDRAM(void); //清除液晶GDRAM中的隨機數(shù)據(jù)
12 void Draw_PM(const uchar *ptr); //在整個液晶屏幕上畫圖
13 void Draw_TX(uchar Yaddr,uchar Xaddr,const uchar * dp); //顯示一個16*16大小的圖形
14 作 者:胡靜濤
15 最后修改時間:2011年7月25號
16 備注:該程序應在1M的系統(tǒng)時鐘下運行,讀忙信號函數(shù)已經(jīng)被封裝到除讀指令函數(shù)以外的函數(shù)
17 中.
18 典型應用:
19 Lcd_XY( 1 , 1 );
20 i = 0;
21 while( num1[i] != '\0' )
22 {
23 Lcd_WriteData( num1[i] );
24 i++;
25 }
26 以上函數(shù)均進行測試可以正常使用
27 *******************************************************************************/
28 #include "12864LCD.h"
29 #include "define.h"
30
31
32
33
34 //******************************************************************************
35 //12864液晶讀指令
36 //典型應用 讀忙標志:while(Lcd_ReadCmd() & 0x80);
37 //******************************************************************************
38 int Lcd_ReadCmd()
39 {
40 1 int temp;
41 1
42 1 //LCD12864_CMDDIR;
43 1 //LCD12864_DATADIR = 0X00;
44 1 LCD12864_LCDRS_0;
45 1 LCD12864_LCDWR_1;
46 1 LCD12864_LCDEN_0;
47 1 //_NOP();
48 1 delay_ms(1);
49 1 LCD12864_LCDEN_1;
50 1 //_NOP();
51 1 //_NOP();
52 1 delay_ms(1);
53 1 delay_ms(1);
54 1 temp = LCD12864_DATAIN;
C51 COMPILER V9.00 12864LCD 07/18/2012 17:58:49 PAGE 2
55 1 LCD12864_LCDEN_0;
56 1
57 1 return temp;
58 1 }
59
60
61
62
63 //******************************************************************************
64 //12864液晶讀數(shù)據(jù)
65 //******************************************************************************
66 int Lcd_ReadData()
67 {
68 1 int temp;
69 1 while(Lcd_ReadCmd() & 0x80); //讀忙信號
70 1 //LCD12864_DATADIR = 0X00;
71 1 //LCD12864_CMDDIR;
72 1 LCD12864_LCDRS_1;
73 1 LCD12864_LCDWR_1;
74 1 LCD12864_LCDEN_0;
75 1 //_NOP();
76 1 delay_ms(1);
77 1 LCD12864_LCDEN_1;
78 1 //_NOP();
79 1 //_NOP();
80 1 delay_ms(1);
81 1 delay_ms(1);
82 1 temp = LCD12864_DATAIN;
83 1 LCD12864_LCDEN_0;
84 1
85 1 return temp;
86 1 }
87
88
89
90 //******************************************************************************
91 //12864液晶寫指令
92 //******************************************************************************
93 void Lcd_WriteCmd(uchar a)
94 {
95 1 while(Lcd_ReadCmd() & 0x80); //讀忙信號
96 1 //LCD12864_DATADIR = 0XFF;
97 1 //LCD12864_CMDDIR;
98 1 LCD12864_LCDRS_0;
99 1 LCD12864_LCDWR_0;
100 1 LCD12864_LCDEN_0;
101 1 //_NOP();
102 1 delay_ms(1);
103 1 LCD12864_DATA = a;
104 1 //_NOP();
105 1 delay_ms(1);
106 1 LCD12864_LCDEN_1;
107 1 //_NOP();
108 1 //_NOP();
109 1 delay_ms(1);
110 1 delay_ms(1);
111 1 LCD12864_LCDEN_0;
112 1 }
113
114
115
116 //******************************************************************************
C51 COMPILER V9.00 12864LCD 07/18/2012 17:58:49 PAGE 3
117 //12864液晶寫數(shù)據(jù)
118 //******************************************************************************
119 void Lcd_WriteData(uchar a)
120 {
121 1 while(Lcd_ReadCmd() & 0x80); //讀忙信號
122 1 //LCD12864_DATADIR = 0XFF;
123 1 //LCD12864_CMDDIR;
124 1 LCD12864_LCDRS_1;
125 1 LCD12864_LCDWR_0;
126 1 LCD12864_LCDEN_0;
127 1 //_NOP();
128 1 delay_ms(1);
129 1 LCD12864_DATA = a;
130 1 //_NOP();
131 1 delay_ms(1);
132 1 LCD12864_LCDEN_1;
133 1 //_NOP();
134 1 //_NOP();
135 1 delay_ms(1);
136 1 delay_ms(1);
137 1 LCD12864_LCDEN_0;
138 1 }
139
140
141
142 //******************************************************************************
143 //12864液晶初始化
144 //******************************************************************************
145 void Lcd_Init()
146 {
147 1 Lcd_WriteCmd(0x30);
148 1 Lcd_WriteCmd(0x0c);
149 1 Lcd_WriteCmd(0x01);
150 1 Lcd_WriteCmd(0x80);
151 1 }
152
153 //******************************************************************************
154 //12864液晶光標地址
155 //******************************************************************************
156 void Lcd_XY(unsigned char a,unsigned char b)
157 {
158 1 switch (a)
159 1 {
160 2 case 1:
161 2 a = 0x80;
162 2 break;
163 2 case 2:
164 2 a = 0x90;
165 2 break;
166 2 case 3:
167 2 a = 0x88;
168 2 break;
169 2 case 4:
170 2 a = 0x98;
171 2 break;
172 2 }
173 1 Lcd_WriteCmd(a + b - 1);
174 1 }
175
176 //******************************************************************************
177 //清除液晶GDRAM中的隨機數(shù)據(jù)
178 //******************************************************************************
C51 COMPILER V9.00 12864LCD 07/18/2012 17:58:49 PAGE 4
179 void Clear_GDRAM(void)
180 {
181 1 uchar i,j,k;
182 1 Lcd_WriteCmd(0x34); //打開擴展指令集
183 1 i = 0x80;
184 1 for(j = 0;j < 32;j++)
185 1 {
186 2 Lcd_WriteCmd(i++);
187 2 Lcd_WriteCmd(0x80);
188 2 for(k = 0;k < 16;k++)
189 2 {
190 3 Lcd_WriteData(0x00);
191 3 }
192 2 }
193 1 i = 0x80;
194 1 for(j = 0;j < 32;j++)
195 1 {
196 2 Lcd_WriteCmd(i++);
197 2 Lcd_WriteCmd(0x88);
198 2 for(k = 0;k < 16;k++)
199 2 {
200 3 Lcd_WriteData(0x00);
201 3 }
202 2 }
203 1 Lcd_WriteCmd(0x30); //回到基本指令集
204 1 }
205
206 //******************************************************************************
207 //在整個液晶屏幕上畫圖
208 //******************************************************************************
209 void Draw_PM(const uchar *ptr)
210 {
211 1 uchar i,j,k;
212 1 Lcd_WriteCmd(0x34); //打開擴展指令集
213 1 i = 0x80;
214 1 for(j = 0;j < 32;j++)
215 1 {
216 2 Lcd_WriteCmd(i++);
217 2 Lcd_WriteCmd(0x80);
218 2 for(k = 0;k < 16;k++)
219 2 {
220 3 Lcd_WriteData(*ptr++);
221 3 }
222 2 }
223 1 i = 0x80;
224 1 for(j = 0;j < 32;j++)
225 1 {
226 2 Lcd_WriteCmd(i++);
227 2 Lcd_WriteCmd(0x88);
228 2 for(k = 0;k < 16;k++)
229 2 {
230 3 Lcd_WriteData(*ptr++);
231 3 }
232 2 }
233 1 Lcd_WriteCmd(0x36); //打開繪圖顯示
234 1 Lcd_WriteCmd(0x30); //回到基本指令集
235 1 }
236
237
238 //******************************************************************************
239 //功 能:顯示一個16*16大小的圖形
240 //參 數(shù):Yaddr--Y地址
C51 COMPILER V9.00 12864LCD 07/18/2012 17:58:49 PAGE 5
241 // Xaddr--X地址
242 // dp--指向圖形數(shù)據(jù)存放地址的指針
243 //******************************************************************************
244 void Draw_TX(uchar Yaddr,uchar Xaddr,const uchar * dp)
245 {
246 1 uchar j;
247 1 uchar k=0;
248 1 Yaddr = Yaddr + 0x80;
249 1 Xaddr = Xaddr + 0x80;
250 1 Lcd_WriteCmd(0x01); //清屏,只能清除DDRAM
251 1 Lcd_WriteCmd(0x34); //使用擴展指令集,關閉繪圖顯示
252 1 for(j=0;j<16;j++)
253 1 {
254 2 Lcd_WriteCmd(Yaddr++); //Y地址
255 2 Lcd_WriteCmd(Xaddr); //X地址
256 2 Lcd_WriteData(dp[k++]);
257 2 Lcd_WriteData(dp[k++]);
258 2 }
259 1 Lcd_WriteCmd(0x36); //打開繪圖顯示
260 1 Lcd_WriteCmd(0x30); //回到基本指令集模式
261 1 }
262
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 590 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 18
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -