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

📄 lcd.lst

📁 Proteus6.9 sp4 上
💻 LST
字号:
C51 COMPILER V7.06   LCD                          01/24/2007 16:22:12 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd.c DEBUG OBJECTEXTEND PAGEWIDTH
                    -(79) PAGELENGTH(66)

stmt level    source

   1          #include "lcd.h"
   2          #include "delay.h"
   3          
   4          #ifdef  Debug
   5          #include <stdio.h>  
   6          #endif
   7          
   8          unsigned char CurOffset,CurRow,CurPage,CurCol;
   9          
  10          void LCD_BUSY(unsigned char lr) //判断忙标志
  11          {
  12   1         unsigned char status;
  13   1      
  14   1         if(lr==RIGHT)
  15   1         {
  16   2            CLEAR_LCD_CS2; //cs2=0
  17   2            SET_LCD_CS1;   //cs1=1
  18   2         }
  19   1         else
  20   1         {
  21   2            SET_LCD_CS2;   //cs2=1
  22   2            CLEAR_LCD_CS1; //cs1=0
  23   2         }
  24   1         SET_LCD_CMD;
  25   1      
  26   1         SET_LCD_READ;
  27   1         SET_LCD_E;
  28   1         delay_us();
  29   1         while(LCD_OP_PORT&LCD_STATUS_BUSY)
  30   1         {
  31   2            CLEAR_LCD_E;
  32   2                delay_us();
  33   2            SET_LCD_E;
  34   2                delay_us();
  35   2         }
  36   1         CLEAR_LCD_E;
  37   1         SET_LCD_WRITE;
  38   1      
  39   1      }
*** WARNING C280 IN LINE 12 OF LCD.C: 'status': unreferenced local variable
  40          
  41          void write_LCD(unsigned char lr,unsigned char cd,unsigned char da
             -t) /*写入指令或数据*/
  42          {       
  43   1      
  44   1         LCD_BUSY(lr);
  45   1         if(cd==CMD)
  46   1            SET_LCD_CMD;
  47   1         else
  48   1            SET_LCD_DATA;
  49   1      
  50   1         SET_LCD_WRITE;
  51   1         SET_LCD_E;
  52   1         LCD_OP_PORT = dat;
  53   1      
  54   1         #ifdef Debug
C51 COMPILER V7.06   LCD                          01/24/2007 16:22:12 PAGE 2   

  55   1           printf("%x  \n",dat);
  56   1         #endif
  57   1      
  58   1         delay_nus(4);
  59   1         CLEAR_LCD_E;
  60   1      }
  61          
  62          unsigned char read_LCD(unsigned char lr)          /*  读显示数据 */
  63          {
  64   1         unsigned char dat;
  65   1         
  66   1         LCD_BUSY(lr);
  67   1         SET_LCD_DATA;
  68   1      
  69   1         SET_LCD_READ;
  70   1         SET_LCD_E;
  71   1      
  72   1         delay_us();
  73   1      
  74   1         dat=LCD_OP_PORT;
  75   1      
  76   1         CLEAR_LCD_E;
  77   1         SET_LCD_WRITE;
  78   1         
  79   1         LCD_BUSY(lr);
  80   1         SET_LCD_DATA;
  81   1      
  82   1         SET_LCD_READ;
  83   1         SET_LCD_E;
  84   1      
  85   1         delay_us();
  86   1      
  87   1         dat=LCD_OP_PORT;
  88   1         CLEAR_LCD_E;
  89   1         SET_LCD_WRITE;
  90   1      
  91   1         return dat;
  92   1      }
  93          
  94          void set_start_line_L(unsigned char line) /*设置显示起始行*/ //0-
             -63
  95          {
  96   1         write_LCD(LEFT,CMD,0xc0|line);
  97   1      }
  98          
  99          void set_start_line_R(unsigned char line) /*设置显示起始行*/ //0-
             -63
 100          {
 101   1         write_LCD(RIGHT,CMD,0xc0|line);
 102   1      }
 103          
 104          void set_page_L(unsigned char page)     /*设置X地址 设置页*/  //0-7
 105          {
 106   1         write_LCD(LEFT,CMD,0xb8|page);
 107   1      }
 108          
 109          void set_page_R(unsigned char page)     /*设置X地址 设置页*/ //0-7
 110          {
 111   1         write_LCD(RIGHT,CMD,0xb8|page);
 112   1      }
 113          
 114          void set_col_addr_L(unsigned char col) /*设置Y地址*/ //0-63
 115          {
 116   1         write_LCD(LEFT,CMD,0x40|col);
C51 COMPILER V7.06   LCD                          01/24/2007 16:22:12 PAGE 3   

 117   1      }
 118          
 119          void set_col_addr_R(unsigned char col) /*设置Y地址*/ //0-63
 120          {
 121   1         write_LCD(RIGHT,CMD,0x40|col);
 122   1      }
 123          
 124          void LCD_Init(void) /*初始化函数*/
 125          {
 126   1         set_start_line_L(0);             /*显示起始行为0*/
 127   1         set_start_line_R(0);             /*显示起始行为0*/
 128   1      
 129   1         write_LCD(LEFT,CMD,DISPLAY_ON);  /*  开显示  */
 130   1      
 131   1         #ifdef Debug
 132   1           //printf("OK \n");
 133   1         #endif
 134   1      
 135   1        // write_LCD(RIGHT,CMD,DISPLAY_ON); /*  开显示  */
 136   1      
 137   1         for(;;)
 138   1         {
 139   2         // write_LCD(RIGHT,CMD,DISPLAY_ON); /*  开显示  */
 140   2         // write_LCD(RIGHT,CMD,DISPLAY_OFF); /*  开显示  */
 141   2              LCD_clr();
 142   2              disp_char('1');
 143   2              
 144   2       //   disp_char('1');   
 145   2         }
 146   1      }
 147          
 148          void LCD_clr(void)                  /*清屏函数*/
 149          {
 150   1         unsigned char pages,i;
 151   1         for(pages=6;pages<8;pages++)
 152   1         {
 153   2            set_page_L(pages);            /* X 页地址 */
 154   2            set_page_R(pages);            /* X 页地址 */
 155   2            for(i=0;i<20;i++)
 156   2            {
 157   3               set_col_addr_L(i);//Y
 158   3               set_col_addr_R(i);//Y
 159   3               write_LCD(LEFT,DATA,0x0);
 160   3               write_LCD(RIGHT,DATA,0x0);
 161   3            }
 162   2         }
 163   1      }
 164          
 165          //ASCII 字模宽度及高度
 166          #define ASC_CHR_WIDTH   8
 167          #define ASC_CHR_HEIGHT  12
 168          
 169          typedef struct typFNT_ASC16     /* 汉字字模显示数据结构 */
 170          {
 171             char Index[1];
 172             char Msk[16];
 173          };
 174          
 175          struct  typFNT_ASC16  ASC_16[] = {      /* 显示为8*16  Curier 10 常规*
             -/
 176             "1",0x00,0x00,0x08,0x08,0xFC,0x00,0x00,0x00,0x00,0x00,0x04,0x0
             -4,0x07,0x04,0x04,0x00,
 177          };
 178          
C51 COMPILER V7.06   LCD                          01/24/2007 16:22:12 PAGE 4   

 179          #define ASC_HZ_WIDTH    12
 180          //#define ASC_HZ_HEIGHT 12
 181          
 182          typedef struct typFNT_GB16      /*12*16 汉字字模显示数据结构 */
 183          {
 184             char Index[2];
 185             char Msk[24];
 186          };
 187          
 188          unsigned char GetPage(void) /*得到当前页*/
 189          {
 190   1         return CurPage;
 191   1      }
 192          
 193          unsigned char GetCol(void) /*得到当前列*/
 194          {
 195   1         return CurCol;
 196   1      }
 197          
 198          void SetPageCol(unsigned char upage, unsigned char ucol) /* 设置

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -