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

📄 clockofoled.lst

📁 对气体检测仪进行设置
💻 LST
📖 第 1 页 / 共 2 页
字号:
                      WRO=0;  
                      RDO=1;
                      CS=0;
                      DAT=com;        
                      CS=1;   
                      #else
 216   1              unsigned char i;
 217   1              CS=1;
 218   1              CS=0;
 219   1              DC=0;
 220   1              for(i=0x80;i>0;i/=2)
 221   1              {
 222   2                      CLK=0;
 223   2                      if(com&i)
 224   2                              DATA=1;
 225   2                      else
 226   2                              DATA=0;
 227   2                      CLK=1;
 228   2              }
 229   1              CS=1;
 230   1              #endif
 231   1      }
 232          /**************************实现函数********************************************
 233          *函数原型:              void WriteData(unsigned dat);
 234          *功  能:              写数据到oled显示屏。
 235          *******************************************************************************/
 236          void WriteData(unsigned dat)
 237          {
 238   1              #ifdef PAR
                      CS=1;
                      DC=1;   
                      WRO=0;
C51 COMPILER V7.50   CLOCKOFOLED                                                           08/28/2007 15:41:04 PAGE 5   

                      RDO=1;
                      CS=0;
                      DAT=dat;
                      CS=1;
                      #else
 247   1              unsigned char i;
 248   1              CS=1;
 249   1              DC=1;
 250   1              CS=0;
 251   1              for(i=0x80;i>0;i/=2)
 252   1              {
 253   2                      CLK=0;
 254   2                      if(dat&i)
 255   2                              DATA=1;
 256   2                      else
 257   2                              DATA=0;
 258   2                      CLK=1;
 259   2              }
 260   1              CS=1;
 261   1              #endif
 262   1      }
 263          /**************************实现函数********************************************
 264          *函数原型:              void esbusini(void);
 265          *功  能:              总线初始化。
 266          *******************************************************************************/
 267          void esbusini(void)
 268          {
 269   1              RES1=0;
 270   1              RES1=1;
 271   1      }
 272          /**************************实现函数********************************************
 273          *函数原型:              void ini_dis(void);
 274          *功  能:              显示初始化。
 275          *******************************************************************************/
 276          void ini_dis(void)
 277          {
 278   1              unsigned char i,j;
 279   1              for(i=0;i<8;i++)
 280   1              {
 281   2                      WriteCommand(0xb0+i);    //设置显示位置—行
 282   2                      WriteCommand(0x00);      //设置显示位置—列低地址
 283   2                      WriteCommand(0x10);      //设置显示位置—列高地址
 284   2                      for(j=0;j<128;j++)
 285   2                              WriteData(0x00);        //屏幕显示,全亮
 286   2              }
 287   1      }
 288          /**************************实现函数********************************************
 289          *函数原型:              void ini_oled(void);
 290          *功  能:              oled显示的准备工作。
 291          *******************************************************************************/
 292          void ini_oled(void)
 293          {
 294   1              esbusini();
 295   1              /*************************************************
 296   1              // SSD1303 Initialization Command
 297   1              *************************************************/
 298   1              // Lower Column Address
 299   1              WriteCommand(0x00); /* Set Lower Column Address */
 300   1              // High Column Address
 301   1              WriteCommand(0x10); /* Set Higher Column Address*/
 302   1              // Display Start Line
 303   1              WriteCommand(0x40); /* Set Display Start Line */
C51 COMPILER V7.50   CLOCKOFOLED                                                           08/28/2007 15:41:04 PAGE 6   

 304   1              // Contrast Control Register
 305   1              WriteCommand(0x81); /* Set Contrast Control */
 306   1              WriteCommand(0x20); /* 0 ~ 255 */
 307   1              // Re-map
 308   1              WriteCommand(0xA0); /* [A0]:column address 0 is map 
 309   1              to SEG0 , [A1]: columnaddress 131 is map to SEG0*/ 
 310   1              // Entire Display ON/OFF
 311   1              WriteCommand(0xA4); /* A4=ON */
 312   1              // Normal or Inverse Display
 313   1              WriteCommand(0XA6); /* Normal Display*/
 314   1              // Multiplex Ratio
 315   1              WriteCommand(0xA8); /* Set Multiplex Ratio */
 316   1              WriteCommand(0x3f); /* Set to 36 Mux*/
 317   1              // Set DC-DC
 318   1              WriteCommand(0xAD); /* Set DC-DC */
 319   1              WriteCommand(0x8A); /* 8B=ON, 8A=Off */
 320   1              // Display ON/OFF
 321   1              WriteCommand(0xAE); /* AF=ON , AE=OFF*/
 322   1              // Display Offset
 323   1              WriteCommand(0xD3); /* Set Display Offset */
 324   1              WriteCommand(0x00); /* No offset */
 325   1              // Display Clock Divide
 326   1              WriteCommand(0xD5); /* Set Clock Divide */
 327   1              WriteCommand(0x20); /* Set to 80Hz */
 328   1              // Area Color Mode
 329   1              WriteCommand(0xD8); /* Set Area Color On or Off*/
 330   1              WriteCommand(0x00); /* Mono Mode */
 331   1              // COM Pins Hardware Configuration
 332   1              WriteCommand(0xDA); /* Set Pins HardwareConfiguration */
 333   1              WriteCommand(0x12);
 334   1              // VCOMH
 335   1              WriteCommand(0xDB); /* Set VCOMH */
 336   1              WriteCommand(0x00);
 337   1              // VP
 338   1              WriteCommand(0xD9); /* Set VP */
 339   1              WriteCommand(0x22); /* P1=2 , P2=2 */
 340   1              WriteCommand(0xc0);//配置成标准应用
 341   1              ini_dis();
 342   1      }
 343          /*******************************function************************************************************/
 344          //*******************显示X,Y坐标处的一个字符。一行可以显示16个字符。X为0到15,Y为0到3**************
 345          void disc(unsigned char X,unsigned char Y,unsigned char * c)
 346          {
 347   1              unsigned char n;
 348   1              WriteCommand (0xb7-(Y<<1));
 349   1              if(X%2)
 350   1                      WriteCommand (0x08);
 351   1              else
 352   1                      WriteCommand (0x00);
 353   1              WriteCommand (0x10+(X>>1));
 354   1              for(n=0;n<=15;n+=2)
 355   1                      WriteData(*(c+n));
 356   1      
 357   1              WriteCommand (0xb7-(Y<<1)-1);
 358   1              if(X%2)
 359   1                      WriteCommand (0x08);
 360   1              else
 361   1                      WriteCommand (0x00);
 362   1              WriteCommand (0x10+(X>>1));
 363   1              for(n=1;n<=15;n+=2)
 364   1                      WriteData(*(c+n));
 365   1      }
