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

📄 1302.c

📁 1302 c51程序 数码管显示
💻 C
字号:

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int              
  sbit T_CLK = P1^0; 
  sbit T_IO= P1^2; 
  sbit T_RST = P1^1; 
  void RTInputByte(uchar d) 
{ 
    uchar i;
    ACC = d;
    for(i=8; i>0; i--)
    { 
       if(ACC&0x01) 
	    T_IO=1;
       else 
	    T_IO=0;
        T_CLK = 1;
        T_CLK = 0;
       ACC = ACC >> 1;  
    } 
}

uchar RTOutputByte(void) 
{ 
    uchar i;
    for(i=8; i>0; i--)
    {
        ACC = ACC >>1;         /*相当于汇编中的 RRC */
        if(T_IO==1)
         ACC|=0x80;
		 T_CLK = 1;
         T_CLK = 0;
    } 
    return(ACC); 
}


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;
} 

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);
	}


void Set1302(uchar *pClock) 
{
    uchar i;
    uchar ucAddr = 0x80; 
    W1302(0x8e,0x00);           /* 控制命令,WP=0,写操作?*/
    for(i =7; i>0; i--)
    { 
        W1302(ucAddr,*pClock);  /* 秒 分 时 日 月 星期 年 */ 
        pClock+=1;
        ucAddr +=2;
    }
    W1302(0x8e,0x80);           /* 控制命令,WP=1,写保护?*/
}

void Get1302(uchar ucCurtime[]) 
{
    uchar i;
    uchar ucAddr = 0x81;
    for (i=0; i<7; i++)
    {
        ucCurtime[i] = R1302(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */
        ucAddr += 2;
    }
}
void display(uchar *a)
{uchar i,j=0;
 uchar ledvalue[10]={0x88,0xeb,0x4c,0x49,0x2b,0x19,0x18,0xcb,0x08,0x09};
 uchar temp;
 uchar  atime[14] ;  
   for(i=0;i<7;i++)
 {atime[j]=a[i]%16;
   j+=1;
   atime[j]=a[i]/16;
   j+=1;
  }
SCON=0x00;
ES=0;
for(i=0;i<6;i++)
{ if(i==2)
   {SBUF=0x7f;
    while(!TI);
    TI=0;
	}	  
  if(i==4)
   { SBUF=0x7f;
     while(!TI);
     TI=0;}   
  
   temp=ledvalue[atime[i]];
   SBUF=temp;
   while(!TI);
   TI=0;
}
}
void main(void)
{uchar  ptime[7]={0x23,0x36,0x10,0x31,0x01,0x06,0x07};  //设置的秒,分,时,日,月,星期,年
 uchar ad[7];            
   Set1302(ptime);
while(1)                 
 { 
  Get1302(ad);
  display(ad);
}
}



⌨️ 快捷键说明

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