maguanglu 发表于 2012-4-4 21:11:55

STC89C516RD+DS12C887+DS18B20+TEA5767+TDA2822M+LCD12864多功能电子闹钟!

      首先声明一下,这是根据某个坛友曾经上传的多功能电子闹钟的帖子,来仿制的。本人并没有那么强大,目前也只能仿制别人的。在此,感谢那位坛友和那位写出这么强大的程序的那个高人。(那位坛友也记不清了,呵呵)。我把里面的端口改了一下,其余的都没有改动。我把源程序,原理图等都一并上传出来,让有兴趣的朋友也可以仿制一下,体会其中的无穷乐趣。实际制作时,提供的那个原理图可以适当的修改下,有些是没有用的,有些是没有必要的。根据实际情况适当修改。
      该多功能闹钟具有:FM收音机(可选择自动搜台并保存功能,可存储20个电台频率。也可选择手动搜索并保存功能)红外遥控,红外测码,温度,多闹钟设置,时间调整,农历,节日提醒等功能。功能界面很多,图片就不一一上传了。
1

2

3

4

5

6

7

8

9

10

11

源程序,电路图等

ljqdsj 发表于 2012-4-4 21:24:14

不错啊,谢谢分享

SYDZ 发表于 2012-4-4 21:31:31

下载了,多谢!
留个足迹;

longlong105 发表于 2012-4-4 21:45:04

好像没法下载,前两天还想着买个有这些功能的闹钟那!

benfenshusheng 发表于 2012-4-4 22:29:56

这个可以有,不知道老陈vdf能不能调光,做个闹钟也不错

xue_pic 发表于 2012-4-5 08:01:33

谢谢楼主,下来学习一下。

zhuyi25762 发表于 2012-4-5 08:26:48

收藏一下先,怎么你们都能下载,我怎么下不了??

semir1233 发表于 2012-4-5 10:57:27

很好的   多多学习!!!!!!!!!!!!!

wenjin0386 发表于 2012-4-5 11:18:26

谢谢楼主 不过我下了半天也没下来。。{:cry:}

fwluck 发表于 2012-4-5 13:06:52

喇叭加个盒子音会有很大不同。扣在盒子上都管用。

taozl 发表于 2012-4-5 22:00:30

下载一个吧,自己做个万年历用下

taozl 发表于 2012-4-5 22:08:28

下不动啊,半天不出下载页

maguanglu 发表于 2012-4-5 22:10:58

你右击,使用迅雷下载试试看。

yangtao0618 发表于 2012-4-5 22:15:59


不错啊,谢谢分享

pulan 发表于 2012-4-6 11:24:10

下载不下来啊

tony_sgt 发表于 2012-4-6 13:16:58

{:loveliness:}不錯不錯

wpnx 发表于 2012-4-6 13:33:58

非常感谢,收藏!

PCA 发表于 2012-4-8 09:38:29

下载不下来啊

CK345 发表于 2012-4-8 09:59:29

{:biggrin:}{:biggrin:}

512561411 发表于 2012-4-8 10:14:18

我也仿制了一个!但汉字的一到十显示乱码!楼主有没呀?

梦的飞翔 发表于 2012-4-8 11:31:11

很好的东西

wxfje 发表于 2012-4-8 11:46:24

挺好的1顶一个!

maguanglu 发表于 2012-4-8 17:49:19

你好,20楼的。“我也仿制了一个!但汉字的一到十显示乱码!楼主有没呀?”
这说明你的keil有问题。很有可能是没有“汉字补丁”所致。

xi2051 发表于 2012-4-8 18:49:21

DS12c887时钟芯片非常准,比DS1302好多了。

jwc21 发表于 2012-4-8 19:03:57

不错不错

bbsview 发表于 2012-4-8 19:42:36

做的很漂亮···{:biggrin:}

robin84 发表于 2012-4-8 21:46:01

做的挺好的,标记下!

liushiming82 发表于 2012-4-9 16:01:39

收集一下

shi_90 发表于 2012-4-10 08:57:35

mark一下!!

txyuseing 发表于 2012-4-10 09:52:07

感觉升级到新论坛后
好多附件都不能下载了
不知道是怎么回事啊
但是下载AMO的附件还是很正常的

sjx_83 发表于 2012-4-10 10:07:58

就是,很慢,是服务器的原因还是带宽不够?

yuguang 发表于 2012-4-13 08:59:59

谢谢楼主,,,本人正{:3_42:}需要

lcwjx 发表于 2012-4-15 14:57:06

太感谢了,我正在玩这个,下来学习。

jialishoushi 发表于 2012-5-7 00:57:42

谢谢了兄弟

hust_netstat 发表于 2012-5-7 01:30:04

觉得对于开始了解51的人可以起到入门的好处

51hubao 发表于 2012-5-13 09:15:18

程序是汇编语言吗?

allen6kid 发表于 2012-5-13 16:41:00

好东西,支持一下

zhenglu891028 发表于 2012-5-13 17:15:14

感觉升级到新论坛后
好多附件都不能下载了
不知道是怎么回事啊

277955973 发表于 2012-5-13 23:43:41

{:smile:}Mark

fly_02827 发表于 2012-5-14 08:35:43

太强大了,向楼主学习

JZcrystalwlh888 发表于 2012-5-14 10:20:38

楼主,有个问题,TEA5767的自动搜台功能能用,为什么我单独调TEA5767只能手动搜台,而不能自动搜台,还有就是加入EEPROM功能,在下次上电时直接读当前状态

anta09 发表于 2012-5-14 10:22:09

支持 强力支持

8795950F 发表于 2012-5-14 11:15:25

不错哈!!!!!!!!!!!!

lijinen 发表于 2012-5-15 19:15:53

谢谢楼主,下载了!

xue_pic 发表于 2012-5-15 20:08:06

太强大了,收音机既然还能有信号强度显示,牛。

liuchangkui 发表于 2012-5-15 20:40:19

先顶上!!!

qinglong 发表于 2012-5-16 08:26:04

好资料,学习一下。

INT0 发表于 2012-5-16 09:26:26

不错,下载看看

billy_gps 发表于 2012-5-16 11:12:52

好东西,顶一下

xixi222 发表于 2012-5-16 12:24:14

太好,太强大了,留着备用,慢慢学!

断翅at雄鹰 发表于 2012-5-16 17:02:32

好啊{:lol:}{:lol:}{:lol:}

slzm40 发表于 2012-5-16 22:57:13

{:lol:} 程序排版我看着很纠结。。决定学下其中的思想。。精品啊。

tonyone 发表于 2012-5-17 17:37:17

mark{:smile:}

yezhiyan1121 发表于 2012-5-17 18:08:43

谢谢分享!

w1000 发表于 2012-5-17 18:55:38

很强大呀。

yu60707 发表于 2012-5-18 00:37:40

收集一下资料,接下来我也做一个。{:biggrin:}

xingzhong 发表于 2012-5-18 12:51:24

mark一下!!

heibaogame 发表于 2012-5-23 10:42:26

精华帖!!mark!!

hamipeter 发表于 2012-5-23 22:56:21

顶一下!

TXJ_yigo 发表于 2012-5-29 16:21:03

谢谢分享{:lol:}

今朝有酒 发表于 2012-5-29 17:46:01

学习下,模仿下

xuepeng 发表于 2012-5-29 19:23:01

记号 留着有用 谢谢楼主

dongjiren2012 发表于 2012-5-29 23:49:08

多谢楼主,很棒的设计啊

feixiang1990 发表于 2012-5-30 09:13:53

行吧,我实话实说,我服了

yanggexiaosa 发表于 2012-5-30 10:38:40

确实漂亮。。

jeans888 发表于 2012-5-30 20:46:39

好资料啊,手上刚好有零件,有空也搞个玩下,谢谢分享呀!

hamipeter 发表于 2012-5-30 22:00:44

DIY,顶一个

liycobl 发表于 2012-5-30 22:34:36

mark
   

liudaolunhui 发表于 2012-5-31 15:25:36

我来顶一个

tengguodong 发表于 2012-5-31 15:49:25

偶也想仿个,LZ的宝贝收下了

SengChuary 发表于 2012-6-15 19:32:58

论坛还是能人多啊

颜靖峰 发表于 2012-6-16 09:53:23

但是我可以下载啊,10秒钟都不到。

dtdzlujian 发表于 2012-6-16 10:18:48

有时间也做个试试

reyrierie 发表于 2012-6-17 18:51:57

thank you share{:smile:}{:smile:}

gaoren 发表于 2012-6-17 22:28:53

好 不错,谢谢分享

jstzsjw 发表于 2012-6-18 00:33:54

mark,放假准备学单片机,嘿嘿。

bihan163 发表于 2012-6-18 11:00:57

这里真是高手云集!!学习了

颜靖峰 发表于 2012-6-18 13:53:10

能不能和这个接着一起
#include <reg52.h>
#include <string.h>
#include <intrins.h>
#ifndef __SOUNDPLAY_H_REVISION_FIRST__    //音乐相关
#define __SOUNDPLAY_H_REVISION_FIRST__    //音乐相关
#define uintunsigned int
#define uchar unsigned char
void nl();                              //农历

/*定义全局变量---------------------------------------------------------------*/
uchar sec,min,hour, day, date, month,year,cen,r1_h,r1_m,r1_of,r2_h,r2_m,r2_of;
data uchar year_moon,month_moon,date_moon,cen_m,week;
uint bt,rt,rr,rtt,rrt;

bit c_moon;                           //农历 世纪
bit c;                                  //公历 世纪
bit w = 0;                           //调时标志位
bit r = 0;                              //调整闹铃