C51 COMPILER V7.50   CLOCKOFOLED                                                           08/28/2007 15:41:04 PAGE 7   

 366          // X  is 0 to 7
 367          void dish(unsigned char X,unsigned char Y,unsigned char * h)
 368          {
 369   1              unsigned char n;
 370   1              WriteCommand (0xb7-(Y<<1));
 371   1              if(X%2)
 372   1                      WriteCommand (0x08);
 373   1              else
 374   1                      WriteCommand (0x00);
 375   1              WriteCommand (0x10+(X>>1));
 376   1              for(n=0;n<=31;n+=2)
 377   1                      WriteData(*(h+n));
 378   1      
 379   1              WriteCommand (0xb7-(Y<<1)-1);
 380   1              if(X%2)
 381   1                      WriteCommand (0x08);
 382   1              else
 383   1                      WriteCommand (0x00);
 384   1              WriteCommand (0x10+(X>>1));
 385   1              for(n=1;n<=31;n+=2)
 386   1                      WriteData(*(h+n));
 387   1      }
 388          void disn(unsigned char X,unsigned char Y,unsigned char n)
 389          {
 390   1              unsigned char m;
 391   1              WriteCommand (0xb7-(Y<<1));  //
 392   1              if(X%2)
 393   1                      WriteCommand (0x08);    //设置低位列地址
 394   1              else
 395   1                      WriteCommand (0x00);    //设置低位列地址
 396   1              WriteCommand (0x10+(X>>1));
 397   1              //for(n=0;n<=15;n+=2)
 398   1              //      WriteData(*(c+n));
 399   1              for(m=0;m<=15;m+=2)
 400   1                      WriteData(*(num[n]+m));                     
 401   1      
 402   1              WriteCommand (0xb7-(Y<<1)-1);
 403   1              if(X%2)
 404   1                      WriteCommand (0x08);
 405   1              else
 406   1                      WriteCommand (0x00);
 407   1              WriteCommand (0x10+(X>>1));
 408   1              for(m=1;m<=15;m+=2)
 409   1                      WriteData(*(num[n]+m));
 410   1      }
 411          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1275    ----
   CONSTANT SIZE    =    560    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      4      16
   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 + -