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

📄 nokia5110.lst

📁 nokia5110智能电子钟的设计ds1302+ds18b20+stc12c5a60s2
💻 LST
字号:
C51 COMPILER V9.00   NOKIA5110                                                             07/01/2013 12:13:30 PAGE 1   


C51 COMPILER V9.00, COMPILATION OF MODULE NOKIA5110
OBJECT MODULE PLACED IN ..\output\nokia5110.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ..\c_file\nokia5110.c BROWSE INCDIR(..\c_file;..\h_file;..\output;..\projec
                    -t) DEBUG OBJECTEXTEND PRINT(.\nokia5110.lst) OBJECT(..\output\nokia5110.obj)

line level    source

   1          /**************************************************************************************
   2          *                                               子程序:底层程序                                                                          *                                               
   3          *                                                   功能:显示器处理,系统初始化;                                                        *
   4          *                                                                                                                                                         *
   5          *                                                                                                                                                                         *
   6          ***************************************************************************************/
   7          # include <intrins.h>
   8          # include "stc12c5a60s2.h"
   9          # include "macroandconst.h"
  10          # include "zimo.h"
  11          # include "nokia5110.h"
  12          # include "ds1302.h"
  13          # include "ADC.h"
  14          # include "delay.h"
  15          void system_inint()
  16          {
  17   1           uchar num;
  18   1      
  19   1              EX0  =  1;//*外部中断0中断允许位;*//
  20   1              IT0  =  0;//*外部中断0触发方式控制位,置0为低电平触发方式,置1为跳变触发方式;*//
  21   1      
  22   1              TMOD =  0x11;           //设置定时器模式
  23   1              TH0  =  (65536-50000)/256;
  24   1              TL0  =  (65536-50000)%256;
  25   1              TF0  =  0;              //清除TF0标志
  26   1              TR0  =  1;
  27   1              EA   =  1;//*总中断控制;*//
  28   1      
  29   1              LCD_RST=0;
  30   1              Delay100ms();
  31   1              LCD_RST=1;
  32   1                              
  33   1              LCD_init();  //初始化LCD模块 
  34   1              LCD_clear(); //清屏幕
  35   1              LCD_POWER=1;
  36   1              Delay100ms();
  37   1              LCD_BLA=1;
  38   1      
  39   1              BEEP=0;  
  40   1              //smartclock//
  41   1              for(num=0;num<10;num++)
  42   1              {
  43   2              LCD_write_shu(num,2,num+77);
  44   2              }       
  45   1              BEEP=1;
  46   1              Delay100ms();
  47   1              Delay100ms();
  48   1              Delay100ms();
  49   1              Delay100ms();
  50   1              Delay100ms();
  51   1              Delay100ms();
  52   1              LCD_clear(); //清屏幕
  53   1      
  54   1              /*您好,欢迎您使用!*/
C51 COMPILER V9.00   NOKIA5110                                                             07/01/2013 12:13:30 PAGE 2   

  55   1      
  56   1              LCD_write_hanzi(0,0,20);
  57   1              LCD_write_hanzi(1,0,21);
  58   1              LCD_write_shu(4,0,88);
  59   1      
  60   1      
  61   1              LCD_write_hanzi(0,2,22);
  62   1              LCD_write_hanzi(1,2,23);
  63   1              LCD_write_hanzi(2,2,20);
  64   1              LCD_write_hanzi(3,2,24);
  65   1              LCD_write_hanzi(4,2,25);
  66   1              LCD_write_6x8shu(13,3,100);
  67   1          LCD_write_6x8shu(13,2,99);
  68   1      
  69   1      
  70   1         /*leading...*/
  71   1              LCD_write_shu(2,4,'L'-29);
  72   1              LCD_write_shu(3,4,'e'-87);
  73   1              LCD_write_shu(4,4,'a'-87);
  74   1              LCD_write_shu(5,4,'d'-87);
  75   1              LCD_write_shu(6,4,'i'-87);
  76   1              LCD_write_shu(7,4,'n'-87);
  77   1              LCD_write_shu(8,4,'g'-87);
  78   1          LCD_write_shu(9,4,89);
  79   1      
  80   1              Delay100ms();
  81   1              Delay100ms();
  82   1              Delay100ms();
  83   1              Delay100ms();
  84   1              Delay100ms();
  85   1              Delay100ms();
  86   1              Delay100ms();
  87   1              Delay100ms();
  88   1              Delay100ms();
  89   1              Delay100ms();
  90   1      
  91   1              LCD_draw_bmp_pixel(0,0,tupian, 84,48);
  92   1      
  93   1              Delay100ms();
  94   1              Delay100ms();
  95   1              Delay100ms();
  96   1              Delay100ms();
  97   1              Delay100ms();
  98   1              Delay100ms();
  99   1              Delay100ms();
 100   1              Delay100ms();
 101   1              Delay100ms();
 102   1              Delay100ms();
 103   1      
 104   1              LCD_clear(); //清屏幕
 105   1      
 106   1              InitADC();
 107   1      
 108   1      }
 109          
 110          
 111          
 112          
 113          /*--------------------------------------------
 114          LCD_write_byte: 使用SPI接口写数据到LCD
 115          输入参数:DAT:写入的数据;
 116          command :写数据/命令选择; 
C51 COMPILER V9.00   NOKIA5110                                                             07/01/2013 12:13:30 PAGE 3   

 117          ----------------------------------------------*/
 118          void LCD_write_byte(uchar DAT, uchar command)
 119          {
 120   1              uchar i; 
 121   1              LCD_CE=0;       
 122   1              LCD_DC=command;           //command=1为写数据,command=0为写指令
 123   1              for(i=0;i<8;i++)
 124   1              { 
 125   2                      if(DAT&0x80)
 126   2                              LCD_SDA=1;
 127   2                      else
 128   2                              LCD_SDA=0;
 129   2                      DAT=DAT<<1;             
 130   2                      LCD_SCLK=0;     //LCD_SCLK上升沿接收一位数据    
 131   2                      LCD_SCLK=1; 
 132   2              }       
 133   1                      LCD_DC=1;       
 134   1                      LCD_CE=1;       
 135   1                      LCD_SDA=1;
 136   1      }
 137          /*---------------------------------------
 138          LCD_init: 5110LCD初始化
 139          
 140          -----------------------------------------  */
 141          void LCD_init(void)
 142          {
 143   1              LCD_RST=0;                         //复位
 144   1              delayms(1);     
 145   1              LCD_RST=1;  
 146   1              LCD_write_byte(0x21,0);//初始化Lcd,功能设定使用扩充指令
 147   1              LCD_write_byte(0xc5,0);//设定液晶偏置电压//背景阴影调整;
 148   1              LCD_write_byte(0x20,0);//使用基本指令
 149   1              LCD_write_byte(0x0C,0);//设定显示模式,正常显示
 150   1          LCD_write_byte(0x06,0);     // 温度校正
 151   1      
 152   1      }
 153          /*-------------------------------------------
 154          LCD_set_XY: 设置LCD坐标函数
 155          输入参数:X:0-83  Y:0-5
 156          
 157          ---------------------------------------------*/
 158          void LCD_set_XY(uchar X, uchar Y)
 159          {
 160   1              LCD_write_byte(0x40 | Y, 0);// column  列
 161   1              LCD_write_byte(0x80 | X, 0);// row        行
 162   1      } 
 163          /*------------------------------------------
 164          LCD_clear: LCD清屏函数
 165          
 166          --------------------------------------------*/
 167          void LCD_clear(void)
 168          {
 169   1              uchar t;
 170   1              uchar k;
 171   1              LCD_set_XY(0,0);
 172   1              for(t=0;t<6;t++)
 173   1              { 
 174   2                      for(k=0;k<84;k++)
 175   2                      { 
 176   3                              LCD_write_byte(0x00,1);
 177   3                                      
 178   3                      } 
C51 COMPILER V9.00   NOKIA5110                                                             07/01/2013 12:13:30 PAGE 4   

 179   2              }
 180   1      }
 181          /*---------------------------------------------
 182          LCD_write_shu: 显示6(宽)*8(高)点阵列数字字母符号等半角类
 183          输入参数:c:显示的字符;
 184          -----------------------------------------------*/
 185          void LCD_write_6x8shu(uchar row, uchar page,uchar c) //row:列 page:行 dd:字符
 186          {
 187   1              uchar i;        
 188   1              
 189   1              LCD_set_XY(row*6, page);// 列,页 row表示第row个8行,page表示第page个8列,坐标位(row,page)
 190   1              for(i=0; i<3;i++) 
 191   1              {
 192   2                      LCD_write_byte(shuzi6x8[c*6+i],1); //数字的点阵为8*6,写上shuz90的上半部分
 193   2              }
 194   1              
 195   1          LCD_set_XY(row*6+3, page);// 列,行 
 196   1              for(i=3; i<6;i++) 
 197   1              {
 198   2                      LCD_write_byte(shuzi6x8[c*6+i],1);  //写数字的下半部分
 199   2              }               
 200   1      }
 201          /*---------------------------------------------
 202          LCD_write_shu: 显示8(宽)*16(高)点阵列数字字母符号等半角类
 203          输入参数:c:显示的字符;
 204          -----------------------------------------------*/
 205          void LCD_write_shu(uchar row, uchar page,uchar c) //row:列 page:页 dd:字符
 206          {
 207   1              uchar i;        
 208   1              
 209   1              LCD_set_XY(row*8, page);// 列,页 row表示第row个8行,page表示第page个8列,坐标位(row,page)
 210   1              for(i=0; i<8;i++) 
 211   1              {
 212   2                      LCD_write_byte(shuzi[c*16+i],1); //数字的点阵为16*8,写上shuz9o的上半部分
 213   2              }
 214   1              
 215   1          LCD_set_XY(row*8, page+1);// 列,页 
 216   1              for(i=8; i<16;i++) 
 217   1              {
 218   2                      LCD_write_byte(shuzi[c*16+i],1);  //写数字的下半部分
 219   2              }               
 220   1      }
 221          /*---------------------------------------------
 222          LCD_write_hanzi: 显示16(宽)*16(高)点阵列汉字等半角类
 223          输入参数:c:显示的字符;
 224          -----------------------------------------------*/
 225          void LCD_write_hanzi(uchar row, uchar page,uchar c) //row:列 page:页 dd:字符
 226          {
 227   1              uchar i;        
 228   1              
 229   1              LCD_set_XY(row*16, page);// 列,页 
 230   1              for(i=0; i<16;i++) 
 231   1              {
 232   2                      LCD_write_byte(hanzi[c*32+i],1);  //写汉子的上半部分
 233   2              }
 234   1              
 235   1          LCD_set_XY(row*16, page+1);// 列,页 
 236   1              for(i=16; i<32;i++) 
 237   1              {
 238   2                      LCD_write_byte(hanzi[c*32+i],1);  //写汉子的下半部分
 239   2              }       
 240   1      }
