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

📄 lcd.lst

📁 通信基带信号发生器的设计
💻 LST
字号:
C51 COMPILER V7.06   LCD                                                                   09/25/2007 10:37:30 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN F:\INTEGRATED_DESIGN\MCU_FPGA\LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE F:\INTEGRATED_DESIGN\MCU_FPGA\LCD.C DB SB OE

stmt level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          sbit dc=P2^7; /*P2.0 LCD 的RS  21*/
   4          sbit rw=P2^6; /*P2.1 LCD 的R/W 22*/
   5          sbit cs=P2^5; /*P2.40 LCD 的E   25*/
   6          sfr  lcdbus=0x80; /*p0LCD 数据 D0=P0.0*/
   7          unsigned int sys10mscounter;
   8          unsigned char syslimitcounter;
   9          char path1[8]={0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f};/*自定义符号横1*/
  10          char path2[8]={0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00};/*自定义符号横2*/
  11          char pats1[8]={0x15,0x15,0x15,0x15,0x15,0x15,0x15,0x15};/*自定义符号竖1*/
  12          char pats2[8]={0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a,0x0a};/*自定义符号竖2*/
  13          void soft_nop(){}
  14          void soft_10ms()/***********12MHZ 提供10MS 软件延时************/
  15          { register int i;
  16   1      for(i=0;i<711;i++);
  17   1      }
  18          void soft_20ms()/***********12MHZ 提供20MS 软件延时************/
  19          { soft_10ms();
  20   1      soft_10ms();
  21   1      }
  22          void hard_10ms(unsigned int delaytime) /*基于10MS 的硬件延时*/
  23          { sys10mscounter=delaytime;
  24   1      while(sys10mscounter);
  25   1      }
  26          unsigned char data lcdcounter;
  27          bit lcdusing1,lcdusing2;
  28          bit lcd_checkbusy()/*检查LCD 忙*/
  29          { register lcdstate;
  30   1      dc=0; /*dc=1为数据,=0 为命令.*/
  31   1      rw=1; /*rw=1为读,=0为写.*/
  32   1      cs=1; /*cs=1选通.*/
  33   1      soft_nop();
  34   1      lcdstate=lcdbus;
  35   1      cs=0;
  36   1      return((bit)(lcdstate&0x80));
  37   1      }
  38          void lcd_wrcmd(unsigned char lcdcmd) /*写LCD命令*/
  39          { lcdusing1=1;
  40   1      while(lcd_checkbusy());
  41   1      lcdbus=lcdcmd;
  42   1      dc=0; /*dc=1为数据,=0 为命令.*/
  43   1      rw=0; /*rw=1为读,=0为写.*/
  44   1      cs=1; /*cs=1选通.*/
  45   1      soft_nop();
  46   1      cs=0;
  47   1      lcdbus=0xff;
  48   1      lcdusing1=0;
  49   1      }
  50          void lcd_moveto(char position) /*移动光标到指定位.0-79*/
  51          { register cmd=0x80;
  52   1      lcdcounter=position;
  53   1              if (position > 59)
  54   1                  position += 0x18;
  55   1              else
C51 COMPILER V7.06   LCD                                                                   09/25/2007 10:37:30 PAGE 2   

  56   1              {   if (position > 39)position -= 0x14;
  57   2                  else
  58   2                  {       if (position > 19)position += 0x2c;
  59   3                  }
  60   2              }
  61   1      cmd=cmd|position;
  62   1      lcd_wrcmd(cmd);
  63   1      }
  64          void lcd_wrdata(char lcddata) /*在当前显示位置显示数据*/
  65          { char i;
  66   1      lcdusing2=1;
  67   1      while(lcd_checkbusy());
  68   1      if(lcdcounter==20){
  69   2      lcd_moveto(20);
  70   2      while(lcd_checkbusy());
  71   2      }
  72   1      if(lcdcounter==40){
  73   2      lcd_moveto(40);
  74   2      while(lcd_checkbusy());
  75   2      }
  76   1      if(lcdcounter==60){
  77   2      lcd_moveto(60);
  78   2      while(lcd_checkbusy());
  79   2      }
  80   1      if(lcdcounter==80){
  81   2      lcd_moveto(0);
  82   2      while(lcd_checkbusy());
  83   2      lcdcounter=0;
  84   2      } /*为通用而如此*/
  85   1      lcdcounter++;
  86   1      lcdbus=lcddata;
  87   1      dc=1; /*dc=1为数据,=0 为命令.*/
  88   1      rw=0; /*rw=1为读,=0为写.*/
  89   1      cs=1; /*cs=1选通.*/
  90   1      soft_nop();
  91   1      cs=0;
  92   1      lcdbus=0xff;
  93   1      lcdusing2=0;
  94   1      }
