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

📄 ledping.c

📁 LED显示时间和汉字(DS1302)
💻 C
📖 第 1 页 / 共 3 页
字号:
 {out_rxd(&timer[12][i]);	     //不显示 
out_rxd(&timer[12][i]);
  out_rxd(&timer[12][i]);	     //不显示 
out_rxd(&timer[12][i]);           //不显示                  
 out_rxd(&timer[12][i]);	     //不显示 
out_rxd(&timer[12][i]);
out_rxd(&timer[12][i]);	     //不显示 
out_rxd(&timer[12][i]);
}     //不显示 

void jingz()//静止
 { out_rxd(&hanzi[18][i*2+1]);
out_rxd(&hanzi[18][i*2]);
 out_rxd(&hanzi[19][i*2+1]);
out_rxd(&hanzi[19][i*2]);
 out_rxd(&hanzi[20][i*2+1]);
out_rxd(&hanzi[20][i*2]);
 out_rxd(&hanzi[21][i*2+1]);
out_rxd(&hanzi[21][i*2]);

}
void jingz2()//静止
 { out_rxd(&hanzi[22][i*2+1]);
out_rxd(&hanzi[22][i*2]);
 out_rxd(&hanzi[23][i*2+1]);
out_rxd(&hanzi[23][i*2]);
 out_rxd(&hanzi[24][i*2+1]);
out_rxd(&hanzi[24][i*2]);
 out_rxd(&hanzi[25][i*2+1]);
out_rxd(&hanzi[25][i*2]);

}
void jingz3()//静止
 { out_rxd(&hanzi[26][i*2+1]);
out_rxd(&timer[12][i]);
 out_rxd(&hanzi[27][i*2+1]);
out_rxd(&hanzi[27][i*2]);
 out_rxd(&hanzi[28][i*2+1]);
out_rxd(&timer[12][i]);
 out_rxd(&hanzi[29][i*2+1]);
out_rxd(&hanzi[29][i*2]);

}
  
void in_data(void)		 //调整数据
{
 char s;
	for(s=4;s>=0;s--)	              //i为向后先择字节计数器,zimuoo为向后先字计数器
	{
	 BUFF[2*s+1]=hanzi2[zimuo+32*s+2*i];     // 把第一个字模的第一个字节放入BUFF0中,第二个字模和第一个字节放入BUFF2中
	 BUFF[2*s]=hanzi2[zimuo+1+32*s+2*i];	    // 把第一个字模的第二个字节放入BUFF1中,第二个字模的第二个字节放入BUFF3中
	}
}

/***********************发送移动的数据****************************/
void rxd_data(void)		            //串行发送数据
{
  uchar s;
  uchar inc,tempyid,temp,m;
  if(yid<8)
    inc=0;
  else 
    inc=1;
  for(s=0+inc;s<8+inc;s++)		   //发送8字节数据
	{
	 if(yid<8) 
      tempyid=yid;
     else 
     tempyid=yid-8;
     temp=(BUFF[s]>>tempyid)|(BUFF[s+1]<<(8-tempyid));	//h1左移tempyid位后和h2右移8-tempyid相或,取出移位后的数据。
    
	 {									 //把temp的8位数据串行发送出去。
	 	for(m=0;m<8;m++)
		{
	 	if((temp&0x01)==0) R=0;
		else R=1;	//把temp中相应的位送给DS0输出
		G=1;	//DS1 输出反白数据
		CLK=0;
		CLK=1;
		temp>>=1;	//循环右移移位
		}
 
	  }
	 
	}
}


/*******************************************************/ 
 void out_rxd(unsigned char *d)	  /*从串口发送数据*/
{
   		uchar d_code,m; 
   		d_code=*d;								 //把temp的8位数据IO口串行发送出去。
	 	for(m=0;m<8;m++)
		{
	 	if((d_code&0x01)==0) R=0;
		else R=1;	//把temp中相应的位送给DS0输出
		G=1;	//DS1 输出反白数据
		CLK=0;
		CLK=1;
		d_code>>=1;	//循环右移移位
		}

	 
 } 





//根据选择调整相应项目
void Set(uchar sel,uchar sel_1) 
{
  uchar address,item;
  uchar max,mini;
  if(sel==7)  {address=0x80; max=0;mini=0;}     //秒
  if(sel==6)  {address=0x82; max=59;mini=0;}    //分钟
  if(sel==5)  {address=0x84; max=23;mini=0;}    //小时
  if(sel==4)  {address=0x8a; max=7; mini=1;}    //星期
  if(sel==3)  {address=0x86; max=31;mini=1;}    //日
  if(sel==2)  {address=0x88; max=12;mini=1;}    //月
  if(sel==1)  {address=0x8c; max=99;mini=0;}    //年
  
  
  item=R1302(address+1)/16*10+R1302(address+1)%16;
  if (sel_1==0) item++;  else item--;
  if(item>max) item=mini;   
  if(item<mini) item=max;
           
  W1302(0x8e,0x00);
  W1302(address,item/10*16+item%10);
  W1302(0x8e,0x80);  
}