/*定义12864液晶屏数据线------------------------------------------------------*/
sbit LCM_RS= P1^6;   //模式位,为0输入指令,为1输入数据
sbit LCM_RW= P1^7;   //读写位,为0读,为1写
sbit LCM_EN= P3^3;   //使能位
sbit LCM_BLA= P1^5;   
#define Lcd_Bus P0   //LCM12864数据总线
                                                                                               
/*定义DS12CR887数据线--------------------------------------------------------*/
sbit DS_CS = P3^5;
sbit DS_AS = P3^4;
sbit DS_RW = P3^6;
sbit DS_DS = P3^7;
#define Ds_Bus P2//DS12CR887数据总线

/*定义按键-------------------------------------------------------------------*/
sbit K1 = P1^3; //K1-设置
sbit K2 = P1^0; //K2-确认
sbit K3 = P1^2; //K3-加
sbit K4 = P1^1; //K4-减          

/*定义DS18B20数据线----------------------------------------------------------*/
sbit DQ = P3^0;
/*定义蜂鸣器-----------------------------------------------------------------*/
sbit beep = P3^1;

/*定义累加器A中的各位--------------------------------------------------------*/
sbit a0   = ACC ^ 0;
sbit a1   = ACC ^ 1;
sbit a2   = ACC ^ 2;
sbit a3   = ACC ^ 3;
sbit a4   = ACC ^ 4;
sbit a5   = ACC ^ 5;
sbit a6   = ACC ^ 6;
sbit a7   = ACC ^ 7;
/*         */
#define SYSTEM_OSC         12000000    //定义晶振频率12000000HZ
#define SOUND_SPACE   4/5         //定义普通音符演奏的长度分率,//每4分音符间隔
unsigned int code FreTab = { 262,277,294,311,330,349,369,392,415,440,466,494 }; //原始频率表
unsigned char code SignTab = { 0,2,4,5,7,9,11 };                                  //1~7在频率表中的位置
unsigned char code LengthTab= { 1,2,4,8,16,32,64 };                        
unsigned char Sound_Temp_TH0,Sound_Temp_TL0;    //音符定时器初值暂存
unsigned char Sound_Temp_TH1,Sound_Temp_TL1;    //音长定时器初值暂存

/*延时程序-------------------------------------------------------------------*/
//延时函数 1MS/次
void DelayM(uint a)              
{
        uchar i;
        while( --a != 0)
    {               
                for(i = 0; i < 125; i++);//一个 ; 表示空语句,CPU空转。
        }                                      //i 从0加到125,CPU大概就耗时1毫秒
}

//延时函数
void Delay(int num)
{
        while(num--);
}

void InitialSound(void)                           //音乐相关
{
    beep = 0;
    Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256;    // 计算TL1应装入的初值   (10ms的初装值)

    Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256;    // 计算TH1应装入的初值

    TH1 = Sound_Temp_TH1;
    TL1 = Sound_Temp_TL1;
    TMOD |= 0x11;
    ET0 = 1;
    ET1   = 0;
    TR0   = 0;
    TR1 = 0;
    EA = 1;
}

void BeepTimer0(void) interrupt 1    //音符发生中断

{
    beep = !beep;
    TH0 = Sound_Temp_TH0;
   TL0 = Sound_Temp_TL0;
}
//**************************************************************************

void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed)
{
    unsigned int NewFreTab;      //新的频率表

    unsigned char i,j;
    unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength;
    //Point 指针索引值

    //LDiv   音音符演奏的长度(多少个10ms)

    //LDiv0 1分音符的长度(几个10ms)即一个节拍   

    //LDiv4 4分音符的长度

    //CurrentFre 查出对应音符的频率

    //SoundLength歌曲长度

    //Temp_T计算计数器初值

    unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD;
    //Tone音调

    //Length音长

    //SL音符

    //SM高低音

    //SH是否升半

    //XG音符类型(0普通1连音2顿音)

    for(i=0;i<12;i++)               // 根据调号及升降八度来生成新的频率表

    {
      j = i + Signature;
      if(j > 11)
      {
            j = j-12;
            NewFreTab = FreTab*2;
      }
      else
            NewFreTab = FreTab;

      if(Octachord == 1)
            NewFreTab>>=2;
      else if(Octachord == 3)
            NewFreTab<<=2;
    }                                    
   
    SoundLength = 0;
    while(Sound != 0x00)    //计算歌曲长度

    {
      SoundLength+=2;
    }

    Point = 0;
    Tone = Sound;   
    Length = Sound;             // 读出第一个音符和它时时值

   
    LDiv0 = 12000/Speed;                // 算出1分音符的长度(几个10ms)   

    LDiv4 = LDiv0/4;                     // 算出4分音符的长度

    LDiv4 = LDiv4-LDiv4*SOUND_SPACE;   // 普通音最长间隔标准

    TR0   = 0;
    TR1 = 1;
    while(Point < SoundLength)
    {
      SL=Tone%10;                                 //计算出音符

      SM=Tone/10%10;                                 //计算出高低音

      SH=Tone/100;                                 //计算出是否升半

      CurrentFre = NewFreTab+SH];   //查出对应音符的频率   

      if(SL!=0)
      {
            if (SM==1) CurrentFre >>= 2;         //低音

            if (SM==3) CurrentFre <<= 2;         //高音

            Temp_T = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//计算计数器初值

            Sound_Temp_TH0 = Temp_T/256;
            Sound_Temp_TL0 = Temp_T%256;
            TH0 = Sound_Temp_TH0;
            TL0 = Sound_Temp_TL0 + 12; //加12是对中断延时的补偿

      }
      SLen=LengthTab;   //算出是几分音符

      XG=Length/10%10;             //算出音符类型(0普通1连音2顿音)

      FD=Length/100;
      LDiv=LDiv0/SLen;             //算出连音音符演奏的长度(多少个10ms)

      if (FD==1)
            LDiv=LDiv+LDiv/2;
      if(XG!=1)   
            if(XG==0)               //算出普通音符的演奏长度

                if (SLen<=4)   
                  LDiv1=LDiv-LDiv4;
                else
                  LDiv1=LDiv*SOUND_SPACE;
            else
                LDiv1=LDiv/2;         //算出顿音的演奏长度

      else
            LDiv1=LDiv;
      if(SL==0) LDiv1=0;
            LDiv2=LDiv-LDiv1;         //算出不发音的长度

         if (SL!=0)
      {
            TR0=1;
            for(i=LDiv1;i>0;i--)   //发规定长度的音

            {
                while(TF1==0);
                TH1 = Sound_Temp_TH1;
                TL1 = Sound_Temp_TL1;
                TF1=0;
            }


      }               
      if(LDiv2!=0)
      {
            TR0=0; beep=0;
            for(i=LDiv2;i>0;i--)   //音符间的间隔

            {
                while(TF1==0);
                TH1 = Sound_Temp_TH1;
                TL1 = Sound_Temp_TL1;
                TF1=0;
            }
      }
      Point+=2;
      Tone=Sound;
      Length=Sound;

                if(K1==0 || K2==0 || K3==0 || K4==0)                //常案按键两秒跳出歌曲
                {
                        DelayM(20);
                        if(K1==0 || K2==0 || K3==0 || K4==0)
                        {
                                Point=SoundLength;
                                if(rt==1)
                                {
                                rt=0;
                                rr=1;
                                }
                        }
                }
    }
    beep = 0;
}

#endif

//**************************************************************************
unsigned char code Music_happy[] =
{//生日歌
    0x19,0x03, 0x19,0x03, 0x1A,0x02, 0x19,0x02, 0x1F,0x02,
    0x1B,0x01, 0x19,0x03, 0x19,0x03, 0x1A,0x02, 0x19,0x02,
    0x20,0x02, 0x1F,0x01, 0x19,0x03, 0x19,0x03, 0x23,0x02,
    0x21,0x02, 0x1F,0x02, 0x1B,0x0C, 0x1A,0x15, 0x22,0x03,
    0x22,0x03, 0x21,0x02, 0x1F,0x02, 0x20,0x02, 0x1F,0x15,
    0x19,0x03, 0x19,0x03, 0x1A,0x02, 0x19,0x02, 0x1F,0x02,
    0x1B,0x01, 0x19,0x03, 0x19,0x03, 0x1A,0x02, 0x19,0x02,
    0x20,0x02, 0x1F,0x01, 0x19,0x03, 0x19,0x03, 0x23,0x02,
    0x21,0x02, 0x1F,0x02, 0x1B,0x0C, 0x1A,0x15, 0x22,0x03,
    0x22,0x03, 0x21,0x02, 0x1F,0x02, 0x20,0x02, 0x1F,0x15,
    0x19,0x03, 0x19,0x03, 0x1A,0x02, 0x19,0x02, 0x1F,0x02,
    0x1B,0x01, 0x19,0x03, 0x19,0x03, 0x1A,0x02, 0x19,0x02,
    0x20,0x02, 0x1F,0x01, 0x19,0x03, 0x19,0x03, 0x23,0x02,
    0x21,0x02, 0x1F,0x02, 0x1B,0x0C, 0x1A,0x15, 0x22,0x03,
    0x22,0x03, 0x21,0x02, 0x1F,0x02, 0x20,0x02, 0x1F,0x15,
    0x00,0x00
};
//挥着翅膀的女孩---容祖儿
unsigned char code Music_Girl[]={
    0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,
    0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03,
    0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03,
    0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,
    0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,
    0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03,
    0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03,
    0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03,
    0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03,
    0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02,
    0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,
    0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,
    0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,
    0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03,
    0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03,
    0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,
    0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,
    0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,
    0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,
    0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03,
    0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03,
    0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03,
    0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E,
    0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03,
    0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66,
    0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03,
    0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03,
    0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,
    0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04,
    0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,
    0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03,
    0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03,
    0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,
    0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02,
    0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02,
    0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00
};

