CLK = 0;
ACC = ACC >> 1; } }
/*----------------º¯Êý£º¶Á³ö×Ö½Ú×Óº¯Êý-----------*/ OutputByte(void) //ÉÏÉýÑØ¶Á³öÊý¾Ý// ¡¡
/*----------------º¯Êý£ºÉèÖóõʼʱ¼ä-------------------*/ void SetTime(unsigned char *pSecDa) { ¡¡
WriteTo1302(0x8e,0x00); // ¿ØÖÆÃüÁî,WP=0,д²Ù×÷ // for(i =7;i>0;i--) {
WriteTo1302(Addr,*pSecDa); // Ãë ·Ö Ê± ÈÕ Ô ÐÇÆÚ Äê // pSecDa++; Addr +=2; }
WriteTo1302(0x8e,0x80); // ¿ØÖÆÃüÁî,WP=1,д±£»¤ // } /*----------------º¯Êý£º¶ÁÈ¡DS1302µ±Ç°Ê±¼ä-------------------*/ void GetTime(void) { ¡¡
for (i=0;i<7;i++)
{ Curtime[i] = ReadFrom1302(Addr); Addr += 2; }
sec = Curtime[0];¡¡ //Min//hour //day //date //month //year }
/*----------------º¯Êý£º³õʼ»¯¶¨Ê±Æ÷T0×Óº¯Êý-------------------*/ void Init_T0(void) {
35
TMOD=0x01; //¶¨Ê±Æ÷T0£¬¹¤×÷ģʽ1// TH0=0x3c; //50ms// ¡¡ }
/*----------------º¯Êý£º²úÉúÉÁ˸ÐźÅ×Óº¯Êý------------------------*/
void T0_flash(void) interrupt 1 // ÖжϳÌÐò£¬²úÉúʱÖÓÃëÐźŠ// /*----------------º¯Êý£ºÊ±¼äÉÁ˸×Óº¯Êý----------------------------*/ /*----------------¹¦ÄÜ£ºÑ¡ÔñÈ·¶¨ÉÁ˸λµÈ´ýµ÷Õû--------- -----*/ void FlashKey(void) //ÉÁ˸×Óº¯Êý// void Add(void) //µ÷ʱ×Óº¯Êý// void Init_Clock(void) //ʱÖÓ³õʼ»¯×Óº¯Êý// void Refresh(void) //Ë¢ÐÂÏÔʾ×Óº¯Êý// void Add(void) //µ÷ʱ×Óº¯Êý// {
if(P1_2==0) //°´P0_2¼ü½øÐÐʱ¼äµ÷Õû// {
while(P1_2==0) Refresh();
if(KT==1) //¼ìÑé¿Éµ÷±ê־λKT// { hms++; switch(n)
{case 1:year=hms;break; //¸ù¾Ýn²»Í¬£¬·µ»Ø¸ø²»Í¬µÄλ£ºn=1 -> ·µ»Ø¸øÐ¡Ê±Î»// ¡¡}
if((sec&0x0f)==0x0a) {sec&=0xf0; sec+=0x10;} // Èç¹ûÃëλÂúÊ®£¬ÏòÊ®Ãëλ½øÒ» ¡¡
if(day==8) {day=1;} // Èç¹ûÐÇÆÚÂúÆß£¬ÖØÐ´ÓÐÇÆÚÒ»¿ªÊ¼¼Æ // if((sec&0xf0)==0x60) {sec&=0x0f;} // Èç¹ûÊ®ÃëλÂúÁù£¬ÇåÁã //
if(((date&0xf0)==0x30)&((date&0x0f)==0x02)) {date&=0x00;}
36
if(((month&0xf0)==0x10)&((month&0x0f)==0x03)) {month&=0x00;} if((year&0xf0)==0xa0) {year&=0x0f;} Curtime[0] = sec; Curtime[1] = min; ¡¡
SetTime(&Curtime[0]); // ½«µ÷Õû¹ýºóµÄʱ¼äֵдÈëDS1302 // }
/ *--------------------ʱÖÓ³õʼ»¯×Óº¯Êý----------------------------*/ void Init_Clock(void) {
K1=1; K2=1; K3=1; K4=1; K5=1; K6=1; K7=1; KT=0; n=0; Init_T0(); }
/*-------------------------Ë¢ÐÂÏÔʾ×Óº¯Êý--------------------------*/ void Refresh(void) {
GetTime(); CS1=1;CS2=0; if(K6)
{ sz_disp16(5,40,1,shuzi[sec&0x0f]); // Ãëλ // sz_disp16(5,32,1,shuzi[sec>>4]); } // Ê®Ãëλ // else
{ hz_disp16(5,32,1,kongbai2); } // Ãëλ Ê®Ãëλ // if(K5)
{ sz_disp16(5,8,1,shuzi[min&0x0f]); // ·ÖÖÓλ // sz_disp16(5,0,1,shuzi[min>>4]); } // Ê®·Öλ // else
{ hz_disp16(5,0,1,kongbai2); }
/*-------------------------״̬ÅжÏÓÚÌáʾ------------------------*/ void State(void)
37
{CS1=1;CS2=0; if(KT==1)
{ hz_disp16(1,32,1,tiao);
hz_disp16(1,48,1,shi2);}
else
{ hz_disp16(1,32,1,kongbai2);
hz_disp16(1,48,1,kongbai2); }
¸½Â¼A6 Òº¾§³ÌÐò
/*--------------------------붨Òå--------------------------*/ sbit RST = P2^0; // ¸´Î»¶Ë // sbit E = P2^1; // ʹÄÜ¶Ë // ¡¡
#define Disp_On 0x3f // ÏÔʾ¿ªÖ¸Áî // #define Disp_Off 0x3e // ÏÔʾ¹ØÖ¸Áî // #define Col_Add 0x40 // ¶¨Î»µ½µÚ0ÁÐÖ¸Áî // #define Page_Add 0xb8 // ¶¨Î»µ½µÚ0Ò³Ö¸Áî //
#define Start_Line 0xc0 // ¶¨Î»´ÓDDROMÖеĵÚ0ÐпªÊ¼ÍùÆÁÄ»ÉÏÏÔʾ
unsigned char code measurearray[] =96x16*/
unsigned char code storearray[] /*µ÷ÈëÁËÒ»·ùͼÏñ£º´æ´¢£º¿í¶Èx¸ß¶È=96x16*/
¡¡ //»¹ÓÐʱ¼äÉèÖ㬿ªÊ¼²âÁ¿µÈͼÏñ¡¡//
/*------------------------------ºº×ÖµãÕóÂ롪¡ª¡ª¡ª¡ª¡ª¡ª¡ª*/ char code huan[]={ // »¶ 16*16 //
0x14,0x24,0x44,0x84,0x64,0x1C,0x20,0x18,0x0F,0xE8,0x08,0x08,0x28,0x18,0x08,0x00,
0x20,0x10,0x4C,0x43,0x43,0x2C,0x20,0x10,0x0C,0x03,0x06,0x18,0x30,0x60,0x20,0x00
};¡¡//Ó£¬Ê¹£¬Ó㬵Ⱥº×ÖÈçÆäËùʾ//
/*------------------------×ÖĸµãÕóÂë---------------------------*/
/*µ÷ÈëÁËÒ»·ùͼÏñ£º²âÁ¿£º¿í¶Èx¸ß¶È
38
Ïà¹ØÍÆ¼ö£º