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

📄 lcddisplay.lst

📁 Lcd(12864).rar
💻 LST
字号:
C51 COMPILER V7.06   LCDDISPLAY                                                            08/12/2009 16:40:11 PAGE 1   


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

stmt level    source

   1          /**********************************Copyright (c)**************************************************
   2          **                               浙 江 师 范 大 学
   3          **   
   4          **--------------文件信息---------------------------------------------------------------------------
   5          功能:在LCD上显示汉字信息    
   6          作者:陈希
   7          时间:2008-08-20
   8          版本:V1.0
   9          注:
  10          
  11          **--------------当前版本修订-----------------------------------------------------------------------
  12          ** 修改人: 
  13          ** 日 期:
  14          ** 描 述:
  15          **
  16          **-------------------------------------------------------------------------------------------------
  17          ***************************************************************************************************/
  18          
  19          #include <c8051f020.h>                 // SFR declarations
  20          #include <intrins.h>
  21          #include <stdio.h>
  22          
  23          #define uchar unsigned char          
  24          #define uint  unsigned int 
  25          
  26          #define Lcd_Bus    P5
  27          
  28          #define SYSCLK       22118400          // SYSCLK frequency in Hz
  29          #define INT_DEC      256               // integrate and decimate ratio
  30          #define _Nop() _nop_()
  31          //-----------------------------------------------------------------------------
  32          // 16-bit SFR Definitions for 'F02x
  33          //-----------------------------------------------------------------------------
  34          
  35          sfr16 DP       = 0x82;                 // data pointer
  36          sfr16 TMR3RL   = 0x92;                 // Timer3 reload value
  37          sfr16 TMR3     = 0x94;                 // Timer3 counter
  38          sfr16 ADC0     = 0xbe;                 // ADC0 data
  39          sfr16 ADC0GT   = 0xc4;                 // ADC0 greater than window
  40          sfr16 ADC0LT   = 0xc6;                 // ADC0 less than window
  41          sfr16 RCAP2    = 0xca;                 // Timer2 capture/reload
  42          sfr16 T2       = 0xcc;                 // Timer2
  43          sfr16 RCAP4    = 0xe4;                 // Timer4 capture/reload
  44          sfr16 T4       = 0xf4;                 // Timer4
  45          sfr16 DAC0     = 0xd2;                 // DAC0 data
  46          sfr16 DAC1     = 0xd5;                 // DAC1 data
  47          //-----------------------------------------------------------------------------
  48          // 液晶接口定义
  49          //-----------------------------------------------------------------------------
  50          //sbit RS=P3^0; 
  51          //sbit RW=P3^1;
  52          //sbit E =P3^2;
  53          //sbit RS=P6^7 
  54          //sbit RW=P6^6;
  55          //sbit E =P6^5;
C51 COMPILER V7.06   LCDDISPLAY                                                            08/12/2009 16:40:11 PAGE 2   

  56          //sbit PSB =P6^4;//高电平
  57          //sbit RST =P6^2;//高电平
  58          
  59          #define LCDRSLow  P6&=~0x80;
  60          #define LCDRSHigh P6|=0x80;
  61          
  62          #define LCDRWLow  P6&=~0x40;
  63          #define LCDRWHigh P6|=0x40;
  64          
  65          #define LCDELow  P6&=~0x20;
  66          #define LCDEHigh P6|=0x20;
  67          
  68          #define LCDPSBLow  P6&=~0x10;
  69          #define LCDPSBHigh P6|=0x10;
  70          
  71          #define LCDRSTLow  P6&=~0x04;
  72          #define LCDRSTHigh P6|=0x04;
  73          
  74          
  75          //==============================//
  76          uchar num;
  77          uint delay_time;
  78          /*-----------------------------------------------------*/
  79          
  80          void SYSCLK_Init (void);
  81          void PORT_Init (void);
  82          
  83          
  84          //-----------------------------------------------------------------------------
  85          // 
  86          //-----------------------------------------------------------------------------
  87          
  88          
  89          void delay(unsigned int t)
  90          {    unsigned int k,j;
  91   1           for(k=0;k<t;k++)
  92   1           for(j=0;j<10;j++) ;
  93   1      }
  94          //-----------------------------------------------------------------------------
  95          // 
  96          //-----------------------------------------------------------------------------
  97          
  98          
  99          void delay18(uint k)
 100          { while(k)
 101   1          { k--; }
 102   1      }
 103          
 104          //-----------------------------------------------------------------------------
 105          // 液晶显示写命令
 106          //-----------------------------------------------------------------------------
 107          void write_com(unsigned char cmdcode)
 108          {
 109   1              LCDRSLow;                   
 110   1              LCDRWLow;
 111   1              LCDEHigh;
 112   1              Lcd_Bus=cmdcode;
 113   1              delay(50);delay(60);                           //在数据写入的时候加入适当的延时
 114   1              LCDELow;
 115   1              delay(50);delay(60); 
 116   1      }
 117          //-----------------------------------------------------------------------------
