📄 c19264.lst
字号:
232 //lin:行(0-7), column: 列(0-15)
233 //address : 字模区首地址
234 void Show88(Uchar lin,Uchar column,Uchar code *address)
235 { Uchar i;
236 1 if(column>15) {SelectScreen(3);}
237 1 else if(column<8) SelectScreen(1); //如果列数<8(0,1,2,3,4,5,6,7,9,10,11)则写在第一屏上
238 1 else {SelectScreen(2);}
239 1
240 1 SetLine(lin);
241 1 if(column>=16)column=column-16;
C51 COMPILER V8.02 C19264 02/28/2008 11:45:20 PAGE 5
242 1 if(column>=8)column=column-8;
243 1 //SetStartLine(lin);
244 1 SetColumn(column<<3);
245 1 for(i=0;i<8;i++) WriteByte( *(address+i) );
246 1 }
247
248 /*------------------------------------------------*/
249 //显示图片
250 //旋转90度 :字模被竖着切分
251 //startline :开始行
252 //startcolumn:开始列
253 //linechar :图片行点除8(图片以8*8点阵为单位)
254 //columnchar :图片列点除8(图片以8*8点阵为单位)
255 //address : 字模区首地址
256
257 /******************************************************************************
258 ** 函数名: void ShowPicture(Uchar startline,Uchar startcolumn,
259 Uchar linechar,Uchar columnchar,Uchar code *address)
260
261 ** 描述:
262
263 ** 修改的全局变量:
264
265 ** 输入参数:
266
267 ** 返回值:
268 *******************************************************************************/
269 void ShowPicture(Uchar startline,Uchar startcolumn,Uchar linechar,Uchar columnchar,Uchar code *address)
270 { Uchar i,j;
271 1 for(i=0;i<columnchar;i++)
272 1 for(j=0;j<linechar;j++)
273 1 Show88(startline+i , startcolumn+j , address+(i*linechar+j)*8 );
274 1 }
275
276
277 /*----------------------------------------------------------*/
278 //显示一个汉字
279 //旋转90度:字模被竖着切分
280 //lin:行(0-3), column: 列(0-15)
281 //hzcode: 汉字代码(自定义的)
282 //uchar code HZtable
283 void ShowHZ(Uchar lin,Uchar column,Uchar code *address)
284 {
285 1 lin=lin<<1; //lin*2
286 1 Show88(lin,column,address);
287 1 Show88(lin,column+1,address+8);
288 1 Show88(lin+1,column,address+16);
289 1 Show88(lin+1,column+1,address+24);
290 1 }
291
292 void Display_Chinese(unsigned int UniCode,Uchar X,Uint Y)
293 {
294 1 Uchar i;
295 1 Uchar * ImgData;
296 1 Uint CodeID;
297 1
298 1 for(i=0;i<hzNum;i++)
299 1 {
300 2 if( (hzIndex[2*i]==(Uchar)(UniCode>>8)) && (hzIndex[2*i+1]==(Uchar)UniCode) )
301 2 {
302 3 CodeID=i; break;
303 3 }
C51 COMPILER V8.02 C19264 02/28/2008 11:45:20 PAGE 6
304 2 }
305 1 ImgData=&hzdot[CodeID*32];
306 1 ShowHZ(X,Y,ImgData);
307 1
308 1 }
309
310 void Display_ASCII(Uchar Char,Uchar X,Uint Y)
311 {
312 1 Uchar code * ImgData;
313 1 {
314 2
315 2 ImgData=&ASC_MSK[(Char-0x20)*16];
316 2
317 2 Show88(2*X,Y,ImgData);
318 2
319 2 ImgData=&ASC_MSK[(Char-0x20)*16+8];
320 2
321 2 Show88(2*X+1,Y,ImgData);
322 2 }
323 1 }
324 /******************************************************************************
325 ** 函数名: void Display_Number(Uint Number,Uchar X,Uint Y,Uchar Lenth)
326
327 ** 描述: 显示一串数字
328
329 ** 修改的全局变量:
330
331 ** 输入参数:
332
333 ** 返回值:
334 *******************************************************************************/
335 void Display_Number(Uint Number,Uchar X,Uint Y,Uchar Lenth)
336 { Uchar DispNum;
337 1 Y=Y+Lenth-1;
338 1 for(;Lenth>0;Lenth--)
339 1 {
340 2
341 2 DispNum=Number%10+0x30;
342 2 Display_ASCII(DispNum,X,Y);
343 2 Y--;
344 2 Number=Number/10;
345 2 }
346 1 }
347
348 /******************************************************************************
349 ** 函数名: void Display_String(Uchar code *p,Uchar X,Uint Y,Uchar lenth)
350
351 ** 描述: 显示一个字符串
352
353 ** 修改的全局变量:
354
355 ** 输入参数: Uchar lenth: 字符串长度
356
357 ** 返回值:
358 *******************************************************************************/
359 void Display_String(Uchar code *p,Uchar X,Uint Y,Uchar lenth)
360 { Uchar i;
361 1 for(i=0;i<lenth;i++)
362 1 {
363 2 if(p[i]<0x80) {Display_ASCII(p[i],X,Y);Y++;} //ASCII
364 2 else
365 2 {
C51 COMPILER V8.02 C19264 02/28/2008 11:45:20 PAGE 7
366 3 Display_Chinese((p[i])*256+p[i+1],X,Y);//中文
367 3 i++;
368 3 Y++;
369 3 Y++;
370 3 }
371 2
372 2 }
373 1
374 1 }
375 void Pixel(unsigned int PointX,unsigned int PointY )
376 {
377 1 unsigned char dat;
378 1 unsigned char shift;
379 1 if(PointX>191)return;
380 1 if(PointX>127) {SelectScreen(3);}
381 1 else if(PointX<64) SelectScreen(1); //如果列数<8(0,1,2,3,4,5,6,7,9,10,11)则写在第一屏上
382 1 else {SelectScreen(2);}
383 1
384 1 SetLine(PointY/8);
385 1
386 1 if(PointX>=128)PointX=PointX-128;
387 1 if(PointX>=64)PointX=PointX-64;
388 1 SetColumn(PointX);
389 1 dat=ReadByte();
390 1
391 1 SetLine(PointY/8);
392 1 SetColumn(PointX);
393 1 //dat = 0;
394 1 shift= PointY%8;
395 1 dat |=(1<<shift);
396 1 WriteByte(dat);
397 1 }
398
399 /***************************************************************************************/
400 /*函数:void Line( unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2)
401 //描述:划线函数
402 //参数:x1:起始点横坐标(0-127),y1:起始点纵坐标(0-31)
403 // x2:终止点横坐标(0-127),y2:终止点纵坐标(0-31)
404 //
405 //返回:无
406 /***************************************************************************************/
407 void Line( unsigned int x1, unsigned int y1, unsigned int x2, unsigned int y2)
408 {
409 1 unsigned int x,y;
410 1 double k,b;
411 1
412 1 if( abs(y1-y2) <= abs(x1-x2) ) // |k|<=1
413 1 {
414 2 k=(float)((float)y2-(float)y1) / (float)((float)x2-(float)x1) ;
415 2 b=y1-k*x1;//
416 2 if( x1 <= x2 )
417 2 {
418 3 for(x=x1;x<=x2;x++)
419 3 {
420 4 y=k*x+b;
421 4 Pixel(x, y);
422 4 }
423 3 }
424 2 else
425 2 {
426 3 for(x=x2;x<=x1;x++)
427 3 {
C51 COMPILER V8.02 C19264 02/28/2008 11:45:20 PAGE 8
428 4 y=k*x+b;
429 4 Pixel(x, y );
430 4 }
431 3 }
432 2 }
433 1 else // abs(y1-y2) > abs(x1-x2) |K|>1
434 1 {
435 2 k=(float)((float)x2-(float)x1) / (float)((float)y2-(float)y1) ;
436 2 b=x1-k*y1;
437 2 if( y1 <= y2 )
438 2 {
439 3 for(y=y1;y<=y2;y++)
440 3 {
441 4 x=k*y+b;
442 4 Pixel( x , y );
443 4 }
444 3 }
445 2 else
446 2 {
447 3 for(y=y2;y<=y1;y++)
448 3 {
449 4 x=k*y+b;
450 4 Pixel( x , y );
451 4 }
452 3 }
453 2 }
454 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2358 ----
CONSTANT SIZE = 5160 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 85 ----
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 + -