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

📄 ocm240128.lst

📁 OCM240128-7.rar
💻 LST
📖 第 1 页 / 共 3 页
字号:
 208   2                      case 3:         
 209   2                              D_Addr = dat1;                                  //图形显示区宽度字节数
 210   2                              while (!OCM_busy(0));                   //单次读写遇忙判断
 211   2                              D_Addr = 0;                                             //数据2格式为0
 212   2                              while (!OCM_busy(0));                   //单次读写遇忙判断
 213   2                              C_Addr = 0X43;                                  //图形显示区宽度设置
 214   2                              break;
 215   2                              default:                                                //命令无效
 216   2                              break;                                                  
 217   2              }
 218   1      }
 219          
 220          
 221          /******************************************************************************************
 222          **  函数名称:           void OCM_mode(uchar mod,uchar cg)
 223          **  功能描述:           显示方式设置:或 异或  与        文本显示特性以双字节表示
 224                                                          CG 位    字符发生器选择位     
 225          **  输入参数:           mode:   0:  文本与图形以逻辑“或”的关系合成显示
 226                                                                          1:      文本与图形“异或”
 227                                                                          2:      文本与图形“与”
 228                                                                          3:      文本显示特性以双字节表示
 229                                          在设置了文本属性显示方式后,图形显示区将转换成为文本属性区,用来控制文本属性                                     
 230                                          其他:默认为无效
 231                                                          cg:             非0:启用内部字符发生器CGROM
 232                                                                          0:禁止内部 CGROM
 233          ******************OCM240128内部有CGRAM 2K(256字节)空间*************************************
 234                                  使用内部字符发生器CGROM时低128字节为内部字符,CGROM的高128字节可自己定义
 235                                  禁止内部字符发生器CGROM时CGRAM256字节都用于用户字符定义
 236                                  通过void OCM_mode(uchar mod,uchar cg) cg参数控制
 237          *******************************************************************************************
 238          **  输出参数:           无
 239          **  全局变量:           无
 240          **  调用模块:           0CM240128.C文件内部调用
 241          ******************************************************************************************/