//昨日重现
unsigned char code Music_yesterday[]=
{
    0x15,0x03, 0x15,0x03, 0x16,0x03, 0x17,0x02, 0x19,0x02,
    0x19,0x03, 0x17,0x03, 0x19,0x03, 0x17,0x03, 0x1A,0x02,
    0x19,0x66, 0x17,0x02, 0x17,0x03, 0x19,0x03, 0x1A,0x02,
    0x16,0x02, 0x17,0x03, 0x19,0x66, 0x1A,0x15, 0x17,0x03,
    0x19,0x03, 0x1A,0x02, 0x21,0x02, 0x20,0x03, 0x1F,0x02,
    0x1B,0x0D, 0x1B,0x66, 0x19,0x03, 0x17,0x03, 0x19,0x02,
    0x17,0x0C, 0x16,0x14, 0x15,0x03, 0x15,0x03, 0x16,0x03,
    0x17,0x03, 0x19,0x02, 0x19,0x0D, 0x19,0x03, 0x17,0x03,
    0x19,0x03, 0x17,0x03, 0x1A,0x03, 0x19,0x02, 0x17,0x0D,
    0x17,0x02, 0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x1B,0x02,
    0x17,0x03, 0x19,0x02, 0x1A,0x0D, 0x1A,0x01, 0x1B,0x02,
    0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1A,0x66, 0x1B,0x03,
    0x1F,0x03, 0x1B,0x03, 0x1F,0x03, 0x1B,0x02, 0x1A,0x66,
    0x1A,0x03, 0x1B,0x03, 0x1F,0x02, 0x1F,0x02, 0x1A,0x03,
    0x1F,0x02, 0x20,0x0D, 0x20,0x16, 0x1F,0x02, 0x20,0x02,
    0x21,0x03, 0x21,0x03, 0x21,0x03, 0x21,0x02, 0x20,0x03,
    0x1F,0x03, 0x1B,0x0D, 0x1F,0x03, 0x1B,0x0D, 0x1A,0x66,
    0x17,0x03, 0x19,0x0D, 0x19,0x14, 0x1F,0x03, 0x20,0x03,
    0x21,0x03, 0x21,0x03, 0x21,0x03, 0x21,0x03, 0x21,0x02,
    0x20,0x03, 0x1F,0x03, 0x1B,0x0D, 0x1F,0x03, 0x1B,0x03,
    0x1A,0x66, 0x17,0x03, 0x19,0x0D, 0x19,0x14, 0x1A,0x03,
    0x1B,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x03, 0x20,0x66,
    0x1F,0x03, 0x1B,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x03,
    0x20,0x66, 0x1F,0x03, 0x20,0x03, 0x21,0x02, 0x21,0x02,
    0x20,0x03, 0x1F,0x02, 0x1A,0x0D, 0x1A,0x02, 0x17,0x02,
    0x17,0x0D, 0x1A,0x03, 0x17,0x03, 0x19,0x0D, 0x19,0x14,
    0x17,0x03, 0x17,0x03, 0x16,0x04, 0x15,0x0E, 0x15,0x03,
    0x16,0x03, 0x17,0x0B, 0x17,0x0D, 0x18,0x0C, 0x16,0x0D,
    0x16,0x14, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x02,
    0x16,0x03, 0x16,0x16, 0x15,0x03, 0x17,0x03, 0x17,0x02,
    0x19,0x02, 0x19,0x03, 0x17,0x03, 0x19,0x03, 0x17,0x03,
    0x1A,0x02, 0x19,0x66, 0x17,0x02, 0x17,0x03, 0x19,0x03,
    0x1A,0x02, 0x16,0x02, 0x17,0x03, 0x19,0x66, 0x1A,0x15,
    0x17,0x03, 0x19,0x03, 0x1A,0x02, 0x21,0x02, 0x20,0x03,
    0x1F,0x02, 0x1B,0x0D, 0x1B,0x66, 0x19,0x03, 0x17,0x03,
    0x19,0x02, 0x17,0x0C, 0x16,0x14, 0x15,0x03, 0x15,0x03,
    0x16,0x03, 0x17,0x03, 0x19,0x02, 0x19,0x0D, 0x19,0x03,
    0x17,0x03, 0x19,0x03, 0x17,0x03, 0x1A,0x03, 0x19,0x02,
    0x17,0x0D, 0x17,0x02, 0x17,0x03, 0x19,0x03, 0x1A,0x02,
    0x1B,0x02, 0x17,0x03, 0x19,0x02, 0x1A,0x0D, 0x1A,0x01,
    0x1B,0x02, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1A,0x66,
    0x1B,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x03, 0x1B,0x02,
    0x1A,0x66, 0x1A,0x03, 0x1B,0x03, 0x1F,0x02, 0x1F,0x02,
    0x1A,0x03, 0x1F,0x02, 0x20,0x0D, 0x20,0x16, 0x1F,0x02,
    0x20,0x02, 0x21,0x03, 0x21,0x03, 0x21,0x03, 0x21,0x02,
    0x20,0x03, 0x1F,0x03, 0x1B,0x0D, 0x1F,0x03, 0x1B,0x0D,
    0x1A,0x66, 0x17,0x03, 0x19,0x0D, 0x19,0x14, 0x1F,0x03,
    0x20,0x03, 0x21,0x03, 0x21,0x03, 0x21,0x03, 0x21,0x03,
    0x21,0x02, 0x20,0x03, 0x1F,0x03, 0x1B,0x0D, 0x1F,0x03,
    0x1B,0x03, 0x1A,0x66, 0x17,0x03, 0x19,0x0D, 0x19,0x14,
    0x1A,0x03, 0x1B,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x03,
    0x20,0x66, 0x1F,0x03, 0x1B,0x03, 0x1F,0x03, 0x1B,0x03,
    0x1F,0x03, 0x20,0x66, 0x1F,0x03, 0x20,0x03, 0x21,0x02,
    0x21,0x02, 0x20,0x03, 0x1F,0x02, 0x1A,0x0D, 0x1A,0x02,
    0x17,0x02, 0x17,0x0D, 0x1A,0x03, 0x17,0x03, 0x19,0x0D,
    0x19,0x14, 0x17,0x03, 0x17,0x03, 0x16,0x04, 0x15,0x0E,
    0x15,0x03, 0x16,0x03, 0x17,0x0B, 0x17,0x0D, 0x18,0x0C,
    0x16,0x0D, 0x16,0x01, 0x1F,0x02, 0x20,0x02, 0x21,0x03,
    0x21,0x03, 0x21,0x03, 0x21,0x02, 0x20,0x03, 0x1F,0x03,
    0x1B,0x0D, 0x1F,0x03, 0x1B,0x0D, 0x1A,0x02, 0x17,0x03,
    0x19,0x0D, 0x19,0x14, 0x1F,0x03, 0x20,0x03, 0x21,0x03,
    0x21,0x03, 0x21,0x03, 0x21,0x03, 0x21,0x02, 0x20,0x03,
    0x1F,0x03, 0x1B,0x03, 0x1F,0x03, 0x1B,0x03, 0x1A,0x0D,
    0x1A,0x02, 0x17,0x03, 0x19,0x0D, 0x19,0x14, 0x1F,0x02,
    0x20,0x02, 0x21,0x03, 0x21,0x03, 0x21,0x03, 0x21,0x66,
    0x20,0x03, 0x1F,0x03, 0x1B,0x0D, 0x1F,0x03, 0x1B,0x0D,
    0x1A,0x66, 0x17,0x03, 0x19,0x0D, 0x19,0x00, 0x00,0x00
};


void rr_Delay()                        //延时闹铃
{
        if(rr>=1) {rr++;}
        if(rr >= rrt*1421) {rr=0;rt=1;}
}

void BLA_delay()                     //背光自动熄灭
{
        if(bt>=1) {bt++;}
        if(K1==0 || K2==0 || K3==0 || K4==0)
        {
                LCM_BLA=1;
                bt=1;
        }
        if(bt>2000)
        {
                LCM_BLA=0;
                bt=0;
        }
}

void R_Delay()                        //闹铃发出嘟嘟声
{
        if(rt>=1) {rt++;}
        if((rt/10%2)==0) {beep=1;}
        if((rt/10%2)==1) {beep=0;}
        if(rt >= rtt*300)
        {
                beep=1;
                rt=0;
        }
}

void ds_write(uchar add,uchar date)       //写DS12CR887的数据
{
        DS_CS=0;
        DS_DS=1;
        DS_RW=1;
        DS_AS=1;
        Ds_Bus=add;
        DS_AS=0;
        DS_RW=0;
        Ds_Bus=date;
        DS_RW=1;
        DS_AS=1;
        DS_CS=1;
}

//读取DS12CR887的数据
uchar ds_read(uchar add)
{
        uchar z;
        DS_CS=0;
        DS_RW=1;
        DS_DS=1;
        DS_AS=1;
        Ds_Bus=add;
        DS_AS=0;
        DS_DS=0;
    Ds_Bus=0xff;
        z=Ds_Bus;
        DS_DS=1;
        DS_AS=1;
        DS_CS=1;
        return z;
}

//DS12CR887初始化
void ds_int()
{
        DS_AS=0;
        DS_DS=0;
        DS_RW=0;
        ds_write(0x0a,0x20);//DS12CR887寄存器A功能设置,开启时钟振荡器
}

