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

📄 lcdinit.lst

📁 移植于51单片机上的ucos。SCH51-OS是整个工程项目
💻 LST
📖 第 1 页 / 共 2 页
字号:
 183   1              write_cmd2(txtstpd1,txtstpd2,TXT_STP);          /*文本区首地址*/
 184   1              write_cmd2(txtwid,0x00,TXT_WID);                        /*文本区宽度*/
 185   1              write_cmd2(grhstpd1,grhstpd2,GRH_STP);          /*图形区首地址*/
 186   1              write_cmd2(grhwid,0x00,GRH_WID);                        /*图形区宽度*/
 187   1              write_cmd2(0x03,0x00,CGR_POS);                          /*CGRAM首地址*/
 188   1              write_cmd0(CUR_SHP | cur);                                      /*光标形状*/
 189   1              write_cmd0(mod);                                                        /*显示方式*/
 190   1              write_cmd0(DIS_SW | sw);                                        /*显示开关*/
 191   1      }
 192          
 193          /*清屏 320 = (160/8) * (128/8) = 20 * 16 = 320*/
 194          void cls(void){
 195   1              int i;
 196   1              set_Char_xy(0,0);
 197   1              for(i = 0; i < 320; i++)
 198   1                      write_one(0x00,INC_WR);
 199   1      }
 200          
 201          /*将自定义汉字码填充到CGROM */
 202          void wirte_cgrom(void){
 203   1              int i,j;
 204   1              write_cmd2(0x03,0x00,CGR_POS);                          /*CGRAM首地址*/
 205   1              set_adr(0x00,0x1c);        // CGRAM offset addr is 00001 , the lower 5 bits of 0x01,which is defined in sente
             -nce: write_cmd2(0x01,0x00,CGR_POS);
 206   1                                                      //then the user-defined CGRAM's first address is :
 207   1                                                      // 0000 0000 0000 0000 
 208   1                                               //  +0000 1                                             // the CGRAM offset addr (00001) 
 209   1                                              //   +      100 0000 0                  // user-defined code begin from addr 0x80;
 210   1                                              //       +                      000
 211   1                                              // = 0000 1100 0000 0000     // the result is just 0x0c00 in: set_adr(0x00,0x0c);
 212   1              /*自定义字符写入CGROM*/
 213   1              for(i = 0; i < HanZhi_Totals; i++)        // 一个汉字占用32个字节 
 214   1                      for(j=0;j<32;j++)
 215   1                              write_one(GB_16[i].Msk[j],INC_WR);
 216   1      }
 217          
 218          char find_chinese(uchar *hz)      //在自定义汉字库在查找所要显示的汉字的位置
 219          {
 220   1               uchar i=0;
 221   1               while(GB_16[i].Index[0]<0x80)
 222   1               {
 223   2                       if(*hz==GB_16[i].Index[0])
 224   2                                 if(*(hz+1)==GB_16[i].Index[1])
 225   2                                         return i;
 226   2                        i++;
 227   2                        if(i>20)break;  // 20 totals 
 228   2               }
 229   1               return -1;  // Error ! 
 230   1      }
 231          
 232          //**************************************************************************
 233          //= 函数原型: void Point(uchar x,uchar y, bit Mode)
 234          //= 功    能: 在指定坐标位置显示一个点
 235          //= 参    数: 坐标,显示点或清除点                               
C51 COMPILER V8.05a   LCDINIT                                                              11/09/2008 23:18:20 PAGE 5   

 236          //= 返 回 值:
 237          //= 函数性质:私有函数
 238          //= Mode 1:显示 0:清除该点
 239          //**************************************************************************
 240          void Point(uchar x,uchar y, bit Mode)
 241          {
 242   1          uint Address;
 243   1          uchar dat;
 244   1          Address=(uint)y*LCD_CHAR + (x>>3) + GraphHome;        //地址转化
 245   1          dat=BIT_OP+7-x%8;        //产生位操作命令画点的数据
 246   1          if(Mode) dat=dat|0x08;
 247   1              set_adr(Address&0xff,Address/0xff);
 248   1          write_cmd0(dat);         // 利用位操作命令画点
 249   1      }
 250          
 251          void Char_Wr(uchar x,uchar y, uchar ch,bit Invert)
 252          {
 253   1              uchar temp;
 254   1              temp = y * LCD_CHAR + x + CharHome; // x moves one pixel when add one ; 
 255   1                                                                              // up-left corner is (0,0) , horizontal is x, vertical is y.
 256   1                                                                              // y moves eight pixel(one char) when add one.
 257   1              set_adr(temp&0xff,temp/0xff);
 258   1              if(ch<0x80)  // Ascii character.
 259   1                      write_one(ch-0x20,INC_WR);      // ASCII :0x30->'0', T6963 internal code :0x10->'0',so 0x30-0x10=0x20;
 260   1              else
 261   1                      write_one(ch,INC_WR);
 262   1      }
