📄 t6963.lst
字号:
209 1 else
210 1 hzx1(x,y,5,un);
211 1 }
212 void xsdir(uchar x,uchar y,uchar n,bit un)
213 { if(n==0)
214 1 hzx1(x,y,0,un);
215 1 else if(n==1)
216 1 hzx1(x,y,1,un);
217 1 else if(n==2)
218 1 hzx1(x,y,2,un);
219 1 else if(n>=3)
220 1 hzx1(x,y,3,un);
221 1 }
222
223 /* 显示32*32点阵汉字,反白 */
224 void tx(uchar x,uchar y,uchar n,bit un) {
225 1 unsigned char i,j;
226 1 unsigned char k=n;
227 1 for (i=0;i<32;i++)
228 1 { for (j=0;j<4;j++)
229 2 { ag(j+x,y*8+i);
230 3 if (un==0)
231 3 disp(fot1[k*128+i*4+j]);
232 3 else
233 3 disp(255-fot1[k*128+i*4+j]);
234 3 }
235 2 }
236 1 x+=2;
237 1 if (x>=30) {
238 2 x=0;
239 2 y+=2;
240 2 if (y>=8) y=0;
241 2 }
C51 COMPILER V7.07 T6963 01/11/2005 11:05:28 PAGE 5
242 1 }
243
244
245
246
247
248 /*清屏*/
249 void ClearScreen(void)
250 {
251 1 unsigned int i;
252 1
253 1 write(0);write(0);ctrl(0x24);
254 1 ctrl(0xb0); /*自动写方式*/
255 1 for (i=0;i<19200;i++) {
256 2 autowrite(0x0);
257 2 }
258 1 ctrl(0xb2);/*结束自动写方式 */
259 1 }
260
261 /* 划点*/
262 /*
263 void Pixel(unsigned char PointX,unsigned char PointY, bit Mode)
264 {
265 uint StartAddr=0;
266 uchar dat;
267 StartAddr=PointY*30 + PointX/8;
268 dat=0xf0+7-PointX%8;
269 write((unsigned char)(StartAddr));
270 write((unsigned char)(StartAddr>>8));
271 ctrl(0x24);
272 if(Mode) dat=dat|0x08;
273 ctrl(dat);
274 }
275 */
276 /* 划线 */
277 /* x1应大于x0,y1应大于y0.同时仅仅是0度或90度 */
278 /*void line(unsigned char x0,unsigned char y0,unsigned char x1,unsigned char y1)
279 { unsigned char x=x1-x0,y=y1-y0,xx,yy;//temp;
280
281 if (y==0)
282 { yy=y0;
283 for (xx=x0;xx<x1;xx++)
284 Pixel(xx,yy,1);
285
286 }
287 else if(x==0)
288 { xx=x0;
289 for (yy=y0;yy<y1;yy++) {
290 Pixel(xx,yy,1);
291 }
292 }
293 }
294 */
295 // ASCII(8*16) 及 汉字(16*16) 显示函数
296 // x不能大于30(行宽),y不能大于6,字符数不能多于30
297 // 例子: dprintf(3,1,"当前试验:KPa");
298
299
300 void Lcd_printf(uchar x,uchar y,char *fmt,bit zt,bit un)
301 {
302 1 char c1,c2;
303 1 char idata tmpBuf[40]; // LCD显示数据缓冲区
C51 COMPILER V7.07 T6963 01/11/2005 11:05:28 PAGE 6
304 1 uchar i=0,j,uLen;
305 1 uchar Temp;
306 1
307 1 uLen=0;
308 1 while(*fmt!=0x00)
309 1 {tmpBuf[uLen++]=*fmt++;
310 2 }
311 1 while(i<uLen)
312 1 {
313 2 c1 = tmpBuf[i];
314 2 c2 = tmpBuf[i+1];
315 2 if(c1 >= 0)
316 2 { // ASCII
317 3
318 3 da(x,y,(c1),un);
319 3 i++;
320 3 x++;
321 3 }
322 2 else
323 2 { // 中文
324 3 if(zt==0)
325 3 { Temp=((sizeof(hzmb)-1)/2);
326 4 for(j=0;j<Temp;j++)
327 4 {
328 5 if(c1 == hzmb[j*2] && c2 == hzmb[j*2+1])
329 5 break;
330 5 }
331 4 if(j>=Temp)
332 4 j=0;// 未找到该字
333 4 hzx(x,y,j,un);
334 4 }
335 3 i+=2;
336 3 x+=2;
337 3 if (x>=30)
338 3 {
339 4 x=0;
340 4 y+=2;
341 4 if (y>=6) y=0;
342 4 }
343 3 }
344 2
345 2 }
346 1 }
347
348 void Lcd_Num_Uint(char x,uchar y,uint ad,uchar n)
349 { uchar a1,a2,a3,a4,a5;
350 1 a5=ad/10000;
351 1 ad=ad-a5*10000;
352 1 a4=ad/1000;
353 1 ad=ad-a4*1000;
354 1 a3=ad/100;
355 1 ad=ad-a3*100;
356 1 a2=ad/10;
357 1 a1=ad%10;
358 1 if(n>=5) dn(x++,y,a5,0);
359 1 if(n>=4) dn(x++,y,a4,0);
360 1 if(n>=3) dn(x++,y,a3,0);
361 1 if(n>=2) dn(x++,y,a2,0);
362 1 dn(x++,y,a1,0);
363 1
364 1 }
365 void Lcd_Num_int(char x,uchar y,int ad,uchar n)//特殊显示形式,加负号,增加小数点,4位
C51 COMPILER V7.07 T6963 01/11/2005 11:05:28 PAGE 7
366 { uchar a1,a2,a3,a4;
367 1 if(ad<0)
368 1 { if(n==1)
369 2 da(x++,y,'-',0);
370 2 ad=0-ad;
371 2 }
372 1 else
373 1 { if(n==1)
374 2 da(x++,y,' ',0);
375 2 }
376 1 a4=ad/1000;
377 1 ad=ad-a4*1000;
378 1 a3=ad/100;
379 1 ad=ad-a3*100;
380 1 a2=ad/10;
381 1 a1=ad%10;
382 1 if(a4>0)
383 1 dn(x++,y,a4,0);
384 1 else
385 1 da(x++,y,' ',0);
386 1 if(a3>0)
387 1 dn(x++,y,a3,0);
388 1 else
389 1 { if(a4>0) dn(x++,y,a3,0);
390 2 else da(x++,y,' ',0);
391 2 }
392 1 if(a2>0)
393 1 dn(x++,y,a2,0);
394 1 else
395 1 dn(x++,y,0,0);
396 1 da(x++,y,'.',0);
397 1 dn(x++,y,a1,0);
398 1 }
399
400 void Lcd_Num_Uchar(char x,uchar y,uchar ad,uchar n)//n显示的位数
401 { uchar a1,a2,a3;
402 1 a3=ad/100;
403 1 ad=(ad-a3*100);
404 1 a2=ad/10;
405 1 a1=ad%10;
406 1 if(n>=3) dn(x++,y,a3,0);
407 1 if(n>=2) dn(x++,y,a2,0);
408 1 dn(x++,y,a1,0);
409 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2524 ----
CONSTANT SIZE = 2989 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 56
IDATA SIZE = ---- 40
BIT SIZE = ---- 10
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -