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

📄 t6963c.lst

📁 51单片机游戏程序包括图纸
💻 LST
📖 第 1 页 / 共 2 页
字号:
 283   1              uint temp;
 284   1          iPos =y * 16 + x + grshome;
 285   1              temp=iPos;
 286   1              x=iPos>>8;
 287   1              y=temp&0x00ff;
 288   1          WRCommandTwo(y,x,0x24);
 289   1      }
 290          
 291          //**************************************************************************
 292          //= 函数原型: void Point(uchar x,uchar y, bit Mode)
 293          //= 功    能: 在指定坐标位置显示一个点
 294          //= 参    数: 坐标,显示点或清除点                               
 295          //= 返 回 值:
 296          //= 函数性质:私有函数
 297          //= Mode 1:显示 0:清除该点
 298          //**************************************************************************
 299          void Point(uchar x,uchar y, bit Mode)
 300          {
 301   1          uint Address;
 302   1              uint temp;
 303   1          uchar dat;
C51 COMPILER V7.01  T6963C                                                                 04/27/2007 22:08:22 PAGE 6   

 304   1          Address=(uint)y*16 + (x>>3) + grshome;        //地址转化
 305   1          dat=0xF0+7-x%8;        //产生位操作命令画点的数据
 306   1          if(Mode) dat=dat|0x08;
 307   1              temp=Address;
 308   1              x=Address>>8;
 309   1              y=temp&0x00ff;
 310   1              WRCommandTwo(y,x,0x24);  //设置该点所在单元地址
 311   1          WRCommand(dat);         // 利用位操作命令画点
 312   1      }
 313          
 314          //*****************************************************************************
 315          //= 函数原型: void char_wr(uchar x,uchar y, uchar *p,uchar dataa,uchar n)
 316          //= 功    能: 连续写入一个或多个字符
 317          //= 参    数: 坐标,要显示的字符数组,显示的单个字符,要显示的字符个数                           
 318          //= 返 回 值:
 319          //= 函数性质:私有函数
 320          //当n=0一次性写入一个字符,否则一次性写入多个字符
 321          //*****************************************************************************
 322          
 323          void char_wr(uchar x,uchar y, uchar *p,uchar dataa,uchar n)
 324          {
 325   1          uchar i;
 326   1              char_addr_Pointer_Set(x,y);     //写入地址
 327   1              if(n==0)
 328   1                WRCommandOne(dataa,0xc0);       //一次写入数据
 329   1              else
 330   1                {
 331   2                  WRCommand(0xb0);//进入自动写
 332   2                      for(i=0;i<n;i++)
 333   2                        WRData(p[i]);  
 334   2                        WRCommand(0xb2);   //退出自动写
 335   2                }
 336   1      }
 337          
 338          
 339          //******************************************************************************
 340          //= 函数原型: void hanzhi(uchar x,uchar y, uchar m,uchar n)
 341          //= 功    能: 连续写入一个或多个汉字
 342          //= 参    数: 坐标,要显示的第一个汉字的位置,连续显示汉字的个数。                               
 343          //= 返 回 值:
 344          //= 函数性质:私有函数
 345          //当n=1一次性写入一个字符,否则一次性写入多个字符
 346          //*****************************************************************************
 347          
 348          void hanzhi(uchar x,uchar y, uchar m,uchar n)
 349          {
 350   1          uchar i;
 351   1          uchar CGRam;
 352   1              CGRam=0x80+4*m;  //第m个字符
 353   1              for(i=0;i<n;i++)
 354   1              {
 355   2                char_addr_Pointer_Set(x,y); //汉字左上角写入
 356   2                WRCommandOne(CGRam,0xc0);       //一次写入数据;
 357   2                CGRam++;
 358   2                y++;
 359   2                char_addr_Pointer_Set(x,y); //汉字左下角写入
 360   2                WRCommandOne(CGRam,0xc0);
 361   2                CGRam++;
 362   2                x++;
 363   2                y--;
 364   2                char_addr_Pointer_Set(x,y); //汉字右上角写入
 365   2                WRCommandOne(CGRam,0xc0);
C51 COMPILER V7.01  T6963C                                                                 04/27/2007 22:08:22 PAGE 7   

 366   2                CGRam++;
 367   2                y++;
 368   2                char_addr_Pointer_Set(x,y); //汉字右下角写入
 369   2                WRCommandOne(CGRam,0xc0);
 370   2                CGRam++;
 371   2                x++;
 372   2                y--;
 373   2                if(x==16)
 374   2                {
 375   3                  x=0;                //写满一行,从第二行开始
 376   3                      y++;
 377   3                      y++;
 378   3                }
 379   2              }
 380   1      }
 381          
 382          //******************************************************************************
 383          //= 函数原型: void fill_CGRAM(uchar *p,uchar m,uinit n)
 384          //= 功    能: 填充CGRAM数据
 385          //= 参    数: 字符数组,写入第m个汉字,循环写入的汉字个数
 386          //= 返 回 值:
 387          //= 函数性质:私有函数
 388          //*//**************************************************************************
 389          
 390          void fill_CGRAM(uchar *p,uchar m,uint n)
 391          {
 392   1        uchar xx;
 393   1        uchar yy;
 394   1        uint i;
 395   1        uint ADCGram;
 396   1        uint temp;
 397   1        ADCGram=0x1c00+32*m;  //确定CGRAM地址
 398   1        temp=ADCGram;
 399   1        xx=ADCGram>>8;
 400   1        yy=temp&0x00ff;
 401   1        WRCommandTwo(yy,xx,0x24);
 402   1      
 403   1        n=n*32;
 404   1        WRCommand(0xb0);
 405   1        for(i=0;i<n;i++)
 406   1              WRData(p[i]);
 407   1        WRCommand(0xb2);   //退出自动写
 408   1      }
 409          
 410          //*******************************************************************************
 411          //= 函数原型: void Wr_line(uchar type,uchar x1,uchar y1, uchar Long,uchar mode)
 412          //= 功    能: 画一条横线或一条竖线
 413          //= 参    数: type=1为横线,否则为竖线,(x1,y1)为起始点,Long为长度,mode=1为显示                               
 414          //= 返 回 值:
 415          //= 函数性质:公有函数
 416          //*******************************************************************************  
 417          
 418          void Wr_line(uchar type,uchar x1,uchar y1, uchar Long,uchar mode){
 419   1       uchar i;
 420   1      if(type==1)
 421   1       {
 422   2         for(i=0;i<Long;i++)   //画横线
 423   2              { 
 424   3                 if(mode==1)
 425   3                        Point(x1+i,y1,1);
 426   3                 else  
 427   3                        Point(x1+i,y1,0);
C51 COMPILER V7.01  T6963C                                                                 04/27/2007 22:08:22 PAGE 8   

 428   3               }
 429   2               return;
 430   2        }
 431   1        
 432   1      else
 433   1       {
 434   2          for(i=0;i<Long;i++)         //画竖线
 435   2              { 
 436   3                 if(mode==1)
 437   3                        Point(x1,y1+i,1);
 438   3                 else  
 439   3                        Point(x1,y1+i,0);
 440   3              }
 441   2               return; 
 442   2        }
 443   1      }
 444          
 445          //*****************************************************************************
 446          //= 函数原型: void Show_Image(uchar x1,uchar y1,uchar x2,uchar y2,bit mode)
 447          //= 功    能: 填充区域(x1,y1) (x2,y2)
 448          //= 参    数: (x1,y1)为起始点,(x2,y2)为终点  mode=1显示                               
 449          //= 返 回 值:
 450          //= 函数性质:私有函数
 451          //= 注    意:以点为单位
 452          //*****************************************************************************          
 453          
 454          void Show_Image(uchar x1,uchar y1,uchar x2,uchar y2,bit mode)
 455          {
 456   1        char temp=x1;
 457   1        if(mode)   
 458   1         {
 459   2               for(;y1<=y2;y1++)
 460   2                 for(x1=temp;x1<=x2;x1++)
 461   2                   Point(x1,y1,1);
 462   2         }
 463   1         else
 464   1         {
 465   2               for(;y1<=y2;y1++)
 466   2                 for(x1=temp;x1<=x2;x1++)
 467   2                   Point(x1,y1,0);
 468   2         }
 469   1      }
 470          
 471          //**********************************************************************************
 472          //= 函数原型: void image(uchar x1,uchar y1,uchar x2,uchar y2,uchar *p,bit mode)
 473          //= 功    能: 在设定的区域连续写入多个字节,作图形显示用
 474          //= 参    数: (x1,y1)为起始点,(x2,y2)为终点  *po为图形数组,mode=1显示 mode=0清除                     
 475          //= 返 回 值:
 476          //= 函数性质:私有函数
 477          //= 操作方法:当p=0,mode=1时,连续输入0xff,作反显用,当p=0,mode=0时,连续输入0x00,作 
 478          //=            消除反显用,当p!=0时,作输入图像用,此时mode无效
 479          //= 注    意:参数的数据范围
 480          //**********************************************************************************  
 481          void image(uchar x1,uchar y1,uchar x2,uchar y2,uchar *p,bit mode)
 482          {
 483   1         uchar temp=x1;
 484   1         uint i=0;
 485   1         for(;y1<=y2;y1++)
 486   1         {
 487   2          x1=temp;     
 488   2          image_addr_Pointer_Set(x1,y1);      //写入地址
 489   2              WRCommand(0xb0); //进入自动写
C51 COMPILER V7.01  T6963C                                                                 04/27/2007 22:08:22 PAGE 9   

 490   2              for(;x1<=x2;x1++)
 491   2              {
 492   3                if(p==0&&mode==1)
 493   3                {
 494   4                   WRData(0xff);
 495   4                }
 496   3                else if(p==0&&mode==0)
 497   3                {
 498   4                   WRData(0x00);
 499   4                }
 500   3                else 
 501   3                {
 502   4                   WRData(p[i]);
 503   4                   i++;                //下一个字节
 504   4                }
 505   3              }
 506   2          WRCommand(0xb2);   //退出自动写 
 507   2          }
 508   1      }
 509          
 510          //******************************************************************************
 511          //= 函数原型: void negShow(uchar x1,uchar y1,uchar x2,uchar y2,bit mode)
 512          //= 功    能: 反显区域(x1,y1) (x2,y2)
 513          //= 参    数: (x1,y1)为起始点,(x2,y2)为终点  mode=1反显                               
 514          //= 返 回 值:
 515          //= 函数性质:私有函数
 516          //= 注    意:以字节为单位
 517          //******************************************************************************         
 518          void negShow(uchar x1,uchar y1,uchar x2,uchar y2,bit mode)
 519          {
 520   1         if(mode)
 521   1         {
 522   2           WRCommand(0x81);           //启用内部字符发生器,显示方式是文本与图形逻辑异或
 523   2               image(x1,y1,x2,y2,0,1);
 524   2      
 525   2              }
 526   1         else
 527   1          {
 528   2                WRCommand(0x80);              //启用内部字符发生器,显示方式是文本与图形逻辑或
 529   2                image(x1,y1,x2,y2,0,0);
 530   2               }
 531   1      }
 532          
 533          //******************************************************************************
 534          //= 函数原型: void Show_num(uchar x1,uchar y1,uchar num)
 535          //= 功    能: 在设定的位置显示一个数字
 536          //= 参    数: (x1,y1)为位置,num为数字                  
 537          //= 返 回 值:
 538          //= 函数性质:公有函数
 539          //= 注    意:以字节为单位
 540          //*****************************************************************************  
 541          void Show_num(uchar x1,uchar y1,uchar num)
 542          {
 543   1         uchar number[10]={0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19};
 544   1         char_addr_Pointer_Set(x1,y1);
 545   1         WRCommandOne(number[num],0xc0);        //一次写入数据
 546   1      }
 547          
 548          ///////////////////////////初始化LCD////////////////////////////////////////////
 549          void Init_LCD()
 550          {
 551   1         Init_LCD_Graphic();
C51 COMPILER V7.01  T6963C                                                                 04/27/2007 22:08:22 PAGE 10  

 552   1         ClrGraphic();
 553   1         fill_CGRAM(CCTable,0,22);     //将汉字写入CGRAM
 554   1      }
 555          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1119    ----
   CONSTANT SIZE    =    522    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =      4      61
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       4
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -