📄 lcd_driver_user.lst
字号:
185 {
186 LCDBYTE Read_Data;
187 //可根据自己的需要填写代码
188 x = y; //无意义,仅为了让系统不提示警告
189 return Read_Data;
190 } */
191
192 //========================================================================
193 // 函数: void Set_Dot_Addr_LCD(int x,int y)
194 // 描述: 设置在LCD的真实坐标系上的X、Y点对应的RAM地址
195 // 参数: x X轴坐标
196 // y Y轴坐标
197 // 返回: 无
198 // 备注: 仅设置当前操作地址,为后面的连续操作作好准备
199 // Mz 通用版LCD驱动程序 标准子函数
200 // 版本:
201 // 2006/10/15 First version
202 // 2007/01/09 V1.2
203 //========================================================================
204 void Set_Dot_Addr_LCD(DOTBYTE x,DOTBYTE y)
205 {
206 1 WORD Dot_Addr; //定义列地址的高低位指令
207 1 Dot_Addr = (x>>3)+0x0800;
208 1 Dot_Addr += (((WORD)y)<<5);
209 1 if(LCD_TestStatus(0x03))
210 1 LCD_DataWrite((LCDBYTE)(Dot_Addr&0x00ff));
211 1 if(LCD_TestStatus(0x03))
212 1 LCD_DataWrite((LCDBYTE)(Dot_Addr>>8));
213 1 if(LCD_TestStatus(0x03))
214 1 LCD_RegWrite(0x24);
215 1 }
216 /*
217 //========================================================================
218 // 函数: void LCD_Fill_s(WORD Number,LCDBYTE Color)
219 // 描述: 连续填充以Color色调的Number个点
220 // 参数: Number 填充的数量 Color 像素点的颜色
221 // 返回:
222 // 备注: 该函数可能会使用到
223 // 版本:
224 // 2006/10/15 First version
225 // 2007/01/09 V1.2
226 //========================================================================
227 void LCD_Fill_s(WORD Number,LCDBYTE Color)
228 {
229 while(Number!=0)
230 {
231 LCD_DataWrite(Color); //
232 Number--;
233 }
234 } */
235 //========================================================================
236 // 函数: void LCD_Fill(unsigned int Data)
237 // 描述: 会屏填充以Data的数据至各点中
238 // 参数: Data 要填充的颜色数据
239 // 返回: 无
240 // 备注: Mz 通用版LCD驱动程序 标准子函数
C51 COMPILER V8.12 LCD_DRIVER_USER 06/13/2008 15:12:12 PAGE 5
241 // 版本:
242 // 2006/10/15 First version
243 // 2007/01/09 V1.2
244 //========================================================================
245 void LCD_Fill(LCDBYTE Data)
246 {
247 1 DOTBYTE i,j=0;
248 1 DOTBYTE uiTemp;
249 1 uiTemp = Dis_X_MAX;
250 1 uiTemp = uiTemp>>3;
251 1 for(i=0;i<=Dis_Y_MAX;i++) //往LCD中填充初始化的显示数据
252 1 {
253 2 Set_Dot_Addr_LCD(0,i);
254 2 if(LCD_TestStatus(0x03))
255 2 LCD_RegWrite(0xb0);
256 2 for(j=0;j<=uiTemp;j++)
257 2 {
258 3 if(LCD_TestStatus(0x08))
259 3 LCD_DataWrite(Data);
260 3 }
261 2 if(LCD_TestStatus(0x03))
262 2 LCD_RegWrite(0xb2);
263 2 }
264 1 }
265 //========================================================================
266 // 函数: void LCD_PortInit(void)
267 // 描述: 与LCD连接的端口初始化代码
268 // 参数: 无
269 // 返回: 无
270 // 备注: Mz 通用版LCD驱动程序 标准子函数
271 // 版本:
272 // 2007/01/09 First version
273 // 注意:
274 //========================================================================
275 void LCD_PortInit(void)
276 {
277 1 LCD_Data_BUS_Dir = 0xff;
278 1 LCD_Data_BUS_Out = 0xff;
279 1
280 1 LCD_CS = 1;
281 1 LCD_A0 = 1;
282 1 LCD_RE = 1;
283 1 LCD_WR = 1;
284 1 LCD_RD = 1;
285 1 LCD_FS = 0;
286 1 }
287 //========================================================================
288 // 函数: void LCD_Init(void)
289 // 描述: LCD初始化程序,在里面会完成LCD初始所需要设置的许多寄存器,具体如果
290 // 用户想了解,建议查看DataSheet当中各个寄存器的意义
291 // 参数: 无
292 // 返回: 无
293 // 备注: Mz 通用版LCD驱动程序 标准子函数
294 // 版本:
295 // 2006/10/15 First version
296 // 2007/01/09 V1.2
297 //========================================================================
298 //延时程序
299
300 void TimeDelay(WORD Time)
301 {
302 1 WORD i;
C51 COMPILER V8.12 LCD_DRIVER_USER 06/13/2008 15:12:12 PAGE 6
303 1 while(Time > 0)
304 1 {
305 2 for(i = 0;i < 200;i++)
306 2 {
307 3 ;//asm("nop");
308 3 }
309 2 Time --;
310 2 }
311 1 }
312 void LCD_Init(void)
313 {
314 1 //LCD驱动所使用到的端口的初始化(如果有必要的话)
315 1 LCD_PortInit();
316 1 // LCD_CMD_Buffer &= (~LCD_RE);
317 1 LCD_RE = 0;
318 1 TimeDelay(40);
319 1 // LCD_CMD_Buffer |= LCD_RE;
320 1 LCD_RE = 1;
321 1 TimeDelay(20);
322 1 //设置TEXT文本层的显存起始位置
323 1 if(LCD_TestStatus(0x03))
324 1 LCD_DataWrite(0x00);
325 1 if(LCD_TestStatus(0x03))
326 1 LCD_DataWrite(0x00);
327 1 if(LCD_TestStatus(0x03))
328 1 LCD_RegWrite(0x40);
329 1 //设置CGRAM的起始位置
330 1 if(LCD_TestStatus(0x03))
331 1 LCD_DataWrite(0x20);
332 1 if(LCD_TestStatus(0x03))
333 1 LCD_DataWrite(0x00);
334 1 if(LCD_TestStatus(0x03))
335 1 LCD_RegWrite(0x41);
336 1 //设置图形层的起始位置(本驱动仅使用图形层)
337 1 if(LCD_TestStatus(0x03))
338 1 LCD_DataWrite(0x00);
339 1 if(LCD_TestStatus(0x03))
340 1 LCD_DataWrite(0x08);
341 1 if(LCD_TestStatus(0x03))
342 1 LCD_RegWrite(0x42);
343 1 //设置一行占用的显存数量
344 1 if(LCD_TestStatus(0x03))
345 1 LCD_DataWrite(0x20);
346 1 if(LCD_TestStatus(0x03))
347 1 LCD_DataWrite(0x00);
348 1 if(LCD_TestStatus(0x03))
349 1 LCD_RegWrite(0x43);
350 1 //
351 1 if(LCD_TestStatus(0x03))
352 1 LCD_RegWrite(0xa7);
353 1 //
354 1 if(LCD_TestStatus(0x03))
355 1 LCD_RegWrite(0x80);
356 1 //图形显示层开,其它关
357 1 if(LCD_TestStatus(0x03))
358 1 LCD_RegWrite(0x98);
359 1
360 1 LCD_Fill(LCD_INITIAL_COLOR);
361 1 }
362
C51 COMPILER V8.12 LCD_DRIVER_USER 06/13/2008 15:12:12 PAGE 7
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 616 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
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 + -