📄 hw_disp.lst
字号:
220
221 ****************************************/
222 void DispChr(INT8U cv)
223 {
224 1 INT8U *pF;
225 1 INT8U len,n,row,col;
226 1
227 1 row = CurRow;
228 1 col = CurCol;
229 1 len = FontAttr[CurFont][0] * FontAttr[CurFont][1];
230 1 pF = (INT8U *)FontAdr[CurFont];
231 1 pF += cv*len;
232 1
233 1 n = 0;
234 1 while (1)
235 1 {
236 2 LCD_Disp_Pic(pF+n*FontAttr[CurFont][0],FontAttr[CurFont][0]);
237 2 n ++;
238 2 if (n>= FontAttr[CurFont][1])
239 2 break;
240 2 CurRow ++;
241 2 CurCol = col;
C51 COMPILER V7.50 HW_DISP 11/10/2008 14:21:37 PAGE 5
242 2 }
243 1 CurRow = row;
244 1 }
245
246 /***************************************
247
248 显示一个整数
249 入口参数:整数数值,起始显示位置,长度
250
251 ****************************************/
252 void DispIntU(INT32U val,INT8U len)
253 {
254 1 INT32U n = 1;
255 1 INT8U i;
256 1
257 1 for (i=1;i<len;i++)
258 1 n *= 10;
259 1
260 1 for (i=0;i<len;i++)
261 1 {
262 2 DispChr(val/n +'0');
263 2 val %= n;
264 2 n /= 10;
265 2 }
266 1 }
267
268
269 void DispIntS(INT32S val,INT8U len)
270 {
271 1 INT32U n = 1;
272 1 INT8U i;
273 1
274 1 if (val < 0)
275 1 {
276 2 val = 0 - val;
277 2 DispChr('-');
278 2 }
279 1 else
280 1 {
281 2 DispChr('+');
282 2 }
283 1
284 1 for (i=1;i<len;i++)
285 1 n *= 10;
286 1
287 1 for (i=0;i<len;i++)
288 1 {
289 2 DispChr(val/n +'0');
290 2 val %= n;
291 2 n /= 10;
292 2 }
293 1 }
294
295 /***************************************
296
297 显示一个字符
298 入口参数:字符,显示位置,是否闪烁
299
300 ****************************************/
301 void DispHZ(INT8U cv)
302 {
303 1 INT8U *pF;
C51 COMPILER V7.50 HW_DISP 11/10/2008 14:21:37 PAGE 6
304 1 INT8U n,row,col;
305 1
306 1 row = CurRow;
307 1 col = CurCol;
308 1
309 1 pF = (INT8U *)FontHZ14x14;
310 1 pF += cv*(14*2);
311 1
312 1 n = 0;
313 1 while (1)
314 1 {
315 2 LCD_Disp_Pic(pF+n*14,14);
316 2 n++;
317 2 if (n>= 2)
318 2 break;
319 2 CurRow ++;
320 2 CurCol = col;
321 2 }
322 1 CurRow = row;
323 1 }
324
325 /***************************************
326
327 显示一个浮点数
328 注:无超显示范围判断
329 使用全部的显示区域
330
331 ****************************************/
332 void DispFloat(float val,INT8U Len)
333 {
334 1 INT8U IntLen,n;
335 1 INT32U iv,ivf;
336 1
337 1 /* 符号位处理 */
338 1 if (val < 0)
339 1 {
340 2 DispChr('-');
341 2 val = -val;
342 2 Len --;
343 2 }
344 1
345 1 /* 整数位数计算 */
346 1 IntLen = GetIntLen((INT32U)val);
347 1
348 1 /* 整数部分 */
349 1 iv = (INT32U)val;
350 1 /* 显示整数部分 */
351 1 DispIntU(iv,IntLen);
352 1 /* 显示小数点 */
353 1 DispChr('.');
354 1
355 1 /* */
356 1 val -= iv;
357 1 for (n=0;n<(Len-IntLen);n++)
358 1 {
359 2 val *= 10;
360 2 }
361 1 ivf = (INT32U)val;
362 1 ivf += 5;
363 1 ivf /= 10;
364 1
365 1
C51 COMPILER V7.50 HW_DISP 11/10/2008 14:21:37 PAGE 7
366 1 /* 显示小数部分 */
367 1 DispIntU((INT32U)ivf,Len-IntLen-1);
368 1 }
369
370 /***************************************
371
372 显示清屏
373
374 ****************************************/
375 void DispCls(void)
376 {
377 1 DispXYSet(0,0);
378 1 LCD_Disp_Pattern(0,128);
379 1 DispXYSet(1,0);
380 1 LCD_Disp_Pattern(0,128);
381 1 DispXYSet(2,0);
382 1 LCD_Disp_Pattern(0,128);
383 1 DispXYSet(3,0);
384 1 LCD_Disp_Pattern(0,128);
385 1 DispXYSet(4,0);
386 1 LCD_Disp_Pattern(0,128);
387 1 DispXYSet(5,0);
388 1 LCD_Disp_Pattern(0,128);
389 1 DispXYSet(6,0);
390 1 LCD_Disp_Pattern(0,128);
391 1 DispXYSet(7,0);
392 1 LCD_Disp_Pattern(0,128);
393 1 }
394
395
396
397 /***************************************
398
399 屏初始化
400
401 ****************************************/
402 void DispInit(void)
403 {
404 1 INT16U i;
405 1 Pin_CS1 = 0;
406 1 Pin_CS2 = 0;
407 1
408 1 for (i=0;i<5000;i++)
409 1 Pin_RST = 0;
410 1 for (i=0;i<5000;i++)
411 1 Pin_RST=1; //使RST无效后延时一段时间(若不,则后续指令无效,原12864无需亦可???延时取255还不够!!!)
412 1
413 1 Pin_E=0;
414 1 Pin_RS=1;
415 1 Pin_RW=1;
416 1
417 1 Pin_CS1 = 1;
418 1
419 1 LCD_Cmd(0x3F); //LCD_ON
420 1 LCD_Cmd(0xC0|0); //LCD_STARTLINE
421 1 LCD_Cmd(0xB8|0); //LCD_ROW
422 1 LCD_Cmd(0x40|0); //LCD_COL
423 1
424 1 Pin_CS1 = 0;
425 1
426 1 CurCol = 0;
427 1 CurRow = 0;
C51 COMPILER V7.50 HW_DISP 11/10/2008 14:21:37 PAGE 8
428 1 }
429
430
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1276 ----
CONSTANT SIZE = 4925 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 52
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 + -