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

📄 lcd_5110.lst

📁 NOKIA5110的液晶显示驱动
💻 LST
字号:
C51 COMPILER V8.02   LCD_5110                                                              04/04/2009 19:09:35 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD_5110
OBJECT MODULE PLACED IN lcd_5110.OBJ
COMPILER INVOKED BY: C:\keil\C51\BIN\C51.EXE lcd_5110.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1           #include<c8051f020.h>
   2          
   3          sbit    sce = P2^0;  //片选
   4          sbit    res = P2^1;  //复位,0复位
   5          sbit    dc  = P2^2;  //1写数据,0写指令
   6          sbit    sdin = P2^3;  //数据
   7          sbit    sclk = P2^5;  //时钟
   8          
   9          
  10           unsigned char code hanzi[]={
  11          /*--  文字:  吴  --*/
  12          /*--  Trebuchet MS9;  此字体下对应的点阵为:宽x高=12x12   --*/
  13          /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/
  14          0x80,0xA0,0xAF,0xA9,0xA9,0xE9,0xA9,0xA9,0xAF,0xA0,0x80,0x00,0x04,0x04,0x04,0x02,
  15          0x01,0x00,0x01,0x02,0x02,0x04,0x04,0x00,
  16          
  17          /*--  文字:  琼  --*/
  18          /*--  Trebuchet MS9;  此字体下对应的点阵为:宽x高=12x12   --*/
  19          /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/
  20          0x12,0xFE,0x12,0x12,0x02,0x7A,0x4A,0xCB,0x4A,0x7A,0x02,0x00,0x02,0x03,0x01,0x05,
  21          0x02,0x05,0x04,0x07,0x00,0x01,0x06,0x00,
  22           /*--  文字:  你  --*/
  23          /*--  Trebuchet MS9;  此字体下对应的点阵为:宽x高=12x12   --*/
  24          /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/
  25          0x10,0x08,0xFC,0x13,0x88,0x66,0x05,0xF4,0x04,0x64,0x8C,0x00,0x00,0x00,0x07,0x01,
  26          0x00,0x04,0x04,0x07,0x00,0x00,0x01,0x00,
  27          
  28          /*--  文字:  好  --*/
  29          /*--  Trebuchet MS9;  此字体下对应的点阵为:宽x高=12x12   --*/
  30          /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/
  31          0xC4,0xBC,0x07,0xC4,0x3C,0x21,0x21,0xF9,0x25,0x23,0x20,0x00,0x04,0x02,0x01,0x01,
  32          0x02,0x00,0x04,0x07,0x00,0x00,0x00,0x00,
  33          /*--  文字:  !  --*/
  34          /*--  Trebuchet MS9;  此字体下对应的点阵为:宽x高=12x12   --*/
  35          /*--  高度不是8的倍数,现调整为:宽度x高度=12x16  --*/
  36          0x00,0x1C,0x7E,0x7E,0x1C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x03,
  37          0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
  38          
  39          
  40          
  41          
  42          
  43          };
  44          
  45            void SYSCLK_Init (void)
  46          {
  47   1         int i;                                 // 延时计数器
  48   1         WDTCN = 0xde;                          // 禁止看门狗
  49   1         WDTCN = 0xad;
  50   1         OSCXCN = 0x67;                         // 启动外部时钟(11.0592MHZ)
  51   1         for (i=0; i < 256; i++) ;              
  52   1         while (!(OSCXCN & 0x80)) ;             // 等待晶振稳定
  53   1         OSCICN = 0x88;                         // 选择外部晶振作为系统时钟
  54   1                                                // 允许时钟丢失检测
  55   1      }
