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

📄 jsq.lst

📁 自己设计的基于51单片机的简易电子词典
💻 LST
字号:
C51 COMPILER V8.08   JSQ                                                                   10/03/2008 12:03:01 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE JSQ
OBJECT MODULE PLACED IN jsq.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE jsq.c DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include <intrins.h> 
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          
   6          #define ComDat P2  //命令或数据线
   7          sbit RS=P3^0;      //RS为寄存器选择,1=数据寄存器、0=指令寄存器。
   8          sbit RW=P3^1;      //RW为读写信号线,1=读操作,0=写操作。
   9                             //当RS=RW=0可以写入指令或者显示地址,
  10                             //当RS=0,RW=1可以读忙信号,
  11                             //当RS=1,RW=0可以写入数据。
  12          sbit EN=P3^2;      //当en端由高电平跳变成低电平时,液晶模块执行命令。
  13          sbit led=P0^3;     //照明
  14          
  15          sbit busy=P2^7;    //忙指示
  16          
  17          uchar code table[]=
  18          {
  19          '0','1','2','3',
  20          '4','5','6','7',
  21          '8','9',0x20,'=',
  22          '+','-','*','/'
  23          };
  24           
  25          
  26          uchar temp,num,m,n,x,y,i;                       //定义变量
  27          uchar   a,b,c;                                                  //定义运算变量
  28          uchar saomiao();                                        //定义扫描函数
  29          void delay1(uchar);                             //定义延时函数
  30          void delay();                                           //定义液晶忙程序
  31          void WriComm(uchar);                            //定义写控制函数
  32          void WriData(uchar);                            //定义写数据函数
  33          void chushihua();
  34          
  35          void main()
  36          {                       
  37   1              chushihua();
  38   1      while(1)
  39   1              {       saomiao();              //扫描键盘
  40   2                      if(x==1)
  41   2                      {       x=0;
  42   3                              m++;                    //控制第一行显示
  43   3                              n++;                    //控制第二行显示
  44   3                              delay1(255);
  45   3                              WriData(num);
  46   3                              if(num==10)
  47   3                              {
  48   4                                      WriComm(0x01);//清零
  49   4                                      a=b=c=0;
  50   4                              }
  51   3                              if(num<10)
  52   3                              {       i++;
  53   4                                      if(i==1)
  54   4                                      a=num;
  55   4                                      else
C51 COMPILER V8.08   JSQ                                                                   10/03/2008 12:03:01 PAGE 2   

  56   4                                      {
  57   5                                      a=a*10+num;
  58   5                                      i=0;
  59   5                                      }
  60   4                              }
  61   3                              if(num==12)
  62   3                                      b=a;
  63   3                              else if(num==13)
  64   3                                      b=a;
  65   3                              else if(num==14)
  66   3                                      b=a;
  67   3                              else if(num==15)
  68   3                                      b=a;
  69   3      
  70   3                              if(num==11)     
  71   3                              {       if(y==1)
  72   4                                      {       y=0;
  73   5                                              c=b+a;
  74   5                                      }
  75   4                                      else if(y==2)
  76   4                                      {       y=0;
  77   5                                              c=b-a;
  78   5                                      }
  79   4                                      else if(y==3)
  80   4                                      {       y=0;
  81   5                                              c=b*a;
  82   5                                      }
  83   4                                      else if(y==4)
  84   4                                      {       y=0;
  85   5                                              c=b/a;
  86   5                                      }
  87   4                                      delay1(255);
  88   4                                      WriData(c/10);
  89   4                                      WriData(c%10);
  90   4                                      a=b=c=0;
  91   4                              }
  92   3                              if(m==16)
  93   3                              {       m=0;
  94   4                                      WriComm(0xc0);
  95   4                              }
  96   3                              if(n==32)
  97   3                              {       n=0;
  98   4                                      WriComm(0x80);  
  99   4                              }
 100   3      //-----------------------------------------------
 101   3                      }
 102   2              }
 103   1      }
 104          //--------------------初始化-----------------------------
 105          void chushihua()
 106          {
 107   1              led=0;          //开背光
 108   1              delay1(5);                                
 109   1              WriComm(0x01);    //清屏并光标复位       
 110   1              WriComm(0x38);  //设置显示模式:8位2行5x7点阵
 111   1              WriComm(0x0c);  //显示器开、光标关、光标禁止闪烁        
 112   1              WriComm(0x14);  //文字不动,光标自动右移 
 113   1              WriComm(0x80);
 114   1      }
 115          
 116          //-------------延时子程序---------------------------------------
 117          void delay1(uchar z)
C51 COMPILER V8.08   JSQ                                                                   10/03/2008 12:03:01 PAGE 3   

 118          {
 119   1              uchar a,b;
 120   1              for(a=z;a>0;a--)
 121   1              for(b=255;b>0;b--);
 122   1      }
 123             
 124          //---判断液晶显示器是否忙------------
 125          void delay()       
 126          {
 127   1        do
 128   1         {
 129   2          ComDat=0xff;   //判断液晶显示器是否忙的子程序
 130   2          RS=0;
 131   2          RW=1;
 132   2          EN=0;
 133   2          _nop_();
 134   2          EN=1; 
 135   2         }  
 136   1        while(busy);     //busy为高电平表示忙,循环等待
 137   1      } 
 138          //---写命令--------------------------
 139          void WriComm(uchar Com)
 140          {       
 141   1        ComDat=Com;                                   
 142   1        RS=0;      //写入控制命令的子程序
 143   1        RW=0;
 144   1        EN=0;
 145   1        delay();   //等待
 146   1        EN=1;
 147   1      } 
 148          //---写数据------------------------------
 149          void WriData(uchar k)
 150          {       
 151   1        ComDat=table[k];
 152   1        RS=1;
 153   1        RW=0;      //准备写入数据
 154   1        EN=0;      //执行显示命令
 155   1        delay();   //判断液晶模块是否忙
 156   1        EN=1;
 157   1      }
 158          
 159          //----------------键盘扫描程序---------------------------
 160          uchar saomiao()
 161          {       
 162   1              P3=0xfe;
 163   1              temp=P3;
 164   1              temp=temp&0xf0;
 165   1              if(temp!=0xf0)
 166   1               {      x=1;
 167   2                      delay1(50);
 168   2                      if(temp!=0xf0)
 169   2                       {
 170   3                              switch(temp)
 171   3                              {
 172   4                                      case 0xe0: num=0;
 173   4                                              break;
 174   4                                      case 0xd0: num=1;
 175   4                                              break;
 176   4                                      case 0xb0: num=2;
 177   4                                              break;
 178   4                                      case 0x70: num=3;
 179   4                                              break;
C51 COMPILER V8.08   JSQ                                                                   10/03/2008 12:03:01 PAGE 4   

 180   4                              
 181   4                              }
 182   3                       }
 183   2               }
 184   1      
 185   1              P3=0xfd;
 186   1              temp=P3;
 187   1              temp=temp&0xf0;
 188   1              if(temp!=0xf0)
 189   1               { x=1;
 190   2                      delay1(50);
 191   2                      if(temp!=0xf0)
 192   2                       {
 193   3                              switch(temp)
 194   3                              {
 195   4                                      case 0xe0: num=4;
 196   4                                              break;
 197   4                                      case 0xd0: num=5;
 198   4                                              break;
 199   4                                      case 0xb0: num=6;
 200   4                                              break;
 201   4                                      case 0x70: num=7;
 202   4                                              break;
 203   4                              
 204   4                              }
 205   3                       }
 206   2               }
 207   1      
 208   1              P3=0xfb;
 209   1              temp=P3;
 210   1              temp=temp&0xf0;
 211   1              if(temp!=0xf0)
 212   1               { x=1;
 213   2                      delay1(50);
 214   2                      if(temp!=0xf0)
 215   2                       {
 216   3                              switch(temp)
 217   3                              {
 218   4                                      case 0xe0: num=8;
 219   4                                              break;
 220   4                                      case 0xd0: num=9;
 221   4                                              break;
 222   4                                      case 0xb0: num=10;      //清零返回值
 223   4                                              break;
 224   4                                      case 0x70: num=11;//等于返回
 225   4                                              break;
 226   4                              
 227   4                              }
 228   3                       }
 229   2               }
 230   1      
 231   1              P3=0xf7;
 232   1              temp=P3;
 233   1              temp=temp&0xf0;
 234   1              if(temp!=0xf0)
 235   1               { x=1;
 236   2                      delay1(50);
 237   2                      if(temp!=0xf0)
 238   2                       {
 239   3                              switch(temp)
 240   3                              {
 241   4                                      case 0xe0: num=12;y=1;
C51 COMPILER V8.08   JSQ                                                                   10/03/2008 12:03:01 PAGE 5   

 242   4                                              break;
 243   4                                      case 0xd0: num=13;y=2;
 244   4                                              break;
 245   4                                      case 0xb0: num=14;y=3;
 246   4                                              break;
 247   4                                      case 0x70: num=15;y=4;
 248   4                                              break;
 249   4                              
 250   4                              }
 251   3                       }
 252   2               }
 253   1      return num,x,y;  
 254   1      }
 255          //--------------------------------------------------------


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