C51 COMPILER V9.00   NOKIA5110                                                             07/01/2013 12:13:30 PAGE 5   

 241          /*********************************************************** 
 242          函数名称:LCD_draw_bmp_pixel
 243          函数功能:位图绘制函数
 244          入口参数:X、Y    :位图绘制的起始X、Y坐标;
 245                    *map    :位图点阵数据;
 246                    Pix_x   :位图像素(长)
 247                    Pix_y   :位图像素(宽)
 248          出口参数:无 
 249          备 注: 
 250          ***********************************************************/
 251          void LCD_draw_bmp_pixel(uchar X,uchar Y,uchar *tupian, uchar Pix_x,uchar Pix_y)
 252          {
 253   1          uint i,n;
 254   1          uchar row;
 255   1                                                          //计算位图所占行数
 256   1            if (Pix_y%8==0)           //如果为位图所占行数为整数
 257   1                   row=Pix_y/8;      
 258   1            else
 259   1               row=Pix_y/8+1;         //如果为位图所占行数不是整数
 260   1          
 261   1              LCD_set_XY(X,Y);
 262   1          for (n=0;n<row;n++)         //换行
 263   1            { 
 264   2              for(i=0;i<Pix_x;i++)
 265   2                {     
 266   3                           LCD_set_XY(X+i,Y+n);
 267   3                   LCD_write_byte(tupian[i+n*Pix_x], 1);
 268   3                }                         
 269   2            }      
 270   1      }
 271          
 272          
 273          
 274          
 275          
 276          


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