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

📄 lcd.lst

📁 里面有c和单片机的程序
💻 LST
字号:
C51 COMPILER V7.06   LCD                                                                   07/30/2007 16:02:24 PAGE 1   


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

stmt level    source

   1          # include<reg52.h>
   2          # include<stdio.h>
   3          # include<intrins.h>
   4          
   5          # define uchar unsigned char
   6          # define uint unsigned int
   7          
   8          sbit dc=P2^1;                     //RS
   9          sbit rw=P2^2;                     //RW
  10          sbit cs=P2^4;                     //E
  11          sfr  lcdbus=0x80;
  12          char a[2]={3,5};
  13          char b[6]={3,5,2,9,8,7};
  14          
  15          uchar state;
  16          uchar cmd;
  17          
  18          void soft_nop(){}
  19          /***********12MHZ 提供10MS 软件延时************/
  20          void soft_10ms()
  21          { register int i;
  22   1      for(i=0;i<711;i++);
  23   1      }
  24          /***********12MHZ 提供20MS 软件延时************/
  25          void soft_20ms()
  26          { soft_10ms();
  27   1        soft_10ms();
  28   1      }
  29          /****************检查LCD忙*******************/
  30          bit lcd_checkbusy()                    /*检查LCD 忙*/
  31          {register lcdstate;
  32   1       dc=0;                                 /*dc=1为数据,=0 为命令.*/
  33   1       rw=1;                                 /*rw=1为读,=0为写.*/
  34   1       cs=1;                                 /*cs=1选通.*/
  35   1       soft_nop();
  36   1       lcdstate=lcdbus;
  37   1       cs=0;
  38   1      return((bit)(lcdstate&0x80));
  39   1      }
  40          /***************写LCD命令*******************/
  41          void lcd_wrcmd(uchar lcdcmd)
  42          {while(lcd_checkbusy());
  43   1       dc=0;                                 /*dc=1为数据,=0 为命令.*/
  44   1       rw=0;                                 /*rw=1为读,=0为写.*/
  45   1       cs=1;                                 /*cs=1选通.*/
  46   1       lcdbus=lcdcmd;
  47   1       soft_nop();
  48   1       cs=0;
  49   1      }
  50          /**************在当前显示位置显示数据********************/
  51          void lcd_wrdata(char lcddata)
  52          {while(lcd_checkbusy());
  53   1       dc=1;                       /*dc=1为数据,=0 为命令.*/
  54   1       rw=0;                       /*rw=1为读,=0为写.*/
  55   1       cs=1;                       /*cs=1选通.*/
C51 COMPILER V7.06   LCD                                                                   07/30/2007 16:02:24 PAGE 2   

  56   1       lcdbus=lcddata;
  57   1       soft_nop();
  58   1       cs=0;
  59   1      
  60   1      }
  61          /*************在当前显示位置显示LCD 字符串***************/
  62          void lcd_string(char *strpoint)
  63          { register i=0;
  64   1        while(strpoint[i]!=0)
  65   1       {lcd_wrdata(strpoint[i]);
  66   2        i++;
  67   2       }
  68   1      }
  69          /**********************初始化************************/
  70          void lcd_init()
  71          {lcd_wrcmd(0x38);              /*设置8 位格式,2行,5*7*/
  72   1       lcd_wrcmd(0x0c);              /*整体显示,关光标,不闪烁*/
  73   1       lcd_wrcmd(0x06);              /*设定输入方式,增量不移位*/
  74   1       lcd_wrcmd(0x01);              /*清除显示*/
  75   1      }
  76          /***********************主函数***********************/
  77          void main()
  78          {uchar i;
  79   1       lcd_init();
  80   1       soft_20ms();
  81   1       state=1;
  82   1       cmd=0X20;
  83   1      
  84   1      switch(state)                      //送模式和单位
  85   1      {
  86   2       case 1: lcd_string("FREQUENCY");
  87   2               lcd_wrcmd(0X8C);
  88   2               if(cmd==0X40)
  89   2               lcd_string("HZ");
  90   2               else if(cmd==0X20)
  91   2               lcd_string("KHZ");
  92   2               else
  93   2               lcd_string("MHZ");
  94   2               break;
  95   2         
  96   2       case 2: lcd_string("PERIOD");
  97   2               lcd_wrcmd(0X8C);
  98   2               if(cmd==0X40)
  99   2               lcd_string("S");
 100   2               else if(cmd==0X20)
 101   2               lcd_string("MS");
 102   2               else 
 103   2               lcd_string("US");
 104   2               break;
 105   2      
 106   2       case 3: lcd_string("MAIKUAN");
 107   2               lcd_wrcmd(0X8C);
 108   2               lcd_string("s");
 109   2               break;
 110   2       case 4: lcd_string("ZHANKONGBI");
 111   2      }
 112   1      
 113   1      lcd_wrcmd(0XC3);   //送整数
 114   1      for(i=0;i<2;i++)
 115   1      {a[i]=a[i]+0X30;
 116   2       lcd_wrdata(a[i]);
 117   2      }
C51 COMPILER V7.06   LCD                                                                   07/30/2007 16:02:24 PAGE 3   

 118   1      
 119   1      lcd_wrdata(46);    //送小数点
 120   1      
 121   1      for(i=0;i<6;i++)   //送小数位
 122   1      {b[i]=b[i]+0X30;
 123   2       lcd_wrdata(b[i]);
 124   2      }
 125   1      for(;;);
 126   1      }
C51 COMPILER V7.06   LCD                                                                   07/30/2007 16:02:24 PAGE 4   

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


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
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
_lcd_string. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  strpoint . . . . . . . . . . . . . .  AUTO     DATA   PTR      0000H  3
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   INT      0004H  2
size_t . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
_lcd_wrcmd . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  lcdcmd . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0006H  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
state. . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0000H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_CHAR   0005H  1
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
cmd. . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0001H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
dc . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A1H  1
lcd_init . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
cs . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A4H  1
lcd_checkbusy. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  lcdstate . . . . . . . . . . . . . .  * REG *  DATA   INT      0006H  2
a. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0002H  2
soft_10ms. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  i. . . . . . . . . . . . . . . . . .  * REG *  DATA   INT      0006H  2
b. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0004H  6
soft_20ms. . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
rw . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A2H  1
soft_nop . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0006H  -----
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1
_lcd_wrdata. . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  lcddata. . . . . . . . . . . . . . .  * REG *  DATA   CHAR     0006H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    339    ----
   CONSTANT SIZE    =     57    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10       3
   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 + -