C51 COMPILER V8.02   LCD_5110                                                              04/04/2009 19:09:35 PAGE 2   

  56          
  57          void Port_Init(void)
  58          {
  59   1         P0MDOUT=0Xff;                 //CS,DCLOCK,DOUT配置成推挽输出方式
  60   1         P2MDOUT=0Xff;
  61   1         P3MDOUT=0Xff;
  62   1         P74OUT=0xff;                      //p5口做液晶数据口,p4做液晶控制口
  63   1         XBR2 = 0x40;                  //使能交叉开关和弱上拉 
  64   1      }
  65          void delay_1ms(void)//1ms延时函数
  66          {
  67   1              unsigned int i;
  68   1              for (i=0;i<500;i++)       ;
  69   1      }
  70          
  71          /*--------------------------------------------
  72          LCD_write_byte: 使用SPI接口写数据到LCD
  73          输入参数:dt:写入的数据;
  74          command :写数据/命令选择;
  75          编写日期:20080918 
  76          ----------------------------------------------*/
  77          void LCD_write_byte(unsigned char dt, unsigned char command)
  78          {
  79   1              unsigned char i; 
  80   1              sce=0;  
  81   1              dc=command;     
  82   1              for(i=0;i<8;i++)
  83   1              { 
  84   2                      if(dt&0x80)
  85   2                              sdin=1;
  86   2                      else
  87   2                              sdin=0;
  88   2                      dt=dt<<1;               
  89   2                      sclk=0;                 
  90   2                      sclk=1; 
  91   2              }       
  92   1              dc=1;   
  93   1              sce=1;  
  94   1              sdin=1;
  95   1      }
  96          /*---------------------------------------
  97          LCD_init: 3310LCD初始化
  98          编写日期:20080918 
  99          -----------------------------------------  */
 100          void LCD_init(void)
 101          {
 102   1              res=0;          
 103   1              delay_1ms();
 104   1              res=1;  
 105   1              LCD_write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令
 106   1              LCD_write_byte(0xd0,0);//设定液晶偏置电压
 107   1              LCD_write_byte(0x20,0);//使用基本指令
 108   1              LCD_write_byte(0x0C,0);//设定显示模式,正常显示
 109   1      }
 110          /*-------------------------------------------
 111          LCD_set_XY: 设置LCD坐标函数
 112          输入参数:X:0-83  Y:0-5
 113          编写日期:20080918 
 114          ---------------------------------------------*/
 115          void LCD_set_XY(unsigned char X, unsigned char Y)
 116          {
 117   1              LCD_write_byte(0x40 | Y, 0);// column
C51 COMPILER V8.02   LCD_5110                                                              04/04/2009 19:09:35 PAGE 3   

 118   1              LCD_write_byte(0x80 | X, 0);// row
 119   1      } 
 120          /*------------------------------------------
 121          LCD_clear: LCD清屏函数
 122          编写日期:20080918 
 123          --------------------------------------------*/
 124          void LCD_clear(void)
 125          {
 126   1              unsigned char t;
 127   1              unsigned char k;
 128   1              LCD_set_XY(0,0);
 129   1              for(t=0;t<6;t++)
 130   1              { 
 131   2                      for(k=0;k<84;k++)
 132   2                      { 
 133   3                              LCD_write_byte(0x00,1);
 134   3                                      
 135   3                      } 
 136   2              }
 137   1      }
 138          /*---------------------------------------------
 139          LCD_write_shu: 显示8(宽)*16(高)点阵列数字字母符号等半角类
 140          输入参数:c:显示的字符;
 141          编写日期:20080918 
 142          -----------------------------------------------*/
 143          /*void LCD_write_shu(unsigned char row, unsigned char page,unsigned char c) //row:列 page:页 dd:字符
 144          {
 145                  unsigned char i;        
 146                  
 147                  LCD_set_XY(row*8, page);// 列,页 
 148                  for(i=0; i<8;i++) 
 149                  {
 150                          LCD_write_byte(shuzi[c*16+i],1); 
 151                  }
 152                  
 153              LCD_set_XY(row*8, page+1);// 列,页 
 154                  for(i=8; i<16;i++) 
 155                  {
 156                          LCD_write_byte(shuzi[c*16+i],1);
 157                  }               
 158          }  */
 159          /*---------------------------------------------
 160          LCD_write_hanzi: 显示16(宽)*16(高)点阵列汉字等半角类
 161          输入参数:c:显示的字符;
 162          编写日期:20080918 
 163          -----------------------------------------------*/
 164          void LCD_write_hanzi(unsigned char row, unsigned char page,unsigned char c) //row:列 page:页 dd:字符
 165          {
 166   1              unsigned char i;        
 167   1              
 168   1              LCD_set_XY(row*12, page);// 列,页 
 169   1              for(i=0; i<12;i++) 
 170   1              {
 171   2                      LCD_write_byte(hanzi[c*24+i],1); 
 172   2              }
 173   1              
 174   1          LCD_set_XY(row*12, page+1);// 列,页 
 175   1              for(i=12; i<24;i++) 
 176   1              {
 177   2                      LCD_write_byte(hanzi[c*24+i],1);
 178   2              }       
 179   1      }
C51 COMPILER V8.02   LCD_5110                                                              04/04/2009 19:09:35 PAGE 4   

 180          main()
 181          {       
 182   1              unsigned char k;
 183   1              SYSCLK_Init ( );
 184   1              Port_Init( );
 185   1              res=0;
 186   1              for(k=0;k<250;k++);
 187   1              res=1;          
 188   1              LCD_init();  //初始化LCD模块 
 189   1              LCD_clear(); //清屏幕   
 190   1              LCD_write_hanzi(0,0,0);  //吴   
 191   1              LCD_write_hanzi(1,0,1);  //琼   
 192   1              LCD_write_hanzi(2,0,2);  //你
 193   1              LCD_write_hanzi(3,0,3);  //好
 194   1              LCD_write_hanzi(4,0,4);  //!
 195   1      
 196   1              while(1)
 197   1              {
 198   2              
 199   2              }
 200   1      }
 201          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    310    ----
   CONSTANT SIZE    =    120    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   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 + -