*** WARNING C280 IN LINE 65 OF F:\INTEGRATED_DESIGN\MCU_FPGA\LCD.C: 'i': unreferenced local variable
  95          void lcd_string(char *strpoint) /*在当前显示位置显示LCD 字符串*/
  96          { register i=0;
  97   1      while(strpoint[i]!=0){
  98   2      lcd_wrdata(strpoint[i]);
  99   2      i++;
 100   2      }
 101   1      }
 102          void lcd_init()/*初始化*/
 103          { lcd_wrcmd(0x38); /*设置8 位格式,2行,5*7*/
 104   1      lcd_wrcmd(0x0c); /*整体显示,关光标,不闪烁*/
 105   1      lcd_wrcmd(0x06); /*设定输入方式,增量不移位*/
 106   1      lcd_wrcmd(0x01); /*清除显示*/
 107   1      lcdcounter=0;
 108   1      }
 109          void lcd_cls()/*清除显示*/
 110          { lcd_wrcmd(0x01);
 111   1      lcdcounter=0;
 112   1      }
 113          void timer0(void) interrupt 1 /*T0中断*/
 114          { TH0=0xd8; /*12M,10ms*/
 115   1      TL0=0xf6;
 116   1      TR0=1;
C51 COMPILER V7.06   LCD                                                                   09/25/2007 10:37:30 PAGE 3   

 117   1      if(sys10mscounter!=0)sys10mscounter--; /*定时器10ms*/
 118   1      if(syslimitcounter!=0)syslimitcounter--; /*定时器10ms*/
 119   1      }
 120          main()
 121          {
 122   1      unsigned char j;
 123   1      IE=0;P0=0xff;P1=0xff;P2=0xff;P3=0xff; /*初始化T*/
 124   1      lcd_init();soft_20ms();
 125   1      TMOD=0x51;
 126   1      TH0=0xd8; /*12M,10ms*/
 127   1      TL0=0xf6;
 128   1      TR0=1;ET0=1;EA=1;
 129   1      while(1)
 130   1      {
 131   2      /*全黑横一横二竖一竖二U Q ABCD... */
 132   2      lcd_init(); /*全黑*/
 133   2      for(j=0;j<80;j++){lcd_wrdata(0xff);}
 134   2      hard_10ms(50);
 135   2      lcd_init(); /*横一可参考自行设计符号*/
 136   2      lcd_wrcmd(0x40);
 137   2      for(j=0;j<8;j++)lcd_wrdata(path1[j]);
 138   2      
 139   2      for(j=0;j<100;j++)lcd_wrdata(0);
 140   2      hard_10ms(50);
 141   2      lcd_init(); /*横二*/
 142   2      lcd_wrcmd(0x40);
 143   2      for(j=0;j<8;j++)lcd_wrdata(path2[j]);
 144   2      for(j=0;j<100;j++)lcd_wrdata(0);
 145   2      hard_10ms(50);
 146   2      lcd_init(); /*竖一*/
 147   2      lcd_wrcmd(0x40);
 148   2      for(j=0;j<8;j++)lcd_wrdata(pats1[j]);
 149   2      for(j=0;j<100;j++)lcd_wrdata(0);
 150   2      hard_10ms(50);
 151   2      lcd_init(); /*竖二*/
 152   2      lcd_wrcmd(0x40);
 153   2      for(j=0;j<8;j++)lcd_wrdata(pats2[j]);
 154   2      for(j=0;j<100;j++)lcd_wrdata(0);
 155   2      hard_10ms(50);
 156   2      lcd_init();
 157   2      lcd_string("UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU");
 158   2      hard_10ms(50);
 159   2      lcd_init();
 160   2      lcd_string("QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ");
 161   2      hard_10ms(50);
 162   2      lcd_init();
 163   2      lcd_string("ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz0123456789+-!");
 164   2        }
 165   1      }
 166          
C51 COMPILER V7.06   LCD                                                                   09/25/2007 10:37:30 PAGE 4   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
lcdbus . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
syslimitcounter. . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0000H  1
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
_lcd_string. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  strpoint . . . . . . . . . . . . . .  AUTO     DATA   PTR      0000H  3
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   INT      0003H  2
lcdusing1. . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0000H  1
lcdusing2. . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0001H  1
_lcd_moveto. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  position . . . . . . . . . . . . . .  * REG *  DATA   CHAR     0007H  1
  cmd. . . . . . . . . . . . . . . . .  * REG *  DATA   INT      0004H  2
_lcd_wrcmd . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  lcdcmd . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
_hard_10ms . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  delaytime. . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  j. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0002H  1
sys10mscounter . . . . . . . . . . . .  PUBLIC   DATA   U_INT    0001H  2
TMOD . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0089H  1
lcdcounter . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0003H  1
dc . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A7H  1
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
lcd_init . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0007H  -----
TH0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008CH  1
TL0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008AH  1
timer0 . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
cs . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A5H  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
lcd_cls. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
lcd_checkbusy. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  lcdstate . . . . . . . . . . . . . .  * REG *  DATA   INT      0006H  2
path1. . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0004H  8
soft_10ms. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   INT      0006H  2
path2. . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    000CH  8
soft_20ms. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
rw . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A6H  1
pats1. . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0014H  8
pats2. . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    001CH  8
soft_nop . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
_lcd_wrdata. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0004H  -----
  lcddata. . . . . . . . . . . . . . .  * REG *  DATA   CHAR     0003H  1
  i. . . . . . . . . . . . . . . . . .  AUTO     DATA   CHAR     0000H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    559    ----
   CONSTANT SIZE    =    238    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     36       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
C51 COMPILER V7.06   LCD                                                                   09/25/2007 10:37:30 PAGE 5   

END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  1 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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