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

📄 12232.lst

📁 12232驱动程序 调试通过 中北大学信息与通信工程学院 沈阳 QQ:184676957
💻 LST
📖 第 1 页 / 共 3 页
字号:
 382   3        send_md(0x00);
 383   3        send_sd(0x00);
 384   3           }
 385   2          }
 386   1      }     
 387          
 388          ////////////////////////////////////////////////////////////////////////////////
 389          //调用方式:void set_page(uchar page)
 390          //函数说明:同时设置主(右)从(左)显示页为0-3页
 391          ////////////////////////////////////////////////////////////////////////////////
 392          void set_page(uchar page)
 393          {
 394   1          send_mi(page_addr_set|page);
 395   1          send_si(page_addr_set|page);
 396   1      }
 397          
 398          ////////////////////////////////////////////////////////////////////////////////
 399          //调用方式:void SetAddress(uchar address)
 400          //函数说明:同时设置主(右)从(左)列地址为0-61列
 401          ////////////////////////////////////////////////////////////////////////////////
 402          void set_address(uchar address)
 403          {
 404   1          send_mi(address&0x7F);  //&0x7F,考虑到防止越限
 405   1          send_si(address&0x7F);
 406   1      }
 407          
 408          ////////////////////////////////////////////////////////////////////////////////
 409          //调用方式:void putchar_l(uchar c)
 410          //函数说明:在右页(从窗口)当前地址画一个字节(8点)
 411          ////////////////////////////////////////////////////////////////////////////////
 412          void putchar_l(uchar c)
 413          {
 414   1          send_md(c);
 415   1      }
 416          
 417          ////////////////////////////////////////////////////////////////////////////////
 418          //调用方式:void putchar_r(uchar c)
 419          //函数说明:在左页(主窗口)当前地址画一个字节(8点)
 420          ////////////////////////////////////////////////////////////////////////////////
 421          void putchar_r(uchar c)
 422          {
 423   1          send_sd(c);
 424   1      }    
 425          
 426          ////////////////////////////////////////////////////////////////////////////////
 427          //调用方式:void draw_bmp(uchar col,uchar layer,uchar width,uchar *bmp)
C51 COMPILER V7.50   12232                                                                 10/21/2007 15:38:56 PAGE 8   

 428          //函数说明:画一个图,横坐标是col,layer表示上下层,width是图形的宽,高固定16
 429          //          bmp是图形指针
 430          //          使用zimo21软件,采用纵向取模下高位得到bmp数据。
 431          //  col     图型的起始位置0~121
 432          // layer    图形的位置(Y坐标)0-下半部分 非0-上半部分
 433          // width    图形宽度8,16可选
 434          //  bmp     图形数据指针
 435          ////////////////////////////////////////////////////////////////////////////////
 436          void draw_bmp(uchar col,uchar layer,uchar width,uchar *bmp)
 437          {
 438   1       uchar x;        
 439   1       uchar address;                  //address表示显存的物理地址
 440   1       uchar p=0;         
 441   1       uchar page=0;
 442   1       uchar window=0;         //page表示上下两页,window表示左右窗口(0左,1右)
 443   1          if (layer) page=2;              //左-主窗口,右-从窗口    
 444   1          for (x=col; x<col+width; x++)
 445   1          {   
 446   2           if (x>121)return;           //防止显示乱码
 447   2              if (x>60)     //左右窗口定位
 448   2        {
 449   3         window=1;               //右-从窗口
 450   3         address=x%61;
 451   3        }
 452   2              else
 453   2            address=x;              //主窗口输出  
 454   2                set_page(page);             //上层数据输出
 455   2            set_address(address);       
 456   2              if (window)     
 457   2                putchar_r(bmp[p]);        
 458   2              else 
 459   2                putchar_l(bmp[p]);        
 460   2      
 461   2              set_page(page+1);           //下层数据输出
 462   2              set_address(address);       //列保持不变 
 463   2              
 464   2              if (window)     
 465   2                 putchar_r(bmp[p+width]);     
 466   2        else 
 467   2                 putchar_l(bmp[p+width]);       
 468   2      
 469   2              p++;
 470   2          }
 471   1      }
 472          
 473          ////////////////////////////////////////////////////////////////////////////////
 474          //函数:void disp_one_ascii(uchar col,uchar layer,uchar ascii_code)
 475          //说明:显示单个ASCII码col-列;layer-上下行:1-上,0-下;ascii_code:所要显示德ASCCII码
 476          ////////////////////////////////////////////////////////////////////////////////
 477          void disp_one_ascii(uchar col,uchar layer,uchar ascii_code,uchar mode)
 478          {
 479   1       uchar i;
 480   1       for(i=0;i<16;i++)                //ASCII码显示占用16个字节
 481   1       {   
 482   2        if(mode)dot_buffer[i]=~ascii[(ascii_code-0x20)*16 + i];
 483   2        else    dot_buffer[i]= ascii[(ascii_code-0x20)*16 + i]; 
 484   2       }  
 485   1       draw_bmp(col,layer,8,dot_buffer);
 486   1      }
 487          
 488          ////////////////////////////////////////////////////////////////////////////////
 489          //函数:void disp_ram_data(uchar col,uchar layer,uchar n,uchar mode)
C51 COMPILER V7.50   12232                                                                 10/21/2007 15:38:56 PAGE 9   

 490          //说明:显示小于4个的十进制数字//修改缓冲区的大小可以扩展显示
 491          ////////////////////////////////////////////////////////////////////////////////
 492          void disp_ram_data(uchar col,uchar layer,uchar n,uchar mode)
 493          {
 494   1           while(n--)
 495   1        {
 496   2        if(mode)disp_one_ascii(col,layer,disp_buffer[n]+0x30,1);
 497   2        else    disp_one_ascii(col,layer,disp_buffer[n]+0x30,0);
 498   2        col += 8;
 499   2        }
 500   1      }
 501          
 502          ////////////////////////////////////////////////////////////////////////////////
 503          //函数:void dprintf(uchar col,uchar layer,uchar *ptr,uchar mode)
 504          //说明:ASCII(8*16) 和 汉字(16*16)显示函数
 505          ////////////////////////////////////////////////////////////////////////////////
 506          void dprintf(uchar col,uchar layer,uchar *ptr,uchar mode)
 507          {
 508   1       uchar c1,c2;
 509   1       uchar i,j,k;
 510   1       uchar ulen=0;
 511   1       uchar ucol,ulayer;
 512   1       ucol = col;   
 513   1       ulayer = layer;
 514   1       while (ptr[ulen]!= 0)ulen++; //探测字串长度
 515   1       i=0;
 516   1       while(i<ulen)
 517   1       {
 518   2        c1 = ptr[i];
 519   2        c2 = ptr[i+1];         //ASCII字符与汉字内码的区别在于128做分界;大于128的为汉字码
 520   2        if(c1 <=128)       //ASCII
 521   2        {   
 522   3          if(mode)disp_one_ascii(ucol,ulayer,c1,1);//反色显示
 523   3          else    disp_one_ascii(ucol,ulayer,c1,0);//正常显示
 524   3          ucol+=8;
 525   3          i++;                                                 //ASCII码的处理
 526   3        }
 527   2        else                                                                   //中文
 528   2        {
 529   3             for(j=0;j<sizeof(hz16)/sizeof(hz16[0]);j++)                              
 530   3             {                                                 //查找定位当前汉字的点阵区
 531   4              if((c1 == hz16[j].index[0]) && (c2 == hz16[j].index[1]))
 532   4              break;
 533   4             }
 534   3             for(k=0;k<32;k++)
 535   3          {   if(mode)dot_buffer[k]=~hz16[j].zimo[k];
 536   4              else    dot_buffer[k]= hz16[j].zimo[k];
 537   4          } 
 538   3             draw_bmp(ucol,ulayer,16,dot_buffer);
 539   3             ucol+=16;
 540   3          i+=2;                     //中文的处理
 541   3        }
 542   2       }
 543   1      } 
 544          ////////////////////////////////////////////////////////////////////////////////
 545          void main(void)
 546          { 
 547   1         uchar i;
 548   1         uint  j;
 549   1      //   RST=1;
 550   1         for(i=0;i<10;i++)for(j=1;j<10;j++);       //开机延时
 551   1         lcd_init(); 
C51 COMPILER V7.50   12232                                                                 10/21/2007 15:38:56 PAGE 10  

 552   1         lcd_clr();   
 553   1         dprintf(0,0,"   测试成功!!   ",1);       //说明/在up  行从第10列开始显示/正常显示                      
             -     
 554   1         dprintf(2,1,"2007.10.21 沈阳",0);       //说明/在up  行从第10列开始显示/正常显示
 555   1      //   disp_ram_data(10,1,8,0);               //说明/在dowm行从第10列开始显示/反白显示
 556   1         while(1); 
 557   1      }
 558          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    952    ----
   CONSTANT SIZE    =   1609    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     42      39
   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 + -