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

📄 12887.c

📁 时钟芯片12887的驱动程序.可以让你作为参考.方便开发系统等.可以读出时间.
💻 C
字号:
#include <reg51.h>                   
#include"absacc.h"                  
					 
#define VIEW_port  0xdfff          
#define VIEW	   0xefff	        
#define seconds    0x7f00            //DS12887秒所在的存储单元
#define minutes	   0x7f02            //DS12887分所在的存储单元
#define hours	   0x7f04            //DS12887时所在的存储单元
   
void main()                         //主函数
{unsigned char i,j,k;  
 init_serial();
 EA=1;                            //开中断
   while(1)
    {   IT0=1;                         
	    EX0=1;
	    i=XBYTE[seconds];          //读取DS12887的秒时间
	    xianshi(i);                   //送数码管上显示
        j=XBYTE[minutes];         
		xianshi1(j);
        k=XBYTE[hours];
		xianshi2(k);    
		if(P1_0==1){count=1;send();}       //查询的方式判断多路信号
	    if(P1_1==1){count=2;send();} 
		if(P1_2==1){count=3;send();}
		if(P1_3==1){count=4;send();}  
    }
}




void xianshi(unsigned char a)                  //显示子模块
{ unsigned char g,s;
  unsigned char code dis_code[14]={0x3f,0x06,0x5b,0x4f,0x66,   //0,1,2,3,4
	                             0x6d,0x7d,0x07,0x7f,0x6f,0x7c,0x63,0x39};   //5,6,7,8,9,b,o,c
  s=a/16;
  g=a%16;
  XBYTE[VIEW_port]=0x7f;
  XBYTE[VIEW]=dis_code[g];
  delay(2);
  XBYTE[VIEW_port]=0xbf;
  XBYTE[VIEW]=dis_code[s];
  delay(2);    
}

void xianshi1(unsigned char m)                  //显示子模块
{ unsigned char g,s;
  unsigned char code dis_code[14]={0x3f,0x06,0x5b,0x4f,0x66,   //0,1,2,3,4
	                             0x6d,0x7d,0x07,0x7f,0x6f,0x7c,0x63,0x39};   //5,6,7,8,9,b,o,c
  s=m/16;
  g=m%16;
  XBYTE[VIEW_port]=0xdf;
  XBYTE[VIEW]=0x40;
  delay(2);
  XBYTE[VIEW_port]=0xef;
  XBYTE[VIEW]=dis_code[g];
  delay(2);
  XBYTE[VIEW_port]=0xf7;
  XBYTE[VIEW]=dis_code[s];
  delay(2);
}

void xianshi2(unsigned char h)                             //显示子模块
{ unsigned char g,s;
  unsigned char code dis_code[14]={0x3f,0x06,0x5b,0x4f,0x66,   //0,1,2,3,4
	                             0x6d,0x7d,0x07,0x7f,0x6f,0x7c,0x63,0x39};   //5,6,7,8,9,b,o,c

  g=h%16;
  XBYTE[VIEW_port]=0xfb;
  XBYTE[VIEW]=0x40;
  delay(2);
  XBYTE[VIEW_port]=0xfd;
  XBYTE[VIEW]=dis_code[g];
  delay(2);
  XBYTE[VIEW_port]=0xfe;
  XBYTE[VIEW]=dis_code[s];
  delay(2);
}


void init_serial()                                //初始化串口
{   TMOD = 0x20;	//定时器T1使用工作方式2
	TH1 = 0xfd;    // 设置初值
	TL1 = 0xfd;
	PCON = 0x00;    // SMOD = 1
	SCON = 0x50;	//工作方式1,波特率9600bps,允衹
	TR1 =  0x01;    // 开始计时
}

void delay(unsigned char i)                            //延时程序
{
  unsigned char j;
  while((i--)!=0)
  {
    for(j=123;j>0;j--);
  }
}

⌨️ 快捷键说明

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