/**************************延时***********************/

void DelayMs(void)
 {
  uchar TempCyc;
  for(TempCyc=300;TempCyc>1;TempCyc--)
     {;}
 }

//********DS1302读写程序***************//
/******************************************************************** 
函 数 名:RTInputByte()
功    能:实时时钟写入一字节
说    明:往DS1302写入1Byte数据 (内部函数)
入口参数:d 写入的数据 
返 回 值:无  
***********************************************************************/
void RTInputByte(uchar d) 
{ 
    uchar h;
    ACC = d;
    for(h=8; h>0; h--)
    {
        T_IO = ACC0;           /*相当于汇编中的 RRC */
        T_CLK = 1;
        T_CLK = 0;
        ACC = ACC >> 1; 
    } 
}
/******************************************************************** 
函 数 名:RTOutputByte()
功    能:实时时钟读取一字节
说    明:从DS1302读取1Byte数据 (内部函数)
入口参数:无  
返 回 值:ACC
设    计:zhaojunjie           日    期:2002-03-19
修    改:                     日    期: 
***********************************************************************/
uchar RTOutputByte(void) 
{ 
    uchar h;
    for(h=8; h>0; h--)
    {
        ACC = ACC >>1;         /*相当于汇编中的 RRC */
        ACC7 = T_IO;
        T_CLK = 1;
        T_CLK = 0;
    } 
    return(ACC); 
}
/******************************************************************** 
函 数 名:W1302()
功    能:往DS1302写入数据
说    明:先写地址,后写命令/数据 (内部函数)
调    用:RTInputByte() , RTOutputByte()
入口参数:ucAddr: DS1302地址, ucData: 要写的数据
返 回 值:无
***********************************************************************/
void W1302(uchar ucAddr, uchar ucDa)
{
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    RTInputByte(ucAddr);       /* 地址,命令 */
    RTInputByte(ucDa);       /* 写1Byte数据*/
    T_CLK = 1;
    T_RST = 0;
}
/******************************************************************** 
函 数 名:R1302()
功    能:读取DS1302某地址的数据
说    明:先写地址,后读命令/数据 (内部函数)
调    用:RTInputByte() , RTOutputByte()
入口参数:ucAddr: DS1302地址
返 回 值:ucData :读取的数据
***********************************************************************/
uchar R1302(uchar ucAddr)
{
    uchar ucData;
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    RTInputByte(ucAddr);             /* 地址,命令 */
    ucData = RTOutputByte();         /* 读1Byte数据 */
    T_CLK = 1;
    T_RST = 0;
    return(ucData);
}

/******************************************************************** 
函 数 名:Set1302()
功    能:设置初始时间
说    明:先写地址,后读命令/数据(寄存器多字节方式)
调    用:W1302()
入口参数:pClock: 设置时钟数据地址 格式为: 秒 分 时 日 月 星期 年
                               7Byte (BCD码)1B 1B 1B 1B 1B  1B  1B
返 回 值:无
***********************************************************************/
void Set1302(uchar *pClock) 
{
    uchar h;
    uchar ucAddr = 0x80; 
    W1302(0x8e,0x00);           /* 控制命令,WP=0,写操作?*/
    for(h =7; h>0; h--)
    { 
        W1302(ucAddr,*pClock);  /* 秒 分 时 日 月 星期 年 */ 
        pClock++;
        ucAddr +=2;
    }
    W1302(0x8e,0x80);           /* 控制命令,WP=1,写保护?*/

}
/******************读取DS1302中的时间****************/
void du1302()
{
      miao=R1302(0x81);   //对取 秒 分 时 日 月 星期 年
	  fen=R1302(0x83);
	  shi=R1302(0x85);
	  ri=R1302(0x87);
	  yue=R1302(0x89);
	  xinqi=R1302(0x8b);
	  nian=R1302(0x8d);
} 
 

