C51 COMPILER V9.54   LCD                                                                   12/03/2024 14:58:47 PAGE 1   


C51 COMPILER V9.54, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN .\Objects\lcd.obj
COMPILER INVOKED BY: C:\Keil_v5\C51\BIN\C51.EXE public\lcd.c OPTIMIZE(8,SPEED) BROWSE INCDIR(.\public) DEBUG OBJECTEXTEN
                    -D PRINT(.\Listings\lcd.lst) OBJECT(.\Objects\lcd.obj)

line level    source

   1          #include "lcd.h"
   2          
   3          char lcd[9][2] = {{0x0F,0x0A},{0x0B,0x0C},{0x09,0x0E},{0x04,0x0E},{0x0D,0x06},{0x0F,0x06},{0x08,0x0A},{0x0
             -F,0x0E},{0x0C,0x0E}}; 
   4          xdata char lcd_ram[17] _at_ 0xFFE8;
   5          
   6          void init_lcd( uint8_t vol,     //LCD对比度控制
   7                         uint8_t typesel, //LCD电容型驱动方式选择
   8                         uint8_t duty,    //LCD占空比选择
   9                         uint8_t pumpon,  //PUMPON 必须为 1，电容偏压型和电压稳定器型 LCD 才有效 
  10                         uint8_t tlcd,    //LCD类型
  11                         uint8_t fcctl,   //FCCTL 充电时间控制位 
  12                         uint8_t rlcd,    //LCD 偏置电阻选择位 
  13                         uint8_t mod)     //驱动模式选择位 
  14          {
  15   1          SYSCON |= 0x02;//subclk en
  16   1          CLKEN1 |= 0x40;
  17   1          
  18   1          LCDCON1 = 0;
  19   1          LCDCON1 = mod | (rlcd<<2) | (fcctl<<5) | (tlcd<<7);
  20   1          LCDCON = 0;
  21   1          LCDCON = vol | (typesel<<3) | (duty<<4);
  22   1          LCDCON |= (pumpon<<6);
  23   1          //SEG9-SEG25 布线原因，DEMO板com1-com4对应LCD手册com4-com1
  24   1          SEGEN1              = 0x00;
  25   1                      SEGEN2          =       0xFF;
  26   1                      SEGEN3          = 0xFF;
  27   1                      SEGEN4          = 0x01;
  28   1                      COMEN           = 0xFF;
  29   1          
  30   1      }
  31          
  32          void lcd_on(void)
  33          {
  34   1          LCDCON |= 0x80;
  35   1      }
  36          
  37          void lcd_off(void)
  38          {
  39   1          LCDCON &= 0x7F;
  40   1      }
  41          
  42          //DEMO板使用idd22模式配置
  43          void LCD_Test(void)
  44          {
  45   1                IO_CLR();
  46   1                      P5 = 0xFF;
  47   1                //ENABLE BOR
  48   1          BORCON |= 0x01;    
  49   1          //DISABLE WDT
  50   1          WDTCON &= 0xFD;
  51   1        
  52   1                      //idd21
  53   1      //    init_lcd( p1000,     //LCD对比度控制
C51 COMPILER V9.54   LCD                                                                   12/03/2024 14:58:47 PAGE 2   

  54   1      //                                                CAP_BIAS, //LCD电容型驱动方式选择
  55   1      //                                                DUTY1_4,    //LCD占空比选择
  56   1      //                                                PUMP_OFF,  //PUMPON 必须为 1，电容偏压型和电压稳定器型 LCD 才有效 
  57   1      //                                                RES_LCD,    //LCD类型
  58   1      //                                                FCCTL_1PER4,   //FCCTL 充电时间控制位 
  59   1      //                                                BIAS_RES_990K,    //LCD 偏置电阻选择位 
  60   1      //                                                NORMAL_RES_990K);    //驱动模式选择位 
  61   1              
  62   1                //idd22
  63   1          init_lcd( p1000,     //LCD对比度控制
  64   1                                                        INTER_VOL_STABLE, //LCD电容型驱动方式选择
  65   1                                                        DUTY1_4,    //LCD占空比选择
  66   1                                                        PUMP_ON,  //PUMPON 必须为 1，电容偏压型和电压稳定器型 LCD 才有效 
  67   1                                                        CAP_LCD,    //LCD类型
  68   1                                                        FCCTL_1PER4,   //FCCTL 充电时间控制位 
  69   1                                                        BIAS_RES_990K,    //LCD 偏置电阻选择位 
  70   1                                                        NORMAL_RES_990K);    //驱动模式选择位 
  71   1          
  72   1                      //idd23
  73   1      //    init_lcd( p1000,     //LCD对比度控制
  74   1      //                                                CAP_BIAS, //LCD电容型驱动方式选择
  75   1      //                                                DUTY1_4,    //LCD占空比选择
  76   1      //                                                PUMP_ON,  //PUMPON 必须为 1，电容偏压型和电压稳定器型 LCD 才有效 
  77   1      //                                                CAP_LCD,    //LCD类型
  78   1      //                                                FCCTL_1PER4,   //FCCTL 充电时间控制位 
  79   1      //                                                BIAS_RES_990K,    //LCD 偏置电阻选择位 
  80   1      //                                                NORMAL_RES_990K);    //驱动模式选择位           
  81   1      
  82   1                      //idd24
  83   1      //    init_lcd( p1000,     //LCD对比度控制
  84   1      //                                                CAP_BIAS, //LCD电容型驱动方式选择
  85   1      //                                                DUTY1_4,    //LCD占空比选择
  86   1      //                                                PUMP_OFF,  //PUMPON 必须为 1，电容偏压型和电压稳定器型 LCD 才有效 
  87   1      //                                                RES_LCD,    //LCD类型
  88   1      //                                                FCCTL_1PER4,   //FCCTL 充电时间控制位 
  89   1      //                                                BIAS_RES_990K,    //LCD 偏置电阻选择位 
  90   1      //                                                NORMAL_RES_990K);    //驱动模式选择位         
  91   1                lcd_ram[2] = lcd[1][0];
  92   1                lcd_ram[3] = lcd[1][1];
  93   1                      lcd_ram[4] = lcd[4][0];
  94   1                lcd_ram[5] = lcd[4][1];
  95   1                lcd_ram[6] = 0x0A;
  96   1                      
  97   1                      //close all other peri
  98   1          CLKEN0 = 0;
  99   1          CLKEN1 = 0x40;//enable lcd clock  
 100   1                      delay_ms(50);
 101   1                lcd_on();
 102   1                      
 103   1          //chose inter 32kHz clock
 104   1          //SUBCLKEN = 1
 105   1          system_clk_div(CPUCLK_DIV0);
 106   1          clk_enable(SUBCLK);
 107   1          
 108   1          //wait ilrc stable
 109   1          while((CLKSTAT & 0x04) == 0);
 110   1          
 111   1          //subclk is ilrc
 112   1          sub_clk_sel(ILRC);
 113   1           
 114   1                       //idd24
 115   1      //    //subclk is XTAL
C51 COMPILER V9.54   LCD                                                                   12/03/2024 14:58:47 PAGE 3   

 116   1      //    sub_clk_sel(XTAL);
 117   1      //    
 118   1      //    //wait XTAL stable
 119   1      //    while((CLKSTAT & 0x02) == 0);   
 120   1                      
 121   1          //choose subclk as main clock
 122   1          main_clk_sel(SUBCLK);    
 123   1       
 124   1          
 125   1          //DISABLE IHRC
 126   1          clk_disable(IHRC);
 127   1      
 128   1          //cpu enter idle
 129   1          cpu_idle();
 130   1          
 131   1          while(1);  
 132   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    194    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     18       8
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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