📄 showfun.lst
字号:
183 "时",0x00,0x80,0xF0,0x80,0x9F,0xE0,0x90,0x80,0x94,0x80,0xF2,0x80,0x92,0x80,0x90,0x80,0xF0,0x80,0x90,0x80,0
-x03,0x80,0x00,0x00,
184 "针",0x41,0x00,0x41,0x00,0x79,0x00,0x81,0x00,0xF7,0xE0,0x21,0x00,0xF9,0x00,0x21,0x00,0x29,0x00,0x31,0x00,0
-x21,0x00,0x00,0x00,
185 "旋",0x42,0x00,0x23,0xE0,0xF4,0x00,0x4F,0xE0,0x71,0x20,0x55,0x40,0x55,0x00,0x55,0xE0,0x55,0x00,0xB7,0x00,0
-x89,0xE0,0x00,0x00,
186 "转",0x21,0x00,0xF9,0x00,0x47,0xE0,0x61,0x00,0xA7,0xE0,0xFA,0x00,0x23,0xC0,0x38,0x40,0xE0,0x80,0x23,0x00,0
-x20,0x80,0x00,0x00,
187 "逆",0x84,0x40,0x42,0x80,0x5F,0xE0,0x01,0x00,0xC9,0x40,0x49,0x40,0x4F,0xC0,0x42,0x00,0x44,0x00,0xA8,0x00,0
-x9F,0xE0,0x00,0x00,
188
189 //"旋",0x42,0x00,0x23,0xE0,0xF4,0x00,0x4F,0xE0,0x71,0x20,0x55,0x40,0x55,0x00,0x55,0xE0,0x55,0x00,0xB7,0x00
-,0x89,0xE0,0x00,0x00,
190 //"转",0x21,0x00,0xF9,0x00,0x47,0xE0,0x61,0x00,0xA7,0xE0,0xFA,0x00,0x23,0xC0,0x38,0x40,0xE0,0x80,0x23,0x00
-,0x20,0x80,0x00,0x00,
191 "方",0x04,0x00,0x02,0x40,0xFF,0xE0,0x08,0x00,0x0F,0x80,0x08,0x80,0x08,0x80,0x10,0x80,0x10,0x80,0x20,0x80,0
C51 COMPILER V6.12 SHOWFUN 06/05/2007 15:43:31 PAGE 5
-xC7,0x00,0x00,0x00,
192 "向",0x04,0x00,0x08,0x40,0x7F,0xE0,0x40,0x40,0x5F,0x40,0x51,0x40,0x51,0x40,0x5F,0x40,0x40,0x40,0x40,0x40,0
-x41,0xC0,0x00,0x00,
193
194 //"时",
195 //"针",
196 };
197
198 uchar gCurRow,gCurCol; // 图形当前行、列存储,行高16点,列宽8点
199 uchar tCurRow,tCurCol; // 文本当前行、列存储,行高8点 ,列宽8点
200 uchar ShowModeSW; // 当前显示模式
201 uint txthome,grhome;
202
203 /******************************************************************************/
204 uchar fnGetRow();
205 uchar fnGetCol();
206 uchar fnST01(); // 状态位STA1,STA0判断(读写指令和读写数据)
207 uchar fnST2(); // 状态位ST2判断(数据自动读状态)
208 uchar fnST3(); // 状态位ST3判断(数据自动写状态)
209 uchar fnST6(); // 状态位ST6判断(屏读/屏拷贝状态)
210 uchar fnPR1(uchar uCmd,uchar uPar1,uchar uPar2); // 写双参数的指令
211 uchar fnPR11(uchar uCmd,uchar uPar1); // 写单参数的指令
212 uchar fnPR12(uchar uCmd); // 写无参数的指令
213 uchar fnPR13(uchar uData); // 写数据
214 uchar fnPR2(); // 读数据
215 void fnSetPos(uchar urow, uchar ucol); // 设置当前地址
216 void cursor(uchar uRow, uchar uCol); //设置当前显示行、列
217 void at(unsigned char x,unsigned char y);/*设定文本x,y值*/
218 void cls(); // 清屏
219 char fnLCMInit(); // LCM 初始化
220 void charout(uchar *str); //ASCII(8*8) 显示函数
221 uchar dprintf(uchar x,uchar y,char *fmt);// ASCII(8*16) 及 汉字(16*16) 显示函数
222 void OutToLCD(uchar Dat,uchar x,uchar y);//显示辅助函数
223
224 void SetShowMode(uchar newShowModeSW);
225 void Line( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, bit Mode);
226 void Pixel(unsigned char PointX,unsigned char PointY, bit Mode);
227
228 uchar fnGetRow(void)
229 {
230 1 return gCurRow;
231 1 }
232
233 uchar fnGetCol(void)
234 {
235 1 return gCurCol;
236 1 }
237
238 uchar fnST01(void) // 状态位STA1,STA0判断(读写指令和读写数据)
239 {
240 1 uchar i;
241 1
242 1 for(i=10;i>0;i--)
243 1 {
244 2 if((LCMCW & 0x03) == 0x03)
245 2 break;
246 2 }
247 1 return i; // 若返回零,说明错误
248 1 }
249
250 uchar fnST2(void) // 状态位ST2判断(数据自动读状态)
251 {
C51 COMPILER V6.12 SHOWFUN 06/05/2007 15:43:31 PAGE 6
252 1 uchar i;
253 1
254 1 for(i=10;i>0;i--)
255 1 {
256 2 if((LCMCW & 0x04) == 0x04)
257 2 break;
258 2 }
259 1 return i; // 若返回零,说明错误
260 1 }
261
262 uchar fnST3(void) // 状态位ST3判断(数据自动写状态)
263 {
264 1 uchar i;
265 1
266 1 for(i=10;i>0;i--)
267 1 {
268 2 if((LCMCW & 0x08) == 0x08)
269 2 break;
270 2 }
271 1 return i; // 若返回零,说明错误
272 1 }
273
274 uchar fnST6(void) // 状态位ST6判断(屏读/屏拷贝状态)
275 {
276 1 uchar i;
277 1
278 1 for(i=10;i>0;i--)
279 1 {
280 2 if((LCMCW & 0x40) == 0x40)
281 2 break;
282 2 }
283 1 return i; // 若返回零,说明错误
284 1 }
285
286 uchar fnPR1(uchar uCmd,uchar uPar1,uchar uPar2) // 写双参数的指令
287 {
288 1 if(fnST01() == 0)
289 1 return 1;
290 1 LCMDW = uPar1;
291 1 if(fnST01() == 0)
292 1 return 2;
293 1 LCMDW = uPar2;
294 1 if(fnST01() == 0)
295 1 return 3;
296 1 LCMCW = uCmd;
297 1 return 0; // 返回0成功
298 1 }
299
300 uchar fnPR11(uchar uCmd,uchar uPar1) // 写单参数的指令
301 {
302 1 if(fnST01() == 0)
303 1 return 1;
304 1 LCMDW = uPar1;
305 1 if(fnST01() == 0)
306 1 return 2;
307 1 LCMCW = uCmd;
308 1 return 0; // 返回0成功
309 1 }
310
311 uchar fnPR12(uchar uCmd) // 写无参数的指令
312 {
313 1 if(fnST01() == 0)
C51 COMPILER V6.12 SHOWFUN 06/05/2007 15:43:31 PAGE 7
314 1 return 1;
315 1 LCMCW = uCmd;
316 1 return 0; // 返回0成功
317 1 }
318
319 uchar fnPR13(uchar uData) // 写数据
320 {
321 1 if(fnST3() == 0)
322 1 return 1;
323 1 LCMDW = uData;
324 1 return 0; // 返回0成功
325 1 }
326
327 uchar fnPR2(void) // 读数据
328 {
329 1 if(fnST01() == 0)
330 1 return 1;
331 1 return LCMDW;
332 1 }
333
334
335 void fnSetPos(uchar urow, uchar ucol) //设置当前地址
336 {
337 1 uint iPos;
338 1
339 1 iPos = urow * 20 + ucol;
340 1 fnPR1(LC_ADD_POS,iPos & 0xFF,iPos / 256);
341 1 gCurRow = urow;
342 1 gCurCol = ucol;
343 1 }
344
345 void cursor(uchar uRow, uchar uCol) //设置当前显示行、列
346 {
347 1 fnSetPos(uRow * 16, uCol);
348 1 }
349 void at(unsigned char x,unsigned char y)/*设定文本x,y值*/
350 {
351 1 uint iPos; //地址
352 1
353 1 iPos = x + y* 20;
354 1 fnPR1(LC_ADD_POS,iPos&0xff,iPos/256);
355 1 tCurRow = x;
356 1 tCurCol = y;
357 1 }
358
359 // 清屏
360 void cls(void)
361 {
362 1 uint i;
363 1
364 1 fnPR1(LC_ADD_POS,0x00,0x00); // 置地址指针
365 1 fnPR12(LC_AUT_WR); // 自动写
366 1 for(i=0;i<0x2000;i++)
367 1 {
368 2 fnST3();
369 2 fnPR13(0x00); // 写数据
370 2 }
371 1 fnPR12(LC_AUT_OVR); // 自动写结束
372 1 fnPR1(LC_ADD_POS,0x00,0x00); // 重置地址指针
373 1 gCurRow = 0; // 置地址指针存储变量
374 1 gCurCol = 0;
375 1 }
C51 COMPILER V6.12 SHOWFUN 06/05/2007 15:43:31 PAGE 8
376
377 // LCM 初始化
378 char fnLCMInit(void)
379 {
380 1 reset=0;
381 1 reset=1;
382 1 fnPR1(LC_TXT_STP,0x00,0x00); // 文本显示区首地址
383 1 fnPR1(LC_TXT_WID,0x14,0x00); // 文本显示区宽度
384 1 fnPR1(LC_GRH_STP,0x00,0x00); // 图形显示区首地址
385 1 fnPR1(LC_GRH_WID,0x14,0x00); // 图形显示区宽度
386 1 fnPR11(LC_CGR_POS,CGRAMSTART >> 11);
387 1 fnPR12(LC_CUR_SHP | 0x01); // 光标形状
388 1 fnPR12(LC_MOD_OR); // 显示方式设置
389 1 fnPR12(LC_DIS_SW |0x08);
390 1 grhome = GRSTART;
391 1 txthome = TXTSTART;
392 1
393 1 return 0;
394 1 }
395 void charout(uchar *str)
396 {
397 1 uchar ch,len,i,uRow,uCol ;
398 1 len=strlen(str);
399 1 i=0;
400 1 uRow = tCurRow;
401 1 uCol = tCurRow;
402 1 at(uCol,uRow);
403 1 while(i<len)
404 1 {
405 2 ch=str[i]-0x20;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -