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

📄 lcd.lst

📁 系统采用51单片机
💻 LST
📖 第 1 页 / 共 3 页
字号:
  20      =2  
  21      =2  //I2C总线初始化,使总线处于空闲状态
  22      =2  void I2C_Init();
  23      =2  
  24      =2  
  25      =2  //主机通过I2C总线向从机发送多个字节的数据
  26      =2  bit I2C_Puts(unsigned char SlaveAddr, unsigned char SubAddr, unsigned char Size, char *dat);
  27      =2  
  28      =2   bit I2C_Puts_s(unsigned char SlaveAddr, unsigned char SubAddr)           ;
  29      =2  
  30      =2  //主机通过I2C总线向从机发送1个字节的数据
  31      =2  bit I2C_Put(unsigned char SlaveAddr, unsigned char SubAddr, char dat);
  32      =2  
  33      =2  
  34      =2  //主机通过I2C总线从从机接收多个字节的数据
  35      =2  bit I2C_Gets(unsigned char SlaveAddr, unsigned char SubAddr, unsigned char Size, char *dat);
  36      =2  
  37      =2  
  38      =2  //主机通过I2C总线从从机接收1个字节的数据
  39      =2  bit I2C_Get(unsigned char SlaveAddr, unsigned char SubAddr, char *dat);
  40      =2  
  41      =2  
  42      =2  #endif
  43      =2  
  15      =1  #include "key.h"
   1      =2  #ifndef _KEY_H
   2      =2  #define _KEY_H
   3      =2  
   4      =2  //定义按键
   5      =2  sbit KEY1 = P3^2;               //按键1
   6      =2  sbit KEY2 = P3^3;               //按键2
   7      =2  
   8      =2  sbit Buzzer=P2^4;//????
   9      =2  
  10      =2  #define TemperatureMax 50
