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

📄 demo.lst

📁 液晶控制芯片SED1335的控制程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 212   1              CCW1_PR(O_X,O_Y,num);  // 调中文显示函数(文本方式)
 213   1              num=0x02;  // 取字模
 214   1              O_X=0x14;
 215   1              O_Y=0x03;
 216   1              CCW1_PR(O_X,O_Y,num);  // 调中文显示函数(文本方式)
 217   1              num=0x03;  // 取字模
 218   1              O_X=0x16;
 219   1              O_Y=0x03;
 220   1              CCW1_PR(O_X,O_Y,num);  // 调中文显示函数(文本方式)
 221   1      */
 222   1              
 223   1      
 224   1              while(1);
 225   1      }
 226          
 227          ///*****************
 228          //       初始化函数
 229          ///*****************
 230          void initial_lcd(void)
 231          {
 232   1              uchar idata i;
 233   1      
 234   1              LCD_CMD_ADR=0x40;   // SYSTEM SET代码
 235   1              for(i=0;i<8;i++)
 236   1                      LCD_DAT_ADR=SYSTAB[i];  // 写入参数
 237   1      
 238   1              LCD_CMD_ADR=0x44;   // SCROLL代码
 239   1              for(i=0;i<8;i++)
 240   1                      LCD_DAT_ADR=SCRTAB[i];  // 写入参数
 241   1      
C51 COMPILER V7.07   DEMO                                                                  01/12/2007 17:28:05 PAGE 5   

 242   1              LCD_CMD_ADR=0x5a;   // HDOT SCR 代码
 243   1              LCD_DAT_ADR=0x00;   // 设置参数P1
 244   1      
 245   1              LCD_CMD_ADR=0x5b;   // OVLAY    代码
 246   1              LCD_DAT_ADR=0x01;   // 设置参数:显示一,三区为文本属性,合成方式为双重异或
 247   1      
 248   1              clear_lcd();       // 调清屏函数
 249   1      
 250   1              LCD_CMD_ADR=0x59;   // 显示状态设置
 251   1              LCD_DAT_ADR=0x54;   // 设置参数:显示一~四区开显示
 252   1      }
 253          
 254          
 255          ///******************
 256          //        清屏函数
 257          ///******************
 258          void clear_lcd(void)
 259          {
 260   1              uint idata i;
 261   1      
 262   1              LCD_CMD_ADR=0x4c;   // CSRDIR 代码
 263   1      
 264   1              LCD_CMD_ADR=0x46;   // CSRW 代码
 265   1              LCD_DAT_ADR=0x00;   // 设置参数光标指针低8位
 266   1              LCD_DAT_ADR=0x00;   // 设置参数光标指针高8位
 267   1      
 268   1              LCD_CMD_ADR=0x42;   // MWRITE 代码
 269   1              for(i=0;i<0x8000;i++)
 270   1                              LCD_DAT_ADR=0x00;   // 写入数据
 271   1      }
 272          
 273          
 274          // CGRAM函数
 275          // 功能:在文本层显示汉字时使用,每次调用此函数向CGRAM 
 276          //               中写入一个汉字的点阵数据.调用代码固定为0x80
 277          // num: 要显示字符在code uchar CGTAB[i][32] 中i的数值
 278          void CGRAM(uint num)
 279          {
 280   1              uchar idata i;
 281   1      
 282   1              LCD_CMD_ADR=0x5c;  // CGRAMADR 代码
 283   1              LCD_DAT_ADR=0x00;  // 设置SAG=0x3000
 284   1              LCD_DAT_ADR=0x30;
 285   1      
 286   1              LCD_CMD_ADR=0x46;  // CSRW 代码
 287   1              LCD_DAT_ADR=0x00;  // 设置CSR=0x3400(字符代码=80H)
 288   1              LCD_DAT_ADR=0x34;
 289   1      
 290   1              LCD_CMD_ADR=0x4c;  // CSRDIR    代码
 291   1              LCD_CMD_ADR=0x42;  // MWRITE    代码
 292   1      
 293   1              for(i=0;i<32;i++)
 294   1                      LCD_DAT_ADR=CGTAB[num][i];       //     写入字模数据
 295   1      }
 296          
 297          // 写汉字函数(文本方式) 
 298          // 经实践证明在文本层写汉字不好用,一次最多写16个汉字,
 299          // 所以写汉字一律采用在图形层写
 300          // 输入参数: O_X:水平
 301          void CCW1_PR(uchar O_X,uchar O_Y,uint num)
 302          {
 303   1              uint idata j;
C51 COMPILER V7.07   DEMO                                                                  01/12/2007 17:28:05 PAGE 6   

 304   1              
 305   1              CGRAM(num);
 306   1      
 307   1              j=PARA*O_Y+O_X;
 308   1      
 309   1              LCD_CMD_ADR=0x4f;         // CSRDIR     代码(下移)
 310   1      
 311   1              LCD_CMD_ADR=0x46;         // CSRW 代码
 312   1              LCD_DAT_ADR=(uchar)j; // 设置光标地址
 313   1              LCD_DAT_ADR=(uchar)(j>>8);
 314   1      
 315   1              LCD_CMD_ADR=0x42;       // MWRITE代码
 316   1              LCD_DAT_ADR=0x80;       // 写入汉字代码左上部
 317   1              LCD_DAT_ADR=0x81;  // 写入汉字代码左下部
 318   1      
 319   1              j++;
 320   1              LCD_CMD_ADR=0x46;         // CSRW 代码
 321   1              LCD_DAT_ADR=(uchar)j; // 设置光标地址
 322   1              LCD_DAT_ADR=(uchar)(j>>8);
 323   1      
 324   1              LCD_CMD_ADR=0x42;       // MWRITE代码
 325   1              LCD_DAT_ADR=0x82;  // 写入汉字代码右上部
 326   1              LCD_DAT_ADR=0x83;  // 写入汉字代码右下部
 327   1      }
 328          
 329          //      写汉字函数(图形方式)
 330          //  输入坐标都是以 8 点阵为增量单位
 331          //  O_X: 0~38
 332          //  O_Y: 0~28
 333          //  num: 要写入字符对应的 CGTAB[num][count1] 的num 值
 334          void CCW2_PR(uchar O_X,uchar O_Y,uint num)
 335          {
 336   1              uchar idata count1;
 337   1              uint  idata i,j;
 338   1      
 339   1              j=PARA*8*O_Y+O_X;
 340   1              j=j+SAD2;               // added by gao.
 341   1              LCD_CMD_ADR=0x4f;   // CSRDIR 代码(下移)
 342   1      
 343   1              for(i=0;i<2;i++)
 344   1              {
 345   2                      LCD_CMD_ADR=0x46;         // CSRW 代码
 346   2                      LCD_DAT_ADR=(uchar)j;     // 设置光标地址CSR
 347   2                      LCD_DAT_ADR=(uchar)(j>>8);
 348   2      
 349   2                      LCD_CMD_ADR=0x42;       // MWRITE 代码
 350   2                      for(count1=i*16;count1<16*(i+1);count1++)
 351   2                              LCD_DAT_ADR=CGTAB[num][count1]; // 写入数据
 352   2      
 353   2                      j=j+1;
 354   2              }
 355   1      }
 356          
 357          
 358          // 函数功能:在指定坐标位置写入ASCII码字符,
 359          //  O_X: 0~39
 360          //  O_Y: 0~29
 361          void w_ASCII(uchar O_X,uchar O_Y,uchar num)
 362          {
 363   1              uint idata j;
 364   1              
 365   1              j=PARA*O_Y+O_X;
C51 COMPILER V7.07   DEMO                                                                  01/12/2007 17:28:05 PAGE 7   

 366   1      
 367   1              LCD_CMD_ADR=0x46;       // CSRW 代码
 368   1              LCD_DAT_ADR=(uchar)j;   // 设置光标地址CSR
 369   1              LCD_DAT_ADR=(uchar)(j>>8);
 370   1      
 371   1              LCD_CMD_ADR=0x4c;       // CSRDIR 代码
 372   1              LCD_CMD_ADR=0x42;       // MWRITE 代码
 373   1      
 374   1              LCD_DAT_ADR=num;  // 写入数据
 375   1      }
 376          
 377          // 从指定起始点写入字符串(ASCII码)
 378          //  O_X: 0~39
 379          //  O_Y: 0~29
 380          void w_string(uchar O_X,uchar O_Y,const uchar *STRING)
 381          {
 382   1              while(*STRING)
 383   1              {
 384   2                      w_ASCII(O_X,O_Y,*STRING);
 385   2                      STRING++;
 386   2                      O_X++;
 387   2                      if(O_X>319)
 388   2                      {
 389   3                              O_X=0;
 390   3                              O_Y+=1;
 391   3                      }
 392   2              }
 393   1      }
 394          
 395          // 功能:绘点函数
 396          // 输入范围:O_X:0~319; O_Y:0~239;
 397          // 说明:坐标定位 左上角为原点(0,0),水平向右为X轴正方向,垂直向下为Y轴正方向
 398          void draw_dot(int O_X,uchar O_Y)
 399          {
 400   1              uchar idata i,j,dat;
 401   1              uint  idata k;
 402   1      
 403   1              i=((uchar)O_X)&0x07;    // i 为O_X 除以 8 的余数
 404   1              O_X=O_X>>3;     // O_X 为O_X 除以 8 的整数
 405   1              k=PARA*O_Y+O_X+SAD2;
 406   1      
 407   1              LCD_CMD_ADR=0x46;               // 设置光标地址
 408   1              LCD_DAT_ADR=(uchar)k;   // 计算光标地址
 409   1              LCD_DAT_ADR=(uchar)(k>>8);
 410   1      
 411   1              j=0x80;         // 确定要画的点对应的字节数据的值
 412   1              if(i!=0)
 413   1                      j=j>>i;
 414   1      
 415   1              LCD_CMD_ADR=0x43;       // MREAD 代码
 416   1              dat=LCD_CMD_ADR;        // 读取当前显示数据
 417   1      
 418   1              LCD_CMD_ADR=0x46;       // 设置光标地址
 419   1              LCD_DAT_ADR=(uchar)k;    //     计算光标地址
 420   1              LCD_DAT_ADR=(uchar)(k>>8);
 421   1      
 422   1              LCD_CMD_ADR=0x42;       // MWRITE 代码
 423   1              LCD_DAT_ADR=dat|j;  // 写入合成数据
 424   1      }
 425          
 426          // 函数功能: 画水平线
 427          // 纵坐标: 固定为 y
C51 COMPILER V7.07   DEMO                                                                  01/12/2007 17:28:05 PAGE 8   

 428          // x1: 起始横坐标; x2: 终点横坐标
 429          void draw_horizontal(int x1,int x2,uchar y)

⌨️ 快捷键说明

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