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

📄 lj.lst

📁 一则关于DS18B20的程序包括LED显示
💻 LST
📖 第 1 页 / 共 2 页
字号:
 140   1           value = tmpvalue;
 141   1           
 142   1           t = value * 0.0625;
 143   1           //将它放大100倍, 使显示时可显示小数点后两位, 并对小数点后第三进行4舍5入
 144   1           //如t=11.0625, 进行计数后, 得到value = 1106, 即11.06 度
 145   1           //如t=-11.0625, 进行计数后, 得到value = -1106, 即-11.06 度
 146   1           value = t * 100 + (value > 0 ? 0.5 : -0.5); //大于0加0.5, 小于0减0.5
 147   1           return value;
 148   1       }
 149           
 150           
 151           display(int num_data)
 152                  {
 153   1                int r;
 154   1                 idata num_temp[4];
 155   1                num_temp[0]=num_data/1000;//求显示数字的千位
 156   1                num_temp[1]=(num_data-num_temp[0]*1000)/100;//求显示数字的百位
 157   1                num_temp[2]=((num_data-num_temp[0]*1000)-num_temp[1]*100)/10;//求显示数字的十位
 158   1                num_temp[3]=num_data%10; //求显示数字的个位
 159   1                       for(r=0;r<4;r++)
 160   1                         {
 161   2                           P2=disp_scan[r];
 162   2                   P0=disp_data[num_temp[r]];
 163   2                           delay(1);
 164   2                 }                    
 165   1              }  
 166           
 167          
 168          
 169          // 初始化串口 
 170          void init_serial()
 171          {
 172   1              TMOD = 0x21;                    // 定时器1工作于8位自动重载模式, 用于产生波特率
 173   1              TH1 = 0xF3;                             // 波特率9600
 174   1              TL1 = 0xF3;
 175   1              
 176   1              SCON = 0x50;                    // 设定串行口工作方式
 177   1              PCON &= 0xef;                   // 波特率不倍增
 178   1                      
C51 COMPILER V8.02   LJ                                                                    06/10/2007 21:33:29 PAGE 4   

 179   1              TR1 = 1;                                // 启动定时器1
 180   1         
 181   1      }                                                                                                         
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                     
 182          
 183          
 184          
 185          
 186           // 发送数据 //
 187          void send_data(unsigned char *buf)
 188          {
 189   1              unsigned char len;    // 保存数据长度
 190   1              unsigned char ecc;    // 保存校验字节
 191   1              int i;
 192   1              len = strlen(buf);    // 计算要发送数据的长度
 193   1              ecc = len;    // 开始进行校验字节计算
 194   1              // 发送数据长度 
 195   1              TI = 0;    
 196   1              SBUF = len;    // 发送长度
 197   1              while(!TI);
 198   1              TI = 0;
 199   1              //发送数据
 200   1              for(i=0; i<len; i++)
 201   1              {
 202   2                      ecc = ecc^(*buf);    // 计算校验字节
 203   2                      SBUF = *buf;    // 发送数据
 204   2                      buf++;
 205   2                      while(!TI);
 206   2                      TI = 0;
 207   2              }
 208   1              // 发送校验字节 
 209   1              //SBUF = ecc;    // 发送校验字节
 210   1              //while(!TI);
 211   1              //TI = 0;
 212   1      }
 213          
 214           
 215           void main()
 216            {      
 217   1           int i,r;
 218   1               idata num_temp[5];
 219   1               idata char sd[5];
 220   1           init_serial();
 221   1      
 222   1              while(1)
 223   1            {
C51 COMPILER V8.02   LJ                                                                    06/10/2007 21:33:29 PAGE 5   

 224   2                 //启动温度转换
 225   2                               sendChangeCmd();
 226   2                      tempValue=getTmpValue();
 227   2                                        num_temp[0]=tempValue/1000;//求显示数字的千位
 228   2                num_temp[1]=(tempValue-num_temp[0]*1000)/100;//求显示数字的百位
 229   2                num_temp[3]=((tempValue-num_temp[0]*1000)-num_temp[1]*100)/10;//求显示数字的十位
 230   2                num_temp[4]=tempValue%10; //求显示数字的个位
 231   2                              
 232   2                                for(r=0;r<5;r++)
 233   2                         {
 234   3                           if(r==2)
 235   3                                sd[r]='.';
 236   3                               else
 237   3                                sd[r]=sd_data[num_temp[r]];
 238   3                 }                    
 239   2                        
 240   2                                      for(i=0;i<10;i++) 
 241   2                                      { display(tempValue);}
 242   2                                       send_data(sd); 
 243   2                                      
 244   2                                      
 245   2               
 246   2             }
 247   1         }                                                                                                      
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -                                                                                                                        
             -            


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    872    ----
   CONSTANT SIZE    =     24    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      15
   IDATA SIZE       =   ----      23
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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