/*12864液晶显示屏并口驱动程序------------------------------------------------*/
//检查忙位(底层)
void chk_busy()
{
   LCM_RS=0;
   LCM_RW=1;
   LCM_EN=1;
   Lcd_Bus=0xff;
//   while((Lcd_Bus&0x80)==0x80);
   LCM_EN=0;
}

//写指令到LCD(底层)
void write_com(uchar cmdcode)
{
        chk_busy();
        LCM_RS=0;
        LCM_RW=0;
        LCM_EN=1;
        Lcd_Bus=cmdcode;
        Delay(5);
        LCM_EN=0;
        Delay(5);
}

//写数据到LCD(底层)
void write_data(uchar Dispdata)
{       
        chk_busy();
        LCM_RS=1;
        LCM_RW=0;
        LCM_EN=1;
        Lcd_Bus=Dispdata;
        Delay(5);
        LCM_EN=0;
        Delay(5);
}

//初始化LCD屏(被调用层)
void lcm_init()
{
   write_com(0x30);//选择8bit数据流
   Delay(5);
   write_com(0x0c);//开显示(无游标、不反白)
   Delay(5);
   write_com(0x01);//清除显示,并且设定地址指针为00H
   Delay(5);
}

void Disp_Img(unsigned char code *img)         //显示图片
{
        unsigned int j=0;
        unsigned char x,y,i;
       for(i=0;i<9;i+=8)
       for(y=0;y<32;y++)/*原来 为 y<26 ,上下两个半屏不能正常对接显示,导致显示的图片中间有空隙*/
         for(x=0;x<8;x++)
         {
                       write_com(0x36);//功能设置---8BIT控制界面,扩充指令集
            write_com(y+0x80);      //行地址
            write_com(x+0x80+i);   //列地址
            write_com(0x30);
            write_data(img);
            write_data(img);
         }            
}
//   图片公鸡
uchar code GM[]=
{
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x80,0x00,0x0F,0xFF,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0C,0x43,0x01,0x80,0x00,0x7F,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x19,0xFF,0x07,0x00,0x07,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0x3F,0xFC,0x1E,0x00,0x1F,0xFF,0xFF,0xFF,0x80,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xBF,0xFF,0xFC,0x00,0x7F,0xFC,0x00,0x7F,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0xF0,0x00,0xFF,0xC0,0x00,0x0F,0xE0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0xE0,0x03,0xFF,0xFF,0xFC,0x01,0xF0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xDF,0xFF,0xC0,0x07,0xFF,0xFF,0xFF,0x80,0xF0,0x00,0x00,0x00,
0x00,0x00,0x00,0x03,0xFF,0xFF,0x00,0x0F,0xFF,0xFF,0xFF,0xE0,0x38,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xF8,0x00,0x1F,0xFF,0xF0,0x03,0xF8,0x38,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xE0,0x00,0x3F,0xFF,0xFF,0xC0,0x7C,0x18,0x00,0x00,0x00,
0x00,0x00,0x00,0x04,0x7F,0xF0,0x00,0x3F,0xFF,0xFF,0xF8,0x1E,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xF8,0x00,0x7F,0xFF,0xFF,0xFE,0x0F,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xFF,0xFC,0x00,0xFF,0xFF,0xFF,0xFF,0x87,0x08,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,0x83,0x88,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xFF,0xC3,0x88,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xFE,0x01,0xFF,0xFF,0xFF,0xFF,0xE1,0x88,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xE1,0x88,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xF1,0x88,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFE,0x03,0xFF,0xFF,0xFF,0xFF,0xF3,0x08,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,0xFF,0xF2,0x10,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0x8F,0xFF,0xFF,0xFF,0xFF,0xF0,0x20,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x70,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F,0xFF,0x7F,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xBF,0xFF,0x7F,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0x7E,0x20,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0x3E,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x1F,0xFF,0xFF,0xFF,0xFF,0xCF,0xFF,0x3C,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xFF,0xFF,0xFF,0xFF,0xCF,0xFE,0x38,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0xFF,0xFF,0xFF,0xFF,0x8F,0xFE,0x38,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xFF,0xFF,0xFF,0xFF,0x8F,0xFE,0x30,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0x1F,0x7C,0x20,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x7F,0xFF,0xFF,0xFE,0x1E,0x78,0x00,0x40,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x3F,0xFF,0xFF,0xFE,0x1E,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x1F,0xFF,0xFF,0xDA,0x3C,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,0xF2,0x30,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0xFF,0xFF,0xF1,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xFE,0x7F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x7C,0x3F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x78,0x1F,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x72,0x07,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x70,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC0,0x03,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x40,0x04,0xD8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x0C,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x02,0x40,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x0C,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x38,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x0F,0xE2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
//图片小孩睡觉
uchar code GN[]=
{
0xFF,0xFF,0xFF,0xF3,0xFD,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF9,0xF3,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFC,0xC7,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF8,0x1F,0xFF,0xFF,0xFF,
0xFE,0x3F,0xFF,0xFC,0x0F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x3F,0xFF,0xFF,0xFF,
0xF8,0x1F,0xFF,0xFE,0x1F,0xFF,0xE0,0x01,0xFF,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0xFF,
0xF1,0xCF,0xFF,0xFE,0x1F,0xFF,0x01,0xE0,0x7F,0xFF,0xFF,0x00,0x7F,0xFF,0xFF,0xFF,
0xFD,0x5F,0xFF,0xFC,0x0F,0xFC,0x1E,0x7C,0x1F,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,
0xE0,0x17,0xFF,0xFC,0xCF,0xF8,0x60,0x0F,0x07,0xFF,0xFE,0x00,0xFF,0xFF,0xFF,0xFF,
0xE7,0x47,0xD7,0xF9,0xE7,0xF1,0x80,0x07,0xC3,0xFF,0xFC,0x01,0xFF,0xFF,0xFF,0xFF,
0xE7,0x07,0xAB,0xF7,0xFB,0xE2,0x00,0x0D,0x31,0xFF,0xF8,0x01,0xFF,0xFF,0xFF,0xFF,
0xF8,0x0F,0x41,0xEF,0xFD,0x84,0x00,0x18,0x08,0xFF,0xF8,0x01,0xFF,0xFD,0xFF,0xFF,
0xF9,0x9F,0x37,0xFF,0xFF,0x88,0x00,0x38,0x04,0x7F,0xF8,0x03,0xFF,0xF8,0xFF,0xFF,
0xFE,0x3F,0x29,0xFF,0xFF,0x10,0x00,0x34,0x02,0x3F,0xF8,0x03,0xFF,0xF8,0x7F,0xFF,
0xFF,0xFF,0xA3,0xF9,0xFF,0x20,0x00,0x62,0x01,0x1F,0xF8,0x03,0xFF,0xF0,0x3F,0xFF,
0xFF,0xFF,0xC3,0xE5,0xFC,0x40,0x00,0x92,0x00,0x9F,0xF8,0x03,0xFF,0xF1,0x3F,0xFF,
0xFF,0xFF,0xC7,0xEA,0xFC,0x40,0x00,0x8A,0x00,0x8F,0xFC,0x01,0xFF,0xF3,0x9F,0xFF,
0xFF,0xFF,0xFF,0xEA,0xF8,0x80,0x00,0x88,0x00,0x4F,0xFC,0x01,0xFF,0xE3,0xDF,0xFF,
0xFF,0xFF,0xFF,0xE8,0xF1,0x80,0x00,0x00,0x00,0x43,0xFE,0x00,0xFF,0xE1,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF1,0xC2,0x00,0x00,0x00,0x00,0x21,0xFF,0x00,0xFF,0xCC,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x85,0x07,0xC0,0x00,0x00,0x30,0xFF,0x80,0xFF,0xCC,0xFF,0xFF,
0xFF,0x3F,0xFF,0xFF,0x09,0x03,0xC0,0x00,0x00,0x2C,0x7F,0xC0,0x7F,0xC0,0xFF,0xFF,
0xFE,0x1F,0xFF,0xFF,0x1D,0x00,0x00,0x38,0x00,0x2A,0x3F,0xF0,0x3F,0xE1,0xFF,0xFF,
0xFE,0x0F,0xFF,0xFE,0x21,0x00,0x00,0x1E,0x00,0x21,0x1F,0xFC,0x1F,0xFF,0xFF,0xFF,
0xFE,0x47,0xFF,0xFE,0x29,0x00,0x00,0x06,0x00,0x2A,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFC,0x67,0xFF,0xFE,0x21,0x00,0x00,0x00,0x01,0xA0,0x8F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF0,0x7F,0xFF,0xFC,0x49,0x07,0x80,0x00,0x00,0x6A,0x87,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF3,0x3F,0xFF,0xFC,0x82,0x0C,0xC0,0xA0,0x00,0x40,0x4F,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF3,0x3F,0xFF,0xF8,0xAA,0x00,0x41,0xF0,0x00,0x6A,0xC7,0x0F,0x0F,0xFF,0xFF,0xFF,
0xF8,0x7F,0xFF,0xF9,0x02,0x00,0x01,0x18,0x00,0x80,0x8E,0x06,0x07,0xFF,0xFF,0x3F,
0xF8,0xFF,0xFF,0xF9,0xAA,0x00,0x00,0x08,0x00,0xAA,0xCE,0x06,0x07,0xFF,0xFF,0x1F,
0xFF,0xFF,0xFF,0xF2,0x02,0x00,0x00,0x00,0x01,0x80,0x4E,0x06,0x07,0xFF,0xFE,0x1F,
0xFF,0xFF,0xFF,0xF1,0xAA,0x00,0x00,0x00,0x07,0xAA,0x8E,0x0E,0x0F,0xFF,0xFE,0x0F,
0xFF,0xFF,0xFF,0xF2,0x01,0x00,0x80,0x00,0x01,0x00,0x9F,0x3E,0x7F,0xFF,0xFE,0x47,
0xFF,0xFF,0xF0,0x01,0xA8,0xC1,0x00,0x00,0x02,0xAA,0x8F,0x3E,0x7F,0xFF,0xFC,0x67,
0xFF,0xFE,0x00,0x02,0x03,0x21,0x00,0x00,0x04,0x01,0x1F,0x3E,0x7F,0xFF,0xF0,0x37,
0xFF,0xE0,0x0F,0xFF,0xF4,0x10,0x84,0x00,0x0A,0xAB,0x1F,0x3E,0x7F,0xFF,0xF3,0x3F,
0xFF,0x03,0xF8,0x01,0x08,0x08,0x78,0x00,0x30,0x01,0x3F,0x28,0x7F,0xFF,0xF3,0x3F,
0xFE,0x1E,0x04,0x88,0x48,0x07,0x80,0x00,0x4A,0xAA,0x3F,0x00,0x7F,0xFF,0xF0,0x3F,
0xFF,0xF0,0x00,0x00,0x04,0x08,0x7F,0x0F,0x80,0x04,0x7F,0x80,0xFF,0xFF,0xF8,0x7F,
0xFE,0x01,0x60,0xF0,0x04,0x30,0x21,0x94,0xEA,0xAC,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x07,0xFF,0xC8,0x03,0xC0,0x44,0x20,0x20,0x08,0xFF,0xFF,0x9F,0xFF,0xFF,0xFF,
0xFE,0x7C,0xFC,0x3F,0xA0,0x01,0x00,0x50,0x3A,0xB0,0xFF,0xFF,0x8F,0xFF,0xFF,0xFF,
0xFF,0xE0,0x78,0x2F,0xDC,0x00,0x00,0x10,0x18,0x21,0xFF,0xFF,0x0F,0xFF,0xFF,0xFF,
0xFF,0xE0,0xF8,0x1F,0x03,0xF0,0x00,0x08,0x1C,0x23,0xFF,0xFF,0x07,0xFF,0xFF,0xFF,
0xFF,0xE0,0xB8,0x1F,0x0A,0x0A,0x00,0x04,0x27,0x47,0xFF,0xFF,0x27,0xFF,0xFF,0xFF,
0xFF,0xF5,0xFC,0x3F,0x87,0x47,0xC0,0x03,0xE1,0xC1,0xFF,0xFE,0x33,0xFF,0xFF,0xFF,
0xFF,0x3F,0x86,0x78,0x8C,0x11,0x3E,0xF0,0x00,0x70,0xFF,0xF8,0x33,0xFF,0xFF,0xFF,
0xFE,0x1F,0x03,0xF0,0x9C,0x0C,0x97,0x7C,0x00,0x08,0x3F,0xF9,0x9B,0xFF,0xFF,0xFF,
0xFE,0x1E,0x03,0xE0,0xF8,0x07,0xE6,0xEF,0x81,0x07,0x1F,0xF9,0x9F,0xFF,0xFF,0xFF,
0xFE,0x1E,0x01,0xF0,0x3C,0x07,0xC0,0xEE,0x7F,0x80,0x8F,0xFC,0x3F,0xFF,0xFF,0xFF,
0xFF,0x3B,0xC3,0xF8,0x3C,0x07,0xC0,0xFF,0xE1,0xE0,0x47,0xFC,0x7F,0xFF,0xFF,0xFF,
0xFF,0xE0,0x63,0x0C,0x77,0x07,0xC0,0xF0,0x26,0x30,0xA3,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF0,0x3E,0x03,0xC1,0x0D,0xC0,0xF0,0x28,0x1C,0x11,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xE0,0x1C,0x03,0xC0,0x9C,0x21,0xF8,0x1E,0x06,0x08,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF0,0x1E,0x01,0x80,0x78,0x3F,0x88,0x3F,0x07,0x84,0x7F,0xFF,0xFF,0xFF,0xFF,
0xFF,0xF8,0x7E,0x03,0xC0,0xE0,0x1F,0x04,0xF1,0x8F,0xD2,0x3F,0xFF,0xFF,0xFF,0xFF,
0xFF,0x0C,0xCF,0x07,0xC0,0xF0,0x0E,0x07,0xC0,0xFF,0xE1,0x1F,0xFF,0xFF,0xFF,0xFF,
0xFE,0x07,0xC3,0xFE,0x70,0xF8,0x1F,0x03,0xC0,0x3C,0x30,0x8F,0xFF,0xFF,0xFF,0xFF,
0xFF,0x07,0x81,0xF8,0x39,0xEC,0x1F,0x03,0x80,0x78,0xB8,0x4F,0xFF,0xFF,0xFF,0xFF,
0xFE,0x07,0xC1,0xF8,0x1F,0x07,0xF1,0xC7,0xC0,0x64,0x3E,0x4F,0xFF,0xFF,0xFF,0xFF,
0xFE,0x0F,0x81,0xF0,0x3F,0x03,0xE0,0x7C,0x20,0xD0,0x08,0x4F,0xFF,0xFF,0xFF,0xFF,
0xFB,0x5F,0xC3,0xF0,0x1E,0x01,0xE0,0x3C,0x1F,0xC4,0x12,0x07,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xF8,0x3F,0x03,0xC0,0x7C,0x0F,0x01,0x52,0x27,0xFF,0xFF,0xFF,0xFF
};


//向LCM发送一个字符串,长度64字符之内。(被调用层)
//应用:lcm_w_word("您好!");
void lcm_w_word(uchar *s)
{
        while(*s>0)
        {                                       
            write_data(*s);
            s++;
    }
}

//写指令或数据(被调用层)
void lcm_w_test(bit i,uchar word)
{
        if(i == 0)
        {
                write_com(word);//写指令或数据(0,指令)
        }
        else
        {
                write_data(word);//写指令或数据(1,数据)
        }
}

//清屏函数
void lcm_clr(void)
{
        lcm_w_test(0,0x01);       
}

/*DS18B20驱动程序------------------------------------------------------------*/
//初始化ds1820函数
void Init_DS18B20(void)
{
        uchar x=0;
        DQ = 1;    //DQ复位
        Delay(8);//稍做延时
        DQ = 0;    //单片机将DQ拉低
        Delay(80); //精确延时 大于 480us
        DQ = 1;    //拉高总线
        Delay(14);
        x=DQ;      //稍做延时后 如果x=0则初始化成功 x=1则初始化失败
        Delay(20);
}

//读一个字节函数
uchar ReadOneChar(void)
{
        uchar i=0;
        uchar dat = 0;
        for (i=8;i>0;i--)
        {
                DQ = 0; // 给脉冲信号
                dat>>=1;
                DQ = 1; // 给脉冲信号
                if(DQ)
                dat|=0x80;
                Delay(4);
        }
        return(dat);
}

//写一个字节函数
void WriteOneChar(uchar dat)
{
        uchar i=0;
        for (i=8; i>0; i--)
        {
                DQ = 0;
                DQ = dat&0x01;
                Delay(5);
                DQ = 1;
                dat>>=1;
        }
}

//读取温度函数
uint ReadTemperature(void)
{
        uchar a=0;
        uchar b=0;
        uint t=0;
        float tt=0;
        Init_DS18B20();
        WriteOneChar(0xCC); // 跳过读序号列号的操作
        WriteOneChar(0x44); // 启动温度转换
        Init_DS18B20();
        WriteOneChar(0xCC); //跳过读序号列号的操作
        WriteOneChar(0xBE); //读取温度寄存器
        a=ReadOneChar();//读低8位
        b=ReadOneChar(); //读高8位
        t=b;
        t<<=8;
        t=t|a;
        tt=t*0.0625;
        t= tt*10+0.5; //放大10倍输出并四舍五入
        return(t);
}
// 节假日 提示
void days(void)
{
        lcm_w_test(0,0x98);
        if ( cen == 0x20 && year ==0x9 && month == 0x0 && date == 0x0 ){ lcm_w_word("Happy birthday!!");   if(hour==0x7 && min==0x0 && sec==0x0){Play(Music_happy,0,3,300);}}
       
        else
        {
                if ( month_moon == 0x0 && date_moon == 0x0 )   { lcm_w_word("制作者颜靖峰生日"); if(hour==0x7 && min==0x0 && sec==0x0){Play(Music_happy,0,3,300);}}
                else
                {
                if (month_moon== 0x1 && date_moon == 0x1 ){ lcm_w_word("    今日春节    ");}                                                
                if (month_moon== 0x1 && date_moon == 0x15 ){ lcm_w_word("元宵节快乐    "); }
                if (month_moon== 0x2 && date_moon == 0x2 ){ lcm_w_word("    青龙节      "); }
                if (month_moon== 0x5 && date_moon == 0x5 ){ lcm_w_word("    端午节      "); }       
                if (month_moon== 0x7 && date_moon == 0x7 ){ lcm_w_word("七七中国情人节"); }
                if (month_moon== 0x7 && date_moon == 0x15 ){ lcm_w_word("    中元节      "); }               
                if (month_moon== 0x8 && date_moon == 0x15 ){ lcm_w_word("中秋节快乐    "); }
                if (month_moon== 0x9 && date_moon == 0x9 ){ lcm_w_word("今日重阳节    "); }
                if (month_moon== 0x12 && date_moon == 0x8 ){ lcm_w_word("今日腊八节    "); }
                if (month_moon== 0x12 && date_moon == 0x15 ){ lcm_w_word("过小年      "); }
                if (month_moon== 0x12 && date_moon == 0x29 ){ lcm_w_word("腊月二十九    "); }
                if (month_moon== 0x12 && date_moon == 0x30 ){ lcm_w_word("大年三十(^o^) "); }

                if ( month == 0x1 && date ==0x1 ){ lcm_w_word("    元旦快乐    "); }//1月
                if ( month == 0x1 && date == 0x28 ){ lcm_w_word("世界麻风日    "); }
                  
                if ( month == 0x2 && date ==0x2 ){ lcm_w_word("世界湿地日    "); }//2月
                if ( month == 0x2 && date == 0x13 ){ lcm_w_word("明天情人节了"); }               
                if ( month == 0x2 && date == 0x14 ){ lcm_w_word("今天是情人节"); }
                                       
                if ( month == 0x3 && date ==0x1 ){ lcm_w_word("国际海豹日    "); }//3月               
                if ( month == 0x3 && date ==0x3 ){ lcm_w_word("全国爱耳日    "); }               
                if ( month == 0x3 && date ==0x8 ){ lcm_w_word("国际劳动妇女节"); }               
                if ( month == 0x3 && date == 0x12 ){ lcm_w_word("    植树节      "); }               
                if ( month == 0x3 && date == 0x14 ){ lcm_w_word("国际警察日    "); }               
                if ( month == 0x3 && date == 0x15 ){ lcm_w_word("消费者权益日"); }               
                if ( month == 0x3 && date == 0x17 ){ lcm_w_word("国际航海日    "); }               
                if ( month == 0x3 && date == 0x21 ){ lcm_w_word("世界森林日    "); }               
                if ( month == 0x3 && date == 0x22 ){ lcm_w_word("    世界水日    "); }               
                if ( month == 0x3 && date == 0x23 ){ lcm_w_word("世界气象日    "); }               
                if ( month == 0x3 && date == 0x24 ){ lcm_w_word("世界防治结核病日"); }
                               
                if ( month == 0x4 && date ==0x1 ){ lcm_w_word("愚人节小心上当"); }//4               
                if ( month == 0x4 && date ==0x7 ){ lcm_w_word("世界卫生日    "); }               
                if ( month == 0x4 && date ==0x8 ){ lcm_w_word("    复活节      "); }               
                if ( month == 0x4 && date == 0x13 ){ lcm_w_word("黑色星期五    "); }
                                 
                if ( month == 0x5 && date ==0x1 ){ lcm_w_word("五一国际劳动节"); }//5               
                if ( month == 0x5 && date ==0x4 ){ lcm_w_word("    青年节      "); }               
                if ( month == 0x5 && date ==0x8 ){ lcm_w_word("世界红十字日"); }               
                if ( month == 0x5 && date == 0x12 ){ lcm_w_word("国际护士节    "); }               
                if ( month == 0x5 && date ==0x5 ){ lcm_w_word("近日请注意母亲节"); }               
                if ( month == 0x5 && date == 0x15 ){ lcm_w_word("国际家庭日    "); }
                if ( month == 0x5 && date == 0x31 ){ lcm_w_word("世界无烟日    "); }               
                               
                if ( month == 0x6 && date ==0x1 ){ lcm_w_word("国际儿童节    "); }//6
                if ( month == 0x6 && date ==0x5 ){ lcm_w_word("世界环境日    "); }               
                if ( month == 0x6 && date == 0x26 ){ lcm_w_word("国际禁毒日    "); }               
                if ( month == 0x6 && date ==0x6 ){ lcm_w_word("全国爱眼日    "); }               
                if ( month == 0x6 && date == 0x13 ){ lcm_w_word("近日请注意父亲节"); }
                if ( month == 0x6 && date == 0x15 ){ lcm_w_word("近日请注意父亲节"); }
                              
                if ( month == 0x7 && date ==0x1 ){ lcm_w_word("七一党生日    "); }//7
                if ( month == 0x7 && date ==0x7 ){ lcm_w_word("抗日战争纪念日"); }
                if ( month == 0x7 && date == 0x11 ){ lcm_w_word("世界人口日    "); }
          
                if ( month == 0x8 && date ==0x1 ){ lcm_w_word("八一建军节    "); }//8
                if ( month == 0x8 && date ==0x8 ){ lcm_w_word("中国男子节    "); }
                if ( month == 0x8 && date == 0x15 ){ lcm_w_word("抗战胜利纪念日"); }
          
                if ( month == 0x9 && date == 0x10 ){ lcm_w_word("中国教师节    "); }//9
                if ( month == 0x9 && date == 0x18 ){ lcm_w_word("九一八事变纪念日"); }
                if ( month == 0x9 && date == 0x20 ){ lcm_w_word("国际爱牙日    "); }
                if ( month == 0x9 && date == 0x27 ){ lcm_w_word("世界旅游日    "); }
       
                if ( month == 0x10 && date ==0x1 ){ lcm_w_word("中国国庆节    "); }//10
                if ( month == 0x10 && date ==0x4 ){ lcm_w_word("世界动物日    "); }
                if ( month == 0x10 && date == 0x24 ){ lcm_w_word("    联合国日    "); }
                if ( month == 0x10 && date == 0x12 ){ lcm_w_word("明天是国际教师节"); }
                if ( month == 0x10 && date == 0x13 ){ lcm_w_word("国际教师节    "); }
       
                if ( month == 0x11 && date == 0x10 ){ lcm_w_word("世界青年节    "); }//11
                if ( month == 0x11 && date == 0x17 ){ lcm_w_word("世界学生节    "); }
       
                if ( month == 0x12 && date ==0x1 ){ lcm_w_word("世界艾滋病日"); }//12
                if ( month == 0x12 && date == 0x23 ){ lcm_w_word("明晚平安夜    "); }
                if ( month == 0x12 && date == 0x24 ){ lcm_w_word("今晚平安夜    "); }
                if ( month == 0x12 && date == 0x25 ){ lcm_w_word("    圣诞快乐    "); }
                if ( month == 0x12 && date == 0x31 ){ lcm_w_word("    明日新年    "); }
                }
        }
}

/*电子时钟在液晶屏上显示驱动程序---------------------------------------------*/
//往液晶屏填写 年 数据
void lcm_w_year(void)
{
        cen=ds_read(32);
        lcm_w_test(0,0x80);//在液晶屏上显示的位置
        lcm_w_test(1,(cen/16)+0x30);       
        lcm_w_test(1,cen%16+0x30);
        year=ds_read(9);
        lcm_w_test(0,0x81);//在LCM上的写入位置
        lcm_w_test(1,(year/16)+0x30);       
        lcm_w_test(1,year%16+0x30);
        lcm_w_test(0,0x82);
        lcm_w_word("农");
        lcm_w_test(0,0x84);
        lcm_w_word("年");
        nl();
}       

//往液晶屏填写 月 数据
void lcm_w_month(void)
{
        month=ds_read(8);
        lcm_w_test(0,0x94);        //月份在液晶屏上显示的位置
        if(month/16 != 0){lcm_w_test(1,(month/16)+0x30);}        //十位消隐
                else{lcm_w_test(1,0x20);}//十位消隐               
        lcm_w_test(1,month%16+0x30);
        lcm_w_test(0,0x95);//在LCM上的写入位置
        lcm_w_word("月");
        nl();
}

//将星期处理并送入液晶屏的指定区域显示
void lcm_w_day(void)
{
        uchar sel;
        day = ds_read(6);
        sel = ds_read(6);
        lcm_w_test(0,0x90);          
        lcm_w_word("星期");
        lcm_w_test(0,0x92);
        if(sel==7){lcm_w_word("日");}   
        if(sel==6){lcm_w_word("六");}   
        if(sel==5){lcm_w_word("五");}   
        if(sel==4){lcm_w_word("四");}   
        if(sel==3){lcm_w_word("三");}
        if(sel==2){lcm_w_word("二");}   
        if(sel==1){lcm_w_word("一");}
}

//往液晶屏填写 日 数据
void lcm_w_date(void)
{
        date=ds_read(7);
        lcm_w_test(0,0x96);        //日期在液晶屏上显示的位置
        if(date/16 != 0){lcm_w_test(1,(date/16)+0x30);}        //十位消隐
                else{lcm_w_test(1,0x20);}//十位消隐
        lcm_w_test(1,date%16+0x30);
        lcm_w_test(0,0x97);        //在LCM上的写入位置
        lcm_w_word("日");
        nl();                                       
}

//往液晶屏填写 小时 数据
void lcm_w_hour(void)
{
        hour=ds_read(4);//读取DS12CR887的小时
        lcm_w_test(0,0x88);        //小时在液晶屏上显示的位置
        lcm_w_test(1,(hour/16)+0x30);
        lcm_w_test(1,hour%16+0x30);                       
}

//往液晶屏填写 分钟 数据
void lcm_w_min(void)
{
        min=ds_read(2);//读取DS12CR887的分                               
        lcm_w_test(0,0x89);          //分钟在液晶屏上显示的位置
        lcm_w_test(1,0x3a);          //小时与分钟之间显示":"
        lcm_w_test(1,(min/16)+0x30);
        lcm_w_test(1,min%16+0x30);       
        lcm_w_test(1,0x3a);       //分钟与小时之间显示":"       
}

//往液晶屏填写 秒 数据
voidlcm_w_sec(void)
{
        uint i=0;
        uchar a=0,b=0,c=0;
        sec=ds_read(0);//读取DS12CR887的秒
        lcm_w_test(0,0x8b);                //秒钟在液晶屏上显示的位置
        lcm_w_test(1,(sec/16)+0x30);        //写十位//对10求余分解出十位               
        lcm_w_test(1,sec%16+0x30);        //写个位
        write_com(0x8c);
        if(r1_of==1 || r2_of==1){lcm_w_test(1,0x0e);}//闹铃开启状态

        lcm_w_test(0,0x8d);                //温度在液晶屏上显示的位置               
        i=ReadTemperature();//读温度并送显
        a=i/100;
        lcm_w_test(1,a+0x30);        //显示温度十位
        b=i/10-a*10;
        lcm_w_test(1,b+0x30);        //个位
        lcm_w_test(1,0x2e);       //"."
        c=i-a*100-b*10;
        lcm_w_test(1,c+0x30); //小数点位1位               
        lcm_w_word("℃");        //度C       
}

/*调整时间、日期程序---------------------------------------------------------*/
void Set_time(uchar sel)
{
        signed char address,item;
        signed char max,mini;
        lcm_w_test(0,0x98);
        lcm_w_word("调整");
        if(sel==6){lcm_w_word("分钟");address=2; max=59;mini=0;}
        if(sel==5){lcm_w_word("小时");address=4; max=23;mini=0;}
        if(sel==4){lcm_w_word("星期");address=6; max=7;mini=1;}
        if(sel==3){lcm_w_word("日期");address=7; max=31; mini=1;}
        if(sel==2){lcm_w_word("月份");address=8; max=12;mini=1;}
        if(sel==1){lcm_w_word("年份");address=9; max=99;mini=0;}
        if(sel==0){lcm_w_word("世纪");address=32; max=20; mini=19;}
       
        //读取DS12CR887某地址上的数值赋给item        
        item=ds_read(address);
        item=(item/16)*10+item%16;
        if(K3 == 0)//K3-加
        {
                item++;//数加 1
        }
        if(K4 == 0)//K4-减
        {
                item--;//数减 1
        }
        if(item>max)
                item=mini;//查看数值有效范围   
        if(item<mini)
                item=max;
        item=(item/10)*16+item%10;
       
        //将调整好的item值写入DS12CR887         
        ds_write(address,item);//+
        lcm_w_year();   //年
        lcm_w_month();        //月
        lcm_w_date();        //日
        lcm_w_day();        //星期
        lcm_w_hour();        //时
        lcm_w_min();        //
}

void lcm_ring()            //显示闹铃设置
{
        lcm_w_test(0,0x90);
        r1_h=ds_read(33);
        lcm_w_test(1,(r1_h/16)+0x30);
        lcm_w_test(1,r1_h%16+0x30);        //十位消隐
        lcm_w_test(0,0x91);               
        lcm_w_test(1,0x3a);
        r1_m=ds_read(34);
        lcm_w_test(1,(r1_m/16)+0x30);
        lcm_w_test(1,r1_m%16+0x30);
        lcm_w_test(0,0x94);        //月份在液晶屏上显示的位置
        r1_of=ds_read(35);
        if(r1_of==0) {lcm_w_word("关");}
        else {lcm_w_word("开");}

        lcm_w_test(0,0x88);
        r2_h=ds_read(36);
        lcm_w_test(1,(r2_h/16)+0x30);        //月份在液晶屏上显示的位置
        lcm_w_test(1,r2_h%16+0x30);        //十位消隐
        lcm_w_test(0,0x89);               
        lcm_w_test(1,0x3a);
        r2_m=ds_read(37);
        lcm_w_test(1,(r2_m/16)+0x30);
        lcm_w_test(1,r2_m%16+0x30);
        lcm_w_test(0,0x8c);        //月份在液晶屏上显示的位置
        r2_of=ds_read(38);
        if(r2_of==0) {lcm_w_word("关");}
        else {lcm_w_word("开");}

        lcm_w_test(0,0x98);
        rtt=ds_read(39);
        lcm_w_word("闹铃");
        lcm_w_test(1,(rtt/16)+0x30);
        lcm_w_test(1,(rtt%16)+0x30);        //十位消隐
       
        lcm_w_test(0,0x9c);               
        rrt=ds_read(40);
        lcm_w_word("延时");
        lcm_w_test(1,(rrt/16)+0x30);
        lcm_w_test(1,(rrt%16)+0x30);        //十位消隐       
}

void Set_ring(uchar sel)                //设置闹铃
{
        signed char address,item;
        signed char max,mini;
        lcm_w_test(0,0x80);
        lcm_w_word("设置闹铃");
        if(sel==7){lcm_w_word("延时");address=40; max=5;mini=0;}//分钟2
        if(sel==6){lcm_w_word("时间");address=39; max=3;mini=0;}//小时4
        if(sel==5){lcm_w_word("二开关");address=38; max=1;mini=0;}//分钟2
        if(sel==4){lcm_w_word("二分钟");address=37; max=59;mini=0;}//小时4
        if(sel==3){lcm_w_word("二小时");address=36; max=23; mini=0;}   //星期6   
        if(sel==2){lcm_w_word("一开关");address=35; max=1;mini=0;}//日期7
        if(sel==1){lcm_w_word("一分钟");address=34; max=59;mini=0;}//月份8
        if(sel==0){lcm_w_word("一小时");address=33; max=23; mini=0;} //年份9
        item=ds_read(address);
        item=(item/16)*10+item%16;
        lcm_ring();

        if(K3 == 0)//K3-加
        {
                item++;//数加 1
        }
        if(K4 == 0)//K4-减
        {
                item--;//数减 1
        }
        if(item>max)
                item=mini;//查看数值有效范围   
        if(item<mini)
                item=max;

        item=(item/10)*16+item%10;         
        ds_write(address,item);
        lcm_ring();
}

voidring(void)                         //闹铃
{
        r1_h=ds_read(33);
        r1_h=(r1_h/16)*10+r1_h%16;
        r1_m=ds_read(34);
        r1_m=(r1_m/16)*10+r1_m%16;
        r1_of=ds_read(35);
        r1_of=(r1_of/16)*10+r1_of%16;
        r2_h=ds_read(36);
        r2_h=(r2_h/16)*10+r2_h%16;
        r2_m=ds_read(37);
        r2_m=(r2_m/16)*10+r2_m%16;
        r2_of=ds_read(38);
        r2_of=(r2_of/16)*10+r2_of%16;
        rtt=ds_read(39);
        rtt=(rtt/16)*10+rtt%16;
        rrt=ds_read(40);
        rrt=(rrt/16)*10+rrt%16;
        if(r1_of==1 && r1_h==hour && r1_m==min && sec==00)
                {
                        bt=1;
                        LCM_BLA=1;
                        rt=1;
                        Play(Music_Girl,0,3,330);
                }
        if(r2_of==1 && r2_h==hour && r2_m==min && sec==00)
                {
                        bt=1;
                        LCM_BLA=1;
                        rt=1;
                        Play(Music_Girl,0,3,330);
                }
        rr_Delay();                        //         
        R_Delay();                        //
}

/*显示欢迎信息---------------------------------------------------------------*/
void welcome(void)
{                                                                  
        write_com(0x80);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)
        lcm_w_word("This production ");

        write_com(0x90);//第二行(如果是地址是:90H,即LCD的第二行的第一个位置显示)
        lcm_w_word("for my favourite");
       
        write_com(0x88);//第三行(如果是地址是:88H,即LCD的第二行的第一个位置显示)
        lcm_w_word("girl,which make");
       
        write_com(0x98);//第四行(如果是地址是:98H,即LCD的第二行的第一个位置显示)       
        lcm_w_word("it with my heart");       
}
void welcome2(void)
{                                                                  
        write_com(0x80);//第一行(如果是地址是:80H,即LCD的第一行的第一个位置显示)
        lcm_w_word("with my heart.");

        write_com(0x90);//第二行(如果是地址是:90H,即LCD的第二行的第一个位置显示)
        lcm_w_word("to __ by ONE421");
       
        write_com(0x88);//第三行(如果是地址是:88H,即LCD的第二行的第一个位置显示)
        lcm_w_word("2009.6");

        write_com(0x98);//第四行(如果是地址是:98H,即LCD的第二行的第一个位置显示)       
        lcm_w_word("Happy birthday!!");       
}

