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

📄 ds12c887._c

📁 12C887 的驱动程序
💻 _C
字号:

#include <iom128v.h>
#include <macros.h>
#include"DS12C887.H"
#include"char.h"
#include"lcd.h"
#include"chinese.h"

#define uchar unsigned char
uchar second,second10,second01,minute,minute10,minute01,hour,hour10,hour01;
uchar weekday,weekday10,weekday01,monthday,monthday10,monthday01,month,month10,month01,year,year10,year01;
//**********************************延时函数**************************************/

void delayds12887(uchar i)
{
 while(--i)                
	{;}
}

//*****************************写DS12887时间寄存器函数****************************/

void Write_Regtime(uchar Second,uchar Minute,uchar Hour,uchar Weekday,uchar Monthday,uchar Month,uchar Year)
{		
 SECOND=Second;        		//写秒初值
 MINUTE=Minute;				//写分初值
 HOUR=Hour;					//写小时初值
 WEEKDAY=Weekday;			//写星期天数初值
 MONTHDAY=Monthday;			//写月天数初值
 MONTH=Month;				//写月初值
 YEAR=Year;					//写年初值
}


//*************************写DS12887特殊寄存器A,B,C,D函数**********************/

void Write_Regspecial(uchar regA,uchar regB,uchar regC,uchar regD)
{		
 REG_A=regA; 
 REG_B=regB;
 REG_C=regC;
 REG_C=regD; 
}

//******************************读DS12887时间寄存器函数*****************************/

Read_RegSec(void)   
{		
 return SECOND;
}

Read_RegMin(void)
{   
 return MINUTE;
}

Read_RegHour(void)
{  
 return HOUR;
}

Read_RegWeekday(void)
{  
 return WEEKDAY;
}

Read_RegMonthday(void)
{  
 return MONTHDAY;
}

Read_RegMonth(void)
{  
 return MONTH;
}

Read_RegYear(void)
{  
 return YEAR;
}

/**********************************************************************************/

void juddisplay(uchar number,uchar y,uchar x)             //(要显示的字符,X位置,Y位置)
{					
  switch(number)                                          //判断数字是几,并显示在指定位置上          
		{
		  case 0x00:display_char(n01,n02,y,x);break;
		  case 0x01:display_char(n11,n12,y,x);break;
		  case 0x02:display_char(n21,n22,y,x);break;
		  case 0x03:display_char(n31,n32,y,x);break;
	      case 0x04:display_char(n41,n42,y,x);break;
	      case 0x05:display_char(n51,n52,y,x);break;
		  case 0x06:display_char(n61,n62,y,x);break;
		  case 0x07:display_char(n71,n72,y,x);break;
		  case 0x08:display_char(n81,n82,y,x);break;
		  case 0x09:display_char(n91,n92,y,x);break;
		}
}

void readtime(void)
{ 
  second=Read_RegSec();
  second10=(second&0xf0)>>4;                         //取得秒的十位数字
  second01=second&0x0f;		                         //取得秒的个位数字
	 
  minute=Read_RegMin();
  minute10=(minute&0xf0)>>4;                         //取得分的十位数字
  minute01=minute&0x0f;		                         //取得分的个位数字
	 
  hour=Read_RegHour();
  hour10=(hour&0xf0)>>4;                             //取得时的十位数字
  hour01=hour&0x0f;		                             //取得时的个位数字
	 
  weekday=Read_RegWeekday();
  weekday10=(weekday&0xf0)>>4;                       //取得星期的十位数字
  weekday01=weekday&0x0f;	
	 
  monthday=Read_RegMonthday();
  monthday10=(monthday&0xf0)>>4;
  monthday01=monthday&0x0f;
	 
  month=Read_RegMonth();
  month10=(month&0xf0)>>4;
  month01=month&0x0f;
	 
  year=Read_RegYear();
  year10=(year&0xf0)>>4;
  year01=year&0x0f;
}

void displaytime(void)
{
 juddisplay(year10,0,0);
 juddisplay(year01,0,1);
	 
 juddisplay(month10,0,4);
 juddisplay(month01,0,5);
	 
 juddisplay(monthday10,0,8);
 juddisplay(monthday01,0,9);
	 
 juddisplay(weekday10,2,5);
 juddisplay(weekday01,2,6);
	 
 juddisplay(hour10,4,3);
 juddisplay(hour01,4,4);
	 
 juddisplay(minute10,4,6);
 juddisplay(minute01,4,7);
	 
 juddisplay(second10,4,9);
 juddisplay(second01,4,10); 
}

	 
void main(void)
{	
  
  init_devices();
  LCD_Clean();
  LCD_Init();
  delayds12887(20000);
  Write_Regtime(0x00,0x41,0x21,0x06,0x07,0x07,0x07);
  Write_Regspecial(0x20,0x00,0x00,0x00);                 //寄存器A写入0X20
  display_char(maohao1,maohao2,4,8);                     //显示冒号
  display_char(maohao1,maohao2,4,5);                     //显示冒号
  display_chinese(nian1,nian2,0,1);
  display_chinese(yue1,yue2,0,3);
  display_chinese(ri1,ri2,0,5);
  display_chinese(xing1,xing2,1,0);
  display_chinese(qi1,qi2,1,1);
  display_char(maohao1,maohao2,2,4);                   
   
  while(1)
	{	
	readtime();
	displaytime();
	}
	 
}


⌨️ 快捷键说明

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