C51 COMPILER V7.06   LCDDISPLAY                                                            08/12/2009 16:40:11 PAGE 3   

 118          // 液晶显示写数据
 119          //-----------------------------------------------------------------------------
 120          void write_data(unsigned char Dispdata)
 121          {
 122   1              LCDRSHigh;
 123   1              LCDRWLow;
 124   1              LCDEHigh;
 125   1              Lcd_Bus=Dispdata;
 126   1              delay(50);delay(60);                            // 在数据写入的时候加入适当的延时
 127   1              LCDELow;
 128   1              delay(50);delay(60); 
 129   1      }
 130          //-----------------------------------------------------------------------------
 131          // 液晶显示,复位初始
 132          //-----------------------------------------------------------------------------
 133          void lcdreset()
 134          {
 135   1           delay(200);delay(250); 
 136   1           write_com(0x30);
 137   1           delay(100);delay(250);                           //选择基本指令集
 138   1           write_com(0x30);                     //选择8bit数据流
 139   1           delay(50);delay(250);
 140   1           write_com(0x0c);                     //开显示(无游标、不反白)
 141   1           delay(50);delay(250);
 142   1           write_com(0x01);                       //清除显示,并且设定地址指针为00H
 143   1           delay(50);delay(250);
 144   1           write_com(0x06);                      //指定在资料的读取及写入时,设定游标的移动方向及指定显示的移位
 145   1      
 146   1      }
 147          //-----------------------------------------------------------------------------
 148          // 液晶显示
 149          //-----------------------------------------------------------------------------
 150          void display(unsigned char code *s)
 151          {
 152   1            while(*s>0)
 153   1            {  write_data(*s);
 154   2               s++;
 155   2               delay(50);delay(100);
 156   2            }
 157   1      }
 158          //-----------------------------------------------------------------------------
 159          // 液晶显示内容
 160          //-----------------------------------------------------------------------------
 161          
 162          void zero_screen()
 163          {
 164   1        write_com(0x01);
 165   1        delay18(10000);
 166   1        //write_com(0x80);
 167   1        //display("  浙江师范大学  ");
 168   1        write_com(0x90);
 169   1        //display("省单片机精品课程");
 170   1        display("C8051F020 开发板");
 171   1        write_com(0x88);
 172   1        //display("C8051F020 开发板");
 173   1        display("  QQ:45248052  ");
 174   1        //write_com(0x98);
 175   1        //display("  QQ:45248052  ");
 176   1      }
 177          //-----------------------------------------------------------------------------
 178          // 通用I/O口及交叉开关初始化
 179          //-----------------------------------------------------------------------------
C51 COMPILER V7.06   LCDDISPLAY                                                            08/12/2009 16:40:11 PAGE 4   

 180          void PORT_Init (void)
 181          {            
 182   1        XBR0 = 0x02;                          // 通过交叉开关将SPI连到通用I/O 引脚;P0.0,P0.1,P0.2 , P0.3
 183   1        XBR2     = 0x40;               // 交叉开关使能   
 184   1                              
 185   1        //P3MDOUT  = 0xff;                // 设为推挽方式  AT24C02读取设置成推挽模式
 186   1        //P2MDOUT  = 0xff;       
 187   1       // P1MDOUT  = 0xff;  
 188   1        //P0MDOUT  = 0x00;                             //读取刷卡器信息设置成开漏模式
 189   1      
 190   1       // P0MDOUT=0x05;
 191   1       // P0|=0x80;
 192   1      }
 193          //-----------------------------------------------------------------------------
 194          // 系统时钟初始化
 195          //-----------------------------------------------------------------------------
 196          
 197          /*
 198          void SYSCLK_Init()
 199          {   
 200            OSCICN =0x87; //使用内部时钟16M
 201            while((OSCICN & 0x10)==0);//内部时钟按设定频率运行
 202          } 
 203          */
 204          // 配置系统时钟使用外部晶振11.0592MHz
 205          
 206          void SYSCLK_Init (void)
 207          {
 208   1         int i;                              // delay counter
 209   1      
 210   1         OSCXCN = 0x67;                      // start external oscillator with
 211   1                                             // 22.1184MHz crystal
 212   1         for (i=0; i < 256; i++) ;           // XTLVLD blanking interval (>1ms)
 213   1      
 214   1         while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle
 215   1      
 216   1         OSCICN = 0x88;                      // select external oscillator as SYSCLK
 217   1                                             // source and enable missing clock
 218   1                                             // detector
 219   1      }
 220          
 221          //-----------------------------------------------------------------------------
 222          // 系统初始化
 223          //-----------------------------------------------------------------------------
 224          void init()
 225          {
 226   1         SYSCLK_Init();
 227   1         PORT_Init ();
 228   1         lcdreset();
 229   1         zero_screen();   
 230   1      }
 231          //-----------------------------------------------------------------------------
 232          // 主程序
 233          //-----------------------------------------------------------------------------
 234          
 235          void main()
 236          { 
 237   1      
 238   1        WDTCN = 0xde;
 239   1        WDTCN = 0xad;                //禁止看门狗定时器  
 240   1      
 241   1        LCDPSBHigh;
C51 COMPILER V7.06   LCDDISPLAY                                                            08/12/2009 16:40:11 PAGE 5   

 242   1        LCDRSTHigh;   
 243   1        init(); 
 244   1        zero_screen();
 245   1        
 246   1         P6=0xff;
 247   1         P5=0xff;
 248   1        while(1)
 249   1        {     
 250   2      
 251   2        }
 252   1      }  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    316    ----
   CONSTANT SIZE    =     33    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3       2
   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 + -