C51 COMPILER V8.16   LCD                                                                   10/04/2008 14:53:01 PAGE 6   

  11      =2  
  12      =2  #define TemperatureMin 5
  13      =2  
  14      =2  void INTInit();
  15      =2  
  16      =2  #endif
  17      =2  
  16      =1  
  17      =1  sbit LEDCool = P2^0;    //定义LED由P0.0控制
  18      =1  sbit LEDHot = P2^1;         //定义LED由P0.0控制
  19      =1  sbit LEDSet = P2^2;     //定义LED由P0.0控制
  20      =1  
  21      =1  
  22      =1  //unsigned char Temperature_Set;//设定温度
  23      =1  
  24      =1  #endif
   6            uchar buf1[8];
   7          
   8           /*
   9           函数:DispChar()
  10           功能:在数码管上显示字符
  11           参数:
  12                   x:数码管的坐标位置(0~7)
  13                   mydata:要显示的字符(仅限十进制数字和减号)
  14           */
  15          void DispChar(unsigned char x, unsigned char mydata)
  16           {
  17   1               //0123456789的数码管字型数据
  18   1               code unsigned char SegTab[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};
  19   1                                             //0    1    2     3    4    5    6    7   8    9     no            
  20   1              
  21   1           code unsigned char ComTab[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  22   1               // seg--- P0
  23   1          //com ---P1
  24   1           
  25   1              // if (x==4)
  26   1               //{
  27   1          // P0=(SegTab[mydata]|0x80);//dot on
  28   1              // }
  29   1               //else
  30   1               //{
  31   1           P0=~SegTab[mydata];
  32   1               P1=~ComTab[x];
  33   1              // }
  34   1      //       if ( c == '-' )
  35   1      //       {
  36   1      //               DispBuf[x] = 0x40;
  37   1      //       }
  38   1      //       else if ( ( c >= 0) && ( c <= 10 ) )
  39   1      //       {
  40   1      //               DispBuf[x] = Tab[c];
  41   1      //       }
  42   1      }
  43          
  44          /*
  45           函数:DispStr()
  46           功能:在数码管上显示字符串
  47           参数:
  48                   *s:要显示的字符串(字符仅限十进制数字和减号)
  49           */
  50           
  51          void DispStr( unsigned char *s) 
C51 COMPILER V8.16   LCD                                                                   10/04/2008 14:53:01 PAGE 7   

  52           {
  53   1              //uchar s[8]={1,2,3,4,5,6,7,8} ;
  54   1               unsigned char i;
  55   1           uchar x=0;
  56   1               for (i=0;i<8;i++)
  57   1               {
  58   2                       DispChar(x,*s);
  59   2               s++;
  60   2                       x++;
  61   2               }
  62   1       }
  63          
  64           /*
  65           函数:DispDotOn()
  66           功能:显示指定位的小数点
  67           参数:x为数码管坐标
  68           */   
  69           //void DispDotOn(unsigned char mydata)
  70           //{
  71           // mydata|= 0x80;
  72           //}
  73           
  74          /*
  75           函数:ByteToStr()
  76           功能:字节型变量c转换为十进制字符串
  77           */
  78          void ByteToStr(unsigned char  *s, int c )
  79          {
*** WARNING C235 IN LINE 79 OF LCD.C: parameter 2: different types
  80   1          uchar aa,bb,cc;
  81   1              s[0]=c/100;//百位
  82   1              s[1]=c%100/10;//十位
  83   1              s[2]=c%100%10;//个位
  84   1      
  85   1              aa=c/100;
  86   1      //      bb==c%100/10;//十位            //c/10-s[0]*10;//十位
  87   1      //      cc=c%100%10;//个位              //c-s[0]*10-s[1];//个位
  88   1              
  89   1      //      printf("c=%ud\n",c);
  90   1      //      printf("s[0]=%ud\n",s[0]);
  91   1      //    printf("s[1]=%ud\n",s[1]);
  92   1      //    printf("s[2]=%ud\n",s[2]);
  93   1       }
*** WARNING C280 IN LINE 80 OF LCD.C: 'bb': unreferenced local variable
*** WARNING C280 IN LINE 80 OF LCD.C: 'cc': unreferenced local variable
  94                           
  95                           
  96           /*
  97           函数:DispTemp()
  98           功能:在数码管上显示出温度值
  99          参数:
 100           t:补码,除以8以后才是真正温度值
 101           */
 102          unsigned char* DispTemp(int t)
 103          {
 104   1         extern  Temperature_Set;//设定温度
 105   1         unsigned char buf[3];
 106   1         unsigned char buf1[8];
 107   1         
 108   1            bit s;  //符号位
 109   1         int i;        //整数部分
 110   1         int d;        //小数部分
C51 COMPILER V8.16   LCD                                                                   10/04/2008 14:53:01 PAGE 8   

 111   1      //   unsigned char x;    //临时变量
 112   1          //分离出符号
 113   1         s = 0;
 114   1          if ( t < 0 )
 115   1          {
 116   2               s = 1;
 117   2           t = -t;
 118   2          }
 119   1        //分离出整数和小数部分  
 120   1      
 121   1       //  printf("t=%d\n",t);
 122   1         i = t / 8;
 123   1         d = t % 8;
 124   1         d=d*125;
 125   1      //   printf("i=%ud\n",i);
 126   1      //      printf("d=%ud\n",d);
 127   1        //整数部分转换成字符串
 128   1         ByteToStr(buf,i);
 129   1         buf1[5]=buf[0];
 130   1         buf1[4]=buf[1];
 131   1         buf1[3]=buf[2];
 132   1         if(0==buf1[5])
 133   1              {
 134   2           buf1[5]=10;
 135   2          }
 136   1         else if((10==buf1[5])&&(0==buf1[4]))
 137   1              {
 138   2          buf1[4]=10;
 139   2         }
 140   1         
 141   1         ByteToStr(buf,d);
 142   1         buf1[2]=buf[0];
 143   1         buf1[1]=buf[1];
 144   1         buf1[0]=buf[2];
 145   1      
 146   1         //buf1[2]=0;
 147   1         //buf1[1]=1;
 148   1         //buf1[0]=3;
 149   1         ByteToStr(buf,Temperature_Set);
 150   1         buf1[7]=buf[1];
 151   1         buf1[6]=buf[2];
 152   1         
 153   1              return  buf1;
 154   1        // DispStr(8,buf1);
 155   1        //显示小数点
 156   1        // DispDotOn(4);
 157   1        //x = 4 - strlen(buf);
 158   1        //清除所有显示
 159   1        //DispClear();
 160   1        //显示符号
 161   1        //if ( s ) DispChar(x,'-');
 162   1        //x++;
 163   1        //显示整数部分
 164   1        //DispStr(x,buf);
 165   1        
 166   1        //显示小数部分
 167   1        // DispStr(5,Tab[d]);
 168   1      }
 169                                   
 170          
 171          void disp(int t)
 172          {
C51 COMPILER V8.16   LCD                                                                   10/04/2008 14:53:01 PAGE 9   

 173   1         // const uchar Dispbuf[8]={0};
 174   1          //com = 0xFF;        //暂停显示
 175   1          unsigned char *Dispbuf=0;
 176   1          Dispbuf = DispTemp(t);
 177   1      //      DispStr( Dispbuf) ;
 178   1      //DispTemp(buf1, t);
 179   1              // Dispbuf[8] 
 180   1       //   DispStr(Dispbuf); 
 181   1      //DispStr(buf1); 
 182   1           //DispDotOn(5);
 183   1              
 184   1      }
 185                                   
 186                                                   
 187           
 188          
C51 COMPILER V8.16   LCD                                                                   10/04/2008 14:53:01 PAGE 10  

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _DispChar (BEGIN)
                                           ; SOURCE LINE # 15
;---- Variable 'mydata' assigned to Register 'R5' ----
;---- Variable 'x' assigned to Register 'R7' ----
                                           ; SOURCE LINE # 16
                                           ; SOURCE LINE # 31
0000 ED                MOV     A,R5
0001 900000      R     MOV     DPTR,#SegTab
0004 93                MOVC    A,@A+DPTR
0005 F4                CPL     A
0006 F580              MOV     P0,A
                                           ; SOURCE LINE # 32
0008 EF                MOV     A,R7
0009 900000      R     MOV     DPTR,#ComTab
000C 93                MOVC    A,@A+DPTR
000D F4                CPL     A
000E F590              MOV     P1,A
                                           ; SOURCE LINE # 42
0010 22                RET     
             ; FUNCTION _DispChar (END)

             ; FUNCTION _DispStr (BEGIN)
                                           ; SOURCE LINE # 51
;---- Variable 's' assigned to Register 'R1/R2/R3' ----
                                           ; SOURCE LINE # 52
                                           ; SOURCE LINE # 55
;---- Variable 'x' assigned to Register 'R6' ----
0000 E4                CLR     A
0001 FE                MOV     R6,A
                                           ; SOURCE LINE # 56
;---- Variable 'i' assigned to Register 'R4' ----
0002 FC                MOV     R4,A
0003         ?C0002:
                                           ; SOURCE LINE # 57
                                           ; SOURCE LINE # 58

⌨️ 快捷键说明

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