uchar code timer[13][16]={ 	   /*0~9字符*/


0xFF,0xFF,0xC3,0x99,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x3C,0x99,0xC3,0xFF,0xFF,/*"0",0*/
/* (8 X 16 , @DotumChe, 加粗 )*/
0xFF,0xFF,0xE7,0xE1,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xE7,0xFF,0xFF,/*"1",1*/
/* (8 X 16 , @DotumChe, 加粗 )*/
0xFF,0xFF,0xC1,0x9C,0x9C,0x9F,0x9F,0xCF,0xE7,0xF3,0xF9,0xFC,0xFC,0x80,0xFF,0xFF,/*"2",2*/
/* (8 X 16 , @DotumChe, 加粗 )*/
0xFF,0xFF,0xC1,0x9C,0x9C,0x9F,0x9F,0xC1,0x9F,0x9F,0x9F,0x9C,0x9C,0xC1,0xFF,0xFF,/*"3",3*/
/* (8 X 16 , @DotumChe, 加粗 )*/
0xFF,0xFF,0x8F,0x8F,0x87,0x87,0x93,0x93,0x99,0x99,0x00,0x9F,0x9F,0x9F,0xFF,0xFF,/*"4",4*/
/* (8 X 16 , @DotumChe, 加粗 )*/
0xFF,0xFF,0x80,0xFC,0xFC,0xFC,0xC0,0x9C,0x9F,0x9F,0x9F,0x9C,0x9C,0xC1,0xFF,0xFF,/*"5",5*/
/* (8 X 16 , @DotumChe, 加粗 )*/
0xFF,0xFF,0xC1,0x9C,0x9C,0xFC,0xFC,0xC0,0x9C,0x9C,0x9C,0x9C,0x9C,0xC1,0xFF,0xFF,/*"6",6*/
/* (8 X 16 , @DotumChe, 加粗 )*/
0xFF,0xFF,0x80,0x9F,0xCF,0xCF,0xE7,0xE7,0xE7,0xF3,0xF3,0xF3,0xF3,0xF3,0xFF,0xFF,/*"7",7*/
/* (8 X 16 , @DotumChe, 加粗 )*/
0xFF,0xFF,0xC1,0x9C,0x9C,0x9C,0x9C,0xC1,0x9C,0x9C,0x9C,0x9C,0x9C,0xC1,0xFF,0xFF,/*"8",8*/
/* (8 X 16 , @DotumChe, 加粗 )*/
0xFF,0xFF,0xC1,0x9C,0x9C,0x9C,0x9C,0x9C,0x81,0x9F,0x9F,0x9C,0x9C,0xC1,0xFF,0xFF,/*"9",9*/
/* (8 X 16 , @DotumChe, 加粗 )*/

/*--  宽度x高度=8x16  --*/
0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,//时
/*--  宽度x高度=8x16  --*/
0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,0xE7,0xE7,0xFF,0xFF,0xFF,0xFF,/*"分",1*/
/* (8 X 16 , 宋体 )*/
/*黑屏字符*/
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,

};

uchar code hanzi[30][32]={	   /*时钟汉字字模*/

/*--  文字:  年  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFF,0xEF,0xC0,0x0F,0xFE,0xF7,0xFE,0xF7,0xFE,0xFB,0xE0,0x0D,0xFE,0xEE,0xFE,0xEF,
0xFE,0xEF,0xFE,0xEF,0x80,0x00,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,0xFE,0xFF,

/*--  文字:  月  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xF0,0x1F,0xF7,0xDF,0xF7,0xDF,0xF7,0xDF,0xF0,0x1F,0xF7,0xDF,0xF7,0xDF,0xF7,0xDF,
0xF0,0x1F,0xF7,0xDF,0xF7,0xEF,0xF7,0xEF,0xF7,0xF7,0xF5,0xFB,0xFB,0xFD,0xFF,0xFF,

/*--  文字:  星  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFF,0xFF,0xE0,0x07,0xEF,0xF7,0xE0,0x07,0xEF,0xF7,0xE0,0x07,0xFF,0x7F,0xFF,0x77,
0xC0,0x07,0xFF,0x7B,0xFF,0x7B,0xE0,0x0D,0xFF,0x7F,0xFF,0x7F,0x80,0x01,0xFF,0xFF,

/*--  文字:  期  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xFF,0xBB,0xC1,0xBB,0xDD,0x01,0xDD,0xBB,0xDD,0x83,0xC1,0xBB,0xDD,0x83,0xDD,0xBB,
0xDD,0xBB,0xC1,0x00,0xDD,0xFF,0xDE,0xDB,0xDE,0xBB,0xD7,0x3D,0xEF,0x7E,0xFF,0xFF,

/*--  文字:  时  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0xF7,0xFF,0xF7,0xFF,0xF7,0xC1,0xF7,0xDD,0x80,0x1D,0xF7,0xDD,0xF7,0xC1,0xF7,0x5D,
0xF6,0xDD,0xF6,0xDD,0xF7,0xC1,0xF7,0xFF,0xF7,0xFF,0xF7,0xFF,0xF5,0xFF,0xFB,0xFF,

⌨️ 快捷键说明

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