/********阳历转换阴历********************************************************************/

code uchar year_code={
                  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 date_code1={0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3};
code uint date_code2={0x111,0x130,0x14e};

bit c_moon;
data uchar year_moon,month_moon,date_moon,week;

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

void Conversion(bit c,uchar year,uchar month,uchar date)         //
{
    uchar temp1,temp2,temp3,month_p;
    uint temp4,table_addr;
    bit flag2,flag_y;
    temp1=year/16;   //BCD->hex 先把数据转换为十六进制
    temp2=year%16;
    year=temp1*10+temp2;
    temp1=month/16;
    temp2=month%16;
    month=temp1*10+temp2;
    temp1=date/16;
    temp2=date%16;
    date=temp1*10+temp2;
    //定位数据表地址
    if(c==0){                  
      table_addr=(year+0x64-1)*0x3;
    }
    else {
      table_addr=(year-1)*0x3;
    }

    temp1=year_code&0x60;
    temp1=_cror_(temp1,5);

    temp2=year_code&0x1f;

    if(temp1==0x1){
      temp3=temp2-1;
    }
    else{
      temp3=temp2+0x1f-1;      
    }

    if (month<10){
      temp4=date_code1+date-1;
    }
    else{
      temp4=date_code2+date-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_date(month_p,table_addr); //检查该农历月为大小还是小月,大月返回1,小月返回0
      flag_y=0;
      if(flag2==0)temp1=0x1d; //小月29天
      else temp1=0x1e; //大小30天
      temp2=year_code&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_date(month_p,table_addr);
            if(flag2==0)temp1=0x1d;
            else temp1=0x1e;
      }
      date=temp4+1;
    }
    else{//公历日在春节前使用下面代码进行运算
      temp3-=temp4;
      if (year==0x0){year=0x63;c=1;}
      else year-=1;
      table_addr-=0x3;
      month=0xc;
      temp2=year_code&0xf0;
      temp2=_cror_(temp2,4);
      if (temp2==0)month_p=0xc;
      else month_p=0xd; //

      flag_y=0;
      flag2=get_moon_date(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_date(month_p,table_addr);
            if(flag2==0)temp1=0x1d;
            else temp1=0x1e;
         }
      date=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=date/10;
    temp1=_crol_(temp1,4);
    temp2=date%10;
    date_moon=temp1|temp2;
}

void nl()                                             //
{
        unsigned char   yy1,yy2;
        if(cen==0x19){cen_m=1;}
        if(cen==0x20){cen_m=0;}
        Conversion(cen_m,year,month,date);
        lcm_w_test(0,0x85);
        lcm_w_test(1,month_moon/16+'0');
        lcm_w_test(1,month_moon%16+'0');
        lcm_w_test(1,'-');
        lcm_w_test(1,date_moon/16+'0');
        lcm_w_test(1,date_moon%16+'0');
        yy1=(year_moon/16)*10+year_moon%16;
        yy2=yy1%12;
        switch(yy2)
        {
          case 0: lcm_w_test(0,0x83);lcm_w_word("龙");
                break;
          case 1: lcm_w_test(0,0x83);lcm_w_word("蛇");
                break;
          case 2: lcm_w_test(0,0x83);lcm_w_word("马");
                break;
          case 3: lcm_w_test(0,0x83);lcm_w_word("羊");
                break;
          case 4: lcm_w_test(0,0x83);lcm_w_word("猴");
                break;
          case 5: lcm_w_test(0,0x83);lcm_w_word("鸡");
                break;
          case 6: lcm_w_test(0,0x83);lcm_w_word("狗");
                break;
          case 7: lcm_w_test(0,0x83);lcm_w_word("猪");
                break;
          case 8: lcm_w_test(0,0x83);lcm_w_word("鼠");
                break;
          case 9: lcm_w_test(0,0x83);lcm_w_word("牛");
                break;
          case 10: lcm_w_test(0,0x83);lcm_w_word("虎");
                break;
          case 11: lcm_w_test(0,0x83);lcm_w_word("兔");
                break;
        }
}

/*主程序---------------------------------------------------------------------*/
main()
{
        uchar e=0,r=0,t=0;
        K1=1;K2=1;K3=1;K4=1;                //
        rt=0;
        rr=0;
        InitialSound();                      //初始音乐
        beep=1;
        LCM_BLA=1;                        //背光灯开
        bt=1;
        ds_int();                         //初始化DS12CR887
        lcm_init();                     //初始化液晶显示器
        lcm_clr();                     //清屏
        welcome();                     //显示欢迎信息
        DelayM(3000);                     //显示停留3秒
        lcm_clr();
        welcome2();
//        Play(Music_happy,0,3,300);         //
        beep=1;                        //
        DelayM(421);
        lcm_clr();                        //
        Disp_Img(GN);               //调入一幅图画
        DelayM(4210);
        lcm_clr();                  //清屏
        while(1)                         //
        {
                if (w == 0 && r ==0 )        //正常走时
                {   
                        lcm_w_year();   //显示年
                        lcm_w_month();        //显示月
                        lcm_w_date();        //显示日
                        lcm_w_day();        //显示星期
                        lcm_w_hour();        //显示时
                        lcm_w_min();        //显示分
                        lcm_w_sec();        //显示秒
                        days();          //
                        BLA_delay();   //
                        ring();         //
                        if(hour==0x6 && min==0x30 && sec==0x0) {lcm_clr();Disp_Img(GM);DelayM(4210);lcm_clr();}//
                        if(hour==0x0 && min==0x0 && sec==0x0){lcm_clr();Disp_Img(GN);DelayM(4210);lcm_clr();}//
                }
                else {;}//否则启动调时或调铃
       
                if (K1 == 0) // 设置时间
          {
                  DelayM(20);           //按键消抖
                        if(K1 == 0 && w == 1 && r ==0)//当是调时状态 本键用于调整下一项
                        {
                                e++;
                                if (e >= 7 )
                                {
                                        e = 0;
                                }
                                Set_time(e);//调整                               
                        }                       
                        if(K1 == 0 && w == 0 && r ==0)//当是正常状态时就进入调时状态
                        {
                                lcm_clr();//清屏
                                w=1;          //进入调时                               
                                Set_time(e);//调整
                        }
                        if(K1 == 0 && w == 0 && r ==1)//当是正常状态时就进入调时状态
                        {
                                w = 0;//清屏
                                e = 0;                               
                                r = 0;
                                t = 0;
                                lcm_clr();
                        }
                     while(K1 == 0);//等待键松开
                }
       
                if (K2 == 0) // 当在调时状态时就退出调时
          {
                        DelayM(20);//按键消抖
                        if(K2 == 0 && w == 0 && r ==1)
                        {                               
                                t++;
                                if (t >= 8 )
                                {
                                        t = 0;
                                }
                Set_ring(t);
                        }
                        if(K2 == 0 && w == 0 && r ==0)
                        {                               
                                lcm_clr();//清屏
                                r=1;          //进入调时                               
                                Set_ring(t);//调整                                                                       
                        }
                        if(K2 == 0 && w == 1 && r ==0)
                        {                               
                                w = 0;          //退出调时
                                e = 0;                //"下一项"计数器清0
                                r = 0;
                                t = 0;
                                lcm_clr();
                                lcm_w_year();   //显示年
                                lcm_w_month();        //显示月
                                lcm_w_date();        //显示日
                                lcm_w_day();        //显示星期
                                lcm_w_hour();        //显示时
                                lcm_w_min();        //显示分
                                lcm_w_sec();        //显示秒
                                BLA_delay();
                        }
                        while(K2 == 0);//等待键松开
                }
       
                if (K3 == 0)//加调整
                {
                           DelayM(20);//按键消抖
                           if(K3 == 0 && w == 1 && r ==0)
                        {                               
                                Set_time(e);//调整
                        }
                           if(K3 == 0 && w == 0 && r ==1)
                        {                               
                                Set_ring(t);//调整
                        }
                           while(K3 == 0);//等待键松开
                }
       
                if (K4 == 0) //减调整
                {              
                           DelayM(20);//按键消抖
                           if(K4 == 0 && w == 1 && r ==0)
                        {                               
                                Set_time(e);//调整
                        }
                           if(K4 == 0 && w == 0 && r ==1)
                        {                               
                                Set_ring(t);//调整
                        }
                           while(K4 == 0);//等待键松开
                }
        }       
}
//调试
//走时,设时,温度,背光,光灯自动熄灭,闹铃设置,闹铃,生日提醒
//还差农历,生日歌
//全部完成

颜靖峰 发表于 2012-6-18 13:53:30

本帖最后由 颜靖峰 于 2012-6-18 13:56 编辑

如果可以请和我联系
QQ402067010

jeans888 发表于 2012-6-20 19:45:39

好资料啊,手上刚好有零件,有空也搞个玩下,谢谢分享呀!

jialidianzi 发表于 2012-6-21 14:45:27

嗯不错改天有空我也仿制一个

ssq040302119 发表于 2012-6-21 21:03:30

不错啊,看看能不能下载哟

m584233185 发表于 2012-6-28 23:52:23

做的挺好的,学习了
{:smile:}

cy_ygs 发表于 2012-6-30 13:25:25

不错,mark

liudaolunhui 发表于 2012-7-5 20:07:08

大哥呀,我多的就不说了!!!!!!!!!!

liudaolunhui 发表于 2012-7-5 20:07:39

下了呀,好资料,先顶一下!!!!!!!

loyoid 发表于 2012-7-5 21:26:19

好东西,支持一下

hzrobin 发表于 2012-7-9 22:44:40

楼主问问呀,我看你程序中用了1s的中断,然后你在1s中断中只是读了相应时间寄存器的值,并没有读C寄存器的值,清除标志位,你是怎么清除标志位的,是不是我理解错了,知道的朋友麻烦说说,不是只有复位和读C寄存器才能请标志位吗

颜靖峰 发表于 2012-7-18 19:37:11

http://www.amobbs.com/forum.php?mod=viewthread&tid=5161656&highlight=887是这位

261854681 发表于 2012-7-18 19:53:47

这个挺猛哪,哥们搞这个用子久时间呢

xwkm 发表于 2012-7-19 08:45:15

fwluck 发表于 2012-4-5 13:06 static/image/common/back.gif
喇叭加个盒子音会有很大不同。扣在盒子上都管用。

其实加一个LPF效果一样

aidianzio 发表于 2012-7-19 11:32:43

标记。谢谢分享

fangzhiping 发表于 2012-7-19 19:33:36

整的不错啊,只是我已经很久没焊东西了,现在又有点手痒了

旗心协力 发表于 2012-7-20 20:38:23

不错,{:victory:}多谢了,朋友!

bwb0518 发表于 2012-7-21 10:01:27

好,自己DIY一个

一地夏天 发表于 2012-7-24 09:25:37

好很好   不过我希望把它修改下在主界面上显示指针时钟

grandthree 发表于 2012-7-24 11:13:16

不知道情况怎么样 收藏了 再说

766465864 发表于 2012-7-24 16:46:07

good,mark~

cjt5132 发表于 2012-7-26 19:41:19

不错、、

robocon 发表于 2012-7-26 19:48:20

呵呵,,,加上去的东西好多啊
页: [1] 2
查看完整版本: STC89C516RD+DS12C887+DS18B20+TEA5767+TDA2822M+LCD12864多功能电子闹钟!