17

主题

0

好友

142

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
597013
帖子
269
精华
0
经验
142 点
金钱
97 ¥
注册时间
2013-6-9
发表于 2013-11-23 17:57 | 显示全部楼层
本帖最后由 ahao 于 2014-3-12 08:57 编辑

抱歉了  上次做的点阵时钟  让我老妈当废品卖了 ~~        这次做了个32*64的点阵时钟 ~~    上传图片太费劲了 没过程 抱歉了      有问题可以共同探讨 ~~   废话不多说 直接上视频   
http://v.youku.com/v_show/id_XNDk0NjQ0ODQw.html

现在这个区也可以编辑上视频了,帮楼主编辑一下。

674

主题

24

好友

6628

积分

版主 当前离线

Rank: 7Rank: 7Rank: 7

UID
35165
帖子
23773
精华
0
经验
6628 点
金钱
5628 ¥
注册时间
2008-2-4

社区贡献 论坛版主

发表于 2013-11-23 19:43 | 显示全部楼层
本来想把视频给你编辑进去,没有成功,还是让大家点进去看吧

17

主题

0

好友

142

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
597013
帖子
269
精华
0
经验
142 点
金钱
97 ¥
注册时间
2013-6-9
 楼主| 发表于 2013-11-23 21:29 | 显示全部楼层
http://v.youku.com/v_show/id_XNjM4Njg3NDEy.html  这是今天在爷爷家拍的   制作过程有时间再拍   !!~~    最近实在太忙了  ~!!~!!  

17

主题

0

好友

142

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
597013
帖子
269
精华
0
经验
142 点
金钱
97 ¥
注册时间
2013-6-9
 楼主| 发表于 2013-11-23 21:35 | 显示全部楼层
-------------------------------*/

#include <STC12C5A60S2.h>
//#include <STC12C5410AD.h>
//#include <REG52.H>
//#include <STC90C58RD.h>
#include <intrins.h>

#define uchar unsigned char
#define uint unsigned int
#define _Nop() _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()

extern void Read_Time(unsigned char ucCurtime[]);
extern void  Set_Time(unsigned char *pSecDa);
extern void Set_Charge(void);

sbit HC138_A=P0^0;        
sbit HC138_B=P0^1;   
sbit HC138_C=P0^2;   
sbit HC138_D=P0^3;           //138, 4, 5
sbit HC138_OE=P0^6;         //138 6
sbit HC595_LAT=P2^1;    //595 12
sbit HC595_CLK=P2^2;    //595 11
sbit HC595_GD=P2^0;    //595 14
sbit HC595_RD=P2^3;    //595 14

sbit KEY1=P1^6;
sbit KEY2=P1^7;
sbit DQ=P3^3;

/*
sbit 1302=P3^4;        //DS1302-5
sbit 1302=P3^3;        //DS1302-6
sbit 1302=P3^2;        //DS1302-7
*/


unsigned char zr[16], zg[16], w[3];
unsigned char i, MSecond, Aminute, Ahour, Alarm, alarmlenth;
unsigned char Second,Minute,Hour, day, month, week, year, adjust, adj, dd, mo, yy;
unsigned char f1,f0,s1,s0,h1,h0,sd,d1,d0,m1,m0,y1,y0,wk, nd1, nd0, nm1, nm0, ny1, ny0,a1, a0;       
unsigned char Time[8], Ldate[5];
unsigned char KeyState;
unsigned char Key1On;
unsigned char Key2On;
unsigned char ampm, cal;
unsigned char sign, DS18B20, t1, t0, td;
int tem;
unsigned char code tab2[16][4]={{0,0,0,0},{0,6,2,5},{1,2,5,0},{1,8,7,5},
                                {2,5,0,0},{3,1,2,5},{3,7,5,0},{4,3,7,5},
                   {5,0,0,0},{5,6,2,5},{6,2,5,0},{6,8,7,5},
                   {7,5,0,0},{8,1,2,5},{8,7,5,0},{9,3,7,5}};

unsigned char code ZF[]=                        //一维数据4x7   
{
        0x00,0x06,0x09,0x09,0x09,0x09,0x09,0x06,        //0
        0x00,0x02,0x06,0x02,0x02,0x02,0x02,0x07,        //1
        0x00,0x06,0x09,0x01,0x02,0x04,0x08,0x0f,        //2
        0x00,0x06,0x09,0x01,0x06,0x01,0x09,0x06,        //3
        0x00,0x02,0x06,0x0a,0x0a,0x0f,0x02,0x02,        //4
        0x00,0x0f,0x08,0x0e,0x09,0x01,0x09,0x06,        //5
        0x00,0x06,0x09,0x08,0x0e,0x09,0x09,0x06,        //6
        0x00,0x0f,0x01,0x01,0x02,0x04,0x04,0x04,        //7
        0x00,0x06,0x09,0x09,0x06,0x09,0x09,0x06,        //8
        0x00,0x06,0x09,0x09,0x07,0x01,0x09,0x06,        //9
        0x00,0x00,0x02,0x02,0x00,0x02,0x02,0x00,        //10 :
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,        //11 空
        0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x03,        //13 -
        0x00,0x00,0x00,0x02,0x07,0x02,0x00,0x00,        //14 +
        0x00,0x00,0x00,0x00,0x00,0x0f,0x00,0x00,        // - 15
        0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,        // . 16
        0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,        // .。 17
        0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,        // - 18
        0x00,0x00,0x80,0x00,0x30,0x40,0x40,0x30,        //19 .c 4x7

}; //0,1,2,3,4,5,6,7,8,9,:,空,|,A, P (0-14)

unsigned char code HZ[]=                        //一维数据7x7      
{
        0x00,0x00,0x00,0x00,0x00,0x7e,0x00,0x00,        //0 一
        0x00,0x00,0x00,0x3c,0x00,0x00,0x7e,0x00,        //1 二
        0x00,0x00,0x00,0x3c,0x00,0x3c,0x00,0x7e,        //2 三
        0x00,0x00,0x7f,0x55,0x55,0x77,0x41,0x7f,        //3 四
        0x00,0x00,0x3e,0x08,0x3e,0x12,0x22,0x7f,        //4 五
        0x00,0x08,0x00,0x7f,0x00,0x14,0x22,0x41,        //5 六
        0x00,0x3e,0x22,0x22,0x3e,0x22,0x22,0x3e,        //6 日
        0x10,0x7c,0xa4,0xb4,0x48,0x64,0xb2,0x20,        //7 农
        0x00,0x0f,0x09,0x09,0x0f,0x09,0x09,0x0f,        //8 日
        0x00,0x0f,0x09,0x0f,0x09,0x0f,0x09,0x11,        //9 月
        0x08,0x1f,0x24,0x1f,0x14,0x3f,0x04,0x04,        //10 年
};


unsigned char code DateD[][8]=                        //二维数据5x7
{
        0x00,0x70,0x88,0x88,0x88,0x88,0x88,0x70,        //0
        0x00,0x20,0x60,0x20,0x20,0x20,0x20,0x70,        //1
        0x00,0x70,0x88,0x08,0x10,0x20,0x40,0xf8,        //2
        0x00,0x70,0x88,0x08,0x30,0x08,0x88,0x70,        //3
        0x00,0x10,0x30,0x50,0x90,0xf8,0x10,0x10,        //4
        0x00,0x78,0x80,0xf0,0x08,0x08,0x88,0x70,        //5
        0x00,0x70,0x80,0x80,0xf0,0x88,0x88,0x70,        //6
        0x00,0xf0,0x08,0x10,0x20,0x40,0x40,0x40,        //7
        0x00,0x70,0x88,0x88,0x70,0x88,0x88,0x70,        //8
        0x00,0x70,0x88,0x88,0x70,0x08,0x88,0x70,        //9
        0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,        //10 .
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,        //11 空
        0x00,0x00,0x00,0x00,0xe0,0x00,0x00,0x00,        //12 -
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,        //13.
        0x00,0x80,0x00,0x30,0x48,0x40,0x48,0x30,        //14 C
};

unsigned char code DZF[][16]=
{
/*  --- 8x16 ---*/
0x3c,0x7e,0xe7,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xc3,0xe7,0x7e,0x3c,        //0
0x1c,0x7c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x1c,0x7f,        //1
0x3c,0x7e,0xe7,0xc3,0xc3,0xc3,0x03,0x03,0x07,0x0e,0x1c,0x38,0x70,0xe1,0xff,0xff,        //2
0x3c,0x7e,0xe7,0xc3,0x03,0x03,0x03,0x3e,0x3e,0x03,0x03,0x03,0xc3,0xe7,0x7e,0x3c,        //3
0x0c,0x0c,0x1c,0x1c,0x3c,0x3c,0x6c,0x6c,0xcc,0xcc,0x8c,0xff,0xff,0x0c,0x0c,0x1e,        //4
0x7e,0xff,0xc0,0xc0,0xc0,0xc0,0xfc,0xfe,0x07,0x03,0x03,0x03,0xc3,0xe7,0x7e,0x3c,        //5
0x3c,0x7e,0xe7,0xc3,0xc0,0xc0,0xc0,0xfc,0xfe,0xe7,0xc3,0xc3,0xc3,0xe7,0x7e,0x3c,        //6
0x7e,0xff,0xc3,0x83,0x03,0x03,0x06,0x06,0x0c,0x0c,0x18,0x18,0x18,0x18,0x18,0x3c,        //7
0x3c,0x7e,0xe7,0xc3,0xc3,0xc3,0xe7,0x7e,0x7e,0xe7,0xc3,0xc3,0xc3,0xe7,0x7e,0x3c,        //8
0x3c,0x7e,0xe7,0xc3,0xc3,0xc3,0xe7,0x7f,0x3f,0x03,0x03,0xc3,0xc3,0xe7,0x7e,0x3c,        //9
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,        //10
0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,0x00,0x00,0x18,0x24,0x24,0x18,0x00,0x00,        //11 SD
0x00,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x3f,0x21,0x21,0x21,0x21,0x45,0x82,        //12 月
0x00,0x00,0x7f,0x41,0x41,0x41,0x41,0x7f,0x41,0x41,0x41,0x41,0x41,0x7f,0x41,0x00,        //13 日
0x00,0x7f,0x41,0x49,0x5d,0x49,0x5d,0x41,0x5d,0x55,0x55,0x5d,0x55,0x41,0x41,0x82,        //14 周
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,        //15 一
0x00,0x00,0x00,0x00,0x00,0x02,0x7e,0x00,0x00,0x00,0x00,0x01,0xff,0x00,0x00,0x00,        //16 二
0x00,0x00,0x02,0x7e,0x00,0x00,0x02,0x7e,0x00,0x00,0x00,0x01,0xff,0x00,0x00,0x00,        //17 三
0x00,0x00,0x02,0x7e,0x00,0x00,0x02,0x7e,0x00,0x00,0x00,0x01,0xff,0x00,0x00,0x00,        //18 四
0x00,0x00,0x7e,0x08,0x08,0x08,0x0a,0x7e,0x12,0x12,0x12,0x22,0x22,0xff,0x00,0x00,        //19 五
0x00,0x20,0x18,0x0c,0x08,0xff,0x00,0x00,0x24,0x34,0x24,0x46,0x43,0x83,0x82,0x00,        //20 六
0x00,0x00,0x10,0x10,0x10,0x1f,0xf0,0x10,0x10,0x10,0x10,0x10,0x11,0x11,0x0e,0x00,        //21 七
0x00,0x00,0x04,0x26,0x34,0x24,0x24,0x24,0x24,0x66,0x62,0x62,0x83,0x83,0x81,0x00,        //22 八
0x00,0x20,0x20,0x20,0x20,0xfc,0x24,0x24,0x24,0x24,0x44,0x44,0x45,0x85,0x86,0x00,        //23 九
0x00,0x10,0x10,0x10,0x10,0x10,0x10,0xfe,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00,        //24 十
0x00,0x44,0x44,0x44,0x44,0x44,0x44,0xfe,0x44,0x44,0x44,0x44,0x44,0x44,0x7e,0x00,        //25 廿
0x00,0x00,0x54,0x54,0x54,0x54,0x54,0xfe,0x54,0x54,0x54,0x54,0x54,0x54,0x54,0x00,        //26 卅
0x00,0x00,0xe1,0xa1,0xe2,0x02,0x04,0x04,0x08,0x10,0x20,0x20,0x40,0x47,0x85,0x87,        //27 %
0x00,0x00,0xe0,0xa0,0xe0,0x00,0x1e,0x23,0x41,0x40,0x40,0x40,0x40,0x41,0x23,0x1e,        //28 c
};


