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

📄 123.txt

📁 用12864实现多功能数码时钟
💻 TXT
📖 第 1 页 / 共 3 页
字号:
	unsigned char b=0;
	unsigned int t=0;
	float tt=0;
	Init_DS18B20();
	WriteOneChar(0xCC); // 跳过读序号列号的操作
	WriteOneChar(0x44); // 启动温度转换
	Init_DS18B20();
	WriteOneChar(0xCC); //跳过读序号列号的操作
	WriteOneChar(0xBE); //读取温度寄存器
	a=ReadOneChar();  //读低8位
	b=ReadOneChar(); //读高8位
	t=b;
	t<<=8;
	t=t|a;
	tt=t*0.0625;
	t= tt*10+0.5; //放大10倍输出并四舍五入
	return(t);
}

/******************************************************************************/
//1302驱动程序
/******************************************************************************/
void Init_1302(void)//设置1302的初始时间
{
	K1=1; K2=1; K3=1; K4=1; K5=1;
  K6=1; K7=1; KT=0; n=0;
	Timer0_Init();//新更改
}
 clock_out(void)
{
  unsigned char i;
  for(i=8; i>0; i--)
   {
    ACC = ACC >>1; 
    ACC7 = IO;
    CLK = 1;           //上升沿读出数据//
    CLK = 0;
   } 
  return(ACC); 
}

/******************************************************************************/
void clock_in(unsigned char dat)
{
  unsigned char i;
  ACC = dat;
  for(i=8; i>0; i--)
   {
    IO = ACC0;      
    CLK = 1;          //下降沿写入数据//
    CLK = 0;
    ACC = ACC >> 1; 
   } 
}

/******************************************************************************/
unsigned char read_clock(unsigned char Add)
{
	unsigned char Date;
  RST2 = 0;
  CLK = 0;
  RST2 = 1;
  clock_in(Add);         // 先给地址,命令 //
  Date = clock_out();      // 再读一字节数据 //
  CLK = 1;
  RST2 =0;
  return(Date);
}

/******************************************************************************/
void write_clock(unsigned char Addr,unsigned char Date)
{
  RST2 = 0;
  CLK = 0;
  RST2 = 1;
  clock_in(Addr);       // 先给地址,命令 //
  clock_in(Date);       // 再写入一字节数据 //
  CLK = 1;
  RST2 =0;
}

