text1.c

来自「DS1302的仿真图及程序」· C语言 代码 · 共 81 行

C
81
字号
#include <at89x51.h>
#include <DS1302.h>
#define  din  P2_0
#define  load  P2_1
#define  clk  P2_2
#define uchar unsigned char 
#define uint  unsigned int
unsigned char code dispcode[]={0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,0x01};
uchar buf[]={0,0,0,0,0,0,0,0};
SYSTEMTIME  time1;
void csh()
{
  load=1;
  clk=1;
  din=1;
}
  Delayms(uint c)
{  
   uint a,b;
   for(a=0;a<c;a++)
   for(b=0;b<120;b++);
}
void write(uchar com,uchar da)
{
   uchar temp,i,j;
   load=0;
   clk=0;
       for(i=0;i<8;i++)
      { temp=com;
  	    if((temp&(0x80>>i))!=0)
		      din=1;
		 else din=0;
	     clk=1;
         for(j=0;j<5;j++);
		 clk=0;
	  }
    for(i=0;i<8;i++)
	   { temp=da;
          if((temp&(0x80>>i))!=0)
		  din=1;
  		  else din=0;
 		  clk=1;
		  for(j=0;j<5;j++);
		  clk=0;
	   }
	 load=1;

}

void main()

{  
   
   csh(); 
   write(0x0c,0x01);//正常工作状态,关断模式
   write(0x09,0x00);//译码选择,非BCD码
   write(0x0a,0x0f);//亮度调节
   write(0x0b,0x07);//显示位数
   Initial_DS1302();   
   while(1)
     {	 
	   DS1302_GetTime(&time1);
       buf[7]=(time1.Second)%10;
       buf[6]=(time1.Second)/10;
       buf[4]=(time1.Minute)%10;
       buf[3]=(time1.Minute)/10;
       buf[1]=(time1.Hour)%10;
       buf[0]=(time1.Hour)/10;
       write(0x08,dispcode[buf[7]]);
       write(0x07,dispcode[buf[6]]);
       write(0x06,dispcode[10]);
       write(0x05,dispcode[buf[4]]);
       write(0x04,dispcode[buf[3]]);
	   write(0x03,dispcode[10]);
	   write(0x02,dispcode[buf[1]]);
	   write(0x01,dispcode[buf[0]]);
      // Delayms(200);  
	   }
}

⌨️ 快捷键说明

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