unsigned char code ZZF[][16]=                        //一维数据7x12   
{
        0x00,0x00,0x3e,0x7f,0x63,0x63,0x63,0x63, 0x63, 0x63, 0x63, 0x63, 0x7f, 0x3e, 0x00, 0x00,        //0
        0x00,0x00,0x1c,0x3c,0x1c,0x1c,0x1c,0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x3e, 0x00, 0x00,        //1
        0x00,0x00,0x3e,0x7f,0x63,0x63,0x07,0x0e, 0x1c, 0x38, 0x70, 0x60, 0x7f, 0x7f, 0x00, 0x00,        //2
        0x00,0x00,0x3e,0x7f,0x63,0x63,0x03,0x06, 0x06, 0x03, 0x63, 0x63, 0x7f, 0x3e, 0x00, 0x00,        //3
        0x00,0x00,0x1e,0x1e,0x36,0x36,0x36,0x66, 0x66, 0x7f, 0x7f, 0x06, 0x06, 0x06, 0x00, 0x00,        //4
        0x00,0x00,0x3f,0x7f,0x60,0x60,0x60,0x7e, 0x3f, 0x03, 0x03, 0x63, 0x7f, 0x3e, 0x00, 0x00,        //5
        0x00,0x00,0x3e,0x7f,0x63,0x60,0x60,0x7e, 0x7f, 0x63, 0x63, 0x63, 0x7f, 0x3e, 0x00, 0x00,        //6
        0x00,0x00,0x3e,0x7f,0x63,0x63,0x03,0x06, 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00,        //7
        0x00,0x00,0x3e,0x7f,0x63,0x63,0x63,0x3e, 0x3e, 0x63, 0x63, 0x63, 0x7f, 0x3e, 0x00, 0x00,        //8
        0x00,0x00,0x3e,0x7f,0x63,0x63,0x63,0x7f, 0x3f, 0x03, 0x03, 0x63, 0x7f, 0x3e, 0x00, 0x00,        //9
        0x00,0x00,0x00,0x00,0x00,0x06,0x06,0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00,        //10 :
        0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,        //11  
};