C51 COMPILER V8.08   OCM240128                                                             11/21/2009 22:14:42 PAGE 5   

 242          void OCM_mode(uchar mod,uchar cg)
 243          {
 244   1              uchar cgrom_stat;
 245   1      
 246   1              if (cg)                         //cg !=0        启用内部字符发生器CGROM
 247   1              {               
 248   2                      cgrom_stat = (0x00 << 3);       //第4位位0启用
 249   2              }
 250   1              else                            //cg = 0    禁止内部 CGROM
 251   1              {
 252   2                      cgrom_stat = (0x01 << 3);               //CG位为1禁止内部 CGROM
 253   2              }
 254   1              
 255   1              while (!OCM_busy(0));                   //单次读写遇忙判断
 256   1              
 257   1              switch (mod)
 258   1              {
 259   2                      case 0: C_Addr = 0X80 | cgrom_stat; break;      //“或”
 260   2                      case 1: C_Addr = 0X81 | cgrom_stat; break;      //“异或”
 261   2                      case 2: C_Addr = 0X83 | cgrom_stat; break;      //“与”
 262   2                      case 3: C_Addr = 0X84 | cgrom_stat; break;      //文本显示特性以双字节表示
 263   2                      default: break; 
 264   2              }       
 265   1      }
 266          
 267          
 268          
 269          
 270          
 271          /******************************************************************************************
 272          **  函数名称:                   void OCM_state(uchar mod)       
 273          **  功能描述:                   显示状态设置,相应位为1,启用相应功能,为0关闭相应功能
 274                                                          N1                              N2                              N3                              N4
 275                                                          光标闪烁设      光标显示设置    文本显示设置    图形显示设置                                                                            
 276          **  输入参数:                   mod:     参数格式 (1 << 0 | 1 << 1 | 1 << 2 | 1 << 3)所以功能打开 
 277          **  输出参数:                   无
 278          **  全局变量:                   无
 279          **  调用模块:                   0CM240128.C文件内部调用
 280          ******************************************************************************************/
 281          void OCM_state(uchar mod)
 282          {
 283   1              uchar tmp = mod;
 284   1              
 285   1              while (!OCM_busy(0));                   //单次读写遇忙判断
 286   1              
 287   1              tmp &= 0X0F;                                    //低4位有效
 288   1              
 289   1              C_Addr = 0X90 | tmp;                    //写命令字      
 290   1      }
 291          
 292          
 293          /******************************************************************************************
 294          **  函数名称:                   void OCM_cursor(uchar mod)
 295          **  功能描述:                   光标形状设置(Cursor pattern select)
 296                                                          mod (0~7) mod越大,光标也越大
 297          **  输入参数:                   mod:
 298          **  输出参数:                   无
 299          **  全局变量:                   无
 300          **  调用模块:                   无
 301          ******************************************************************************************/
 302          void OCM_cursor(uchar mod)
 303          {
C51 COMPILER V8.08   OCM240128                                                             11/21/2009 22:14:42 PAGE 6   

 304   1              uchar tmp = mod;
 305   1              tmp &= 0x07;                                    //低3位有效
 306   1              
 307   1              while (!OCM_busy(0));                   //单次读写遇忙判断
 308   1              
 309   1              C_Addr = 0XA0 | tmp;                    //写命令字
 310   1      }
 311          
 312          
 313          
 314          
 315          
 316          /******************************************************************************************
 317          **  函数名称:                   void OCM_bit(uchar bite, uchar byte)
 318          **  功能描述:                   位操作 (Bit set reset) 
 319          **  输入参数:                   byte:   (0~7有效)显示单元中的数据的任一位写“0”或“1”
 320                                                          bite:           0:byte选择的为置0,非0:byte选择的位置1
 321          **  输出参数:                   无
 322          **  全局变量:                   无
 323          **  调用模块:                   无
 324          ******************************************************************************************/
 325          void OCM_bit(uchar bite, uchar byte)
 326          {
 327   1              uchar tmp = byte;
 328   1              
 329   1              if (bite)                                               //bite转换为位          
 330   1              {
 331   2                      bite = 1;
 332   2              }
 333   1              else
 334   1              {
 335   2                      bite = 0;
 336   2              }
 337   1              
 338   1              tmp &= 0X07;                                    //后3位有效
 339   1              
 340   1              while (!OCM_busy(0));                   //单次读写遇忙判断
 341   1              
 342   1              C_Addr = 0XF0 | (bite << 3) | tmp;              //写命令字
 343   1      }
 344          
 345          
 346          
 347          /******************************************************************************************
 348          **  函数名称:                   void OCM_onewr(uchar mod,uchar dat)
 349          **  功能描述:                   单次写液晶函数
 350          **  输入参数:                   mod:    mod =0: 地址加一        
 351                                                                          =1:地址减一             
 352                                                                          =2:     地址不变  
 353                                                                          其他: 地址不变 
 354                                                          dat:    数据
 355          **  输出参数:                   无
 356          **  全局变量:                   无
 357          **  调用模块:                   无
 358          ******************************************************************************************/
 359          void OCM_onewr(uchar mod, uchar dat)                                    
 360          {                                                                                               
 361   1              while (!OCM_busy(0));                                           
 362   1              D_Addr = dat;                                                           
 363   1              while (!OCM_busy(0));                                           
 364   1              switch (mod)                                                            
 365   1              {                                                                                       
C51 COMPILER V8.08   OCM240128                                                             11/21/2009 22:14:42 PAGE 7   

 366   2                      case 0: C_Addr = 0XC0; break;                   
 367   2                      case 1: C_Addr = 0XC2; break;                   
 368   2                      case 2: C_Addr = 0XC4; break;                   
 369   2                      default:C_Addr = 0XC4; break;                   
 370   2              }                                                                                       
 371   1      }
 372          
 373          /******************************************************************************************
 374          **  函数名称:                   uchar OCM_onerd(uchar mod,uchar dat)
 375          **  功能描述:                   单次读液晶函数
 376          **  输入参数:                   mod:    mod =0: 地址加一        
 377                                                                          =1:地址减一             
 378                                                                          =2:     地址不变  
 379                                                                          其他: 地址不变 
 380          **  输出参数:                   uchar   读到的数据
 381          **  全局变量:                   无
 382          **  调用模块:                   无
 383          *******************************************************************************************/                    
 384          uchar OCM_onerd(uchar mod)                                                      
 385          {       
 386   1              uchar dat;                                                                                      
 387   1              switch (mod)                                                            
 388   1              {                                                                                       
 389   2                      case 0: C_Addr = 0XC1; break;                   
 390   2                      case 1: C_Addr = 0XC3; break;                   
 391   2                      case 2: C_Addr = 0XC5; break;                   
 392   2                      default:C_Addr = 0XC5; break;                   
 393   2              }       
 394   1              
 395   1              dat = D_Addr;                                                   //读数据
 396   1              
 397   1              return (dat);                                                                           
 398   1      }       
 399          
 400          
 401          
 402          
 403          /******************************************************************************************
 404          **  函数名称:                   void OCM_autrd(uchar addr, uchar num, uchar *p)
 405          **  功能描述:                   自动读液晶函数
 406          **  输入参数:                   addr:   液晶开始读的地址
 407                                                          num:    自动读数据的个数
 408                                                          *p:             读到数据的存储区
 409          **  输出参数:                   无
 410          **  全局变量:                   无
 411          **  调用模块:                   无
 412          ******************************************************************************************/
 413          void OCM_autrd(uint addr, uchar num, uchar *p)
 414          {
 415   1              uchar i;
 416   1              
 417   1              OCM_ac(2,addr);                         //显示地址设置
 418   1              OCM_autrd_start();                      //启动自动读操作
 419   1              
 420   1              for (i = 0; i < num; i++)
 421   1              {
 422   2                      while (!OCM_busy(1));   //自动读忙检查
 423   2                      p[i] = D_Addr;                  //读数据

⌨️ 快捷键说明

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