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

📄 16021602.lst

📁 RZ-51V20 实例程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
 175   2          Delay(4) ;
 176   2        }
 177   1      
 178   1          return (dat) ;
 179   1      }
C51 COMPILER V8.18   16021602                                                              12/09/2009 22:02:05 PAGE 4   

 180          
 181          /* 写一个字节                                         */
 182          /*******************************************************************/
 183           WriteOneChar(unsigned char dat)
 184          {
 185   1        unsigned char i = 0 ;
 186   1        for (i = 8 ; i > 0 ; i--)
 187   1        {
 188   2          DQ = 0 ;
 189   2          DQ = dat&0x01 ;
 190   2          Delay(5) ;
 191   2      
 192   2          DQ = 1 ;
 193   2          dat>>=1 ;
 194   2        }
 195   1      }
 196          
 197          /* 读取温度                            */
 198          /*******************************************************************/
 199           Read_Temperature(void)
 200          {
 201   1           Init_DS18B20() ;
 202   1        
 203   1           WriteOneChar(0xCC) ;  // 跳过读序号列号的操作
 204   1           WriteOneChar(0x44) ;  // 启动温度转换
 205   1      
 206   1           Init_DS18B20() ;
 207   1           WriteOneChar(0xCC) ;  //跳过读序号列号的操作
 208   1           WriteOneChar(0xBE) ;  //读取温度寄存器
 209   1      
 210   1           temp_data[0] = ReadOneChar() ;   //温度低8位
 211   1           temp_data[1] = ReadOneChar() ;   //温度高8位 
 212   1      }
 213          
 214          /* 数据转换与温度显示                                              */
 215          /*******************************************************************/
 216           Disp_Temperature()
 217          {
 218   1        display[4]=temp_data[0]&0x0f ;
 219   1        display[0]=ditab[display[4]]+0x30 ;//查表得小数位的值
 220   1        
 221   1        display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&0x0f)<<4) ;
 222   1        display[3]=display[4]/100+0x30 ;
 223   1        display[1]=display[4]%100 ;
 224   1        display[2]=display[1]/10+0x30 ;
 225   1        display[1]=display[1]%10+0x30 ;
 226   1      
 227   1          if(display[3]==0x30)        //高位为0,不显示
 228   1         { 
 229   2           display[3]=0x20 ;              
 230   2           if(display[2]==0x30)      //次高位为0,不显示
 231   2           display[2]=0x20 ;
 232   2         }
 233   1      
 234   1           lcd_pos(0x48) ;             
 235   1           lcd_wdat(display[3]) ;        //百位数显示 
 236   1           lcd_pos(0x49) ;             
 237   1           lcd_wdat(display[2]) ;        //十位数显示 
 238   1        lcd_pos(0x4a) ;             
 239   1           lcd_wdat(display[1]) ;        //个位数显示 
 240   1        lcd_pos(0x4c) ;             
 241   1           lcd_wdat(display[0]) ;        //小数位数显示 
C51 COMPILER V8.18   16021602                                                              12/09/2009 22:02:05 PAGE 5   

 242   1      }  
 243          
 244          /*******************************************************************/
 245          /* 蜂鸣器响一声                 */
 246          /*******************************************************************/
 247          void beep()
 248            {
 249   1          unsigned char y ;
 250   1          for (y=0 ;y<100 ;y++)
 251   1          {
 252   2            Delay(60) ;
 253   2            BEEP=!BEEP ;                //BEEP取反
 254   2          } 
 255   1          BEEP=1 ;                      //关闭蜂鸣器
 256   1       Delay(40000) ;
 257   1        }
 258          
 259          /* DS18B20 OK 显示菜单                                             */
 260          /*******************************************************************/
 261          void  Ok_Menu ()
 262          { 
 263   1          uchar  m ;
 264   1          lcd_init() ;                //初始化LCD 
 265   1                  
 266   1          lcd_pos(0) ;                //设置显示位置为第一行的第1个字符
 267   1           m = 0 ;
 268   1          while(cdis1[m] != '\0')
 269   1           {                         //显示字符
 270   2             lcd_wdat(cdis1[m]) ;
 271   2             m++ ;
 272   2           }
 273   1      
 274   1          lcd_pos(0x40) ;             //设置显示位置为第二行第1个字符
 275   1           m = 0 ;
 276   1          while(cdis2[m] != '\0')
 277   1           {
 278   2             lcd_wdat(cdis2[m]) ;      //显示字符
 279   2             m++ ;
 280   2           }
 281   1      
 282   1           writetab() ;               //自定义字符写入CGRAM
 283   1           delay1(5) ;
 284   1           lcd_pos(0x4d) ;
 285   1           lcd_wdat(0x00) ;          //显示自定义字符
 286   1      }
 287          
 288          
 289          /* DS18B20 ERROR 显示菜单                             */
 290          /*******************************************************************/
 291          void  Error_Menu ()
 292          {
 293   1           uchar  m ;
 294   1           lcd_init() ;                //初始化LCD 
 295   1       
 296   1          lcd_pos(0) ;                //设置显示位置为第一行的第1个字符
 297   1           m = 0 ;
 298   1           while(cdis3[m] != '\0')
 299   1           {                         //显示字符
 300   2             lcd_wdat(cdis3[m]) ;
 301   2             m++ ;
 302   2           }
 303   1      
C51 COMPILER V8.18   16021602                                                              12/09/2009 22:02:05 PAGE 6   

 304   1           lcd_pos(0x40) ;             //设置显示位置为第二行第1个字符
 305   1           m = 0 ;
 306   1           while(cdis4[m] != '\0')
 307   1           {
 308   2             lcd_wdat(cdis4[m]) ;      //显示字符
 309   2             m++ ;
 310   2           }
 311   1      }
 312          
 313          
 314          /* 主函数     */
 315          /************************************/
 316          void main()
 317           {
 318   1           Ok_Menu () ;
 319   1      
 320   1       do
 321   1        {
 322   2          Read_Temperature() ; //读取温度
 323   2         Disp_Temperature() ;  //显示温度
 324   2           }
 325   1          while(!presence)  ;
 326   1      
 327   1           Error_Menu () ;
 328   1      
 329   1       do
 330   1        {  
 331   2          Init_DS18B20() ;
 332   2          beep() ;
 333   2           }
 334   1       while(presence) ;
 335   1      }
 336          
*** WARNING C290 IN LINE 195 OF 16021602.C: missing return value
*** WARNING C290 IN LINE 212 OF 16021602.C: missing return value
*** WARNING C290 IN LINE 242 OF 16021602.C: missing return value


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    622    ----
   CONSTANT SIZE    =     93    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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