unsigned char code hanzi[28][32]={                 //二维数据16x16

/*--  文字0:  零  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x1F,0xF8,0x01,0x00,0x7F,0xFE,0x41,0x04,0x1D,0x70,0x01,0x00,0x1D,0x70,0x02,0x80,
0x04,0x60,0x1A,0x1E,0xE1,0x08,0x1F,0xE0,0x00,0x40,0x02,0x80,0x01,0x00,0x01,0x00,
/*--  文字1:  一  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*--  文字2:  二  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x10,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x7F,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,
/*--  文字3:  三  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,0x00,0x00,0x00,
/*--  文字4:  四  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x7F,0xFC,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,0x44,0x84,
0x48,0x84,0x48,0x7C,0x50,0x04,0x60,0x04,0x40,0x04,0x7F,0xFC,0x40,0x04,0x00,0x00,
/*--  文字5:  五  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x7F,0xF8,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x20,0x3F,0xF0,
0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x24,0xFF,0xFE,0x00,0x00,0x00,0x00,
/*--  文字6:  六  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x04,0x00,0x03,0x00,0x01,0x80,0x01,0x00,0xFF,0xFE,0x00,0x00,0x00,0x00,0x04,0x80,
0x06,0x40,0x04,0x20,0x08,0x10,0x08,0x18,0x10,0x0C,0x20,0x0C,0x40,0x08,0x00,0x00,
/*--  文字7:  七  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0xFE,0x7F,0x00,0x01,0x00,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0xF8,0x00,0x00,
/*--  文字8:  八  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x00,0x40,0x04,0x60,0x06,0x40,0x04,0x40,0x04,0x40,0x04,0x40,0x08,0x20,
0x08,0x20,0x10,0x10,0x10,0x10,0x20,0x08,0x40,0x0E,0x80,0x04,0x00,0x00,0x00,0x00,
/*--  文字9:  九  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x02,0x00,0x02,0x00,0x02,0x00,0x02,0x20,0x7F,0xF0,0x02,0x20,0x02,0x20,0x04,0x20,
0x04,0x20,0x04,0x20,0x08,0x20,0x08,0x24,0x10,0x24,0x20,0x26,0x40,0x3C,0x00,0x00,
/*--  文字10:  十  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0xFF,0xFE,0x01,0x00,
0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,
/*--  文字11:  年  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0x00,0x0F,0xFC,0x10,0x80,0x10,0x80,0x20,0x80,0x4F,0xF8,0x88,0x80,0x08,0x80,
0x08,0x80,0x08,0x80,0xFF,0xFE,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x80,
/*--  文字12:  月  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10,0x07,0xF0,0x04,0x10,0x04,0x10,0x04,0x10,
0x07,0xF0,0x04,0x10,0x08,0x10,0x08,0x10,0x10,0x10,0x20,0x50,0x40,0x20,0x00,0x00,
/*--  文字13:  日  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x00,0x00,0x00,0x00,
/*--  文字14:  星  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x10,0x08,0x1F,0xF8,0x01,0x00,0x11,0x00,
0x1F,0xFC,0x21,0x00,0x21,0x00,0x4F,0xF8,0x01,0x00,0x01,0x00,0x7F,0xFE,0x00,0x00,
/*--  文字15:  期  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x22,0x00,0x22,0x7C,0x7F,0x44,0x22,0x44,0x3E,0x44,0x22,0x7C,0x3E,0x44,0x22,0x44,
0x22,0x44,0xFF,0x7C,0x00,0x44,0x24,0x84,0x22,0x84,0x43,0x14,0x81,0x08,0x00,0x00,
/*--  文字16:  时  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x10,0x00,0x10,0x7C,0x10,0x44,0x10,0x47,0xFE,0x44,0x10,0x7C,0x10,0x45,0x10,
0x44,0x90,0x44,0x90,0x7C,0x10,0x00,0x10,0x00,0x10,0x00,0x10,0x00,0x50,0x00,0x20,
/*--  文字17:  分  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x80,0x0C,0x80,0x08,0x40,0x10,0x20,0x10,0x30,0x20,0x18,0x40,0x0E,0x9F,0xE4,
0x04,0x20,0x04,0x20,0x04,0x20,0x04,0x20,0x08,0x20,0x10,0xA0,0x20,0x40,0x40,0x00,
/*--  文字18:  周  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x1F,0xFC,0x10,0x84,0x13,0xE4,0x10,0x84,0x10,0x84,0x17,0xF4,0x10,0x04,
0x13,0xE4,0x12,0x24,0x12,0x24,0x13,0xE4,0x22,0x24,0x20,0x04,0x40,0x14,0x80,0x08,

/*--  文字19  定  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x02,0x00,0x01,0x00,0x3F,0xFE,0x20,0x04,0x40,0x08,0x1F,0xF0,0x01,0x00,0x11,0x00,
0x11,0x00,0x11,0xF0,0x11,0x00,0x29,0x00,0x25,0x00,0x43,0x00,0x81,0xFC,0x00,0x00,

/*--  文字20;  调  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x00,0x00,0x47,0xFC,0x24,0x44,0x24,0x44,0x05,0xF4,0x04,0x44,0xE4,0x44,0x27,0xFC,
0x24,0x04,0x25,0xF4,0x25,0x14,0x2D,0x14,0x35,0xF4,0x24,0x04,0x04,0x14,0x08,0x08,

/*--  文字21:  整  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x08,0x20,0x08,0x20,0xFF,0xBE,0x08,0x44,0x7F,0xA4,0x49,0x24,0x7F,0x28,0x2A,0x10,
0x49,0x28,0x88,0x46,0x00,0x00,0x7F,0xFC,0x01,0x00,0x11,0xF8,0x11,0x00,0xFF,0xFE,

/*--  文字22:  快  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x10,0x40,0x10,0x40,0x10,0x40,0x13,0xF8,0x18,0x48,0x54,0x48,0x50,0x48,0x50,0x48,
0x97,0xFE,0x10,0x40,0x10,0xA0,0x10,0xA0,0x11,0x10,0x11,0x10,0x12,0x08,0x14,0x06,

/*--  文字23:  慢  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
0x23,0xF8,0x22,0x08,0x23,0xF8,0x32,0x08,0xAB,0xF8,0xA0,0x00,0xA7,0xFC,0xA4,0xA4,
0x24,0xA4,0x27,0xFC,0x20,0x00,0x23,0xF8,0x21,0x10,0x20,0xE0,0x23,0x18,0x2C,0x06,


};


void delay(int useconds)
{
int s;
for (s=0; s<useconds;s++);
}

/*----------------18B20 程序----------------------*/
//复位

bit ow_reset(void)
{
  bit presence;
  DQ=0;        //拉低总线
  delay(250);     // 保持 480us,  12M时=80   
//  delay(250);
  DQ = 1;       // 释放总线
  delay(50);     // 等待回复,12M时=30   
  presence = DQ; // 读取信号
  delay(250);    // 等待结束信号,12M时=250
  return(presence); // 返回   0:正常 1:不存在   
}     

//从 1-wire 总线上读取一个字节
unsigned char read_byte(void)
{
  unsigned char i;
  unsigned char value = 0;
  for (i=8;i>0;i--)
  {
    DQ = 0;
    value>>=1;
    DQ = 1;
        delay(15);                  // 12M时=10, 24M, 20抖动, 15正好   
    if(DQ)value|=0x80;
    delay(50);                         // 12M时=12
  }
  return(value);
}

//向 1-WIRE 总线上写一个字节
void write_byte(char val)
{
  unsigned char i;
  for (i=8; i>0; i--)  // 一次写一位
  {
    DQ=0;
//        delay(2);
    DQ = val&0x01;
    delay(40);  // 12M时=30
    DQ = 1;
    val=val/2;
        delay(2);
  }
  delay(30);
}


unsigned int Read_Temperature(void)
{   
union
{
  unsigned char c[2];
  unsigned int x;
}temp;
temp.x=0x0000;
i=ow_reset();        //reset
  if(!i)
{
write_byte(0xCC);    //Skip ROM
write_byte(0x44);    //Start Conversion
delay(10);

}
i=ow_reset();
if(!i)
{
write_byte(0xCC);    //Skip ROM
write_byte(0xBE);    //Read Scratch Pad
delay(250);
temp.c[1]=read_byte();  //Start read data
temp.c[0]=read_byte();  //read two byte data from device

DS18B20=0;
}
else DS18B20=9;
return temp.x;                        //
}

/*----------18B20 程序结束-------------*/

/*------------农历程序-------------------------*/
code uchar year_code[597]={
                    0x04,0xAe,0x53,    //1901 0
                    0x0A,0x57,0x48,    //1902 3
                    0x55,0x26,0xBd,    //1903 6
                    0x0d,0x26,0x50,    //1904 9
                    0x0d,0x95,0x44,    //1905 12
                    0x46,0xAA,0xB9,    //1906 15
                    0x05,0x6A,0x4d,    //1907 18
                    0x09,0xAd,0x42,    //1908 21
                    0x24,0xAe,0xB6,    //1909
                    0x04,0xAe,0x4A,    //1910
                    0x6A,0x4d,0xBe,    //1911
                    0x0A,0x4d,0x52,    //1912
                    0x0d,0x25,0x46,    //1913
                    0x5d,0x52,0xBA,    //1914
                    0x0B,0x54,0x4e,    //1915
                    0x0d,0x6A,0x43,    //1916
                    0x29,0x6d,0x37,    //1917
                    0x09,0x5B,0x4B,    //1918
                    0x74,0x9B,0xC1,    //1919
                    0x04,0x97,0x54,    //1920
                    0x0A,0x4B,0x48,    //1921
                    0x5B,0x25,0xBC,    //1922
                    0x06,0xA5,0x50,    //1923
                    0x06,0xd4,0x45,    //1924
                    0x4A,0xdA,0xB8,    //1925
                    0x02,0xB6,0x4d,    //1926
                    0x09,0x57,0x42,    //1927
                    0x24,0x97,0xB7,    //1928
                    0x04,0x97,0x4A,    //1929
                    0x66,0x4B,0x3e,    //1930
                    0x0d,0x4A,0x51,    //1931
                    0x0e,0xA5,0x46,    //1932
                    0x56,0xd4,0xBA,    //1933
                    0x05,0xAd,0x4e,    //1934
                    0x02,0xB6,0x44,    //1935
                    0x39,0x37,0x38,    //1936
                    0x09,0x2e,0x4B,    //1937
                    0x7C,0x96,0xBf,    //1938
                    0x0C,0x95,0x53,    //1939
                    0x0d,0x4A,0x48,    //1940
                    0x6d,0xA5,0x3B,    //1941
                    0x0B,0x55,0x4f,    //1942
                    0x05,0x6A,0x45,    //1943
                    0x4A,0xAd,0xB9,    //1944
                    0x02,0x5d,0x4d,    //1945
                    0x09,0x2d,0x42,    //1946
                    0x2C,0x95,0xB6,    //1947
                    0x0A,0x95,0x4A,    //1948
                    0x7B,0x4A,0xBd,    //1949
                    0x06,0xCA,0x51,    //1950
                    0x0B,0x55,0x46,    //1951
                    0x55,0x5A,0xBB,    //1952
                    0x04,0xdA,0x4e,    //1953
                    0x0A,0x5B,0x43,    //1954
                    0x35,0x2B,0xB8,    //1955
                    0x05,0x2B,0x4C,    //1956
                    0x8A,0x95,0x3f,    //1957
                    0x0e,0x95,0x52,    //1958
                    0x06,0xAA,0x48,    //1959
                    0x7A,0xd5,0x3C,    //1960
                    0x0A,0xB5,0x4f,    //1961
                    0x04,0xB6,0x45,    //1962
                    0x4A,0x57,0x39,    //1963
                    0x0A,0x57,0x4d,    //1964
                    0x05,0x26,0x42,    //1965
                    0x3e,0x93,0x35,    //1966
                    0x0d,0x95,0x49,    //1967
                    0x75,0xAA,0xBe,    //1968
                    0x05,0x6A,0x51,    //1969
                    0x09,0x6d,0x46,    //1970
                    0x54,0xAe,0xBB,    //1971
                    0x04,0xAd,0x4f,    //1972
                    0x0A,0x4d,0x43,    //1973
                    0x4d,0x26,0xB7,    //1974
                    0x0d,0x25,0x4B,    //1975
                    0x8d,0x52,0xBf,    //1976
                    0x0B,0x54,0x52,    //1977
                    0x0B,0x6A,0x47,    //1978
                    0x69,0x6d,0x3C,    //1979
                    0x09,0x5B,0x50,    //1980
                    0x04,0x9B,0x45,    //1981
                    0x4A,0x4B,0xB9,    //1982
                    0x0A,0x4B,0x4d,    //1983
                    0xAB,0x25,0xC2,    //1984
                    0x06,0xA5,0x54,    //1985
                    0x06,0xd4,0x49,    //1986
                    0x6A,0xdA,0x3d,    //1987
                    0x0A,0xB6,0x51,    //1988
                    0x09,0x37,0x46,    //1989
                    0x54,0x97,0xBB,    //1990
                    0x04,0x97,0x4f,    //1991
                    0x06,0x4B,0x44,    //1992
                    0x36,0xA5,0x37,    //1993
                    0x0e,0xA5,0x4A,    //1994
                    0x86,0xB2,0xBf,    //1995
                    0x05,0xAC,0x53,    //1996
                    0x0A,0xB6,0x47,    //1997
                    0x59,0x36,0xBC,    //1998
                    0x09,0x2e,0x50,    //1999 294
                    0x0C,0x96,0x45,    //2000 297
                    0x4d,0x4A,0xB8,    //2001
                    0x0d,0x4A,0x4C,    //2002
                    0x0d,0xA5,0x41,    //2003
                    0x25,0xAA,0xB6,    //2004
                    0x05,0x6A,0x49,    //2005
                    0x7A,0xAd,0xBd,    //2006
                    0x02,0x5d,0x52,    //2007
                    0x09,0x2d,0x47,    //2008
                    0x5C,0x95,0xBA,    //2009
                    0x0A,0x95,0x4e,    //2010
                    0x0B,0x4A,0x43,    //2011
                    0x4B,0x55,0x37,    //2012
                    0x0A,0xd5,0x4A,    //2013
                    0x95,0x5A,0xBf,    //2014
                    0x04,0xBA,0x53,    //2015
                    0x0A,0x5B,0x48,    //2016
                    0x65,0x2B,0xBC,    //2017
                    0x05,0x2B,0x50,    //2018
                    0x0A,0x93,0x45,    //2019
                    0x47,0x4A,0xB9,    //2020
                    0x06,0xAA,0x4C,    //2021
                    0x0A,0xd5,0x41,    //2022
                    0x24,0xdA,0xB6,    //2023
                    0x04,0xB6,0x4A,    //2024
                    0x69,0x57,0x3d,    //2025
                    0x0A,0x4e,0x51,    //2026
                    0x0d,0x26,0x46,    //2027
                    0x5e,0x93,0x3A,    //2028
                    0x0d,0x53,0x4d,    //2029
                    0x05,0xAA,0x43,    //2030
                    0x36,0xB5,0x37,    //2031
                    0x09,0x6d,0x4B,    //2032
                    0xB4,0xAe,0xBf,    //2033
                    0x04,0xAd,0x53,    //2034
                    0x0A,0x4d,0x48,    //2035
                    0x6d,0x25,0xBC,    //2036
                    0x0d,0x25,0x4f,    //2037
                    0x0d,0x52,0x44,    //2038
                    0x5d,0xAA,0x38,    //2039
                    0x0B,0x5A,0x4C,    //2040
                    0x05,0x6d,0x41,    //2041
                    0x24,0xAd,0xB6,    //2042
                    0x04,0x9B,0x4A,    //2043
                    0x7A,0x4B,0xBe,    //2044
                    0x0A,0x4B,0x51,    //2045
                    0x0A,0xA5,0x46,    //2046
                    0x5B,0x52,0xBA,    //2047
                    0x06,0xd2,0x4e,    //2048
                    0x0A,0xdA,0x42,    //2049
                    0x35,0x5B,0x37,    //2050
                    0x09,0x37,0x4B,    //2051
                    0x84,0x97,0xC1,    //2052
                    0x04,0x97,0x53,    //2053
                    0x06,0x4B,0x48,    //2054
                    0x66,0xA5,0x3C,    //2055
                    0x0e,0xA5,0x4f,    //2056
                    0x06,0xB2,0x44,    //2057
                    0x4A,0xB6,0x38,    //2058
                    0x0A,0xAe,0x4C,    //2059
                    0x09,0x2e,0x42,    //2060
                    0x3C,0x97,0x35,    //2061
                    0x0C,0x96,0x49,    //2062
                    0x7d,0x4A,0xBd,    //2063
                    0x0d,0x4A,0x51,    //2064
                    0x0d,0xA5,0x45,    //2065
                    0x55,0xAA,0xBA,    //2066
                    0x05,0x6A,0x4e,    //2067
                    0x0A,0x6d,0x43,    //2068
                    0x45,0x2e,0xB7,    //2069
                    0x05,0x2d,0x4B,    //2070
                    0x8A,0x95,0xBf,    //2071
                    0x0A,0x95,0x53,    //2072
                    0x0B,0x4A,0x47,    //2073
                    0x6B,0x55,0x3B,    //2074
                    0x0A,0xd5,0x4f,    //2075
                    0x05,0x5A,0x45,    //2076
                    0x4A,0x5d,0x38,    //2077
                    0x0A,0x5B,0x4C,    //2078
                    0x05,0x2B,0x42,    //2079
                    0x3A,0x93,0xB6,    //2080
                    0x06,0x93,0x49,    //2081
                    0x77,0x29,0xBd,    //2082
                    0x06,0xAA,0x51,    //2083
                    0x0A,0xd5,0x46,    //2084
                    0x54,0xdA,0xBA,    //2085
                    0x04,0xB6,0x4e,    //2086
                    0x0A,0x57,0x43,    //2087
                    0x45,0x27,0x38,    //2088
                    0x0d,0x26,0x4A,    //2089
                    0x8e,0x93,0x3e,    //2090
                    0x0d,0x52,0x52,    //2091
                    0x0d,0xAA,0x47,    //2092
                    0x66,0xB5,0x3B,    //2093
                    0x05,0x6d,0x4f,    //2094
                    0x04,0xAe,0x45,    //2095
                    0x4A,0x4e,0xB9,    //2096
                    0x0A,0x4d,0x4C,    //2097
                    0x0d,0x15,0x41,    //2098
                    0x2d,0x92,0xB5,    //2099
};

code uchar day_code1[9]={0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3};
code uint day_code2[3]={0x111,0x130,0x14e};

bit c_moon;
data uchar year_moon,month_moon,day_moon;

bit get_moon_day(uchar month_p,uint table_addr)
{
uchar temp;
    switch (month_p){
        case 1:{temp=year_code[table_addr]&0x08;
             if (temp==0)return(0);else return(1);}
        case 2:{temp=year_code[table_addr]&0x04;
             if (temp==0)return(0);else return(1);}
        case 3:{temp=year_code[table_addr]&0x02;
             if (temp==0)return(0);else return(1);}
        case 4:{temp=year_code[table_addr]&0x01;
             if (temp==0)return(0);else return(1);}
        case 5:{temp=year_code[table_addr+1]&0x80;
             if (temp==0) return(0);else return(1);}
        case 6:{temp=year_code[table_addr+1]&0x40;
             if (temp==0)return(0);else return(1);}
        case 7:{temp=year_code[table_addr+1]&0x20;
             if (temp==0)return(0);else return(1);}
        case 8:{temp=year_code[table_addr+1]&0x10;
             if (temp==0)return(0);else return(1);}
        case 9:{temp=year_code[table_addr+1]&0x08;
             if (temp==0)return(0);else return(1);}
        case 10:{temp=year_code[table_addr+1]&0x04;
             if (temp==0)return(0);else return(1);}
        case 11:{temp=year_code[table_addr+1]&0x02;
             if (temp==0)return(0);else return(1);}
        case 12:{temp=year_code[table_addr+1]&0x01;
             if (temp==0)return(0);else return(1);}
        case 13:{temp=year_code[table_addr+2]&0x80;
             if (temp==0)return(0);else return(1);}
    }
}

void Conversion(bit c,uchar year,uchar month,uchar day)
{                         //c=0 为21世纪,c=1 为19世纪 输入输出数据均为BCD数据
    uchar temp1,temp2,temp3,month_p;
    uint temp4,table_addr;
    bit flag2,flag_y;
    temp1=year/16;   //hex->BCD 先把数据转换为十进制
    temp2=year%16;
    year=temp1*10+temp2;
    temp1=month/16;
    temp2=month%16;
    month=temp1*10+temp2;
    temp1=day/16;
    temp2=day%16;
    day=temp1*10+temp2;
    //定位数据表地址
    if(c==0){                  
        table_addr=(year+0x64-1)*0x3;
    }
    else {
        table_addr=(year-1)*0x3;
    }
    //定位数据表地址完成
    //取当年春节所在的公历月份
    temp1=year_code[table_addr+2]&0x60;
    temp1=_cror_(temp1,5);
    //取当年春节所在的公历月份完成
    //取当年春节所在的公历日
    temp2=year_code[table_addr+2]&0x1f;
    //取当年春节所在的公历日完成
    // 计算当年春年离当年元旦的天数,春节只会在公历1月或2月
    if(temp1==0x1){  
        temp3=temp2-1;  
    }  
    else{
        temp3=temp2+0x1f-1;        
    }
    // 计算当年春年离当年元旦的天数完成
    //计算公历日离当年元旦的天数,为了减少运算,用了两个表
    //day_code1[9],day_code2[3]
    //如果公历月在九月或前,天数会少于0xff,用表day_code1[9],
    //在九月后,天数大于0xff,用表day_code2[3]
    //如输入公历日为8月10日,则公历日离元旦天数为day_code1[8-1]+10-1
    //如输入公历日为11月10日,则公历日离元旦天数为day_code2[11-10]+10-1
    if (month<10){
        temp4=day_code1[month-1]+day-1;
    }
    else{
        temp4=day_code2[month-10]+day-1;
    }
    if ((month>0x2)&&(year%0x4==0)){  //如果公历月大于2月并且该年的2月为闰月,天数加1
        temp4+=1;
    }
    //计算公历日离当年元旦的天数完成
    //判断公历日在春节前还是春节后
    if (temp4>=temp3){ //公历日在春节后或就是春节当日使用下面代码进行运算
        temp4-=temp3;
        month=0x1;
        month_p=0x1;  //month_p为月份指向,公历日在春节前或就是春节当日month_p指向首月
        flag2=get_moon_day(month_p,table_addr); //检查该农历月为大小还是小月,大月返回1,小月返回0
        flag_y=0;
        if(flag2==0)temp1=0x1d; //小月29天
        else temp1=0x1e; //大小30天
        temp2=year_code[table_addr]&0xf0;
        temp2=_cror_(temp2,4);  //从数据表中取该年的闰月月份,如为0则该年无闰月
        while(temp4>=temp1){
            temp4-=temp1;
            month_p+=1;
            if(month==temp2){
            flag_y=~flag_y;
            if(flag_y==0)month+=1;
            }
            else month+=1;
            flag2=get_moon_day(month_p,table_addr);
            if(flag2==0)temp1=0x1d;
            else temp1=0x1e;
        }
        day=temp4+1;
    }
    else{  //公历日在春节前使用下面代码进行运算
        temp3-=temp4;
        if (year==0x0){year=0x63;c=1;}
        else year-=1;
        table_addr-=0x3;
        month=0xc;
        temp2=year_code[table_addr]&0xf0;
        temp2=_cror_(temp2,4);
        if (temp2==0)month_p=0xc;
        else month_p=0xd; //
        /*
        month_p为月份指向,如果当年有闰月,一年有十三个月,月指向13,
无闰月指向12
        */
        flag_y=0;
        flag2=get_moon_day(month_p,table_addr);
        if(flag2==0)temp1=0x1d;
        else temp1=0x1e;
        while(temp3>temp1){
            temp3-=temp1;
            month_p-=1;
            if(flag_y==0)month-=1;
            if(month==temp2)flag_y=~flag_y;
            flag2=get_moon_day(month_p,table_addr);
            if(flag2==0)temp1=0x1d;
            else temp1=0x1e;
         }
        day=temp1-temp3+1;
    }
    c_moon=c;                 //HEX->BCD ,运算结束后,把数据转换为BCD数据
    temp1=year/10;
    temp1=_crol_(temp1,4);
    temp2=year%10;
    year_moon=temp1|temp2;
    temp1=month/10;
    temp1=_crol_(temp1,4);
    temp2=month%10;
    month_moon=temp1|temp2;
    temp1=day/10;
    temp1=_crol_(temp1,4);
    temp2=day%10;
    day_moon=temp1|temp2;
}

               
/*----------农历程序结束-------------*/
/*
void days (void)  //公历节日数据库
{         uchar i,t;
        hh= hour;               
        dd= day;       
        mo= month;
            yy= year;         
        Conversion(0,yy,mo,dd);                                       
         i=0;
         t=0;
        if ( mo == 0x01 && dd == 0x01 )            {Sendping5(13,30,48,54,24,30,26,43,54,54);i=1;} //new year
        if (month_moon== 0x01 && day_moon == 0x01 ){Sendping5(10,41,43,34,39,32,54,15); i=1;}    //Lu new year                                             
        if (month_moon== 0x01 && day_moon == 0x15 ){Sendping5(16,17,18,19,20,21,14,15);i=1;}  //元宵节
               if (month_moon== 0x02 && day_moon == 0x02 ){Sendping5(96,22,13,24,25,14,15,96);i=1;}          //龙台头       
        if ( mo == 0x02 && dd == 0x14 )            {Sendping5(96,26,17,28,29,14,15,96); i=1;}        //情人节       
        if ( mo == 0x03 && dd == 0x08 )            {Sendping5(96,30,31,32,33,14,15,96);i=1;}        //妇女节
        if ( mo == 0x03 && dd == 0x12 )            {Sendping5(96,34,35,36,37,14,15,96);        i=1;}        //植树节
        if (mo == 0x04 && dd == 0x05 ){Sendping5(96,38,39,40,41,14,15,96); i=1;}         //清明节
        if (month_moon== 0x05 && day_moon == 0x05 ){Sendping5(96,38,39,40,41,14,15,96); i=1;}         //端午节       
        if ( mo == 0x05 && dd == 0x01 )            {Sendping5(96,42,43,44,45,14,15,96);        i=1;}        //劳动节
        if ( mo == 0x05 && dd == 0x04 )            {Sendping5(96,46,47,48,49,14,15,96);        i=1;}        //青年节
        if ( mo == 0x06 && dd == 0x01 )            {Sendping5(96,50,51,52,53,14,15,96);i=1;}        //儿童节
            if (month_moon== 0x07 && day_moon == 0x07 ){Sendping5(96,54,55,56,57,14,15,96);        i=1;}        //
        if (month_moon== 0x07 && day_moon == 0x15 ){Sendping5(96,58,59,60,61,14,15,96); i=1;}         //       
        if (month_moon== 0x08 && day_moon == 0x15 ){Sendping5(96,58,59,62,63,14,15,96);i=1; }  //中秋
        if ( mo == 0x08 && dd == 0x01 )            {Sendping5(96,64,65,66,67,14,15,96); i=1;} //建军节
            if (month_moon== 0x09 && day_moon == 0x09 ){Sendping5(96,68,69,70,71,14,15,96);i=1; } //重阳节
        if ( mo == 0x09 && dd == 0x10 )            {Sendping5(96,72,73,74,75,14,15,96); i=1;}
        if ( mo == 0x10 && dd == 0x01 )            {Sendping5(96,76,77,78,79,14,15,96);        i=1;} 国庆
        if (month_moon== 0x12 && day_moon == 0x08 ){Sendping5(96,80,81,82,83,14,15,96); i=1;}
            if (month_moon== 0x12 && day_moon == 0x23 ){Sendping5(96,84,85,86,87,88,89,96); i=1;} 圣诞节
        if (month_moon== 0x12 && day_moon == 0x29 ){Sendping5(105,106,107,108,109,110,111,112);i=1;}   //除夕
            if (month_moon== 0x12 && day_moon == 0x30 ){Sendping5(90,91,88,89,92,93,94,95);        i=1;}        //除夕
                if(i==t){
                        if ( hh >= 0x04 && hh <  0x06 ){ Sendping5(137,138,135,136,117,118,115,116); }
                        if ( hh >= 0x06 && hh <  0x08 ){ Sendping5(135,136,141,142,113,114,115,116); }
                        if ( hh >= 0x08 && hh <  0x12 ){ Sendping5(135,136,139,140,119,120,125,126); }
                        if ( hh == 0x12)               { Sendping5(143,144,143,144,121,122,125,126); }
                        if ( hh >= 0x13 && hh <  0x18 ){ Sendping5(139,140,135,136,123,124,125,126); }
                        if ( hh >= 0x18 && hh <  0x22 ){ Sendping5(141,142,135,136,127,128,119,120); }
                        if ( hh >= 0x22 && hh <= 0x23 ){ Sendping5(135,136,135,136,129,130,131,132); }
                        if ( hh >= 0x00 && hh <  0x04 ){ Sendping5(137,138,137,138,133,134,129,130); }
                        }
}


}
*/
  void get_yinli()
{       
    dd= day;       
    mo= month;
    yy= year;         
        Conversion(0,yy,mo,dd);
        ny1=(year_moon&0x70)>>4;
        ny0=year_moon&0x0F;
        nm1=(month_moon&0x70)>>4;
        nm0=month_moon&0x0F;       
        nd1=(day_moon&0x70)>>4;
        nd0=day_moon&0x0F;
}


void write595(unsigned char rdd, gdd)
{
        unsigned char i;
        for (i=0;i<8;i++)
        {
                HC595_RD=rdd&0x80;
                rdd=rdd<<1;
                HC595_GD=gdd&0x80;
                gdd=gdd<<1;
                HC595_CLK=1;
                HC595_CLK=0;
        }
}
/*
void LS_data1(unsigned char z1, z2, zz1, zz2)
{
        zz1=zz1-(hanzi[z1][i*2]<<col)-(hanzi[z1][i*2+1]>>(8-col));  //z1前8位和后8位合并
        zz2=zz2-(hanzi[z1][i*2+1]<<col)-(hanzi[z2][i*2]>>(8-col));  //z1后8位和z2前8位合并
}

void LS_data2(unsigned char z1, z2, zz1, zz2)
{
        zz1=zz1-(hanzi[z1][i*2+1]<<(col-8))-(hanzi[z2][i*2]>>(16-col));//z1后8位和z2前8位合并
        zz2]=zz2-(hanzi[z2][i*2]<<(col-8))-(hanzi[z2][i*2+1]>>(16-col));//z2前8位和后8位合并
}

void script(unsigned char hz1, hz2, hz3, hz4, hz5)
{
        unsigned char i, j, k, col;
                        for (k=0;k<8;k++)
                        {
                        z[k]=0xff;
                        }
                        if (col<8)
                                {
                        LS_data1(hz1, hz2, z[0],z[1]);    //hz1前8位和后8位合并, hz1后8位和hz2前8位合并
                        LS_data1(hz2, hz3, z[2],z[3]);    //hz2前8位和后8位合并, hz2后8位和hz3前8位合
                        LS_data1(hz3, hz4, z[4],z[5]);    //hz3前8位和后8位合并, hz3后8位和hz4前8位合
                        LS_data1(hz4,hz5, z[6],z[7]);     //hz4前8位和后8位合并, hz4后8位和hz5前8位合
                                }
                        else
                                {
                        LS_data2(hz1,hz2, z[0],z[1]);     //hz1后8位和hz2前8位合, hz2前8位和后8位合
                        LS_data2(hz2, hz3, z[2],z[3]);    //hz2后8位和hz3前8位合, hz3前8位和后8位合
                        LS_data2(hz3, hz4, z[4],z[5]);    //hz3后8位和hz4前8位合, hz4前8位和后8位合
                        LS_data2(hz4, hz5, z[6],z[7]);    //hz4后8位和hz5前8位合, hz5前8位和后8位合
                                }
}
*/

/*
void script(unsigned char zi_1, zi_2, zi_3, zi_4, z1_5)
{
        unsigned char i, j, k, col;
                for(col=0;col<16;col++)        //col为位移变量, 0-15
                {
                for(j=0;j<30;j++)        // SPEED
                {
                for (i=0;i<16;i++)        // 行信号
                {
                        HC595SER=0;
                        HC595RCLK=0;
                        HC595SRCLK=0;       
                        HC138EN=1;
                        script;

                        for (k=0;k<8;k++)
                        {
                        write595(z[k]);
                        }
                        HC595RCLK=1;
                        HC595RCLK=0;
                        if (i==15) x=0;
                        else x=i+1;
                        HC138A=x&0x01;
                        HC138B=x&0x02;
                        HC138C=x&0x04;
                        HC138D=x&0x08;
                        HC138EN=0;
                        Delay1(30);
                } //end 行循环
                } //end SPEED循环
                } //end col循环
}*/
/*
void write_mess()        // 今天是XX日, 祝XXX生日快乐,
{
        for (k=10; k<20; k++)        
        {
        word[k]=22;
        }
        word[0]=21;
        word[1]=2;
        word[2]=0;
        word[3]=y1;
        word[4]=y0;
        word[5]=11;                //年
        k=6;
        if (m1==1)
                {
                word[k]=10;
                k=k+1;
                }
        if (m0!=0)
                {
                word[k]=m0;
                k=k+1;
                }
        word[k]=12;                //月
        k=k+1;
        if (d1!=0)
                {
                if (d1!=1)
                        {
                        word[k]=d1;
                        k=k+1;
                        }
                word[k]=10;
                k=k+1;
                }
        if (d0!=0)
        {
        word[k]=d0;
        k=k+1;
        }
        word[k]=13;        //日
        k=k+1;
        word[k]=14;        //星
                k=k+1;
        word[k]=15;        //期
                k=k+1;
        word[k]=w;
        for (i=0; i<16; i++) script (word[i], word[i+1], word[i+2]);
}
*/

void key_scan()        // key scan
{
                if (KEY1==0)        //key1按下
                {
                        if (Key1On==0) Key1On=1;
                        else if (Key1On==1)
                                {
                                Key1On=2;
                                KeyState++;
                                if (KeyState>9)
                                {
                                        KeyState=0;
                                        Read_Time(Time);
                                        Time[0]=Second;
                                        Time[1]=Minute;
                                        Time[2]=Hour;
                                        Time[3]=day;
                                        Time[4]=month;
                                        Time[5]=week;
                                        Time[6]=year;
                                        Set_Time(Time);
                                }        // end state>9
                                }
                }
                else Key1On=0;

                if (KEY2==0)        //key2按下
                {
                        if (Key2On==0) Key2On=1;
                        else if (Key2On==1)
                        {
                                Key2On=2;
                                if (KeyState==1)
                                {
                                Minute++;
                                if (Minute%16>9) Minute=Minute+6;
                                if (Minute>0x59) Minute=0;
                                }       
                                else if (KeyState==2)
                                {
                                Hour++;
                                if (Hour%16>9) Hour=Hour+6;
                                if (Hour>0x23) Hour=0;
                                }
                                else if (KeyState==3)
                                {
                                day++;
                                if (day%16>9) day=day+6;
                                if (day>0x31) day=0x01;
                                }
                                else if (KeyState==4)
                                {
                                month++;
                                if (month%16>9) month=month+6;
                                if (month>0x12) month=0x01;       
                                }                       
                                else if (KeyState==5)
                                {
                                week++;
                                if (week>0x07) week=0x01;
                                }
                                else if (KeyState==6)
                                {
                                year++;
                                if (year%16>9) year=year+6;
                                if (year>0x99) year=0x00;       
                                }
                                else if (KeyState==7) // alarm minute
                                {
                                Aminute++;
                                if (Aminute>0x59) Aminute=0;
                                }
                                else if (KeyState==8) // alarm hour
                                {
                                Ahour++;
                                if (Ahour>0x23) Ahour=0;
                                }
                                else if (KeyState==9) // 时间调整+
                                {
                                adjust++;
                                if (adjust>40) adjust=0;
                                }
                        }
                }
                else Key2On=0;
}

void get_time()        // time update
{
                        Read_Time(Time);

                        if (Second!=Time[0])
                        {
                                sd=10;
                                MSecond=0;
                        }
                        Second=Time[0];
                        Minute=Time[1];
                        Hour=Time[2];
                        day=Time[3];
                        month=Time[4];
                        week=Time[5];
                        year=Time[6];
}


void main (void)
{
unsigned char i, j, k, p, q;
        sign=0;
        EA=1;  //允许CPU中断
        ET0=1;  //定时器0中断打开
        TMOD=0x01; //设定时器0为方式1
        TH0=0x63;  //24M 63d0; 12M B7FF
        TL0=0xD0; //设定时值为20 000 μs(20 ms)
        TR0=1;  //开始定时
//        EA=0;       
//        P1M0=0;
//        P1M1=0;
        Set_Charge();
        adjust=20;
        adj=0;
        cal=0;
        adj=0;
        p=0;
        q=0;
        KeyState=0;
        Key1On=0;
        Key2On=0;
        Aminute=0;
        Ahour=0;
        Alarm=1;

        Read_Time(Time);

        Second=Time[0];
        Minute=Time[1];
        Hour=Time[2];
        day=Time[3];
        month=Time[4];
        week=Time[5];
        year=Time[6];
//    Time[0]=0x00;
        Set_Time(Time);

        f0=Minute%16;
        f1=Minute/16;
        sd=10;
        h0=Hour%16;
        h1=Hour/16;
        s0=Second%16;
        s1=Second/16;

        while(1)
        {
           sign=0;
           i=0x01;
           tem=Read_Temperature();
           sign=tem>>12;  //取高1位
           if (sign!=0)
                 {
                 tem=~tem+1;        //负温度读数求补,取反加1 (减一取反?)
                 }
           q=(unsigned char)(tem&0x000f);  
           p=(unsigned char)(tem>>4);
           t1=p/10;
           if (t1==0) t1=11;
           t0=p%10;                     
           td=tab2[q][0];                     

        if  (DS18B20==9) t1=9;

        key_scan();
               
                if (KeyState==0)                 get_time();        //keystate=0时接收时间数据   

                h0=Hour%16;
                h1=Hour/16;
                f0=Minute%16;
                f1=Minute/16;
                s0=Second%16;
                s1=Second/16;

                d0=day%16;
                d1=day/16;
                m0=month%16;
                m1=month/16;
                y0=year%16;
                y1=year/16;
                wk=week%16;

                for (i=0;i<16;i++)        //显示内容   
                {
                        HC595_LAT=0;
                        HC595_CLK=0;
                        HC138_OE=1;       
                        for (k=0;k<16;k++)
                        {
                                zg[k]=0xff;
                                zr[k]=0xff;
                        }

                        if (KeyState==0)
                        {
                                if (h1==0) h1=10;
                if (f1>2)
                {
                                zg[0]=zg[0]-DZF[h1][i];                //h1
                                zg[1]=zg[1]-(DZF[h0][i]>>1);                //h0
                                zg[2]=zg[2]-(DZF[h0][i]<<7);                //h0
                                zr[2]=zr[2]-DZF[sd][i];                //sd
                                zg[2]=zg[2]-DZF[sd][i];                //sd
                                zg[3]=zg[3]-DZF[f1][i];                //f1
                                zg[4]=zg[4]-(DZF[f0][i]>>1);                //f0
                                zg[5]=zg[5]-(DZF[f0][i]<<7);                //f0
                                zr[5]=zr[5]-DZF[sd][i];                //sd
                                zg[5]=zg[5]-DZF[sd][i];                //sd
                                zg[6]=zg[6]-ZZF[s1][i];                //s1
                                zg[7]=zg[7]-ZZF[s0][i];;        //s0
                 }
               else
               {
                       zr[0]=zr[0]-DZF[h1][i];                //h1
                 zg[0]=zg[0]-DZF[h1][i];
                                zr[1]=zr[1]-(DZF[h0][i]>>1);                //h0
            zg[1]=zg[1]-(DZF[h0][i]>>1);
                                zr[2]=zr[2]-(DZF[h0][i]<<7);                //h0
            zg[2]=zg[2]-(DZF[h0][i]<<7);
                                zg[2]=zg[2]-DZF[sd][i];                //sd
                                zr[3]=zr[3]-DZF[f1][i];                //f1
            zg[3]=zg[3]-DZF[f1][i];
                                zr[4]=zr[4]-(DZF[f0][i]>>1);                //f0
            zg[4]=zg[4]-(DZF[f0][i]>>1);
                                zr[5]=zr[5]-(DZF[f0][i]<<7);                //f0
            zg[5]=zg[5]-(DZF[f0][i]<<7);
                                zg[5]=zg[5]-DZF[sd][i];                //sd
                                zr[6]=zr[6]-ZZF[s1][i];                //s1
            zg[6]=zg[6]-ZZF[s1][i];       
                                zr[7]=zr[7]-ZZF[s0][i];;        //s0
            zg[7]=zg[7]-ZZF[s0][i];;
               }
                                if (i<8)
                                {
                if (f1>2)
                {
                                zg[8]=zg[8]-(ZF[2*8+i]<<4);                        //2                8-5 前4列,6列空   
                                zg[8]=zg[8]-(ZF[0*8+i]>>1);                        //0, 前3位        8-8  
                                zg[9]=zg[9]-(ZF[0*8+i]<<7);                        //0, 后1位        9-3  4列空   
                                zg[9]=zg[9]-(ZF[y1*8+i]<<2);                //y1 前4位        9-8  5列空  
                                zg[9]=zg[9]-(ZF[y0*8+i]>>3);                //y0 前1位        10-1 2列空
            for (k=8; k<10; k++) zr[k]=zg[k];        //
                                zg[10]=zg[10]-(ZF[y0*8+i]<<5);                //y0 前3位        10-3  12列空
            zr[10]=zr[10]-(ZF[y0*8+i]<<5);                //

                                zg[10]=zg[10]-(HZ[10*8+i]>>2);                        //年 ,                10-8  
                                zg[11]=zg[11]-(HZ[10*8+i]<<6);                        //年 ,                11-2  
                                if (m1==0) m1=11;
                                zg[11]=zg[11]-(ZF[m1*8+i]<<1);                //m1 3位        11-7  
            zr[11]=zr[11]-(ZF[m1*8+i]<<1);        //
                                zg[12]=zg[12]-(ZF[m0*8+i]<<4);                        //m9 5        12-4
            zr[12]=zr[12]-(ZF[m0*8+i]<<4);         //

                                zg[12]=zg[12]-(HZ[9*8+i]>>1);                //月 前4位        12-8 后5列   
                                zg[13]=zg[13]-(HZ[9*8+i]<<7);                //月 后1位        13-11
                                if (d1==0) d1=11;
                                zg[13]=zg[13]-(ZF[d1*8+i]<<2);        //d1 前3位        13-76   前5列
                zr[13]=zr[13]-(ZF[d1*8+i]<<2);    //
                                zg[13]=zg[13]-(ZF[d0*8+i]>>3);                //d0                  14-5
                zr[13]=zr[13]-(ZF[d0*8+i]>>3);     //
                                zg[14]=zg[14]-(ZF[d0*8+i]<<5);                //d0                  14 3
                zr[14]=zr[14]-(ZF[d0*8+i]<<5);      //

                                zg[14]=zg[14]-(HZ[8*8+i]);                        //日 后4位        14-88   
                        //        for (k=8; k<15; k++) zr[k]=zg[k];        //   
                                zr[15]=zr[15]-HZ[(wk-1)*8+i];                //week                15-3~15-8
                                           //i<8
                }
                else
                                {
                zg[8]=zg[8]-(ZF[2*8+i]<<4);                        //2                8-5 前4列,6列空   
                                zg[8]=zg[8]-(ZF[0*8+i]>>1);                        //0, 前3位        8-8  
                                zg[9]=zg[9]-(ZF[0*8+i]<<7);                        //0, 后1位        9-3  4列空   
                                zg[9]=zg[9]-(ZF[y1*8+i]<<2);                //y1 前4位        9-8  5列空  
                                zg[9]=zg[9]-(ZF[y0*8+i]>>3);                //y0 前1位        10-1 2列空
                                zg[10]=zg[10]-(ZF[y0*8+i]<<5);                //y0 前3位        10-3  12列空

                                zr[10]=zr[10]-(HZ[10*8+i]>>2);                        //年 ,                10-8  
                                zr[11]=zr[11]-(HZ[10*8+i]<<6);                        //年 ,                11-2  
                                if (m1==0) m1=11;
                                zg[11]=zg[11]-(ZF[m1*8+i]<<1);                //m1 3位        11-7  
                                zg[12]=zg[12]-(ZF[m0*8+i]<<4);                        //m9 5        12-4

                                zr[12]=zr[12]-(HZ[9*8+i]>>1);                //月 前4位        12-8 后5列   
                                zr[13]=zr[13]-(HZ[9*8+i]<<7);                //月 后1位        13-11
                                if (d1==0) d1=11;
                                zg[13]=zg[13]-(ZF[d1*8+i]<<2);        //d1 前3位        13-76   前5列
                                zg[13]=zg[13]-(ZF[d0*8+i]>>3);                //d0                  14-5
                                zg[14]=zg[14]-(ZF[d0*8+i]<<5);                //d0                  14 3

                                zr[14]=zr[14]-(HZ[8*8+i]);                        //日 后4位        14-88      
                                zg[15]=zg[15]-HZ[(wk-1)*8+i];                //week                15-3~15-8
                                }            //i<8
                }
                                else
                                {
                                j=i-8;
                                get_yinli();
               

            if (f1>2)
                {
                                zg[8]=zg[8]-HZ[7*8+j];                                //农后5列   8-77
                                if (nm1==0) nm1=11;
                                zr[9]=zr[9]-(ZF[nm1*8+j]<<4);                        //nm1  5位        9-4   
                                zr[9]=zr[9]-(ZF[nm0*8+j]>>1);                //nm0 前2位        9-8   
                                zr[10]=zr[10]-(ZF[nm0*8+j]<<7);                //nm0 后3位        10-1   
                                zg[10]=zg[10]-(HZ[9*8+j]<<1);                //月 前1位        10-7   
                                if (nd1==0) nd1=11;
                                zr[11]=zr[11]-(ZF[nd1*8+j]<<4);        //d1 前4位        10-8
                                zr[11]=zr[11]-(ZF[nd0*8+j]>>1);        //d0 后1        11-7  
                                zr[12]=zr[12]-(ZF[nd0*8+j]<<7);        //d0 后1        11-7  
                                zg[12]=zg[12]-(HZ[8*8+j]<<2);                //日 前1位        11-8
                                if (sign==1)
                                {
                                zr[12]=zr[12]-(DateD[12][j]>>6);                //-        12-6
                                zr[13]=zr[13]-(DateD[12][j]<<2);                //-        13-1
                                }
                                zr[13]=zr[13]-(DateD[t1][j]>>1);                //t1        13-4
                                zr[13]=zr[13]-(DateD[t0][j]>>7);                //t0 3        13-8
                                zr[14]=zr[14]-(DateD[t0][j]<<1);                //t0 2        14-4
                                zr[14]=zr[14]-(DateD[13][j]>>4);                //. `   14-5
            zg[14]=zg[14]-(DateD[13][j]>>4);    //  
                                zr[14]=zr[14]-(DateD[td][j]>>5);                //td 3   14-8
                                zr[15]=zr[15]-(DateD[td][j]<<3);                //td 2        15-2
                                zr[15]=zr[15]-(DateD[14][j]>>3);                //C
            zg[15]=zg[15]-(DateD[14][j]>>3);    //
                               
           }                          
                          else
         {
                           zr[8]=zr[8]-HZ[7*8+j];                                //农后5列   8-77
                                if (nm1==0) nm1=11;
                                zg[9]=zg[9]-(ZF[nm1*8+j]<<4);                        //nm1  5位        9-4   
                                zg[9]=zg[9]-(ZF[nm0*8+j]>>1);                //nm0 前2位        9-8   
                                zg[10]=zg[10]-(ZF[nm0*8+j]<<7);                //nm0 后3位        10-1   
                                zr[10]=zr[10]-(HZ[9*8+j]<<1);                //月 前1位        10-7   
                                if (nd1==0) nd1=11;
                                zg[11]=zg[11]-(ZF[nd1*8+j]<<4);        //d1 前4位        10-8
                                zg[11]=zg[11]-(ZF[nd0*8+j]>>1);        //d0 后1        11-7  
                                zg[12]=zg[12]-(ZF[nd0*8+j]<<7);        //d0 后1        11-7  
                                zr[12]=zr[12]-(HZ[8*8+j]<<2);                //日 前1位        11-8
                                if (sign==1)
                                {
                                zg[12]=zg[12]-(DateD[12][j]>>6);                //-        12-6
                                zg[13]=zg[13]-(DateD[12][j]<<2);                //-        13-1
                                }
                                zg[13]=zg[13]-(DateD[t1][j]>>1);                //t1        13-4
                                zg[13]=zg[13]-(DateD[t0][j]>>7);                //t0 3        13-8
                                zg[14]=zg[14]-(DateD[t0][j]<<1);                //t0 2        14-4
                                zr[14]=zr[14]-(DateD[13][j]>>4);                //. `   14-5
                                zg[14]=zg[14]-(DateD[td][j]>>5);                //td 3   14-8
                                zg[15]=zg[15]-(DateD[td][j]<<3);                //td 2        15-2
                                zr[15]=zr[15]-(DateD[14][j]>>3);                //C
            
                                }        //>8
                        }        //end Keystate==0
           }


                        else if (KeyState==1) //分
                        {       
                                f0=Minute%16;
                                f1=Minute/16;
                                zr[3]=zr[3]-DZF[f1][i];                //f1
                                zr[4]=zr[4]-DZF[f0][i];                //f0

                                zg[8]=zg[8]-hanzi[20][i*2];                //调
                                zg[9]=zg[9]-hanzi[20][i*2+1];        //
                                zg[10]=zg[10]-hanzi[21][i*2];        //整
                                zg[11]=zg[11]-hanzi[21][i*2+1];        //
                                zg[12]=zg[12]-hanzi[17][i*2];        //分
                                zg[13]=zg[13]-hanzi[17][i*2+1];        //

                        }        //end Keystate==1

                        else if (KeyState==2) //时
                        {       
                                h0=Hour%16;
                                h1=Hour/16;
                                zr[0]=zr[0]-DZF[h1][i];                //h1
                                zr[1]=zr[1]-DZF[h0][i];                //h0

                                zg[8]=zg[8]-hanzi[20][i*2];                //调
                                zg[9]=zg[9]-hanzi[20][i*2+1];        //
                                zg[10]=zg[10]-hanzi[21][i*2];        //整
                                zg[11]=zg[11]-hanzi[21][i*2+1];        //
                                zg[12]=zg[12]-hanzi[16][i*2];        //时
                                zg[13]=zg[13]-hanzi[16][i*2+1];        //

                        }        //end Keystate==2

                        else if (KeyState==3)        //day
                        {       
                                d0=day%16;
                                d1=day/16;
                                zr[3]=zr[3]-DZF[d1][i];                //d1
                                zr[4]=zr[4]-DZF[d0][i];                //d0

                                zg[8]=zg[8]-hanzi[20][i*2];                //调
                                zg[9]=zg[9]-hanzi[20][i*2+1];        //
                                zg[10]=zg[10]-hanzi[21][i*2];        //整
                                zg[11]=zg[11]-hanzi[21][i*2+1];        //
                                zg[12]=zg[12]-hanzi[13][i*2];        //日
                                zg[13]=zg[13]-hanzi[13][i*2+1];        //

                        }        //end Keystate==3

                        else if (KeyState==4)        //month
                        {       
                                m0=month%16;
                                m1=month/16;
                                zr[3]=zr[3]-DZF[m1][i];                //m1
                                zr[4]=zr[4]-DZF[m0][i];                //dm0

                                zg[8]=zg[8]-hanzi[20][i*2];                //调
                                zg[9]=zg[9]-hanzi[20][i*2+1];        //
                                zg[10]=zg[10]-hanzi[21][i*2];        //整
                                zg[11]=zg[11]-hanzi[21][i*2+1];        //
                                zg[12]=zg[12]-hanzi[12][i*2];        //月
                                zg[13]=zg[13]-hanzi[12][i*2+1];        //

                        }        //end Keystate==4

                        else if (KeyState==5)        //week
                        {
                                if (i<8)
                                {
                                zr[7]=zr[7]-HZ[(wk-1)*8+i];        //w1                14-5       
                                }
                                zg[8]=zg[8]-hanzi[20][i*2];                //调
                                zg[9]=zg[9]-hanzi[20][i*2+1];        //
                                zg[10]=zg[10]-hanzi[21][i*2];        //整
                                zg[11]=zg[11]-hanzi[21][i*2+1];        //
                                zg[12]=zg[12]-hanzi[14][i*2];        //星
                                zg[13]=zg[13]-hanzi[14][i*2+1];        //
                                zg[14]=zg[14]-hanzi[15][i*2];        //期
                                zg[15]=zg[15]-hanzi[15][i*2+1];        //       
                                               
                        }        //end Keystate==3

                        else if (KeyState==6)        //year
                        {       
                                y0=year%16;
                                y1=year/16;
                                zr[0]=zr[0]-DZF[2][i];
                                zr[1]=zr[1]-DZF[0][i];
                                zr[2]=zr[2]-DZF[y1][i];
                                zr[3]=zr[3]-DZF[y0][i];

                                zg[8]=zg[8]-hanzi[20][i*2];                //调
                                zg[9]=zg[9]-hanzi[20][i*2+1];        //
                                zg[10]=zg[10]-hanzi[21][i*2];        //整
                                zg[11]=zg[11]-hanzi[21][i*2+1];        //
                                zg[12]=zg[12]-hanzi[11][i*2];        //年
                                zg[13]=zg[13]-hanzi[11][i*2+1];        //
       
                        }        //end Keystate==6

                        else if (KeyState==7) // alarm minute
                        {       
                                f1=Aminute/10;
                                f0=Aminute%10;
                                zr[3]=zr[3]-DZF[f1][i];                //f1
                                zr[4]=zr[4]-DZF[f0][i];                //f0

                                zg[8]=zg[8]-hanzi[20][i*2];                //调
                                zg[9]=zg[9]-hanzi[20][i*2+1];        //
                                zg[10]=zg[10]-hanzi[19][i*2];        //定
                                zg[11]=zg[11]-hanzi[19][i*2+1];        //
                                zg[12]=zg[12]-hanzi[16][i*2];        //时
                                zg[13]=zg[13]-hanzi[16][i*2+1];        //
                                zg[14]=zg[14]-hanzi[17][i*2];        //分
                                zg[15]=zg[15]-hanzi[17][i*2+1];        //
                        }        //end Keystate==7

                        else if (KeyState==8) // alarm hour
                        {       
                                h1=Ahour/10;
                                h0=Ahour%10;
                                zr[1]=zr[1]-DZF[h1][i];                //f1
                                zr[2]=zr[2]-DZF[h0][i];                //f0

                                zg[8]=zg[8]-hanzi[20][i*2];                //调
                                zg[9]=zg[9]-hanzi[20][i*2+1];        //
                                zg[10]=zg[10]-hanzi[19][i*2];        //定
                                zg[11]=zg[11]-hanzi[19][i*2+1];        //
                                zg[12]=zg[12]-hanzi[16][i*2];        //时
                                zg[13]=zg[13]-hanzi[16][i*2+1];        //
                                zg[14]=zg[14]-hanzi[16][i*2];        //时
                                zg[15]=zg[15]-hanzi[16][i*2+1];        //                       

                        }        //end Keystate==8
                        else if (KeyState==9) // time adjust
                        {       
                                if (adjust<20)
                                        {
                                adj=0;
                                a1=(20-adjust)/10;
                                a0=(20-adjust)%10;
                                        }
                                else
                                        {
                                adj=1;
                                a1=(adjust-20)/10;
                                a0=(adjust-20)%10;
                                        }
                                if (i<8)
                                {
                                if (adj==0) zr[1]=zr[1]-DateD[12][i];
                                zr[2]=zr[2]-DateD[a1][i];
                                zr[3]=zr[3]-DateD[a0][i];
                                }

                                zg[8]=zg[8]-hanzi[20][i*2];                //调
                                zg[9]=zg[9]-hanzi[20][i*2+1];        //
                                zg[10]=zg[10]-hanzi[21][i*2];        //整
                                zg[11]=zg[11]-hanzi[21][i*2+1];        //
                                zg[12]=zg[12]-hanzi[22][i*2];        //块
                                zg[13]=zg[13]-hanzi[22][i*2+1];        //
                                zg[14]=zg[14]-hanzi[23][i*2];        //慢
                                zg[15]=zg[15]-hanzi[23][i*2+1];        //慢                       
                        }        //end Keystate==9

                        for (k=0;k<16;k++)
                        {
                        write595(zr[k], zg[k]);  
                        }

                        HC138_OE=0;
                        HC595_LAT=1;
                        HC595_LAT=0;
                        HC595_CLK=0;

                        HC138_A=i&0x01;
                        HC138_B=i&0x02;
                        HC138_C=i&0x04;
                        HC138_D=i&0x08;

         if (h1==10 &&h0<6) delay(20); //晚上0-6降低亮度
                        else
                        {
                        if(h1>1&&h0<4) delay(120); //晚上8-24降低亮度
                        else
                        delay(250);
         }
                        HC138_OE=1;
                }        //end for i

                if (Ahour==h1*10+h0)
                {
                        if (Aminute==f1*10+f0)
                        {
                                if (alarmlenth!=500)
                                {
                                Alarm=0;
                                delay(200);
                                Alarm=1;
                                alarmlenth++;
                                }
                        }
                }
                else alarmlenth=0;

        }        //end while
}        //end main

void Time0Interrupt(void) interrupt 1 using 1
{
        TH0=0xB7; //20 ms断点 (1)
        TL0=0xFF; //设定时值
        MSecond=MSecond+1;
        if (MSecond==15)
        {
                sd=11;
        }
}

17

主题

0

好友

142

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
597013
帖子
269
精华
0
经验
142 点
金钱
97 ¥
注册时间
2013-6-9
 楼主| 发表于 2013-11-23 21:37 | 显示全部楼层
#include <STC12C5A60S2.h>
//#include <STC12C5410AD.h>
//#include <STC90C58RD.h>
//#include <REG52.H>
//extern void delay1(unsigned int time);

#define uchar unsigned char
#define uint unsigned int
//this is for 1632
sbit     T_CLK      = P1^0;   /*实时时钟时钟线引脚7 */
sbit     T_IO       = P1^1;   /*实时时钟数据线引脚6 */
sbit     T_RST      = P1^2;   /*实时时钟复位线引脚5 */
sbit     ACC0=ACC^0;
sbit     ACC1=ACC^1;
sbit     ACC2=ACC^2;
sbit     ACC3=ACC^3;
sbit     ACC4=ACC^4;
sbit     ACC5=ACC^5;
sbit     ACC6=ACC^6;
sbit     ACC7=ACC^7;


/*******************************************************************  
*
* 名称: v_RTInputByte
* 说明:
* 功能: 往DS1302写入1Byte数据
* 调用:
* 输入: ucDa 写入的数据
* 返回值: 无
***********************************************************************/
void  v_RTInputByte(uchar  ucDa)  
{                              
    uchar  i;
    ACC = ucDa;
    for(i=8; i>0; i--)
    {
         T_IO = ACC0;          /*相当于汇编中的  RRC  */
//                 delay(20);       
         T_CLK = 1;
//                 delay(20);       
         T_CLK = 0;
//                 delay(20);       
         ACC = ACC >> 1;   
     }     
}
/********************************************************************  
*
* 名称: uchar uc_RTOutputByte
* 说明:
* 功能: 从DS1302读取1Byte数据
* 调用:
* 输入:
* 返回值: ACC
***********************************************************************/
uchar uc_RTOutputByte(void)  
{                             
    uchar i;
    for(i=8; i>0; i--)
    {
         ACC = ACC >>1;       /*相当于汇编中的  RRC  */
         ACC7 = T_IO;
//                 delay(20);       
         T_CLK = 1;
//                 delay(20);       
         T_CLK = 0;
//                 delay(20);       
    }     
    return(ACC);
}
/********************************************************************  
*
* 名称: v_W1302
* 说明: 先写地址,后写命令/数据
* 功能: 往DS1302写入数据
* 调用: v_RTInputByte()
* 输入: ucAddr: DS1302地址, ucDa: 要写的数据
* 返回值: 无
***********************************************************************/
void  v_W1302(uchar ucAddr, uchar ucDa)
{
    T_RST = 0;
//        delay(20);       
    T_CLK = 0;
//        delay(20);       
    T_RST = 1;
//        delay(20);       
    v_RTInputByte(ucAddr);      /* 地址,命令 */
    v_RTInputByte(ucDa);        /* 写1Byte数据*/
    T_CLK = 1;
//        delay(20);       
    T_RST =0;
//        delay(20);       
}
/********************************************************************  
*
* 名称: uc_R1302
* 说明: 先写地址,后读命令/数据
* 功能: 读取DS1302某地址的数据
* 调用: v_RTInputByte() , uc_RTOutputByte()
* 输入: ucAddr: DS1302地址
* 返回值: ucDa :读取的数据
***********************************************************************/
uchar  uc_R1302(uchar ucAddr)
{
    uchar ucDa;
    T_RST = 0;
//        delay(20);       
    T_CLK = 0;
//        delay(20);       
    T_RST = 1;
//        delay(20);       
    v_RTInputByte(ucAddr);      /* 地址,命令 */
    ucDa = uc_RTOutputByte();   /* 读1Byte数据 */
    T_CLK = 1;
//        delay(20);       
    T_RST =0;
//        delay(20);       
    return(ucDa);
}
/********************************************************************  
*
* 名称: v_BurstW1302T
* 说明: 先写地址,后写数据(时钟多字节方式)
* 功能: 往DS1302写入时钟数据(多字节方式)
* 调用: v_RTInputByte()
* 输入: pSecDa: 时钟数据地址    格式为: 秒 分 时 日 月 星期 年 控制
*                 8Byte  (BCD码)        1B 1B 1B 1B 1B  1B  1B  1B
* 返回值: 无
***********************************************************************/
/*void  v_BurstW1302T(uchar *pSecDa)
{
    uchar  i;
    v_W1302(0x8e,0x00);       // 控制命令,WP=0,写操作?
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    v_RTInputByte(0xbe);      // 0xbe:时钟多字节写命令
    for (i=8;i>0;i--)         //8Byte = 7Byte 时钟数据 + 1Byte 控制
    {
        v_RTInputByte(*pSecDa);// 写1Byte数据
        pSecDa++;
    }
    T_CLK = 1;
    T_RST =0;
}                         */
/********************************************************************  
*
* 名称: v_BurstR1302T
* 说明: 先写地址,后读命令/数据(时钟多字节方式)
* 功能: 读取DS1302时钟数据
* 调用: v_RTInputByte() , uc_RTOutputByte()
* 输入: pSecDa: 时钟数据地址          格式为: 秒 分 时 日 月 星期 年
*                       7Byte  (BCD码)        1B 1B 1B 1B 1B  1B  1B
* 返回值: ucDa :读取的数据
***********************************************************************/
/*void  v_BurstR1302T(uchar *pSecDa)
{
    uchar i;
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    v_RTInputByte(0xbf);      // 0xbf:时钟多字节读命令
    for (i=8; i>0; i--)      
    {
        *pSecDa = uc_RTOutputByte();   // 读1Byte数据
         pSecDa++;
    }
    T_CLK = 1;
    T_RST =0;
}                         */
/********************************************************************  
*
* 名称: v_BurstW1302R
* 说明: 先写地址,后写数据(寄存器多字节方式)
* 功能: 往DS1302寄存器数写入数据(多字节方式)
* 调用: v_RTInputByte()
* 输入: pReDa: 寄存器数据地址
* 返回值: 无
***********************************************************************/
/*id  v_BurstW1302R(uchar *pReDa)
{
    uchar  i;
    v_W1302(0x8e,0x00);       // 控制命令,WP=0,写操作
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    v_RTInputByte(0xfe);      // 0xbe:时钟多字节写命令
    for (i=31;i>0;i--)        //31Byte  寄存器数据   
    {
        v_RTInputByte(*pReDa);        // 写1Byte数据
        pReDa++;
    }
    T_CLK = 1;
    T_RST =0;
}          */
/********************************************************************  
*
* 名称: uc_BurstR1302R
* 说明: 先写地址,后读命令/数据(寄存器多字节方式)
* 功能: 读取DS1302寄存器数据
* 调用: v_RTInputByte() , uc_RTOutputByte()
* 输入: pReDa: 寄存器数据地址
* 返回值: 无
***********************************************************************/
/*void  v_BurstR1302R(uchar *pReDa)
{
    uchar i;
    T_RST = 0;
    T_CLK = 0;
    T_RST = 1;
    v_RTInputByte(0xff);      // 0xbf:时钟多字节读命令
    for (i=31; i>0; i--)       //31Byte  寄存器数据   
    {
        *pReDa = uc_RTOutputByte();   //读1Byte数据
         pReDa++;
    }
    T_CLK = 1;
    T_RST =0;
}                                 */

void  Set_Charge(void)  
{
    v_W1302(0x8e,0x00);          /* 控制命令,WP=0,写操作?*/
    v_W1302(0x90,0xaa);          /* 控制命令,WP=0,写操作?*/
    v_W1302(0x8e,0x80);  /* 控制命令,WP=1,写保护?*/
        v_W1302(0x90,0xa5);
}

/********************************************************************  
*
* 名称: v_Set1302
* 说明:
* 功能: 设置初始时间
* 调用: v_W1302()
* 输入: pSecDa: 初始时间地址。初始时间格式为: 秒 分 时 日 月 星期 年
*                       7Byte  (BCD码)        1B 1B 1B 1B 1B  1B  1B
* 返回值: 无
***********************************************************************/
void  Set_Time(uchar *pSecDa)  
{
    uchar i;
    uchar ucAddr = 0x80;
   
    v_W1302(0x8e,0x00);          /* 控制命令,WP=0,写操作?*/
    for(i =7;i>0;i--)
    {
        v_W1302(ucAddr,*pSecDa);  /* 秒 分 时 日 月 星期 年 */
   
        pSecDa++;
        ucAddr +=2;
     }
     v_W1302(0x8e,0x80);  /* 控制命令,WP=1,写保护?*/
}
/********************************************************************  
*
* 名称: v_Get1302
* 说明:
* 功能: 读取DS1302当前时间
* 调用: uc_R1302()
* 输入: ucCurtime: 保存当前时间地址。当前时间格式为: 秒 分 时 日 月 星期 年
*                              7Byte  (BCD码)        1B 1B 1B 1B 1B  1B  1B
* 返回值: 无
***********************************************************************/
void Read_Time(uchar ucCurtime[])      
{
    uchar  i;
    uchar  ucAddr = 0x81;
    for (i=0;i<7;i++)
    {
         ucCurtime[i] = uc_R1302(ucAddr);/*格式为: 秒 分 时 日 月 星期 年 */
         ucAddr += 2;
    }
}

void Write_RAM(unsigned char *s,unsigned char startbyte,unsigned char length)
{
    uchar i;
    uchar ucAddr;   
   
        ucAddr=0xc0+startbyte*2;

        v_W1302(0x8e,0x00);          /* 控制命令,WP=0,写操作?*/
    for(i =0;i<length;i++)
    {
        v_W1302(ucAddr,*s);
   
        s++;
        ucAddr +=2;
     }
     v_W1302(0x8e,0x80);  /* 控制命令,WP=1,写保护?*/

}

void Read_RAM(unsigned char *s,unsigned char startbyte,unsigned char length)
{
    uchar  i;
    uchar  ucAddr;
       
        ucAddr=0xc1+startbyte*2;
    for (i=0;i<length;i++)
    {
         s[i] = uc_R1302(ucAddr);
         ucAddr += 2;
    }
}

1

主题

1

好友

122

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
137832
帖子
121
精华
0
经验
122 点
金钱
120 ¥
注册时间
2009-10-7
发表于 2013-11-24 14:29 | 显示全部楼层
不错,你定义那么多头文件干嘛?

13

主题

2

好友

357

积分

业余侠客 当前离线

Rank: 4

UID
288859
帖子
342
精华
0
经验
357 点
金钱
285 ¥
注册时间
2011-2-3
发表于 2013-11-24 20:05 | 显示全部楼层
楼主有精神啊,点阵时钟,做起来麻烦啊

17

主题

0

好友

142

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
597013
帖子
269
精华
0
经验
142 点
金钱
97 ¥
注册时间
2013-6-9
 楼主| 发表于 2013-11-24 21:08 | 显示全部楼层
会潜水的猪 发表于 2013-11-24 20:05
楼主有精神啊,点阵时钟,做起来麻烦啊

都是现成的  买的点阵屏

25

主题

11

好友

6414

积分

青铜剑侠 当前离线

Rank: 8Rank: 8

UID
517186
帖子
19241
精华
0
经验
6414 点
金钱
5884 ¥
注册时间
2012-8-6
发表于 2013-11-26 16:07 | 显示全部楼层
哇~看着那么多的程序我就晕~

34

主题

5

好友

6823

积分
     

版主 当前离线

Rank: 7Rank: 7Rank: 7

UID
507776
帖子
7262
精华
0
经验
6823 点
金钱
5986 ¥
注册时间
2012-7-1

社区贡献 论坛版主

发表于 2013-11-26 16:41 | 显示全部楼层
想学维修 发表于 2013-11-26 16:07
哇~看着那么多的程序我就晕~

你的手机看得清

25

主题

11

好友

6414

积分

青铜剑侠 当前离线

Rank: 8Rank: 8

UID
517186
帖子
19241
精华
0
经验
6414 点
金钱
5884 ¥
注册时间
2012-8-6
发表于 2013-11-26 16:51 | 显示全部楼层
天马飞云 发表于 2013-11-26 16:41
你的手机看得清

可以的,如果是图片,只要不压缩得厉害,在“全彩”模式下都能看很清,只是费流量和有点慢,不常用~
觉得手机比电脑方便多了,都很少用电脑了

34

主题

5

好友

6823

积分
     

版主 当前离线

Rank: 7Rank: 7Rank: 7

UID
507776
帖子
7262
精华
0
经验
6823 点
金钱
5986 ¥
注册时间
2012-7-1

社区贡献 论坛版主

发表于 2013-11-26 17:24 | 显示全部楼层
想学维修 发表于 2013-11-26 16:51
可以的,如果是图片,只要不压缩得厉害,在“全彩”模式下都能看很清,只是费流量和有点慢,不常用~
觉 ...

都觉得会编程序的好了不起,这么多的指令不出一点错,大脑真的非比寻常。

25

主题

11

好友

6414

积分

青铜剑侠 当前离线

Rank: 8Rank: 8

UID
517186
帖子
19241
精华
0
经验
6414 点
金钱
5884 ¥
注册时间
2012-8-6
发表于 2013-11-26 17:38 | 显示全部楼层
天马飞云 发表于 2013-11-26 17:24
都觉得会编程序的好了不起,这么多的指令不出一点错,大脑真的非比寻常。

觉得单片机可以很方便解决电路的复杂性,变得简单简洁起来,所以兴起就自学了一段日子,可能没时间实验,所以总是摸不进门口,到现在还是七窍通六窍还是羡慕的份~

20

主题

0

好友

659

积分
     

职业侠客 当前离线

初级

Rank: 5Rank: 5

UID
206281
帖子
1164
精华
0
经验
659 点
金钱
653 ¥
注册时间
2010-5-30
发表于 2013-11-26 19:27 | 显示全部楼层
高人

17

主题

0

好友

142

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
597013
帖子
269
精华
0
经验
142 点
金钱
97 ¥
注册时间
2013-6-9
 楼主| 发表于 2013-11-27 08:05 | 显示全部楼层
我也是刚入门的小菜鸟   

12

主题

2

好友

380

积分

业余侠客 当前离线

Rank: 4

UID
66475
帖子
1431
精华
0
经验
380 点
金钱
376 ¥
注册时间
2008-12-2
发表于 2014-3-11 18:57 | 显示全部楼层
会编程的都是神啊

3

主题

0

好友

51

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
38007
帖子
83
精华
0
经验
51 点
金钱
47 ¥
注册时间
2008-3-20
发表于 2014-3-12 08:34 | 显示全部楼层
只有羡慕了

34

主题

7

好友

1812

积分

侠之大者 当前离线

Rank: 6Rank: 6

UID
532639
帖子
1594
精华
0
经验
1812 点
金钱
1566 ¥
注册时间
2012-10-2
发表于 2014-3-15 23:21 | 显示全部楼层
还没详细看,这程序是完整的吗?

111

主题

9

好友

160

积分
     

论坛游民 当前离线

Rank: 3Rank: 3

UID
137022
帖子
3222
精华
0
经验
160 点
金钱
48 ¥
注册时间
2009-10-4
发表于 2014-3-24 14:52 | 显示全部楼层
牛 自己写程序

2

主题

0

好友

50

积分

论坛游民 当前离线

Rank: 3Rank: 3

UID
679408
帖子
50
精华
0
经验
50 点
金钱
46 ¥
注册时间
2014-4-2
发表于 2014-4-4 09:41 | 显示全部楼层
牛人....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部