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

📄 zpfinal.lst

📁 通过AT89S/C52,11.0592MHz,DS18B20和6位数码管
💻 LST
📖 第 1 页 / 共 2 页
字号:
 162   1              U8 tmbuf[2];
 163   1          Init1820();
 164   1          WR1820(0xcc);
 165   1              //delay_ms(2);
 166   1          WR1820(0x44);
 167   1              // _nop_();
 168   1              // SIO=1;
 169   1              // delay_ms(250);     //多个1820时要延时,单个就不用,数据手册里看
 170   1              // delay_ms(250);
 171   1              // delay_ms(250);
 172   1          Init1820();
 173   1          WR1820(0xcc);
 174   1          WR1820(0xbe);
 175   1          tmbuf[0]=RD1820();
 176   1          tmbuf[1]=RD1820();
 177   1          Init1820();
 178   1          tp=tmbuf[1]*256+tmbuf[0];    
 179   1          return(tp);    
C51 COMPILER V7.10   ZPFINAL                                                               04/06/2008 13:32:56 PAGE 4   

 180   1      }
 181          
 182          /*******************************************************************************
 183          *** 函 数 名: void Show_8LED(U16 dig)
 184          *** 功能描述: 把数字转化为5位LED显示
 185          *** 全局变量: NO !
 186          *** 输          入: 从DB18B20读取的16位原始数据:低11位数据位,高5位为符号位!
 187                                          //0,1,2,3,4,5,6,7,8,9,-
 188                                          U8 code LED_IMG[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
 189                                          P0.0--4依次为符号位,百位,十位,个位,十分为,百分位
 190                                          P1接8段数码管
 191          *** 输          出: NO ! 
 192          *** 函数说明: 
 193          /******************************************************************************/ 
 194          void Show_8LED(int tmv)
 195          {       
 196   1              U8 ge,shi,bai,shifen,baifen,neg=0; 
 197   1              
 198   1              if(tmv<0)
 199   1              {
 200   2                      tmv=-tmv;
 201   2                      neg=1;
 202   2              }                
 203   1              bai=tmv/10000;
 204   1              shi=(tmv%10000)/1000;
 205   1              ge =(tmv%1000)/100;
 206   1              shifen=(tmv%100)/10;
 207   1              baifen=tmv%10;
 208   1              for(tmv=0;tmv<80;tmv++)  
 209   1              {
 210   2                      if(neg)
 211   2                      {
 212   3                              P0=0x01;                                        //符号位        
 213   3                              P1=LED_IMG[10];
 214   3                              DLY_ms(3);                                  //this is the smallest interval
 215   3                      }
 216   2                      P0=0x02;        
 217   2                      P1=LED_IMG[bai]|0X80;
 218   2                      DLY_ms(3);
 219   2                      P0=0x04;        
 220   2                      P1=LED_IMG[shi]|0X80;
 221   2                      DLY_ms(3);
 222   2                      P0=0x08; 
 223   2                      P1=LED_IMG[ge]&0x7f;                    //dot always.
 224   2                      DLY_ms(3);
 225   2                      P0=0x10; 
 226   2                      P1=LED_IMG[shifen]|0X80;
 227   2                      DLY_ms(3);
 228   2                      P0=0x20; 
 229   2                      P1=LED_IMG[baifen]|0X80;
 230   2                      DLY_ms(3);
 231   2                      P1=0xff; 
 232   2              }
 233   1      }
 234          /*******************************************************************************
 235          *** 函 数 名: void Beep(U16 cnt)
 236          *** 功能描述: 蜂鸣器鸣响
 237          *** 全局变量: NO !
 238          *** 输          入: CNT-时间长短 !
 239          *** 输          出: NO ! 
 240          *** 函数说明: 
 241          /******************************************************************************/
C51 COMPILER V7.10   ZPFINAL                                                               04/06/2008 13:32:56 PAGE 5   

 242          void Beep(U16 cnt) 
 243          {               
 244   1              while(cnt--)
 245   1              {
 246   2                      BZ=1;
 247   2                      DLY_us(200);       //
 248   2                      BZ=0;
 249   2                      DLY_us(50);
 250   2              } 
 251   1      }
 252          
 253          /*******************************************************************************
 254          ****                              main()
 255          *******************************************************************************/ 
 256          void main(void)
 257          {                       
 258   1              U16 y;
 259   1              float x;
 260   1              U8 neg_flag=0,i;
 261   1              P0=0xff;
 262   1              P1=0x00;
 263   1              P3=0xff;
 264   1              DLY_ms(250);
 265   1              P3=0x00;                                        //cancel noise
 266   1              for(i=0;i<6;i++)                        //1.5s      
 267   1              {
 268   2                      DLY_ms(250);            
 269   2              }       
 270   1              Show_8LED(-12345);
 271   1              DLY_ms(250);
 272   1              DLY_ms(250);
 273   1              Show_8LED(-6789);               
 274   1              DLY_ms(250);
 275   1              DLY_ms(250);            
 276   1              while(1)
 277   1              {                       
 278   2                      y=RD_T();
 279   2                      if(y<2001)
 280   2                      {
 281   3                              neg_flag=0;
 282   3                              y&=0x07ff;
 283   3                      }
 284   2                      else
 285   2                      {
 286   3                              neg_flag=1;
 287   3                              y=~y+1;
 288   3                      }       
 289   2                              x=y*6.25;
 290   2                      if(neg_flag)    
 291   2                              x=-x;
 292   2                      Show_8LED((int)x);
 293   2                      P3|=0x07;
 294   2                      if(y<480)                                       //30--480
 295   2                              greenled=0;
 296   2                      else if(y<615)                          //40--615
 297   2                              blueled=0;
 298   2                      else if(y<2001){                        //60--960,
 299   3                              redled=0;
 300   3                              Beep(1000);     
 301   3                      }
 302   2                      else
 303   2                              greenled=0;     
C51 COMPILER V7.10   ZPFINAL                                                               04/06/2008 13:32:56 PAGE 6   

 304   2                      for(i=0;i<8;i++)                        //2s        
 305   2                      {
 306   3                              DLY_ms(250);            
 307   3                      }
 308   2              }
 309   1      
 310   1      }  
 311          
 312          /*******************************************************************************
 313          ****                              End Of File
 314          *******************************************************************************/


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