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

📄 lcdxianshi.lst

📁 简单的LCD多级菜单显示
💻 LST
字号:
C51 COMPILER V7.50   LCDXIANSHI                                                            08/29/2007 20:54:24 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LCDXIANSHI
OBJECT MODULE PLACED IN lcdxianshi.OBJ
COMPILER INVOKED BY: D:\keil\C51\BIN\C51.EXE lcdxianshi.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          **      Create : 2007 7 31
   3          **      Author : oDon
   4          **      email  : yuanonline@hotmail.com 
   5          **      Description:**
   6          **      This project is using for a library of solutions of CM12864
   7          **      functions will implements to display ZH_CN ASCII IMAGE on
   8          **      CM12864 LCD.etc..
   9          */
  10          #include <intrins.h>
  11          #include<func.h>
  12          #include<reg52.h>
  13          sbit RS  = P2^0;
  14          sbit RW  = P2^1;
  15          sbit E   = P2^2;
  16          sbit PSB = P2^3;
  17          sbit RST = P2^4;
  18          
  19          #define DATA P1
  20          volatile uchar command;                         /*Command Word*/
  21          
  22          /**************************************************
  23          *                       Function Definations Below                        */
  24          
  25          void check_busy(void);
  26          void send_com(const unsigned char command);
  27          void send_com_init(const unsigned char command_init);
  28          void send_data(const unsigned char data_a);
  29          void send_data(const unsigned char data_a);
  30          void clear_LCD(void);
  31          void initial_LCD(void); 
  32          void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length );
  33          void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length );
  34          /*                      Function Definations End                          *
  35          **************************************************/
  36          
  37          /*void xianshi(void)
  38          {
  39                  clear_LCD();
  40                  smNop();
  41                  initial_LCD();
  42                  smNop();
  43                  clear_LCD();
  44                  smNop();
  45                  Display_ch(suc, 2, 1, 6);
  46                  while(1);
  47                          
  48          }  */
  49          
  50          
  51          /******************************************
  52          功能:void check_busy( void )
  53          功能:检查是否LCD忙碌的子程序
  54          实参输入:void
  55          返回值:void
C51 COMPILER V7.50   LCDXIANSHI                                                            08/29/2007 20:54:24 PAGE 2   

  56          ******************************************/
  57          void check_busy(void) 
  58          {        
  59   1               P1    = 0xff; 
  60   1           RS    = 0; 
  61   1           RW    = 1; 
  62   1           while (1) 
  63   1           {
  64   2                    smNop(); 
  65   2                E =1; 
  66   2                smNop();               
  67   2                        if( P1 < 0x80 ) 
  68   2                            break; 
  69   2                smNop();
  70   2                E =0; 
  71   2            } 
  72   1           E = 0; 
  73   1      }
  74          
  75          /*****************************************
  76          名称:void send_com( unsigned char command )
  77          功能:数据写命令
  78          实参输入:unsigned char command
  79          返回值:void
  80          *****************************************/
  81          void send_com(const unsigned char command) 
  82          { 
  83   1           check_busy(); 
  84   1           RS = 0; 
  85   1           RW = 0;     
  86   1               P1 = command; 
  87   1           E  = 1; 
  88   1           smNop(); 
  89   1           E = 0; 
  90   1      }
  91          
  92          /********************************************************
  93          名称:void send_com_init( unsigned char command_init )
  94          功能:LCD初始化时的送命令
  95          实参输入:unsigned char command_init
  96          返回值:void
  97          ********************************************************/
  98          void send_com_init(const unsigned char command_init ) 
  99          { 
 100   1           RS    = 0; 
 101   1           RW    = 0;
 102   1               P1    = command_init; 
 103   1           E     = 1; 
 104   1           smNop();
 105   1           E     = 0; 
 106   1      }
 107          
 108          /*******************************************************
 109          名称:void send_data( unsigned char data_a )
 110          功能:写数据
 111          实参输入:unsigned char data_a
 112          返回值:void
 113          *******************************************************/ 
 114          void send_data(const unsigned char data_a)
 115          { 
 116   1           check_busy(); 
 117   1           RS    = 1;                 //DB7-DB0为显示数据
C51 COMPILER V7.50   LCDXIANSHI                                                            08/29/2007 20:54:24 PAGE 3   

 118   1           RW    = 0;             //写入数据
 119   1               P1    = data_a; 
 120   1           E     = 1;         
 121   1           smNop();
 122   1           E     = 0;                         //下降沿
 123   1      }
 124          
 125          /*********************************************************
 126          名称:void clear_LCD( void )
 127          功能:清屏
 128          实参输入:void
 129          返回值:void
 130          *********************************************************/
 131          void clear_LCD(void) 
 132          { 
 133   1           send_com(0x01);  //清除显示//
 134   1           send_com(0x34);  // 功能设定:扩充指令集动作 //
 135   1           send_com(0x30);   //功能设定:基本指令集动作//
 136   1      }
 137          
 138          /*************************************************************
 139          名称:void initial_LCD( void )
 140          功能:LCD初始化
 141          实参输入:void
 142          返回值:void
 143          *************************************************************/
 144          void initial_LCD(void) 
 145          {   
 146   1           PSB = 1;   //水平显示
 147   1           RST = 0;   //复位 
 148   1           _nop_(); 
 149   1           _nop_(); 
 150   1           RST = 1;   //不复位
 151   1           _nop_(); 
 152   1           delay_10us(10); 
 153   1           send_com_init(0x30);//30H--基本指令操作 
 154   1           delay_10us(4); 
 155   1           send_com_init(0x0c);//开显示,关光标,不闪烁。 
 156   1           delay_10us(10); 
 157   1           send_com_init(0x01);//清除显示 
 158   1           delay_ms(10); 
 159   1           send_com_init(0x06);//指定在资料写入或读取时,光标的移动方向,DDRAM的地址计数器(AC)加1。     
 160   1      }
 161          
 162          
 163          /*********************************************************************
 164          名称:void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
 165          功能:显示字符串                                 2                                        1                                             6
 166          参数输入:unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length
 167          返回值:void
 168          *********************************************************************/
 169          void Display_num( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
 170          {    
 171   1           unsigned char ddram = 0x00;
 172   1               unsigned char i1;
 173   1      
 174   1               if(line == 1)
 175   1                      ddram = 0x80;
 176   1               if(line == 2)
 177   1                      ddram = 0x90;
 178   1               if(line == 3)
 179   1                      ddram = 0x88;
C51 COMPILER V7.50   LCDXIANSHI                                                            08/29/2007 20:54:24 PAGE 4   

 180   1               if(line == 4)
 181   1                  ddram = 0x98;
 182   1      
 183   1           ddram = ddram + col - 1;
 184   1      
 185   1           send_com( ddram );  //定位显示起始地址
 186   1      
 187   1               for( i1 = 0;i1 < length;i1 ++ )
 188   1               {
 189   2                       send_data( ptr[i1] );//输出单个字符 
 190   2           }            
 191   1      }
 192          
 193          /********************************************************
 194          名称: void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
 195          功能:显示汉字子程序
 196          实参输入:unsigned char *ptr, unsigned char line, unsigned char col, unsigned length
 197          返回值:void
 198          ********************************************************/
 199          void Display_ch( unsigned char *ptr, unsigned char line, unsigned char col, unsigned char length )
 200          {
 201   1      
 202   1               unsigned char ddram = 0x00;
 203   1               unsigned char i1;
 204   1               if(line == 1)
 205   1                      ddram = 0x80;
 206   1               if(line == 2)
 207   1                      ddram = 0x90;
 208   1               if(line == 3)
 209   1                      ddram = 0x88;
 210   1               if(line == 4)
 211   1                  ddram = 0x98;
 212   1      
 213   1               ddram = ddram + col - 1;
 214   1           send_com( ddram );   //定位显示起始地址
 215   1               for( i1 = 0;i1 < length;i1 ++ )
 216   1               {
 217   2                       send_data(ptr[i1*2]);//输出单个字符
 218   2                       send_data(ptr[i1*2+1]); 
 219   2           }            
 220   1      }
 221          /****************************************************************
 222          -----------------------------------------------------------------
 223                                     END  OF      MAIN.C
 224          -----------------------------------------------------------------
 225          ****************************************************************/


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