📄 lcd.lst
字号:
198
199 /*-- 文字: 7 --*/
200 /*-- Times New Roman8; 此字体下对应的点阵为:宽x高=5x8 --*/
201 C_BYTE WLib_7_5x8[]={
202 0x00,0x02,0xf2,0x0a,0x06
203 };
204
205 /*-- 文字: 8 --*/
206 /*-- Times New Roman8; 此字体下对应的点阵为:宽x高=5x8 --*/
207 C_BYTE WLib_8_5x8[]={
208 0x00,0x6c,0x92,0x92,0x6c
209 };
210
211 /*-- 文字: 9 --*/
212 /*-- Times New Roman8; 此字体下对应的点阵为:宽x高=5x8 --*/
213 C_BYTE WLib_9_5x8[]={
214 0x00,0x0c,0x92,0x92,0x7c
215 };
216
217 /*-- 文字: 0 --*/
218 /*-- Times New Roman8; 此字体下对应的点阵为:宽x高=5x8 --*/
219 C_BYTE WLib_0_5x8[]={
220 0x00,0x7c,0x82,0x82,0x7c
221 };
222
223 /***********************************************************************************
224 * 函数名称:dis_start0;
225 *
226 * 函数功能描述:显示开机界面"铭朗科技www.mlarm.com"及电话;
227 *
228 * 输入参数:none;
229 *
230 * 返回数据:none;
231 *
232 * 注意: none;
233 ************************************************************************************/
234
235 void dis_start0(void)
236 {
237 1 LCDC_DispWord (0, 32, WLib_ming_32x32, 4, 32, 1);
238 1 LCDC_DispWord (32, 32, WLib_lang_32x32, 4, 32, 1);
239 1 LCDC_DispWord (64, 32, WLib_ke_32x32, 4, 32, 1);
240 1 LCDC_DispWord (96, 32, WLib_ji_32x32, 4, 32, 1);
C51 COMPILER V8.08 LCD 01/08/2009 16:11:58 PAGE 5
241 1
242 1 LCDC_DispWord (8, 16, WLib_W_10x8, 1, 10, 1);
243 1 LCDC_DispWord (19, 16, WLib_W_10x8, 1, 10, 1);
244 1 LCDC_DispWord (30, 16, WLib_W_10x8, 1, 10, 1);
245 1 LCDC_DispWord (46, 16, WLib_M_9x8, 1, 9, 1);
246 1 LCDC_DispWord (57, 16, WLib_L_6x8, 1, 6, 1);
247 1 LCDC_DispWord (63, 16, WLib_A_7x8, 1, 7, 1);
248 1 LCDC_DispWord (71, 16, WLib_R_7x8, 1, 7, 1);
249 1 LCDC_DispWord (79, 16, WLib_M_9x8, 1, 9, 1);
250 1 LCDC_DispWord (90, 16, WLib_dot_4x8, 1, 4, 1);
251 1 LCDC_DispWord (94, 16, WLib_C_7x8, 1, 7, 1);
252 1 LCDC_DispWord (102, 16, WLib_O_7x8, 1, 7, 1);
253 1 LCDC_DispWord (110, 16, WLib_M_9x8, 1, 9, 1);
254 1
255 1 LCDC_DispWord (11, 2, WLib_T_6x8, 1, 6, 1);
256 1 LCDC_DispWord (17, 2, WLib_e_5x8, 1, 5, 1);
257 1 LCDC_DispWord (22, 2, WLib_l_4x8, 1, 4, 1);
258 1 LCDC_DispWord (27, 2, WLib_ddot_3x8, 1, 3, 1);
259 1
260 1 LCDC_DispWord (34, 2, WLib_0_5x8, 1, 5, 1);
261 1 LCDC_DispWord (39, 2, WLib_2_5x8, 1, 5, 1);
262 1 LCDC_DispWord (44, 2, WLib_9_5x8, 1, 5, 1);
263 1 LCDC_DispWord (49, 2, WLib_line_6x8, 1, 6, 1);
264 1 LCDC_DispWord (55, 2, WLib_8_5x8, 1, 5, 1);
265 1 LCDC_DispWord (60, 2, WLib_8_5x8, 1, 5, 1);
266 1 LCDC_DispWord (65, 2, WLib_2_5x8, 1, 5, 1);
267 1 LCDC_DispWord (70, 2, WLib_2_5x8, 1, 5, 1);
268 1 LCDC_DispWord (75, 2, WLib_3_5x8, 1, 5, 1);
269 1 LCDC_DispWord (80, 2, WLib_5_5x8, 1, 5, 1);
270 1 LCDC_DispWord (85, 2, WLib_9_5x8, 1, 5, 1);
271 1 LCDC_DispWord (90, 2, WLib_7_5x8, 1, 5, 1);
272 1 LCDC_DispWord (95, 2, WLib_line_6x8, 1, 6, 1);
273 1 LCDC_DispWord (101, 2, WLib_8_5x8, 1, 5, 1);
274 1 LCDC_DispWord (106, 2, WLib_0_5x8, 1, 5, 1);
275 1 LCDC_DispWord (111, 2, WLib_2_5x8, 1, 5, 1);
276 1 }
277
278 /***********************************************************************************
279 * 函数名称:LCDC_Init;
280 *
281 * 函数功能描述:lcd_init;
282 *
283 * 输入参数:none;
284 *
285 * 返回数据:none;
286 *
287 * 注意: 具体Lcd操作请参考DMC12864.PDF;
288 ************************************************************************************/
289 void LCDC_Init (void)
290 {
291 1 DISABLE_INTERRUPTS; //关中断
292 1 addr = Lcd_Cs |
293 1 Lcd_CsChip |
294 1 Lcd_WrCmd; //写命令 (参考Lcd_Driver.h文件宏定义)
295 1 LCDC_WrCmd (Lcd_Dsl); //Display start line
296 1 LCDC_WrCmd (St_Addr); //COLOUM ADDRESS
297 1 LCDC_WrCmd (St_Page); //ROW ADDRESS
298 1 LCDC_WrCmd (Dis_ON ); //Display ON
299 1 ENABLE_INTERRUPTS; //开中断
300 1 }
301
302 /***********************************************************************************
C51 COMPILER V8.08 LCD 01/08/2009 16:11:58 PAGE 6
303 * 函数名称:LCDC_DisFull;
304 *
305 * 函数功能描述: 清屏函数(全部写慢或清空);
306 *
307 * 输入参数:unsigned char类型数据,0x00是清屏;0xff是写满屏;
308 *
309 * 返回数据:none;
310 *
311 * 注意: none;
312 ************************************************************************************/
313 void LCDC_DisFull (unsigned char Flag)
314 {
315 1 unsigned char x,y;
316 1
317 1 if (!Flag) //清屏
318 1 {
319 2 for (y=0; y<8; y++)
320 2 for (x=0; x<128; x++)
321 2 LCDC_WrData (x, y, 0X00);
322 2 }
323 1 else //写满屏
324 1 {
325 2 for (y=0; y<8; y++)
326 2 for (x=0; x<128; x++)
327 2 LCDC_WrData (x, y, 0XFF);
328 2 }
329 1 }
330
331 /***********************************************************************************
332 * 函数名称:LCDC_CheckBusy;
333 *
334 * 函数功能描述: 判断LCD忙等待;
335 *
336 * 输入参数:none;
337 *
338 * 返回数据:none;
339 *
340 * 注意: none;
341 ************************************************************************************/
342 void LCDC_CheckBusy (void)
343 {
344 1 addr = Lcd_Cs |
345 1 Lcd_CsChip |
346 1 Lcd_RdSta; //读状态(参考Lcd_Driver.h文件宏定义)
347 1 _nop_();_nop_(); //延时等待
348 1 _nop_();_nop_();
349 1 do //取Lcd的状态寄存器内的数据
350 1 tp = addr;
*** WARNING C289 IN LINE 350 OF DRIVER\LCD.C: '=': converting non-pointer to pointer
351 1 while ((*tp&Chip_Busy)==Chip_Busy);//等待BUSY位清零 Lcd空闲
352 1 }
353
354 /***********************************************************************************
355 * 函数名称:LCDC_WrCmd;
356 *
357 * 函数功能描述: 向LCD写命令;
358 *
359 * 输入参数:none;
360 *
361 * 返回数据:none;
362 *
363 * 注意: none;
C51 COMPILER V8.08 LCD 01/08/2009 16:11:58 PAGE 7
364 ************************************************************************************/
365 void LCDC_WrCmd (unsigned char dd)
366 {
367 1 DISABLE_INTERRUPTS; //关中断
368 1 addr = Lcd_Cs |
369 1 Lcd_CsChip |
370 1 Lcd_WrCmd; //写命令地址 (参考Lcd_Driver.h文件宏定义)
371 1 tp = addr;
*** WARNING C289 IN LINE 371 OF DRIVER\LCD.C: '=': converting non-pointer to pointer
372 1 *tp = dd; //写命令
373 1 addr &= Unto_Lcd; //改变地址变量 地址不指向Lcd
374 1 _nop_();_nop_(); //延时等待
375 1 _nop_();_nop_();
376 1 ENABLE_INTERRUPTS; //开中断
377 1 }
378
379 /***********************************************************************************
380 * 函数名称:LCDC_SetXY;
381 *
382 * 函数功能描述: LCD读写位置变换;
383 *
384 * 输入参数:unsigned char类型坐标x,y;
385 *
386 * 返回数据:none;
387 *
388 * 注意: 详细请参考DMC12864.PDF;程序中X,Y方向定义与屏定义不同
389 ************************************************************************************/
390 void LCDC_SetXY (unsigned char x, unsigned char y)
391 {
392 1 DISABLE_INTERRUPTS; //关中断
393 1 LCDC_CheckBusy (); //等待Lcd空闲
394 1 y &= x_addr; //x赋值 屏蔽掉无用位 加人相关命令
395 1 y |= St_Page;
396 1 LCDC_WrCmd (y);
397 1 x &= y_addr; //Y赋值 屏蔽掉无用位 加人相关命令
398 1 x |= St_Addr;
399 1 LCDC_WrCmd (x);
400 1 ENABLE_INTERRUPTS; //开中断
401 1 }
402
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -