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

📄 nokia5110.lst

📁 51WIFI程序
💻 LST
字号:
C51 COMPILER V7.07   NOKIA5110                                                             04/18/2012 19:27:36 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE NOKIA5110
OBJECT MODULE PLACED IN nokia5110.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE nokia5110.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include "nokia5110.h"
   2          #include"zifu6x8.h"
   3          
   4          /*********************************
   5          函数名称: WriteByteNokia(uchar cmd_data,uchar lcd_cmd)写指令
   6          功能:写入一个字节
   7          入口参数:cmd_data,lcd_cmd
   8          返回参数:无
   9          *********************************/
  10          
  11          void WriteByteNokia(uchar cmd_data,uchar lcd_byte)
  12          {
  13   1              uchar i;
  14   1      
  15   1              SCE_L();//NOKIA_SCE = LOW;
  16   1              RST_H();//NOKIA_RST = HIGH;
  17   1              if(cmd_data)//NOKIA_DC  = cmd_data;
  18   1                  DC_H();//命令OR数据
  19   1              else
  20   1                  DC_L();
  21   1              
  22   1              for (i=0;i<8;i++)
  23   1              {
  24   2                      SCLK_L();//NOKIA_SCLK= LOW;
  25   2                      if ((lcd_byte&0x80) == 0x80)
  26   2                              SDIN_H();//NOKIA_SDIN = 1;
  27   2                      else
  28   2                              SDIN_L();//NOKIA_SDIN = 0;
  29   2                      lcd_byte = lcd_byte<<1;
  30   2                      SCLK_H();//NOKIA_SCLK= HIGH;
  31   2              }                       
  32   1      }
  33          
  34          /*********************************
  35          函数名称: WriteNokia(uchar cmd_data,uchar lcd_byte)写指令
  36          功能:写入一个字符串
  37          入口参数:cmd_data,lcd_cmd
  38          返回参数:无
  39          *********************************/
  40          void WriteNokia(uchar cmd_data,uchar *lcd_byte)
  41          {
  42   1              uchar i;
  43   1              SCE_L();//NOKIA_SCE = LOW;
  44   1              RST_H();//NOKIA_RST = HIGH;
  45   1              if(cmd_data)//NOKIA_DC  = cmd_data;
  46   1                  DC_H(); //命令OR数据
  47   1              else
  48   1                  DC_L();
  49   1      
  50   1              while ((*lcd_byte) != '\0')
  51   1              {
  52   2                      for (i=0;i<8;i++)
  53   2                      {
  54   3                              SCLK_L();//NOKIA_SCLK= LOW;
  55   3                              if (((*lcd_byte)&0x80) == 0x80)
C51 COMPILER V7.07   NOKIA5110                                                             04/18/2012 19:27:36 PAGE 2   

  56   3                                      SDIN_H();//NOKIA_SDIN = 1;
  57   3                              else
  58   3                                      SDIN_L();//NOKIA_SDIN = 0;
  59   3                              *lcd_byte = (*lcd_byte)<<1;
  60   3                              SCLK_H();//NOKIA_SCLK= HIGH;
  61   3                      }
  62   2                      lcd_byte++;
  63   2              }       
  64   1      }
  65          
  66          /*********************************
  67          函数名称: SetAddr(uchar addr_x,uchar addr_y)
  68          功能:设定RAM地址
  69          入口参数:uchar addr_x,uchar addr_y
  70          返回参数:无
  71          *********************************/
  72          void SetAddr(uchar addr_x,uchar addr_y)
  73          {
  74   1              WriteByteNokia(CMD,0x80+addr_x);//加上0x80和0x40是设置地址所必须的控制字
  75   1              WriteByteNokia(CMD,0x40+addr_y);
  76   1      }
  77          
  78          /*********************************
  79          函数名称: ClearLcd(void)清除RAM
  80          入口参数:无
  81          返回参数:无
  82          *********************************/
  83          void ClearLcd(void)
  84          {
  85   1              uint i;
  86   1              
  87   1              WriteByteNokia(CMD,0x80);       //将地址指向原点
  88   1              WriteByteNokia(CMD,0x40);
  89   1      
  90   1              for (i=0;i<504;i++)
  91   1          {
  92   2                      WriteByteNokia(DAT,0x00);
  93   2          }
  94   1      }
  95          /*********************************
  96          函数名称: LCD_init(void)
  97          功能:清屏
  98          入口参数:无
  99          返回参数:无
 100          *********************************/
 101          void LCD_init(void){
 102   1      
 103   1              P2=0xff;//设置为输出管脚
 104   1              LED_ON();        //打开背光
 105   1              WriteByteNokia(0,0x21);//初始化Lcd,功能设定使用扩充指令
 106   1              WriteByteNokia(0,0xC6);//设定液晶偏置电压
 107   1              WriteByteNokia(0,0x06);//温度校正
 108   1              WriteByteNokia(0,0x13);;//1:48
 109   1              WriteByteNokia(0,0x20);//使用基本指令
 110   1              WriteByteNokia(0,0x0C);//设定显示模式,正常显示 
 111   1              ClearLcd();
 112   1              SetAddr(0,0);   
 113   1      
 114   1      }
 115          /*********************************
 116          函数名称: DisplayHz(uchar addr_x,uchar addr_y,uchar *hz)
 117          功能:显示汉字
C51 COMPILER V7.07   NOKIA5110                                                             04/18/2012 19:27:36 PAGE 3   

 118          入口参数:uchar addr_x,uchar addr_y,uchar *hz
 119          返回参数:无
 120          *********************************/
 121          void DisplayHz(uchar addr_x,uchar addr_y,const unsigned char *hz)//汉字宽度为12,高度为12
 122          {
 123   1              uchar i=0,ch_with=12;
 124   1      
 125   1              SetAddr(addr_x,addr_y);
 126   1              for (i=0; i<ch_with*2;i++)
 127   1                {
 128   2                  if (i==ch_with)
 129   2                    {
 130   3                     // if (i==0)
 131   3                        SetAddr(addr_x,addr_y+1);
 132   3                     // else
 133   3                       // SetAddr((addr_x+(ch_with+row)*i),addr_y+1);
 134   3                    }
 135   2                  WriteByteNokia(DAT,hz[i]);
 136   2                }
 137   1      
 138   1      }
 139          
 140          /*********************************
 141          函数名称: DisplayZf(uchar addr_x,uchar addr_y,uchar *zf)
 142          功能: 显示字符
 143          入口参数:uchar addr_x,uchar addr_y,uchar *hz
 144          返回参数:无
 145          *********************************/
 146          void LCD_char_string(uchar addr_x,uchar addr_y,uchar *zf)//字符宽度为6,高度为8
 147          {
 148   1              uchar j,i=0;                            //每行最多写14个字符
 149   1              while (*zf != '\0')
 150   1              {
 151   2                      for (j=0;j<6;j++)
 152   2                      {
 153   3                              SetAddr(addr_x+i*6+j,addr_y);
 154   3                              WriteByteNokia(DAT,zifu6x8[*zf-0x20][j]);
 155   3                      }
 156   2                      zf++;
 157   2                      i++;
 158   2              }
 159   1              
 160   1      }
 161          /*********************************
 162          函数名称:  LCD_write_char(uchar addr_x,uchar addr_y,uchar c)
 163          功能: 在指定的位置显示一个英文字符
 164          入口参数:uchar addr_x,uchar addr_y,uchar c
 165          返回参数:无
 166          *********************************/
 167          void LCD_one_char(uchar addr_x,uchar addr_y,uchar c)
 168            {
 169   1          unsigned char j;
 170   1      
 171   1          for (j=0; j<6; j++){
 172   2            SetAddr(addr_x+j,addr_y);
 173   2            WriteByteNokia(DAT,zifu6x8[c-0x20][j]);
 174   2          }
 175   1        }
 176          /*********************************
 177          函数名称:  LCD_num(uchar addr_x,uchar addr_y,unsigned int num)
 178          功能: 在指定的位置显示数据
 179          入口参数:uchar addr_x,uchar addr_y,unsigned int num
C51 COMPILER V7.07   NOKIA5110                                                             04/18/2012 19:27:36 PAGE 4   

 180          返回参数:无
 181          *********************************/
 182          void LCD_num(uchar addr_x,uchar addr_y,unsigned int num)
 183          {
 184   1       unsigned char dat[7],i;
 185   1       dat[0]=num/10000+48;
 186   1       dat[1]=num%10000/1000+48;
 187   1       dat[2]=num%1000/100+48;
 188   1       dat[3]=num%100/10+48;
 189   1       dat[4]=num%10+48;
 190   1       dat[5]=32;
 191   1       dat[6]='\0';
 192   1       for(i=0;i<4;i++)
 193   1       {
 194   2         if(dat[i]==48)
 195   2               dat[i]=32;
 196   2         else break;
 197   2       }
 198   1      LCD_char_string(addr_x,addr_y,dat);
 199   1      
 200   1      }
 201          
 202          /*-----------------------------------------------------------------------
 203          LCD_draw_map      : 位图绘制函数
 204          
 205          输入参数:X、Y    :位图绘制的起始X、Y坐标;
 206                    *map    :位图点阵数据;
 207                    Pix_x   :位图像素(长)
 208                    Pix_y   :位图像素(宽)
 209          
 210          -----------------------------------------------------------------------*/
 211          
 212          void LCD_draw_bmp(uchar addr_x,uchar addr_y,const unsigned char *map,
 213                            uchar Pix_x,uchar Pix_y)
 214            {
 215   1          unsigned int i,n;
 216   1          unsigned char row;
 217   1      
 218   1          if (Pix_y%8==0) row=Pix_y/8;    //计算位图所占行数
 219   1            else
 220   1              row=Pix_y/8+1;
 221   1      
 222   1          for (n=0;n<row;n++)
 223   1            {
 224   2              SetAddr(addr_x,addr_y);
 225   2      
 226   2              for(i=0; i<Pix_x; i++)
 227   2                {
 228   3                  WriteByteNokia(DAT,map[i+n*Pix_x]);
 229   3                }
 230   2              addr_y++;                       //换行
 231   2            }
 232   1        }
 233          
 234          
 235          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    711    ----
   CONSTANT SIZE    =    552    ----
   XDATA SIZE       =   ----    ----
C51 COMPILER V7.07   NOKIA5110                                                             04/18/2012 19:27:36 PAGE 5   

   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      34
   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 + -