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

📄 finalclock.lst

📁 多功能时钟
💻 LST
📖 第 1 页 / 共 2 页
字号:
 256   1      	delay(2);
 257   1      	P1=0x7f;
 258   1      	P0=disp_code[h2];
 259   1      	delay(2);
 260   1      }
 261          void alarmset()                  //闹钟设置程序
 262          {		
 263   1      		key1=0;
 264   1      		if(key3==0)
 265   1      		{
 266   2      			while(!key3);
 267   2      			{
 268   3      			as++;
 269   3      			if(as==60)
 270   3      			as=0;
 271   3      			}
 272   2      		}
 273   1      		if(key4==0)
 274   1      		{
 275   2      			while(!key4);
 276   2      			{
 277   3      			am++;
 278   3      			if(am==60)
 279   3      			am=0;
 280   3      			}
 281   2      		}
 282   1      		if(key5==0)
 283   1      		{
 284   2      			while(!key5);
 285   2      			{
 286   3      			ah++;
 287   3      			if(ah==24)
 288   3      			ah=0;
 289   3      			}
 290   2      	    }
 291   1      	display(ah,am,as);
 292   1      }
 293          void distribute()                              //记时程序
 294          {	
 295   1      	uchar e;
 296   1      	s=num/100;
 297   1      	if(s>60)
 298   1      	{
 299   2      		e=s/60;
 300   2      		m=m+e;
 301   2      		s=s%60;
 302   2      		num=0;
C51 COMPILER V6.12  FINALCLOCK                                                             08/29/2010 19:31:23 PAGE 6   

 303   2      	}
 304   1      	if(s==60)
 305   1      		{
 306   2      			num=0;
 307   2      			m++;
 308   2      
 309   2      		}
 310   1      		if(m==60)
 311   1      		{
 312   2      			m=0;
 313   2      			h++;
 314   2      
 315   2      		}
 316   1      		if(h==24)
 317   1      		h=0;
 318   1      		
 319   1      }
 320          void zd_clock()                   //整点报时程序
 321          {
 322   1      	if(m==0&&s==0)
 323   1      		{
 324   2      			tf=h;
 325   2      			if(h==0)
 326   2      			tf=24;
 327   2      			led=0;
 328   2      			delay(50);
 329   2      			beepopen(tf);
 330   2      			led=1;
 331   2      
 332   2      		}
 333   1      }
 334          void clock()                      //时钟程序
 335          {	
 336   1      	TR0=1;
 337   1      	distribute();
 338   1      	display(h,m,s);
 339   1      }
 340          void alarmbeep()                  //闹钟音乐程序
 341          {
 342   1      	code unsigned char FREQH[] = {
 343   1      	    0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8,    
 344   1      	    0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, 0xFC,
 345   1      	    0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE,            
 346   1      	    0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF};   
 347   1      	code unsigned char FREQL[] = {
 348   1      	    0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6,   
 349   1      	    0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, 0x8F, 
 350   1      	    0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D,            
 351   1      	    0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16};   
 352   1      	//--------------------------------------
 353   1      	//义勇军进行曲数码表          
 354   1      	code unsigned char sszymmh[] = {5, 1, 1, 1, 2, 3, 1, 2, 1, 1, 2, 3, 1, 2, 1, 5, 2, 1, 6, 1, 1, 7, 1, 1, 1
             -, 2, 2, 1, 2, 2,
 355   1      3, 2, 1, 1, 2, 1, 2, 2, 1, 3, 2, 1, 5, 2, 2, 5, 2, 2, 3, 2, 3, 3, 2, 1, 1, 2, 3, 3, 2, 1, 
 356   1      5, 2, 3, 3, 2, 1, 2, 2, 2, 2, 2, 4, 6, 2, 2, 5, 2, 2, 2, 2, 2, 3, 2, 2, 5, 2, 1, 3, 2, 1, 
 357   1      5, 2, 1, 3, 2, 1, 2, 2, 1, 3, 2, 1, 1, 2, 2, 3, 2, 2, 5, 1, 3, 6, 1, 1, 1, 2, 1, 1, 2, 1,
 358   1      3, 2, 3, 3, 2, 1, 5, 2, 1, 5, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 1, 6, 1, 2, 2, 2, 3, 5, 1, 1,
 359   1      1, 2, 3, 1, 2, 1, 3, 2, 3, 3, 2, 1, 5, 2, 4, 1, 2, 3, 3, 2, 1, 5, 2, 1, 5, 2, 1, 6, 2, 2,
 360   1      5, 2, 2, 3, 2, 3, 1, 2, 1, 5, 2, 1, 5, 2, 1, 5, 2, 1, 3, 2, 1, 1, 2, 1, 5, 2, 2, 1, 2, 2,
 361   1      3, 2, 3, 1, 2, 1, 5, 2, 1, 5, 2, 1, 5, 2, 1, 3, 2, 1, 1, 2, 1, 5, 1, 2, 1, 2, 2, 5, 1, 2, 
 362   1      1, 2, 2, 5, 1, 2, 1, 2, 2, 1, 2, 2, 0, 0, 0};
 363   1      	//--------------------------------------
C51 COMPILER V6.12  FINALCLOCK                                                             08/29/2010 19:31:23 PAGE 7   

 364   1      	
 365   1      	
 366   1      	TMOD = 0x11;                               
 367   1      	EA = 1;
 368   1      	l = 0;
 369   1      	if(key5!=0)
 370   1      	time = 1; 
 371   1      	while(time) 
 372   1      	{
 373   2      		k = sszymmh[l] + 7 * sszymmh[l + 1] - 1;
 374   2      		timer0h = FREQH[k];     
 375   2      		timer0l = FREQL[k]; 
 376   2      		time = sszymmh[l + 2]; 
 377   2      		l += 3;
 378   2      		song(); 
 379   2      		if(key5==0)
 380   2      		{
 381   3      			ET1=0;
 382   3      			time=0;
 383   3      		}
 384   2      	}
 385   1      }
 386          		
 387          void timer1() interrupt 3            //定时器1中断处理程序
 388          {
 389   1      	TR1 = 0;                     
 390   1      	BEEP = !BEEP; 
 391   1      	TH1 = timer0h;               
 392   1      	TL1 = timer0l;
 393   1      	TR1 = 1;           
 394   1      }
 395          
 396          void delay1(unsigned char t0)           //用于音乐程序的延时函数   
 397          {
 398   1      	unsigned char t1;
 399   1      	unsigned long t2;
 400   1      	for(t1 = 0; t1 < t0; t1++)    //双重循环, 共延时t个半拍
 401   1      	    for(t2 = 0; t2 <8000; t2++)
 402   1      	 ; //延时期间, 可进入T0中断去发音
 403   1      	TR1 = 0;                        //关闭T1, 停止发音
 404   1      
 405   1      }
 406          void song()                    //演奏一个音符
 407          {
 408   1      	TH1 = timer0h;               //控制音调
 409   1      	TL1 = timer0l;
 410   1         	TR1=1;           //启动T1, 由T1输出方波去发音
 411   1      	delay1(time);                 //控制时间长度
 412   1      }
 413          /******************************************************************************/
 414          void delay2(int numb) //延时函数
 415          {
 416   1          while (numb--)
 417   1              ;
 418   1      }
 419          
 420          /*******************************************************************************/
 421          unsigned char Init_DS18B20(void) //初始化ds1820
 422          {
 423   1          unsigned char x = 0;
 424   1          DQ = 1; //DQ复位
 425   1          delay2(8); //稍做延时
C51 COMPILER V6.12  FINALCLOCK                                                             08/29/2010 19:31:23 PAGE 8   

 426   1          DQ = 0; //单片机将DQ拉低
 427   1          delay2(80); //精确延时 大于 480us
 428   1          DQ = 1; //拉高总线
 429   1          delay2(14);
 430   1          x = DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
 431   1          delay2(20);
 432   1      	return(x);
 433   1      }
 434          
 435          /******************************************************************************/
 436          unsigned char ReadOneChar(void) //读一个字节
 437          {
 438   1          unsigned char r = 0;
 439   1          unsigned char dat = 0;
 440   1          for (r = 8; r > 0; r--)
 441   1          {
 442   2              DQ = 0; // 给脉冲信号
 443   2              dat >>= 1;
 444   2              DQ = 1; // 给脉冲信号
 445   2              if (DQ)
 446   2              {
 447   3                  dat |= 0x80;
 448   3              }
 449   2              delay2(4);
 450   2          }
 451   1          return (dat);
 452   1      }
 453          
 454          /******************************************************************************/
 455          void WriteOneChar(unsigned char dat) //写一个字节
 456          {
 457   1          unsigned char s = 0;
 458   1          for (s = 8; s > 0; s--)
 459   1          {
 460   2              DQ = 0;
 461   2              DQ = dat & 0x01;
 462   2              delay2(5);
 463   2              DQ = 1;
 464   2              dat >>= 1;
 465   2          }
 466   1      }
 467          /*void Config18b20()
 468          {
 469               Init_DS18B20();
 470               WriteOneChar(0xcc);  //skip rom
 471               WriteOneChar(0x4e);  //write scratchpad
 472               WriteOneChar(0x3c);  //上限
 473               WriteOneChar(0x3f);  //下限
 474               WriteOneChar(0xff);     //set 11 bit (0.125)
 475               Init_DS18B20();
 476               WriteOneChar(0xcc);  //skip rom
 477               WriteOneChar(0x48);  //保存设定值
 478               Init_DS18B20();
 479               WriteOneChar(0xcc);  //skip rom
 480               WriteOneChar(0xb8);  //回调设定值
 481          }*/
 482          
 483          unsigned int ReadTemperature(void) //读取温度
 484          {
 485   1          unsigned char a = 0;
 486   1          unsigned char b = 0;
 487   1          unsigned int ttt = 0;
C51 COMPILER V6.12  FINALCLOCK                                                             08/29/2010 19:31:23 PAGE 9   

 488   1          float tt = 0;
 489   1          void Config18b20();
 490   1          Init_DS18B20();
 491   1          WriteOneChar(0xCC); // 跳过读序号列号的操作
 492   1          WriteOneChar(0x44); // 启动温度转换
 493   1          Init_DS18B20();
 494   1          WriteOneChar(0xCC); //跳过读序号列号的操作
 495   1          WriteOneChar(0xBE); //读取温度寄存器
 496   1          a = ReadOneChar(); //读低8位
 497   1          b = ReadOneChar(); //读高8位   
 498   1          ttt = b;
 499   1          ttt <<= 8;
 500   1          ttt = ttt| a;
 501   1          (ttt!=1360)?(tt=ttt*0.062525):0;
 502   1          return (tt);
 503   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1339    ----
   CONSTANT SIZE    =    341    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     42      24
   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 + -