⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t6963.lst

📁 液晶6963模块 240*64,外接PS2键盘,多级菜单.这是我工作中的一个程序,有兴趣的可以看
💻 LST
📖 第 1 页 / 共 2 页
字号:
 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 + -