/******************************************************************************/
void Disp(void)//显示和闪烁函数!
{
	unsigned int i=0;
	unsigned char a=0,b=0,c=0,f=0;

	i=ReadTemperature();//读温度并送显
	a=i/100;
	Mcs=1;Scs=0;
	Disp_Digit(5,40,zero+a*16);
	b=i/10-a*10;
	Mcs=1;Scs=0;
	Disp_Digit(5,48,zero+b*16);
	c=i-a*100-b*10;
	Mcs=0;Scs=1;
	Disp_Digit(5,0,zero+c*16);

	if(sec==1)  //秒闪烁标志位
 	{
    	if(flag==1)
       	{    
        	d=read_clock(0x81);//读秒
			e=d;
			d=d>>4;
			e=e&0x0f;
			Mcs=0;Scs=1;
			Disp_Digit(3,40,zero+d*16);//送显示
			Disp_Digit(3,48,zero+e*16);   
       }
	   else
       {
	   	Mcs=0;Scs=1;
		Disp_Digit(3,40,space); //显示空格
        Disp_Digit(3,48,space);    
       }
    } 
  	else
    {
     	d=read_clock(0x81);//读秒
		e=d;
		d=d>>4;
		e=e&0x0f;
		Mcs=0;Scs=1;
/********************************************************************************/		
		if(d == 0 && e == 0)
		{
			flag_sec = 1;//秒标志位设定
		}
/********************************************************************************/    
		Disp_Digit(3,40,zero+d*16);
		Disp_Digit(3,48,zero+e*16);      
    }    
   
  	if(min==1)  //分钟闪烁标志位
    {
    	if(flag==1)
       	{    
       		d=read_clock(0x83);//读分钟
			e=d;
			d=d>>4;
			e=e&0x0f;
			Mcs=0;Scs=1;
			Disp_Digit(3,16,zero+d*16);
			Disp_Digit(3,24,zero+e*16);     
       	}
     	else
       	{	
			Mcs=0;Scs=1;
        	Disp_Digit(3,16,space); //显示空格
	        Disp_Digit(3,24,space);    
       	}
    } 
  	else
    {
    	d=read_clock(0x83);//读分钟
		e=d;
		d=d>>4;
		e=e&0x0f;
		Mcs=0;Scs=1;
/******************************************************************************/		
		if(d == 0 && e == 0)
		{
			flag_min = 1;//分标志位设定
		}
/******************************************************************************/
		Disp_Digit(3,16,zero+d*16);
		Disp_Digit(3,24,zero+e*16);         
    } 

	if(flag_sec == 1 && flag_min == 1)
	{
		Beep();//整点报警
		flag_sec = 0;//清除标志位
		flag_min = 0;
	}

  	if(hour==1)  //小时闪烁标志位
    {
    	if(flag==1)
       	{    
      		d=read_clock(0x85);//读小时
			e=d;
			d=d>>4;
			e=e&0x0f;
			Mcs=1;Scs=0;
			Disp_Digit(3,56,zero+d*16);
			Mcs=0;Scs=1;
			Disp_Digit(3,0,zero+e*16);
       	}
     	else
       	{
			Mcs=1;Scs=0;
        	Disp_Digit(3,56,space); //显示空格
			Mcs=0;Scs=1;
	        Disp_Digit(3,0,space);    
    	}
    } 
  	else
   	{ 
    	d=read_clock(0x85);//读小时
		e=d;
		d=d>>4;
		e=e&0x0f;
		Mcs=1;Scs=0;
		Disp_Digit(3,56,zero+d*16);
		Mcs=0;Scs=1;
		Disp_Digit(3,0,zero+e*16);
   	}

   	if(year==1)  //年闪烁标志位
    {
    	if(flag==1)
       	{    
        	d=read_clock(0x8d);//读年
			e=d;
			d=d>>4;
			e=e&0x0f;
			Mcs=1;Scs=0;
			Disp_Digit(1,8,two);
			Disp_Digit(1,16,zero);
			Disp_Digit(1,24,zero+d*16);
			Disp_Digit(1,32,zero+e*16);
       	}
     	else
       	{
			Mcs=1;Scs=0;
        	Disp_Digit(1,24,space); //显示空格
        	Disp_Digit(1,32,space);    
       	}
    } 
  	else
    { 
    	d=read_clock(0x8d);//读年
		e=d;
		d=d>>4;
		e=e&0x0f;
		Mcs=1;Scs=0;
		Disp_Digit(1,8,two);
		Disp_Digit(1,16,zero);
		Disp_Digit(1,24,zero+d*16);
		Disp_Digit(1,32,zero+e*16);
    }
     
  	if(mon==1)  //月闪烁标志位
    {
    	if(flag==1)
       	{    
        	d=read_clock(0x89);//读月
			e=d;
			d=d>>4;
			e=e&0x0f;
			Mcs=1;Scs=0;
			Disp_Digit(1,56,zero+d*16);
			Mcs=0;Scs=1;
			Disp_Digit(1,0,zero+e*16);
			Disp_Chinese(1,8,yue);
       	}
     	else
       	{
			Mcs=1;Scs=0;
        	Disp_Digit(1,56,space); //显示空格
			Mcs=0;Scs=1;
        	Disp_Digit(1,0,space);    
       	}
    } 
  	else
    { 
      	d=read_clock(0x89);//读月
		e=d;
		d=d>>4;
		e=e&0x0f;
		Mcs=1;Scs=0;
		Disp_Digit(1,56,zero+d*16);
		Mcs=0;Scs=1;
		Disp_Digit(1,0,zero+e*16);
		Disp_Chinese(1,8,yue);
    }   

  	if(day==1)  //日闪烁标志位
    {
    	if(flag==1)
       	{  
	   		d=read_clock(0x87);//读日
			e=d;
			d=d>>4;
			e=e&0x0f;
			Mcs=0;Scs=1;
			Disp_Digit(1,24,zero+d*16);
			Disp_Digit(1,32,zero+e*16);
			Disp_Chinese(1,40,ri);
    	}
    	else
   	 	{
			Mcs=0;Scs=1;
        	Disp_Digit(1,24,space); //显示空格
        	Disp_Digit(1,32,space);    
    	}
    } 
  	else
    { 
    	d=read_clock(0x87);//读日
		e=d;
		d=d>>4;
		e=e&0x0f;
		Mcs=0;Scs=1;
		Disp_Digit(1,24,zero+d*16);
		Disp_Digit(1,32,zero+e*16);
		Disp_Chinese(1,40,ri);
    }
    
    if(weekk==1)  //星期闪烁标志位
    {
    	if(flag==1)
       	{    
        	d=read_clock(0x8b);//读星期
			Mcs=1;Scs=0;
			Disp_Chinese(3,40,cone+(d-1)*32);//写入星期的汉字
       	}
     	else
       	{
			Mcs=1;Scs=0;
        	Disp_Chinese(3,40,spaces); //显示空格        
       	}
    } 
  	else
    { 
     	d=read_clock(0x8b);//读星期
		Mcs=1;Scs=0;
		Disp_Chinese(3,40,cone+(d-1)*32);//写入星期的汉字
    }     
}

/******************************************************************************/
void Disp2(void)//显示和闪烁函数
{
	if(Kgb==1)  //开关闪烁标志位
 	{
    	if(flag==1)
       	{
			if(Bell_Swh == 0)//0为关
			{
				Mcs=0;Scs=1;
				Disp_Chinese(2,32,guan);//显示关
			}
			else
			{
				Mcs=0;Scs=1;
				Disp_Chinese(2,32,kai);//显示开
			}
        }
	   else
       {
	   		Mcs=0;Scs=1;
			Disp_Chinese(2,32,spaces); //显示空格
       }
    } 
  	else
    {
     	if(Bell_Swh == 0)//关
		{
			Mcs=0;Scs=1;
			Disp_Chinese(2,32,guan);
		}
		else
		{
			Mcs=0;Scs=1;
			Disp_Chinese(2,32,kai);
		}
    }    
   
  	if(Hourb==1)  //时闪烁标志位
    {
    	if(flag==1)
       	{ 
   	    	d=read_clock(0xc3);//读闹钟小时的数值
			e=d;
			d=d>>4;
			e=e&0x0f;
			Mcs=1;Scs=0;
			Disp_Digit(4,48,zero+d*16);
			Disp_Digit(4,56,zero+e*16);   
       	}
     	else
       	{
			Mcs=1;Scs=0;
        	Disp_Digit(4,48,space); //显示空格
	        Disp_Digit(4,56,space);    
       	}
    } 
  	else
    {

⌨️ 快捷键说明

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