*** WARNING C280 IN LINE 251 OF LCDINIT.C: 'Invert': unreferenced local variable
 263          
 264          //******************************************************************************
 265          //= 函数原型: void hanzhi(uchar x,uchar y, uchar m,uchar n)
 266          //= 功    能: 连续写入一个或多个汉字
 267          //= 参    数: 坐标,要显示的第一个汉字的位置,连续显示汉字的个数。                               
 268          //= 返 回 值:
 269          //= 函数性质:私有函数
 270          //当n=1一次性写入一个字符,否则一次性写入多个字符
 271          //*****************************************************************************
 272          
 273          void hanzhi(uchar x,uchar y, uchar m, bit Invert)
 274          {
 275   1          uchar CGRam;
 276   1              CGRam=0x80+4*m;  //第m个字符
 277   1                                               // find the corresponding address in CGROM. Because 0x00~0x7F is the address of T6963's internal Asc
             -ii code.
 278   1                                              // so user-defined code is begin from 0x80,
 279   1              Char_Wr(x,y,CGRam,1);
 280   1              Char_Wr(x,y+1,CGRam+1,1);
 281   1              Char_Wr(x+1,y,CGRam+2,1);
 282   1              Char_Wr(x+1,y+1,CGRam+3,1);
 283   1      }
*** WARNING C280 IN LINE 273 OF LCDINIT.C: 'Invert': unreferenced local variable
 284          
 285          
 286          //*****************************************************************************
 287          //= 函数原型: void char_wr(uchar x,uchar y, uchar *p,uchar dataa,uchar n)
 288          //= 功    能: 连续写入一个或多个字符
 289          //= 参    数: 坐标,要显示的字符数组,显示的单个字符,要显示的字符个数                           
 290          //= 返 回 值:
 291          //= 函数性质:私有函数
 292          //当n=0一次性写入一个字符,否则一次性写入多个字符
 293          //*****************************************************************************
 294          void Str_Write(uchar x,uchar y, uchar *str,bit Invert)
C51 COMPILER V8.05a   LCDINIT                                                              11/09/2008 23:18:20 PAGE 6   

 295          {
 296   1              uchar hz[2],index;
 297   1              uchar *p=str;
 298   1              uchar xx,yy;
 299   1              xx=x;yy=y;
 300   1              while(*p!='\0')
 301   1              {
 302   2                      if(*p>=0x80)  //汉字
 303   2                       {
 304   3                          hz[0]=*p;
 305   3                          hz[1]=*(p+1);
 306   3                          index=find_chinese(hz); // fine the index 
 307   3                              hanzhi(x,y,index,1);
 308   3                              p=p+2; // 占用两个字节 ,每个字节代表半个汉字的编码索引 。 
 309   3                              x+=2;
 310   3                          if(x==20)
 311   3                                {
 312   4                                  x=0;                //写满一行,从第二行开始
 313   4                                      y+=2;
 314   4                                }
 315   3                        }
 316   2                      else    //英文或数字等的ascII码
 317   2                        {
 318   3                         Char_Wr(x,y,*p,1);
 319   3                         p+=1;
 320   3                         x++;
 321   3                         if(x==20)
 322   3                                {
 323   4                                  x=0;                //写满一行,从第二行开始
 324   4                                      y+=1;
 325   4                                }
 326   3                        }
 327   2              }
 328   1      }
*** WARNING C280 IN LINE 294 OF LCDINIT.C: 'Invert': unreferenced local variable
 329          
 330          //******************************************************************************
 331          //= 函数原型: void Show_num(uchar x1,uchar y1,uchar num)
 332          //= 功    能: 在设定的位置显示一个数字
 333          //= 参    数: (x1,y1)为位置,num为数字                  
 334          //= 返 回 值:
 335          //= 函数性质:公有函数
 336          //= 注    意:以字节为单位
 337          //*****************************************************************************  
 338          void Show_num(uchar x1,uchar y1,uchar num)
 339          {
 340   1         uchar number[10]={0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19};
 341   1         set_Char_xy(x1,y1);
 342   1         write_cmd1(number[num],INC_WR);        //一次写入数据
 343   1      }
 344          
 345          
 346          void Init_LCD()
 347          {
 348   1              lcd_init(0x00,0x00,0x14,0x50,0x01,0x14,0x00,MOD_XOR,0x0f); ///(0x00,0x00,0x14,0x50,0x01,0x14,0x00,MOD_XOR
             -,0x0c)
 349   1              cls();
 350   1              wirte_cgrom();
 351   1              cls();
 352   1      
 353   1              Str_Write(2,4,"广 东 工 业 大 学",1);
 354   1              Str_Write(2,6," 嵌入式实验平台  ",1);
C51 COMPILER V8.05a   LCDINIT                                                              11/09/2008 23:18:20 PAGE 7   

 355   1              Str_Write(2,8,"                 ",1);
 356   1              Str_Write(2,9,"     王日明      ",1);
 357   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1021    ----
   CONSTANT SIZE    =   5514    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5      38
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       4
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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