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

📄 nokia_5110.lst

📁 NOKIA 5110LCD的驱动程序(带照片)MSP430的高级开发板的测试程序
💻 LST
字号:
C51 COMPILER V7.06   NOKIA_5110                                                            08/27/2007 19:36:31 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE NOKIA_5110
OBJECT MODULE PLACED IN nokia_5110.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE nokia_5110.c LARGE BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "nokia_5110.h"
   2          #include "english_6x8_pixel.h"
   3          #include "write_chinese_string_pixel.h"
   4          
   5          
   6          /*-----------------------------------------------------------------------
   7          LCD_init          : 3310LCD初始化
   8          
   9          编写日期          :2004-8-10 
  10          最后修改日期      :2004-8-10 
  11          -----------------------------------------------------------------------*/
  12          
  13          void delay_1us(void)                 //1us延时函数
  14            {
  15   1         unsigned int i;
  16   1        for(i=0;i<1000;i++);
  17   1        }
  18          
  19          void LCD_init(void)
  20            {
  21   1                  // 产生一个让LCD复位的低电平脉冲
  22   1         LCD_RST = 0;
  23   1          delay_1us();
  24   1      
  25   1         LCD_RST = 1;
  26   1          
  27   1                      // 关闭LCD
  28   1         LCD_CE = 0;
  29   1          delay_1us();
  30   1                      // 使能LCD
  31   1         LCD_CE = 1;
  32   1          delay_1us();
  33   1      
  34   1          LCD_write_byte(0x21, 0);    // 使用扩展命令设置LCD模式
  35   1          LCD_write_byte(0x80, 0);    // 设置偏置电压c8
  36   1          LCD_write_byte(0x06, 0);    // 温度校正
  37   1          LCD_write_byte(0x13, 0);    // 1:48
  38   1          LCD_write_byte(0x20, 0);    // 使用基本命令
  39   1          LCD_clear();                // 清屏
  40   1          LCD_write_byte(0x0c, 0);    // 设定显示模式,正常显示
  41   1              
  42   1                 // 关闭LCD
  43   1         LCD_CE = 0;
  44   1        }
  45          
  46          /*-----------------------------------------------------------------------
  47          LCD_clear         : LCD清屏函数
  48          
  49          编写日期          :2004-8-10 
  50          最后修改日期      :2004-8-10 
  51          -----------------------------------------------------------------------*/
  52          void LCD_clear(void)
  53            {
  54   1          unsigned int i;
  55   1      
C51 COMPILER V7.06   NOKIA_5110                                                            08/27/2007 19:36:31 PAGE 2   

  56   1          LCD_write_byte(0x0c, 0);                    
  57   1          LCD_write_byte(0x80, 0);                    
  58   1      
  59   1          for (i=0; i<504; i++)
  60   1            LCD_write_byte(0, 1);                     
  61   1        }
  62          
  63          /*-----------------------------------------------------------------------
  64          LCD_set_XY        : 设置LCD坐标函数
  65          
  66          输入参数:X       :0-83
  67                    Y       :0-5
  68          
  69          编写日期          :2004-8-10 
  70          最后修改日期      :2004-8-10 
  71          -----------------------------------------------------------------------*/
  72          void LCD_set_XY(unsigned char X, unsigned char Y)
  73            {
  74   1          LCD_write_byte(0x40 | Y, 0);                // column
  75   1          LCD_write_byte(0x80 | X, 0);                // row
  76   1        }
  77          
  78          /*-----------------------------------------------------------------------
  79          LCD_write_char    : 显示英文字符
  80          
  81          输入参数:c       :显示的字符;
  82          
  83          编写日期          :2004-8-10 
  84          最后修改日期      :2004-8-10 
  85          -----------------------------------------------------------------------*/
  86          void LCD_write_char(unsigned char c)
  87            {
  88   1          unsigned char line;
  89   1      
  90   1          c -= 32;
  91   1      
  92   1          for (line=0; line<6; line++)
  93   1            LCD_write_byte(font6x8[c][line], 1);
  94   1        }
  95          
  96          /*-----------------------------------------------------------------------
  97          LCD_write_english_String  : 英文字符串显示函数
  98          
  99          输入参数:*s      :英文字符串指针;
 100                    X、Y    : 显示字符串的位置,x 0-83 ,y 0-5
 101          
 102          编写日期          :2004-8-10 
 103          最后修改日期      :2004-8-10           
 104          -----------------------------------------------------------------------*/
 105          void LCD_write_english_string(unsigned char X,unsigned char Y,char *s)
 106            {
 107   1          LCD_set_XY(X,Y);
 108   1          while (*s) 
 109   1            {
 110   2               LCD_write_char(*s);
 111   2               s++;
 112   2            }
 113   1        }
 114          /*-----------------------------------------------------------------------
 115          LCD_write_chinese_string: 在LCD上显示汉字
 116          
 117          输入参数:X、Y    :显示汉字的起始X、Y坐标;
C51 COMPILER V7.06   NOKIA_5110                                                            08/27/2007 19:36:31 PAGE 3   

 118                    ch_with :汉字点阵的宽度
 119                    num     :显示汉字的个数;  
 120                    line    :汉字点阵数组中的起始行数
 121                    row     :汉字显示的行间距
 122          编写日期          :2004-8-11 
 123          最后修改日期      :2004-8-12 
 124          测试:
 125                  LCD_write_chi(0,0,12,7,0,0);
 126                  LCD_write_chi(0,2,12,7,0,0);
 127                  LCD_write_chi(0,4,12,7,0,0);    
 128          -----------------------------------------------------------------------*/                        
 129          void LCD_write_chinese_string(unsigned char X, unsigned char Y, 
 130                             unsigned char ch_with,unsigned char num,
 131                             unsigned char line,unsigned char row)
 132            {
 133   1          unsigned char i,n;
 134   1          
 135   1          LCD_set_XY(X,Y);                             //设置初始位置
 136   1          
 137   1          for (i=0;i<num;)
 138   1            {
 139   2              for (n=0; n<ch_with*2; n++)              //写一个汉字
 140   2                { 
 141   3                  if (n==ch_with)                      //写汉字的下半部分
 142   3                    {
 143   4                      if (i==0) LCD_set_XY(X,Y+1);
 144   4                      else
 145   4                         LCD_set_XY((X+(ch_with+row)*i),Y+1);
 146   4                    }
 147   3                  LCD_write_byte(write_chinese[line+i][n],1);
 148   3                }
 149   2              i++;
 150   2              LCD_set_XY((X+(ch_with+row)*i),Y);
 151   2            }
 152   1        }
 153            
 154          /*-----------------------------------------------------------------------
 155          LCD_write_byte    : 使用SPI接口写数据到LCD
 156          
 157          输入参数:data    :写入的数据;
 158                    command :写数据/命令选择;
 159          
 160          编写日期          :2004-8-10 
 161          最后修改日期      :2004-8-13 
 162          -----------------------------------------------------------------------*/
 163          void LCD_write_byte(unsigned char dat, unsigned char command)
 164            {
 165   1          unsigned char i;
 166   1          //PORTB &= ~LCD_CE ;                        // 使能LCD
 167   1          LCD_CE = 0;
 168   1          
 169   1          if (command == 0)
 170   1           // PORTB &= ~LCD_DC ;              // 传送命令
 171   1           LCD_DC = 0;
 172   1          else
 173   1           // PORTB |= LCD_DC ;                       // 传送数据
 174   1           LCD_DC = 1;
 175   1                      for(i=0;i<8;i++)
 176   1                      {
 177   2                              if(dat&0x80)
 178   2                                      SDIN = 1;
 179   2                              else
C51 COMPILER V7.06   NOKIA_5110                                                            08/27/2007 19:36:31 PAGE 4   

 180   2                                      SDIN = 0;
 181   2                              SCLK = 0;
 182   2                              dat = dat << 1;
 183   2                              SCLK = 1;
 184   2                      }
 185   1           LCD_CE = 1;
 186   1        }
 187          
 188          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    526    ----
   CONSTANT SIZE    =    696    ----
   XDATA SIZE       =   ----      16
   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 + -