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

📄 lcd.lst

📁 基于RC500射频卡读写模块的程序设计
💻 LST
📖 第 1 页 / 共 4 页
字号:
 170                  {       uchar x1,y1,x,y; 
 171   1                  WR_rowcol(posx,posy);       
 172   1                      x1=col;
 173   1                      y1=row;
 174   1                      row=y1>>3;                      /*取Y方向分页地址*/
 175   1                      Rddata();
 176   1                      y=y1&0x07;                      /*字节内位置计算*/
 177   1                      x=0x01;
 178   1                      x=x<<y;                         /*移入所画点*/
C51 COMPILER V7.06   LCD                                                                   04/02/2007 15:23:04 PAGE 4   

 179   1                      Wrdata(cbyte|x);                /*画上屏幕*/
 180   1                      col=x1;                         /*恢复xy坐标*/
 181   1                      row=y1;
 182   1              }
 183          
 184          /**************************************屏幕滚动定位*************************************/
 185          void Rollscreen(uchar x)
 186                  {
 187   1                      cbyte = DISPFIRST|x;            /*定义显示起始行为x?*/
 188   1                      WrcmdL(cbyte);
 189   1                      WrcmdR(cbyte);
 190   1              }
 191          
 192          /**************************************一个字串的输出***********************************/
 193          void Putstr(uchar posx,uchar posy,uchar *puts,uchar i)
 194                  {   uchar j,X;
 195   1                  WR_rowcol(posx,posy); 
 196   1                      for (j=0;j<i;j++)
 197   1                      {
 198   2                       X = puts[j];
 199   2                              if (X&0x80)
 200   2                                      {
 201   3                                              Putcdot(X&0x7f);/*只保留低7位*/
 202   3                                      }
 203   2                              else Putedot(X-0x20);           /*ascii码表从0x20开始*/
 204   2                      }
 205   1              }
 206          
 207          /*********************************半角字符点阵码数据输出********************************/
 208          void Putedot(uchar Order)
 209          {    
 210   1              uchar i,bakerx,bakery;                  /*共定义4个局部变量*/
 211   1              int x;                                          /*偏移量,字符量少的可以定义为UCHAR     */
 212   1              bakerx = col;                           /*暂存x,y坐标,已备下半个字符使用*/
 213   1              bakery = row;
 214   1              x=Order * 0x10;                         /*半角字符,每个字符16字节*/
 215   1      /*上半个字符输出,8列*/
 216   1              for(i=0;i<8;i++)
 217   1                      {
 218   2                      cbyte = Ezk[x];                 /*取点阵码,rom数组*/
 219   2                      Wrdata(cbyte);                  /*写输出一字节*/
 220   2                      x++;
 221   2                      col++;
 222   2                      if (col==LCDLIMIT){col=0;row++;row++;};         /*下一列,如果列越界换行*/
 223   2                              if (row>7) row=0;                                       /*如果行越界,返回首行*/
 224   2                      }                                                                       /*上半个字符输出结束*/
 225   1              col = bakerx;                           /*列对齐*/
 226   1              row = bakery+1;                         /*指向下半个字符行*/
 227   1      /*下半个字符输出,8列*/
 228   1              for(i=0;i<8;i++)
 229   1                      {
 230   2                      cbyte = Ezk[x];                 /*取点阵码*/
 231   2                      Wrdata(cbyte);                  /*写输出一字节*/
 232   2                      x++;
 233   2                      col++;
 234   2                      if (col==LCDLIMIT){col=0;row=row+2;};   /*下一列,如果列越界换行*/
 235   2                              if (row>7) row=1;       /*如果行越界,返回首行*/
 236   2                      }                                       /*下半个字符输出结束*/
 237   1              row=bakery;
 238   1              }                                               /*整个字符输出结束*/
 239          
 240          /*********************************全角字符点阵码数据输出********************************/
C51 COMPILER V7.06   LCD                                                                   04/02/2007 15:23:04 PAGE 5   

 241          void Putcdot(uchar Order)
 242          {   
 243   1              uchar i,bakerx,bakery;                  /*共定义3个局部变量*/
 244   1              int x;  /*偏移量,字符量少的可以定义为UCHAR     */
 245   1              bakerx = col;                           /*暂存x,y坐标,已备下半个字符使用*/
 246   1              bakery = row;
 247   1              x=Order * 0x20;                         /*每个字符32字节*/
 248   1              /*上半个字符输出,16列*/
 249   1              for(i=0;i<16;i++)
 250   1                      {
 251   2                      Wrdata(Hzk[x]);                 /*写输出一字节*/
 252   2                      x++;
 253   2                      col++;
 254   2                      if (col==LCDLIMIT){ col=0;row++;row++;} /*下一列,如果列越界换行*/
 255   2                              if (row>6) row=0;       /*如果行越界,返回首行*/
 256   2                      }                                       /*上半个字符输出结束*/
 257   1              /*下半个字符输出,16列  */
 258   1              col = bakerx;
 259   1              row = bakery+1;
 260   1              for(i=0;i<16;i++)                               /*下半部分*/
 261   1                      {
 262   2                      Wrdata(Hzk[x]);
 263   2                      x++;
 264   2                      col++;
 265   2                      if (col==LCDLIMIT){col=0;row++;row++;}  /*下一列,如果列越界换行*/
 266   2                              if (row>7) row=1;       /*如果行越界,返回首行*/
 267   2                      }                                       /*下半个字符输出结束*/
 268   1              row = bakery;
 269   1              }                                               /*整个字符输出结束*/
 270          
 271          /***************************从液晶片上读数据,保留在全局变量中***************************/
 272          void Rddata(void)
 273                  {  
 274   1                  Locatexy();                 /*坐标定位,返回时保留分区状态不变*/
 275   1                      Data=0xFF;
 276   1                  RS = 1;                             /*数据*/
 277   1                      RW = 1;                 /*读数据*/
 278   1                      E = 1;                          /*读入到LCM*/
 279   1                      _nop_();
 280   1                      cbyte = Data;                   /*虚读一次*/
 281   1                      E= 0;
 282   1                   Locatexy();                        /*坐标定位,返回时保留分区状态不变*/
 283   1                      Data=0xFF;
 284   1                      _nop_();
 285   1                      RS = 1;                         /*数据*/
 286   1                      RW = 1;                 /*读数据*/
 287   1                      E = 1;                          /*读入到LCM*/
 288   1                      _nop_();
 289   1                      cbyte = Data;                   /*从数据口读数据,真读*/
 290   1                      E= 0;
 291   1              }
 292          
 293          /****************************************延时*******************************************/
 294          void Delay(uchar nMS)
 295                  {
 296   1                      uchar us,usn;
 297   1                      while(nMS!=0)
 298   1                              { usn = 4;
 299   2                                      while(usn!=0)
 300   2                                              {
 301   3                                                      us=0xf0;
 302   3                                                      while (us!=0){us--;};
C51 COMPILER V7.06   LCD                                                                   04/02/2007 15:23:04 PAGE 6   

 303   3                                                      usn--;
 304   3                                              }
 305   2                                      nMS--;
 306   2                              }
 307   1              }
 308          
 309          /************************************定义字符串数组*************************************/
 310          uchar code STR1[]=" ^_^FEDLT";
 311          uchar code STR2[]="QQ  :12345678";
 312          uchar code STR3[]="TEL:13612345678";
 313          uchar code STR4[]="  Welcome you!";
 314          uchar code STR5[]={0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e};
 315          /************************************定义中文字库***************************************/
 316           /*0x80为列表中第一个汉字,0x81为第二个(在Hzk表中我删除了),汉字最高位为1,所有
 317                                                     最小从0x80开始而不是从0x00开始最多可制表到0xff那么多个汉字*/ 
 318          
 319          uchar code Hzk[]={
 320          0x40, 0x40, 0x40, 0x5f, 0xd1, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, 0x5f, 0x40, 0x40, 0x40, 0x00, /*号*/
 321          0x00, 0x00, 0x00, 0x02, 0x07, 0x02, 0x02, 0x22, 0x42, 0x82, 0x42, 0x3e, 0x00, 0x00, 0x00, 0x00, 
 322          
 323          0x00, 0xf8, 0x08, 0x08, 0x08, 0x08, 0x08, 0xff, 0x08, 0x08, 0x08, 0x08,0x08,  0xfc, 0x08, 0x00,
 324          0x00, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0xff, 0x01, 0x01, 0x01, 0x01,0x08,  0x03, 0x00, 0x00,
 325          
 326          0x00, 0xfe, 0x02, 0x0a, 0x8a, 0x8a, 0x8a, 0xfa, 0x8a, 0x8a, 0x8a, 0x0a, 0x02, 0xfe, 0x00, 0x00, 
 327          0x00, 0xff, 0x40, 0x48, 0x48, 0x48, 0x48, 0x4f, 0x48, 0x49, 0x4e, 0x48, 0x40, 0xff, 0x00, 0x00, 
 328          
 329          0x00, 0x07, 0x00, 0x08, 0x00, 0x60, 0x03, 0x00, 0x00,0x00,0x02,0x04,0x02,0x46,0x02,0x46,
 330                  0x02,0x40,0x02,0x50,0x02,0x03,0x02,0x00,0x02,0x00,0x02,0x40,0x02,0x04,0x02,0x04,
 331                  0xFF,0xE0,0x00,0x10,0x00,0x0E,0x00,0x01,0x00,0x00,0xE4,0x00,0xA4,0xC2,0x28,0x8E,
 332                  0x00,0x84,0x00,0x06,0xE7,0x80,0x7E,0x00,0x7C,0x20,0xC7,0x24,0x03,0xA0,0x05,0xE4,
 333                  0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,
 334                  0x40,0x00,0x40,0x00,0x40,0x01,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x01,0x40,0x03,
 335                  0x00,0x00,0x04,0x00,0x06,0x00,0x06,0x00,0x06,0x00,0x0E,0x00,0x0D,0xC0,0x0F,0x80,
 336                  0x1F,0x00,0x78,0x00,0xF7,0x80,0x1F,0xC0,0x31,0x80,0xF3,0x00,0xF6,0x00,0x7C,0x00,
 337                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x1C,0x04,0x3E,0x06,0x7C,
 338                  0x07,0xC0,0x1E,0x80,0x7F,0x38,0x21,0x78,0x01,0xB8,0x01,0xF0,0x03,0x40,0x1F,0x98,
 339                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
 340                  0x00,0x01,0x00,0x82,0x01,0xDA,0x03,0xDA,0x07,0x9A,0x01,0x9F,0x01,0x8B,0x01,0xE7,
 341                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,
 342                  0xB0,0x00,0x20,0x00,0x60,0x00,0xC0,0x00,0xC0,0x0F,0x80,0x07,0x00,0x00,0x00,0x01,
 343                  0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,
 344                  0x00,0x0B,0x00,0x09,0x00,0x07,0x60,0x35,0xE0,0x1E,0x60,0x1D,0xE0,0x08,0x80,0x08,
 345                  0x00,0x00,0x00,0x00,0x30,0x00,0x38,0x00,0x38,0x00,0x30,0x00,0x60,0x00,0x43,0x00,
 346                  0xFF,0x00,0x63,0x00,0xD6,0x00,0xFE,0x00,0xEC,0x01,0xD0,0x07,0x3C,0x0E,0xFC,0x00,

⌨️ 快捷键说明

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