標(biāo)題: 全新STC12C5A60S2單片機(jī)+LCD19264大屏萬(wàn)年歷農(nóng)歷生肖節(jié)氣節(jié)日顯示+鬧鐘+溫濕度+臺(tái)燈 [打印本頁(yè)]

作者: 1860774xxxx    時(shí)間: 2022-12-26 15:24
標(biāo)題: 全新STC12C5A60S2單片機(jī)+LCD19264大屏萬(wàn)年歷農(nóng)歷生肖節(jié)氣節(jié)日顯示+鬧鐘+溫濕度+臺(tái)燈
本帖最后由 1860774xxxx 于 2022-12-26 15:28 編輯

這是舊版 退役拆解了



新版


與電路圖所示 共設(shè)置4個(gè)按鍵 短按開關(guān)臺(tái)燈 加減鍵調(diào)光 長(zhǎng)按進(jìn)入菜單

1.臺(tái)燈 加入PCA PWM 調(diào)光
STC12C5A60S2的PCA PWM非常好用 設(shè)置簡(jiǎn)單無(wú)極調(diào)節(jié) 0-255可調(diào)




2.加入3種時(shí)鐘字體
宋體字體


數(shù)碼字體


創(chuàng)意字體



3.新增平潤(rùn)年顯示 其他生肖農(nóng)歷公歷節(jié)氣





4.新增功能菜單


時(shí)鐘設(shè)置


2組鬧鐘設(shè)置 采用軟開關(guān) 并保全到EEPROM 調(diào)電數(shù)據(jù)不丟失


設(shè)置
時(shí)鐘字體 宋體 數(shù)碼 創(chuàng)意 3種選擇 默認(rèn) 數(shù)碼
按鍵燈 全亮模式 單點(diǎn)模式 2種選擇 默認(rèn) 全亮模式
背光 10秒 20秒 30秒 1分鐘 2分鐘 3分鐘 可調(diào) 時(shí)間到自動(dòng)關(guān)閉背光燈 默認(rèn)30秒
按鍵聲  默開
整點(diǎn)報(bào)時(shí) 起點(diǎn)6 7 8 9 10可調(diào)  止點(diǎn)18 19 20 21 22 23可調(diào)  默認(rèn) 開 8時(shí)-21時(shí)  意思是8時(shí)到21時(shí)范圍內(nèi)報(bào)時(shí) 否則免打擾以上數(shù)據(jù)設(shè)置后保全到EEPROM 數(shù)據(jù)不會(huì)丟失





下載前須知
固件版本在v7.1及以上可用



部分程序
#include <STC12C5A60S2.H>   //此文件中定義了單片機(jī)的一些特殊功能寄存器
#define uchar unsigned char //宏定義無(wú)符號(hào)字符形數(shù)據(jù)類型進(jìn)行聲明定義 定義名稱uchar 所占位數(shù)8位 范圍0~255
#define uint unsigned int   //宏定義無(wú)符號(hào)整形數(shù)據(jù)類型進(jìn)行聲明定義 定義名稱uint 所占位數(shù)16位 范圍0~65535

#include "Delay.h"         //全局通用延時(shí)頭文件
#include "LCD_ks0108ZK.h"  //屏字庫(kù) 適合ks0108控制器的12864屏/19264屏
#include "LCD_ks0108.h"    //屏驅(qū)動(dòng) 適合ks0108控制器的12864屏/19264屏
#include "ds3231.h"        //ds3231時(shí)鐘芯片驅(qū)動(dòng)
#include "rqzh.h"          //日期轉(zhuǎn)換
#include "dht11.h"         //DHT11濕度溫度驅(qū)動(dòng)
#include "STC12C5A60S2_EEPROM.h" //STC12C5A60S2內(nèi)部存儲(chǔ)驅(qū)動(dòng)

/*按鍵與按鍵燈*/
sbit anjian1LED=P2^7;  //按鍵燈1
sbit anjian1=P2^6;     //臺(tái)燈/設(shè)置按鍵
sbit anjian2LED=P2^5;  //按鍵燈2
sbit anjian2=P2^4;     //加按鍵
sbit anjian3LED=P2^3;  //按鍵燈3
sbit anjian3=P2^2;     //減按鍵
sbit anjian4LED=P2^1;  //按鍵燈4
sbit anjian4=P2^0;     //提出/關(guān)閉響鈴按鍵

sbit fmq=P3^2;         //有源蜂鳴器
sbit beiguangLED=P3^3; //屏幕背光


bit taidengLED; //臺(tái)燈開關(guān)變量 =1開燈 =0關(guān)燈
bit anjian1sf,anjian2_3sf,anjian4sf; //用于按鍵釋放標(biāo)記
bit qingpingsf;   //用于清屏釋放標(biāo)記
bit fb_shizwz,fb_nzwz,fb_szwz; //功能菜單頁(yè)面下的"時(shí)鐘""鬧鐘""設(shè)置"文字反白標(biāo)記 =1反白 =0取消反白
bit fbs_nian,fbs_yue,fbs_ri,fbs_shi,fbs_fen,fbs_miao; //設(shè)置時(shí)鐘時(shí) 年月日時(shí)分秒反白 =1反白 =0取消反白
bit nz1_kg,nz2_kg,nz1_xl,nz2_xl;  //鬧鐘1 鬧鐘2 開關(guān)變量 =1鬧鐘開 =0鬧鐘關(guān)  鬧鐘1 鬧鐘2 響鈴變量 =1響鈴 =0不響鈴
bit fb_nz1_shi,fb_nz1_fen,fb_nz1_kg,fb_nz2_shi,fb_nz2_fen,fb_nz2_kg;      //設(shè)置鬧鐘時(shí)分開關(guān)反白 =1反白 =0取消反白
bit xianshiyemian; //顯示頁(yè)面變量 =0時(shí)鐘頁(yè)面 =1功能一級(jí)菜單頁(yè)面
bit zdbs_kg,fb_zdbs_kg,zdbs;  //整點(diǎn)報(bào)時(shí)開關(guān) =1開 =0關(guān),反白整點(diǎn)報(bào)時(shí)開關(guān)   =1反白 =0取消反白
bit fb_zdbs_qd,fb_zdbs_zd; //整點(diǎn)報(bào)時(shí) 起點(diǎn)止點(diǎn)反白  =1反白 =0取消反白
bit fb_bgsc;  //背光時(shí)長(zhǎng)反白 =1反白 =0取消反白
bit jdms,fb_jdms; //鍵燈模式變量 鍵燈模式反白  =1反白 =0取消反白
bit fb_shizhongzt; //時(shí)鐘字體變量反白=1反白 =0取消反白
bit anjiansy_kg,fb_anjiansy; //按鍵聲音開關(guān) =1開 =0關(guān)  按鍵聲音反白標(biāo)志   =1反白 =0取消反白 按鍵聲音釋放

uchar LED_mun;    //臺(tái)燈調(diào)光變量
uchar shizhongzt; //時(shí)鐘字體變量
uchar shezhixx;  //設(shè)置選項(xiàng)變量
uchar zdbs_qd,zdbs_zd;   //整點(diǎn)報(bào)時(shí)允許范圍 起點(diǎn)止點(diǎn)變量
uchar shezhiym;    //二級(jí)菜單頁(yè)面 =0鐘時(shí)設(shè)置頁(yè)面 =1鬧鐘設(shè)置頁(yè)面 =2設(shè)置頁(yè)面
uchar anjianjsbl;  //按鍵計(jì)數(shù)變量 實(shí)現(xiàn)長(zhǎng)按短按功能
uchar gncdym;      //功能菜單頁(yè)面選項(xiàng)變量
uchar shizhongsz;  //時(shí)鐘設(shè)置選項(xiàng)變量
uchar nz1_shi,nz1_fen,nz2_shi,nz2_fen,nz1_fen_Stop,nz2_fen_Stop; //鬧鐘1 鬧鐘2 變量
uchar naozhongsz;  //鬧鐘設(shè)置選項(xiàng)變量  
uchar pingbgjs,miaojs,miaomun,bgsc; //用于屏背光自動(dòng)控制定時(shí)計(jì)數(shù)標(biāo)志

uchar naozhonglx,anjians; //鬧鐘鈴響計(jì)數(shù)變量   按鍵計(jì)數(shù)變量

/*按鍵功能函數(shù)*/
void anjiangn()
{
        /*按鍵1臺(tái)燈與功能按鍵 */
        if(anjian1==0) //判斷按鍵是否按下
        {
                if(jdms==1)anjian1LED=0; //按鍵燈1單點(diǎn)模式
               
                if(xianshiyemian==0) //以下操作在時(shí)鐘頁(yè)面有效
                {
                        if(anjianjsbl<=100)anjianjsbl++; //給按鍵計(jì)數(shù)變量設(shè)置最大范圍值 范圍內(nèi)anjianjsbl++  否則停止anjianjsbl++
                        if(anjianjsbl>=20) //長(zhǎng)按約大于3秒
                        {
                                if(qingpingsf==0)ClearDisplay(); //LCD清屏
                          xianshiyemian=1;  //進(jìn)入功能菜單頁(yè)面
                                qingpingsf=1;    //釋放LCD清屏 防止一直清屏         
                        }
                }
                else  //xianshiyemian=1已進(jìn)入功能菜單頁(yè)面  以下操作在功能菜單頁(yè)面有效
                {        
                        if(anjian1sf==0) //給與限制條件 每次操作只允許運(yùn)行一次
                        {
                                if(shezhiym==0) //功能菜單頁(yè)面
                                {
                                  switch(gncdym) //功能菜單頁(yè)面選項(xiàng)變量
          {
                  case 1:if(qingpingsf==0)ClearDisplay();shezhiym=1;qingpingsf=1;break;  //進(jìn)入二級(jí)菜單時(shí)鐘設(shè)置頁(yè)面
                                          case 2:if(qingpingsf==0)ClearDisplay();shezhiym=2;qingpingsf=1;break;  //進(jìn)入二級(jí)菜單鬧鐘設(shè)置頁(yè)面
                                          case 3:if(qingpingsf==0)ClearDisplay();shezhiym=3;qingpingsf=1;break;  //進(jìn)入二級(jí)菜單設(shè)置頁(yè)面
                                  }
                          }
                                else if(shezhiym==1) //進(jìn)入二級(jí)菜單時(shí)鐘設(shè)置頁(yè)面
                                {
                                  shizhongsz++; //時(shí)鐘 秒分時(shí)日月年 設(shè)置選項(xiàng)變量
                                        if(shizhongsz==7)shizhongsz=1;        
                                }
                          else if(shezhiym==2) //進(jìn)入二級(jí)菜單鬧鐘設(shè)置頁(yè)面
                                {
                                        naozhongsz++; //鬧鐘1分時(shí)開關(guān) 鬧鐘2分時(shí)開關(guān) 設(shè)置選項(xiàng)變量
                                        if(naozhongsz==7)naozhongsz=1;
                                }
                                else //進(jìn)入二級(jí)菜單設(shè)置頁(yè)面
                                {
                                        shezhixx++;  //設(shè)置選項(xiàng)變量
                                  if(shezhixx==8)shezhixx=1;
                                }
                                       
                          anjian1sf=1; //完成操作按鍵1釋放 等待下一次執(zhí)行
                        }                                 
          }        
        }
        else  //短按開關(guān)臺(tái)燈
        {
                if(xianshiyemian==0) //以下操作在時(shí)鐘頁(yè)面有效
                {
            if(anjianjsbl>0&&anjianjsbl<15)taidengLED=~taidengLED; //當(dāng)時(shí)間小于約3秒 臺(tái)燈開關(guān)
            anjianjsbl=0;  //完成操作按鍵計(jì)數(shù)復(fù)位清零
                }  
                if(jdms==1)anjian1LED=1;   //松手關(guān)閉按鍵1燈
                qingpingsf=0;  //完成操作清屏釋放標(biāo)記復(fù)位清零
                anjian1sf=0;   //完成操作按鍵1釋放標(biāo)記復(fù)位清零
        }
         
        
        /*按鍵2加與按鍵3減按鍵*/
        if(anjian2==0||anjian3==0) //判斷按鍵是否按下
        {
                if(jdms==1)
                {
                        if(anjian2==0)anjian2LED=0; //按鍵燈2單點(diǎn)模式
                        if(anjian3==0)anjian3LED=0; //按鍵燈3單點(diǎn)模式
                }
               
        
                if(xianshiyemian==0)
                {
                        if(anjian2==0)
                        {
                          if(LED_mun<255)LED_mun=LED_mun+5; //臺(tái)燈調(diào)光加
                                Delay_ms(10); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                        }
                        if(anjian3==0)
                        {
                          if(LED_mun>10)LED_mun=LED_mun-5;  //臺(tái)燈調(diào)光減
                                Delay_ms(10); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                        }
                }
                else //以下操作在功能菜單頁(yè)面有效
                {
                  if(shezhiym==0) //功能菜單頁(yè)面
                  {
                          if(anjian2_3sf==0) //給與限制條件 每次操作只允許運(yùn)行一次
                          {
                                  if(anjian2==0)if(gncdym<3)gncdym=gncdym+1;else(gncdym=1); //功能菜單頁(yè)面 功能菜單頁(yè)面選項(xiàng)變量 ++
                                        if(anjian3==0)if(gncdym>1)gncdym=gncdym-1;else(gncdym=3); //功能菜單頁(yè)面 功能菜單頁(yè)面選項(xiàng)變量 --
                                  anjian2_3sf=1; //完成操作按鍵釋放
                          }
                  }
                  else if(shezhiym==1) //時(shí)鐘設(shè)置頁(yè)面
                  {
                                switch(shizhongsz)
        {
                case 1:if(anjian2==0)if(miao<59)miao=miao+1;else(miao=0); //調(diào)整秒+
                                               if(anjian3==0)if(miao>0)miao=miao-1;else(miao=59); //調(diào)整秒-1
                                               Ds3231Init();  //停止時(shí)鐘 調(diào)整時(shí)鐘數(shù)據(jù)寫入ds3231
                                   Delay_ms(200); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                                               break;  
                                       
                case 2:if(anjian2==0)if(fen<59)fen=fen+1;else(fen=0); //調(diào)整分+
                                               if(anjian3==0)if(fen>0)fen=fen-1;else(fen=59); //調(diào)整分-1
                                               Ds3231Init();  //停止時(shí)鐘 調(diào)整時(shí)鐘數(shù)據(jù)寫入ds3231
                                   Delay_ms(200); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                                               break;
                                       
                                        case 3:if(anjian2==0)if(shi<23)shi=shi+1;else(shi=0);  //調(diào)整時(shí)+1
                                               if(anjian3==0)if(shi>0)shi=shi-1;else(shi=23); //調(diào)整時(shí)-1
                                               Ds3231Init();  //停止時(shí)鐘 調(diào)整時(shí)鐘數(shù)據(jù)寫入ds3231
                                   Delay_ms(200); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                                               break;
                                       
                                        case 4:if(yue==2)
                                               {
                                                                         if(nian_r==0) //閏年
                                                                         {
                                                                                      /*...如果是閏年2月只有29天.....*/
                                                                           if(anjian2==0)if(ri<29)ri=ri+1;else(ri=1);        //調(diào)整日+1
                                                                                 if(anjian3==0)if(ri>1)ri=ri-1;else(ri=29);        //調(diào)整日-1
                                                                         }
                                                                         else //平年
                                                                         {
                                                                                     /*....如果是平年2月只有28天.....*/
                                                                           if(anjian2==0)if(ri<28)ri=ri+1;else(ri=1);        //調(diào)整日+1
                                                                                 if(anjian3==0)if(ri>1)ri=ri-1;else(ri=28);        //調(diào)整日-1
                                                                         }
                                                                 }
                                                                 else
                                                                 {
                                                                         if(yue_dx==0) //大月
                                                                         {
                                                                                     /*1,3,5,7,8,10,12月有31天 為大月*/
                                                                           if(anjian2==0)if(ri<31)ri=ri+1;else(ri=1); //調(diào)整日+1
                                                                                 if(anjian3==0)if(ri>1)ri=ri-1;else(ri=31); //調(diào)整日-1
                                                                         }
                                                                         else //小月
                                                                         {     /*4,6,9,11月只有30天 為小月*/
                                                                           if(anjian2==0)if(ri<30)ri=ri+1;else(ri=1);        //調(diào)整日+1
                                                                                 if(anjian3==0)if(ri>1)ri=ri-1;else(ri=30);        //調(diào)整日-1
                                                                         }
                                                                 }
                                                                 rilijs();      //日歷自動(dòng)計(jì)算函數(shù)
                                               Ds3231Init();  //停止時(shí)鐘 調(diào)整時(shí)鐘數(shù)據(jù)寫入ds3231
                                   Delay_ms(200); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                                               break;
                                                                 
                                        case 5:if(anjian2==0)if(yue<12)yue=yue+1;else(yue=1);         //調(diào)整月+1
                                               if(anjian3==0)if(yue>1)yue=yue-1;else(yue=12); //調(diào)整月-1
                                                                 rilijs();      //日歷自動(dòng)計(jì)算函數(shù)
                                               Ds3231Init();  //停止時(shí)鐘 調(diào)整時(shí)鐘數(shù)據(jù)寫入ds3231
                                   Delay_ms(200); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                                               break;               
                                                                 
          case 6:if(anjian2==0)if(nian<99)nian=nian+1;else(nian=0);  //調(diào)整年+1
                                               if(anjian3==0)if(nian>0)nian=nian-1;else(nian=99); //調(diào)整年-1
                                                                 rilijs();      //日歷自動(dòng)計(jì)算函數(shù)
                                               Ds3231Init();  //停止時(shí)鐘 調(diào)整時(shí)鐘數(shù)據(jù)寫入ds3231
                                   Delay_ms(200); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                                               break;         
        }
            }
                        else if(shezhiym==2) //鬧鐘設(shè)置頁(yè)面
                        {
                                switch(naozhongsz)
                                {
                                  case 1:if(anjian2==0)nz1_kg=1; //調(diào)整鬧鐘1開
                                               if(anjian3==0)nz1_kg=0; //調(diào)整鬧鐘1關(guān)
                                               break;
          case 2:if(anjian2==0)if(nz1_fen<59)nz1_fen=nz1_fen+1;else(nz1_fen=0); //調(diào)整鬧鐘1分+
                                               if(anjian3==0)if(nz1_fen>0)nz1_fen=nz1_fen-1;else(nz1_fen=59); //調(diào)整鬧鐘1分-
                                   Delay_ms(200); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                                               break;        
          case 3:if(anjian2==0)if(nz1_shi<23)nz1_shi=nz1_shi+1;else(nz1_shi=0); //調(diào)整鬧鐘1時(shí)+
                                               if(anjian3==0)if(nz1_shi>0)nz1_shi=nz1_shi-1;else(nz1_shi=23); //調(diào)整鬧鐘1時(shí)-
                                   Delay_ms(200); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                                               break;        
          case 4:if(anjian2==0)nz2_kg=1; //調(diào)整鬧鐘2開
                                               if(anjian3==0)nz2_kg=0; //調(diào)整鬧鐘2關(guān)
                                               break;
          case 5:if(anjian2==0)if(nz2_fen<59)nz2_fen=nz2_fen+1;else(nz2_fen=0); //調(diào)整鬧鐘2分+
                                               if(anjian3==0)if(nz2_fen>0)nz2_fen=nz2_fen-1;else(nz2_fen=59); //調(diào)整鬧鐘2分-
                                   Delay_ms(200); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                                               break;        
          case 6:if(anjian2==0)if(nz2_shi<23)nz2_shi=nz2_shi+1;else(nz2_shi=0); //調(diào)整鬧鐘2時(shí)+
                                               if(anjian3==0)if(nz2_shi>0)nz2_shi=nz2_shi-1;else(nz2_shi=23); //調(diào)整鬧鐘2時(shí)-
                                   Delay_ms(200); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                                               break;                                       
                                }   
                        }
                        else //設(shè)置選項(xiàng)頁(yè)面
                        {
                          switch(shezhixx)
                                {
                                                /*時(shí)鐘字體設(shè)置*/
                                  case 1:if(anjian2==0)
                                               {
                                                                         if(anjian2_3sf==0) //給與限制條件 每次操作只允許運(yùn)行一次
                                                                         {
                                                                           if(shizhongzt<2)shizhongzt=shizhongzt+1;else(shizhongzt=0); //時(shí)鐘字體選項(xiàng)+
                                                                                 anjian2_3sf=1; //完成操作按鍵釋放
                                                                         }
                                                                 }
                                               
                                                                 if(anjian3==0)
                                               {
                                                                         if(anjian2_3sf==0) //給與限制條件 每次操作只允許運(yùn)行一次
                                                                         {
                                                                           if(shizhongzt>0)shizhongzt=shizhongzt-1;else(shizhongzt=2); //時(shí)鐘字體選項(xiàng)-
                                                                                 anjian2_3sf=1; //完成操作按鍵釋放
                                                                         }
                                                                 }
                                               break;
                                                                 
                                                /*鍵燈模式設(shè)置*/
                                  case 2:if(anjian2==0)jdms=1; //單點(diǎn)模式
                                               if(anjian3==0)jdms=0; //全亮模式
                                               break;
                                       
                                              /*背光時(shí)長(zhǎng)設(shè)置*/
                                        case 3:if(anjian2==0)
                                               {
                                                                         if(anjian2_3sf==0) //給與限制條件 每次操作只允許運(yùn)行一次
                                                                         {
                                                                           if(bgsc<5)bgsc=bgsc+1;else(bgsc=0); //時(shí)鐘字體選項(xiàng)+
                                                                                 anjian2_3sf=1; //完成操作按鍵釋放
                                                                         }
                                                                 }
                                                                 if(anjian3==0)
                                               {
                                                                         if(anjian2_3sf==0) //給與限制條件 每次操作只允許運(yùn)行一次
                                                                         {
                                                                           if(bgsc>0)bgsc=bgsc-1;else(bgsc=5); //時(shí)鐘字體選項(xiàng)-
                                                                                 anjian2_3sf=1; //完成操作按鍵釋放
                                                                         }
                                                                 }
                                               break;
                                                                 
                                                                         /*按鍵聲音設(shè)置*/
                                  case 4:if(anjian2==0)anjiansy_kg=1; //按鍵聲音開
                                               if(anjian3==0)anjiansy_kg=0; //按鍵聲音關(guān)
                                               break;
                                                                 
                                                                                            /*整點(diǎn)報(bào)時(shí)聲音設(shè)置*/
                                                                      /*允許時(shí)間 起點(diǎn)6-11可調(diào)  止點(diǎn)18-23可調(diào)*/
                                  case 5:if(anjian2==0)zdbs_kg=1; //整點(diǎn)報(bào)時(shí)開
                                               if(anjian3==0)zdbs_kg=0; //整點(diǎn)報(bào)時(shí)關(guān)
                                               break;
                                                                 
                                        case 6:if(anjian2==0)if(zdbs_qd<11)zdbs_qd=zdbs_qd+1; //調(diào)整整點(diǎn)報(bào)時(shí)起點(diǎn)+
                                               if(anjian3==0)if(zdbs_qd>6)zdbs_qd=zdbs_qd-1;//調(diào)整整點(diǎn)報(bào)時(shí)起點(diǎn)-
                                   Delay_ms(200); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                                               break;        
                                                                 
                                        case 7:if(anjian2==0)if(zdbs_zd<23)zdbs_zd=zdbs_zd+1; //調(diào)整整點(diǎn)報(bào)時(shí)止點(diǎn)+
                                               if(anjian3==0)if(zdbs_zd>18)zdbs_zd=zdbs_zd-1;//調(diào)整整點(diǎn)報(bào)時(shí)止點(diǎn)-
                                   Delay_ms(200); //延時(shí)一段時(shí)間 如果還沒松開 繼續(xù)加減
                                               break;
                                }
                        }
                        
    }                 
         }
         else
         {
                 if(jdms==1)
                 {
                   anjian2LED=1;   //松手關(guān)閉按鍵2燈
                   anjian3LED=1;   //松手關(guān)閉按鍵3燈
                 }
                 anjian2_3sf=0; //完成操作按鍵2與按鍵3釋放標(biāo)記復(fù)位清零 等待下一次執(zhí)行
         }
        
         
        /*按鍵4返回與關(guān)閉響鈴按鍵*/
        if(anjian4==0) //判斷按鍵是否按下
        {
          if(jdms==1)anjian4LED=0; //按鍵燈4單點(diǎn)模式
                        
                if(anjian4sf==0) //給與限制條件 每次操作只允許運(yùn)行一次
                {   
                        if(xianshiyemian==0) //在時(shí)鐘頁(yè)面中操作
                        {
                                if(nz1_xl==1||nz2_xl==1) //鬧鐘1或者2正在響鈴時(shí)
                                {
                                         nz1_xl=0;  //按下關(guān)閉鬧鐘1響鈴
                                         nz2_xl=0;  //按下關(guān)閉鬧鐘2響鈴
                                }
                        }
                        else  //在功能菜單頁(yè)面中操作
                        {
                                if(shezhiym==0) //返回時(shí)鐘頁(yè)面處理
                                {
                                         /*返回時(shí)鐘頁(yè)面前操作*/
                                        fb_shizwz=0;    //時(shí)鐘文字取消反白
                                        fb_nzwz=0;      //鬧鐘文字取消反白
                                        fb_szwz=0;      //設(shè)置文字取消反白
                                        gncdym=0;       //功能菜單頁(yè)面選項(xiàng)變量復(fù)位清零
                                  ClearDisplay(); //LCD清屏
                                        /*完成操作*/
                                  xianshiyemian=0; //返回時(shí)鐘頁(yè)面
                                }
                                else  //返回功能菜單頁(yè)面處理
                                {
                                /*返回功能菜單頁(yè)面前操作*/
                                        if(shezhiym==1&&shizhongsz!=0)shizhongsz=0;   //在退出時(shí)鐘設(shè)置選項(xiàng)變量復(fù)位清零
                                  if((shezhiym==2&&naozhongsz!=0)||(shezhiym==3&&shezhixx!=0)) //在退出鬧鐘設(shè)置與設(shè)置選項(xiàng)頁(yè)面前 把設(shè)置好的數(shù)據(jù)保存到EEPROM1扇區(qū)
                                        {
                                                IapEraseSector(EEPROM_0);         //EEPROM_1扇區(qū)擦除 地址0x0000-0x01ff
                              IapProgramByte(EEPROM_0,nz1_kg);  //存儲(chǔ)鬧鐘1開關(guān)狀態(tài)到EEPROM_0 地址0x0000
                                          IapProgramByte(EEPROM_1,nz1_fen); //存儲(chǔ)鬧鐘1分到EEPROM_1 地址0x0001
                                          IapProgramByte(EEPROM_2,nz1_shi); //存儲(chǔ)鬧鐘1時(shí)到EEPROM_2 地址0x0002
                                                        
                                          IapProgramByte(EEPROM_3,nz2_kg);  //存儲(chǔ)鬧鐘2開關(guān)狀態(tài)到EEPROM_3 地址0x0003
                                                IapProgramByte(EEPROM_4,nz2_fen); //存儲(chǔ)鬧鐘2分到EEPROM_4 地址0x0004
                                          IapProgramByte(EEPROM_5,nz2_shi); //存儲(chǔ)鬧鐘2時(shí)到EEPROM_5 地址0x0005
                                                        
                                          IapProgramByte(EEPROM_6,shizhongzt);    //存儲(chǔ)時(shí)鐘字體到EEPROM_6 地址0x0006
                                                IapProgramByte(EEPROM_7,jdms);          //存儲(chǔ)鍵燈模式到EEPROM_7 地址0x0007
                                                IapProgramByte(EEPROM_8,bgsc);          //存儲(chǔ)背光時(shí)長(zhǎng)到EEPROM_8 地址0x0008
                                                IapProgramByte(EEPROM_9,anjiansy_kg);   //存儲(chǔ)按鍵聲音到EEPROM_9 地址0x0009
                                                IapProgramByte(EEPROM_0a,zdbs_kg);      //存儲(chǔ)整點(diǎn)報(bào)時(shí)開關(guān)到EEPROM_0a 地址0x000a
                                                IapProgramByte(EEPROM_0b,zdbs_qd);      //存儲(chǔ)整點(diǎn)報(bào)時(shí)起點(diǎn)到EEPROM_0b 地址0x000b
                                                IapProgramByte(EEPROM_0c,zdbs_zd);      //存儲(chǔ)整點(diǎn)報(bào)時(shí)止點(diǎn)到EEPROM_0c 地址0x000c
                                                        
                                                naozhongsz=0;   //鬧鐘設(shè)置選項(xiàng)變量復(fù)位清零
                                                shezhixx=0; //設(shè)置選項(xiàng)變量復(fù)位清零
                                        }
                                                
                                        ClearDisplay(); //LCD清屏
                                        /*完成操作*/
                                        shezhiym=0; //返回功能菜單頁(yè)面  
                                }
                        }
                        anjian4sf=1;  //完成操作按鍵4釋放
                }
        }
        else
        {
                anjian4sf=0; //完成操作按鍵4釋放標(biāo)記復(fù)位清零 等待下一次執(zhí)行
                if(jdms==1)anjian4LED=1;
        }
}

/*EEPROM讀出初始化*/
void EEPROM_AInit()
{
        /*方式一*/
        /*從未擦寫個(gè)的EEPROM數(shù)據(jù)是空白的 讀出也是錯(cuò)誤的!*/
  /*需要判斷EEPROM==0xff數(shù)據(jù)空白 如果數(shù)據(jù)是空白跳過(guò)EEPROM讀出*/
        if(IapReadByte(EEPROM_0)!=0xff)nz1_kg=IapReadByte(EEPROM_0);  //讀出EEPROM_0 鬧鐘1開關(guān)狀態(tài) 地址0x0000
        if(IapReadByte(EEPROM_1)!=0xff)nz1_fen=IapReadByte(EEPROM_1); //讀出EEPROM_1 鬧鐘1分?jǐn)?shù)據(jù) 地址0x0001
        if(IapReadByte(EEPROM_2)!=0xff)nz1_shi=IapReadByte(EEPROM_2); //讀出EEPROM_2 鬧鐘1時(shí)數(shù)據(jù) 地址0x0002
  if(IapReadByte(EEPROM_3)!=0xff)nz2_kg=IapReadByte(EEPROM_3);  //讀出EEPROM_3 鬧鐘2開關(guān)狀態(tài) 地址0x0003
        if(IapReadByte(EEPROM_4)!=0xff)nz2_fen=IapReadByte(EEPROM_4); //讀出EEPROM_4 鬧鐘2分?jǐn)?shù)據(jù) 地址0x0004
        if(IapReadByte(EEPROM_5)!=0xff)nz2_shi=IapReadByte(EEPROM_5); //讀出EEPROM_5 鬧鐘1時(shí)數(shù)據(jù) 地址0x0005
        
        /*方式二*/
        /*從未擦寫個(gè)的EEPROM數(shù)據(jù)是空白 需要變量重新初始化 也可以做為出廠默認(rèn)*/
        /*用戶自行設(shè)置后出廠默認(rèn)會(huì)直接跳過(guò)*/
        shizhongzt=IapReadByte(EEPROM_6);             //讀出EEPROM_6 時(shí)鐘字體狀態(tài) 地址0x0006
        if(IapReadByte(EEPROM_6)==0xff)shizhongzt=1;  //判斷時(shí)鐘字體數(shù)據(jù)是否空白 如果空白重新初始化 默認(rèn)數(shù)碼字體 否則數(shù)據(jù)不是空白直接跳過(guò)
        
        jdms=IapReadByte(EEPROM_7);             //讀出EEPROM_7 鍵燈模式狀態(tài) 地址0x0007
        if(IapReadByte(EEPROM_7)==0xff)jdms=0;  //判斷鍵燈模式數(shù)據(jù)是否空白 如果空白重新初始化 默認(rèn)全亮 否則數(shù)據(jù)不是空白直接跳過(guò)
        
        bgsc=IapReadByte(EEPROM_8);             //讀出EEPROM_8 背光時(shí)長(zhǎng)狀態(tài) 地址0x0008
        if(IapReadByte(EEPROM_8)==0xff)bgsc=2;  //判斷背光時(shí)長(zhǎng)數(shù)據(jù)是否空白 如果空白重新初始化 默認(rèn)30秒 否則數(shù)據(jù)不是空白直接跳過(guò)
        
        anjiansy_kg=IapReadByte(EEPROM_9);             //讀出EEPROM_9 按鍵聲音開關(guān)狀態(tài) 地址0x0009
        if(IapReadByte(EEPROM_9)==0xff)anjiansy_kg=1;  //判斷按鍵聲音數(shù)據(jù)是否空白 如果空白重新初始化 默認(rèn)開 否則數(shù)據(jù)不是空白直接跳過(guò)
        
        zdbs_kg=IapReadByte(EEPROM_0a);             //讀出EEPROM_0a 整點(diǎn)報(bào)時(shí)開關(guān)狀態(tài) 地址0x000a
        if(IapReadByte(EEPROM_0a)==0xff)zdbs_kg=1;  //判斷整點(diǎn)報(bào)時(shí)開關(guān)數(shù)據(jù)是否空白 如果空白重新初始化 默認(rèn)開 否則數(shù)據(jù)不是空白直接跳過(guò)
        
        zdbs_qd=IapReadByte(EEPROM_0b);             //讀出EEPROM_0b 整點(diǎn)報(bào)時(shí)開關(guān)狀態(tài) 地址0x000b
        if(IapReadByte(EEPROM_0b)==0xff)zdbs_qd=8;  //判斷整點(diǎn)報(bào)時(shí)起點(diǎn)數(shù)據(jù)是否空白 如果空白重新初始化 默認(rèn)起點(diǎn)8時(shí) 否則數(shù)據(jù)不是空白直接跳過(guò)
        
        zdbs_zd=IapReadByte(EEPROM_0c);             //讀出EEPROM_0c 整點(diǎn)報(bào)時(shí)開關(guān)狀態(tài) 地址0x000c
        if(IapReadByte(EEPROM_0c)==0xff)zdbs_zd=21;  //判斷整點(diǎn)報(bào)時(shí)止點(diǎn)數(shù)據(jù)是否空白 如果空白重新初始化 默認(rèn)止點(diǎn)21時(shí) 否則數(shù)據(jù)不是空白直接跳過(guò)
}


/*背光時(shí)長(zhǎng) 作為開機(jī)設(shè)置*/
void beiguangsc()
{
        switch(bgsc)
        {
                case 0:miaomun=10;break;   //10秒設(shè)置
                case 1:miaomun=20;break;   //20秒設(shè)置
                case 2:miaomun=30;break;   //30秒設(shè)置
                case 3:miaomun=60;break;   //1分鐘設(shè)置
                case 4:miaomun=120;break;  //2分鐘設(shè)置
                case 5:miaomun=180;break;  //3分鐘設(shè)置
        }
}

/*背光控制*/
void beiguangkz()
{
        if(taidengLED==1||anjian1==0||anjian2==0||anjian3==0||anjian4==0||nz1_xl==1||nz2_xl==1) //背光跟隨臺(tái)燈 如果臺(tái)燈開著 那么背光就一直亮 與任意鍵開屏背光
        {
          beiguangLED=0;  //開背光
                TR0=0;          //關(guān)閉定時(shí)器0
                pingbgjs=0;     //定時(shí)計(jì)數(shù)清零
    miaojs=0;                    //定時(shí)計(jì)數(shù)清零
        }
        else  //否則臺(tái)燈關(guān)閉下或者沒有按鍵操作下
        {
                if(beiguangLED==0)TR0=1;  // 打開定時(shí)器0 開始定時(shí)器計(jì)時(shí)
                else  //時(shí)間到了 背光關(guān)閉后
                {
                        TR0=0;      //關(guān)閉定時(shí)器0
                        pingbgjs=0; //定時(shí)計(jì)數(shù)清零
                        miaojs=0;   //定時(shí)計(jì)數(shù)清零
                }        
        }
}


/*鍵燈全亮模式  .....單點(diǎn)模式放在按鍵里操作*/
void jiandengmoshi()
{
        if(beiguangLED==0) //鍵燈跟隨背光 背光開鍵燈亮 背光關(guān)鍵燈滅
        {
                if(jdms==0) //如果是全亮模式
    {                        
                        anjian1LED=0; //按鍵燈1亮
                  anjian2LED=0; //按鍵燈2亮
                  anjian3LED=0; //按鍵燈3亮
                  anjian4LED=0; //按鍵燈4亮
                }
               
        }
        else //如果背光關(guān)了 按鍵燈也跟著關(guān)閉
        {
          anjian1LED=1; //按鍵燈1滅
                anjian2LED=1; //按鍵燈2滅
                anjian3LED=1; //按鍵燈3滅
                anjian4LED=1; //按鍵燈4滅
        }
}


/*DS3231時(shí)鐘初始化*/
void DS3231_szcqh()
{        
        uint niana;
        
        Ds3231ReadTime();  //讀取ds3231時(shí)間數(shù)據(jù)
        niana=nian+2000;
        
  if(niana<2020||yue==0||ri==0)  //若讀取的月日數(shù)據(jù)都為0則執(zhí)行以下程序 否則直接跳過(guò)此程序
  {
          nian=22;  //初始化年 22年
    yue=01;   //初始化月 1月
    ri=01;    //初始化日 1日
    zhou=06;  //初始化周 周6
    shi=12;   //初始化時(shí) 12時(shí)
    fen=00;   //初始化分 00分
    miao=00;  //初始化秒 00秒
                rilijs();     //日歷自動(dòng)計(jì)算函數(shù)
                Ds3231Init(); //把初始化好后的時(shí)間數(shù)據(jù)寫入Ds3231時(shí)鐘芯片
  }
}

/*鬧鐘對(duì)比*/
void naozhong()
{
        if(nz1_kg==1||nz2_kg==1)
        {
    /*鬧鐘開關(guān)圖標(biāo)顯示*/
          if(nz1_kg==1&&nz2_kg==0)Disp_16x16(8,0,0,ZM5_16x16[5]);      //如果鬧鐘1打開 顯示鬧鐘1圖標(biāo)
    else if(nz1_kg==0&&nz2_kg==1)Disp_16x16(8,0,0,ZM5_16x16[6]); //如果鬧鐘2打開 顯示鬧鐘2圖標(biāo)
    else if(nz1_kg==1&&nz2_kg==1)Disp_16x16(8,0,0,ZM5_16x16[7]); //如果鬧鐘1 鬧鐘2都打開 顯示鬧鐘1/2圖標(biāo)
          else Disp_16x16(8,0,0,ZM5_16x16[0]); //否則如果鬧鐘1或鬧鐘2關(guān)閉 取消顯示鬧鐘圖標(biāo)

          /*鬧鐘1對(duì)比*/
          if(nz1_kg==1) //如果鬧鐘1打開 開始鬧鐘對(duì)比
          {
            if(shi==nz1_shi&&fen==nz1_fen&&miao==0)
                  {
                          nz1_fen_Stop=nz1_fen+30;  //限制約束響鈴時(shí)間條件變量 若不手動(dòng)關(guān)閉響鈴 30分后自動(dòng)關(guān)閉響鈴
                          nz1_xl=1;   //時(shí)間到鬧鐘1響鈴
                  }
               
                  if(nz1_xl==1,shi==nz1_shi&&fen==nz1_fen_Stop)nz1_xl=0;  //限制約束響鈴時(shí)間到關(guān)閉響鈴 最多只允許響鈴30分鐘
          }
        
          /*鬧鐘2對(duì)比*/
          if(nz2_kg==1) //如果鬧鐘1打開 開始鬧鐘對(duì)比
          {
            if(shi==nz2_shi&&fen==nz2_fen&&miao==0)
                  {
                          nz2_fen_Stop=nz2_fen+30;  //限制約束響鈴時(shí)間條件變量 若不手動(dòng)關(guān)閉響鈴 30分后自動(dòng)關(guān)閉響鈴
                          nz2_xl=1; //時(shí)間到鬧鐘2響鈴
                  }
               
                  if(nz2_xl==1,shi==nz2_shi&&fen==nz2_fen_Stop)nz2_xl=0; //限制約束響鈴時(shí)間到關(guān)閉響鈴 最多只允許響鈴30分鐘
          }
  }
}


     /*整點(diǎn)報(bào)時(shí)*/
/*允許時(shí)間 起點(diǎn)6-11可調(diào)  止點(diǎn)18-23可調(diào)*/
/*在允許時(shí)間報(bào)時(shí) 否則不報(bào)時(shí)*/
/*例如:設(shè)置允許時(shí)間為8-21 可允許8時(shí)到21時(shí)內(nèi)報(bào)時(shí) */
void zhengdianbaoshi()
{
  if(zdbs_kg==1) //判斷整點(diǎn)報(bào)時(shí)是否打開
        {
          if(shi>=zdbs_qd&&shi<=zdbs_zd) //判斷報(bào)時(shí)時(shí)間是否在許可范圍
                {
                  if(fen==0&&miao==0) //如果時(shí)間=00分 =00秒 開啟報(bào)時(shí)
                         {
                                if(nz1_xl!=1||nz2_xl!=1)zdbs=1; //鬧鐘響時(shí)不允許報(bào)時(shí)
                        }
                        else(zdbs=0);   
                }
        }
}

/*蜂鳴器協(xié)調(diào) 采用定時(shí)器1控制蜂鳴器響應(yīng)時(shí)間與次數(shù)  包括鬧鐘鬧鐘鈴響 整點(diǎn)報(bào)時(shí)聲音 按鍵聲音*/
void fmqxt()
{
  /*鬧鐘1與鬧鐘2蜂鳴器響鈴程序 滴滴滴~ 3聲*/
          if(zdbs==1||nz1_xl==1||nz2_xl==1||anjiansy_kg==1&&(anjian1==0||anjian2==0||anjian3==0||anjian4==0))
          {
                        if(zdbs==1)fmq=0; //報(bào)時(shí)響聲時(shí)長(zhǎng)1秒 不需要定時(shí)器計(jì)數(shù)
            TR1=1; //開定時(shí)器1
          }
                else
                {
                        fmq=1; //關(guān)閉響鈴后 蜂鳴器停止響應(yīng)
                        TR1=0; //關(guān)定時(shí)器1
                        naozhonglx=0;
                        anjians=0;
                }
}

/**********************************
*函數(shù)名稱:PCA_Init(void)
*輸入    :無(wú)
*輸出    :無(wú)
*調(diào)用說(shuō)明:外部調(diào)用
*函數(shù)說(shuō)明:PWM模塊初始化
***********************************/
void PCA_Init()
{
        CCON = 0;                                //PCA初始化
        CMOD = 0x00;                        //空閑時(shí)不計(jì)數(shù),不產(chǎn)生中斷,時(shí)鐘源為Sysclk/12,PWM頻率大約為4KHz
        CL = 0x00;                                //PCA低8位清零
        CH = 0x00;                                //PCA高8位清零

        CCAPM0 = 0x42;                        //8位PWM模式,無(wú)中斷
        //CCAP0H = 0;                        //PWM0占空比(調(diào)節(jié)此處值調(diào)節(jié)PWM占空比 0~255)
        //CCAP0L = 0;                        //PWM0占空比(調(diào)節(jié)此處值調(diào)節(jié)PWM占空比0~255)
        
        CR = 1;                                        //啟動(dòng)PCA計(jì)數(shù)器
}

/*臺(tái)燈控制程序*/
void taidengkz()
{
        if(taidengLED==1) //開臺(tái)燈
        {
    CCAP0H=LED_mun; //LED_mun變量 10——255 范圍可調(diào)
          CCAP0L=LED_mun;        
                if(xianshiyemian==0)
                {
                        Disp_8x16(11,0,0,ZM_8x16[LED_mun%1000/100]);
                        Disp_8x16(12,0,0,ZM_8x16[LED_mun%100/10]);
                        Disp_8x16(13,0,0,ZM_8x16[LED_mun%10]);
                        Disp_16x16(7,0,0,ZM5_16x16[4]); //如果臺(tái)燈打開顯示臺(tái)燈圖標(biāo)
                }
        }
        else //關(guān)臺(tái)燈
        {
                CCAP0H=0;  //當(dāng)CCAP0H=0時(shí) 已經(jīng)關(guān)閉了
          CCAP0L=0;
          if(xianshiyemian==0)
                {
                        Disp_8x16(11,0,0,ZM_8x16[15]);
                        Disp_8x16(12,0,0,ZM_8x16[15]);
                        Disp_8x16(13,0,0,ZM_8x16[15]);
                        Disp_16x16(7,0,0,ZM5_16x16[0]);  //否則如果臺(tái)燈關(guān)閉不顯示臺(tái)燈圖標(biāo)
                }
        }

}

/*主函數(shù)*/
void main()
{
        TMOD=0x11;      //定時(shí)器0與定時(shí)器1打開
  TH0=0x0D1;
  TL0=0x20;       //給定時(shí)器0賦初值,定時(shí)1ms
        TH1=0x0D1;
  TL1=0x20;       //給定時(shí)器1賦初值,定時(shí)1ms
  ET0=1;          //打開定時(shí)器0中斷允許
  TR0=1;          //打開定時(shí)器0
        ET1=1;          //打開定時(shí)器1中斷允許
  //TR1=1;          //打開定時(shí)器1
        EA=1;           //打開總中斷
        
        PCA_Init();     //PCA PWM初始化
        LED_mun=255;    //默認(rèn)臺(tái)燈最亮
        DS3231_szcqh(); //DS3231時(shí)鐘初始化
        beiguangLED=0;  //剛通電屏背光開
        EEPROM_AInit(); //EEPROM讀出初始化
        beiguangsc();   //開機(jī)讀出背光時(shí)長(zhǎng)
        LCD_AInit();    //LCD屏初始化
        ClearDisplay(); //LCD清屏
        while(1)
        {
               
                fmqxt();           //運(yùn)行蜂鳴器協(xié)調(diào)程序
                anjiangn();        //運(yùn)行按鍵功能程序
                beiguangkz();      //運(yùn)行背光控制程序
                jiandengmoshi();   //運(yùn)行鍵燈全亮模式程序
                zhengdianbaoshi(); //運(yùn)行整點(diǎn)報(bào)時(shí)程序
                taidengkz();       //運(yùn)行臺(tái)燈控制程序
               
               

                if(xianshiyemian==0) //xianshiyemian=0時(shí)鐘頁(yè)面
                {
                        Ds3231ReadTime(); //不在時(shí)鐘設(shè)置下運(yùn)行時(shí)鐘數(shù)據(jù)
                        naozhong();       //運(yùn)行鬧鐘對(duì)比 只允許在時(shí)間頁(yè)面運(yùn)行
                        
                        /*年月日顯示*/
                  Disp_8x16(0,0,0,ZM_8x16[2]);       //
            Disp_8x16(1,0,0,ZM_8x16[0]);       //
                  Disp_8x16(2,0,0,ZM_8x16[nian/10]); //
                  Disp_8x16(3,0,0,ZM_8x16[nian%10]); //年
                  Disp_8x16(4,0,0,ZM_8x16[10]);      //-
                  Disp_8x16(5,0,0,ZM_8x16[yue/10]);  //
                  Disp_8x16(6,0,0,ZM_8x16[yue%10]);  //月
                  Disp_8x16(7,0,0,ZM_8x16[10]);      //-
                  Disp_8x16(8,0,0,ZM_8x16[ri/10]);   //
                  Disp_8x16(9,0,0,ZM_8x16[ri%10]);   //日
               
                        
                        /*時(shí)分秒顯示*/
                        switch(shizhongzt) //時(shí)鐘字體選擇
                        {
                          case 0:Disp_16x32(0,8,0,ZM_16x32[shi/10]);  //     宋體
                     Disp_16x32(1,8,0,ZM_16x32[shi%10]);  //時(shí)
                           Disp_16x32(2,8,0,ZM_16x32[10]);      //:
                           Disp_16x32(3,8,0,ZM_16x32[fen/10]);  //
                     Disp_16x32(4,8,0,ZM_16x32[fen%10]);  //分
                           Disp_16x32(5,8,0,ZM_16x32[10]);      //:
                     Disp_16x32(6,8,0,ZM_16x32[miao/10]); //
                     Disp_16x32(7,8,0,ZM_16x32[miao%10]); //秒*/
                                       break;
                                 
                                case 1:Disp_16x32(0,8,0,ZM1_16x32[shi/10]);  //    數(shù)碼
                     Disp_16x32(1,8,0,ZM1_16x32[shi%10]);  //時(shí)
                           Disp_16x32(2,8,0,ZM1_16x32[10]);      //:
                           Disp_16x32(3,8,0,ZM1_16x32[fen/10]);  //
                     Disp_16x32(4,8,0,ZM1_16x32[fen%10]);  //分
                           Disp_16x32(5,8,0,ZM1_16x32[10]);      //:
                     Disp_16x32(6,8,0,ZM1_16x32[miao/10]); //
                     Disp_16x32(7,8,0,ZM1_16x32[miao%10]); //秒*/
                                       break;
                                
                                case 2:Disp_16x32(0,8,0,ZM2_16x32[shi/10]);  //    創(chuàng)意
                     Disp_16x32(1,8,0,ZM2_16x32[shi%10]);  //時(shí)
                           Disp_16x32(2,8,0,ZM2_16x32[10]);      //:
                           Disp_16x32(3,8,0,ZM2_16x32[fen/10]);  //
                     Disp_16x32(4,8,0,ZM2_16x32[fen%10]);  //分
                           Disp_16x32(5,8,0,ZM2_16x32[10]);      //:
                     Disp_16x32(6,8,0,ZM2_16x32[miao/10]); //
                     Disp_16x32(7,8,0,ZM2_16x32[miao%10]); //秒*/
                                       break;
                        }
                        
                  
               
                        
                        /*星期顯示*/
                        Disp_16x16(5,3,0,ZM_16x16[18]); //星
                  Disp_16x16(6,3,0,ZM_16x16[19]); //期
      switch(zhou)
      {
              case 1:Disp_16x16(7,3,0,ZM_16x16[1]);break;  //星期一
              case 2:Disp_16x16(7,3,0,ZM_16x16[2]);break;  //星期二
              case 3:Disp_16x16(7,3,0,ZM_16x16[3]);break;  //星期三
              case 4:Disp_16x16(7,3,0,ZM_16x16[4]);break;  //星期四
              case 5:Disp_16x16(7,3,0,ZM_16x16[5]);break;  //星期五
              case 6:Disp_16x16(7,3,0,ZM_16x16[6]);break;  //星期六
              case 7:Disp_16x16(7,3,0,ZM_16x16[17]);break; //星期天
      }
                        
                        nonglixs();//顯示農(nóng)歷
                        
                        pingrunjs();  //閏年平年計(jì)算
                        gljr();       //公歷節(jié)日計(jì)算
                        nonglijrjs(); //農(nóng)歷節(jié)日計(jì)算
                        jiqijs();     //節(jié)氣計(jì)算
                        
                        if(gljrjs!=0&&nljs==0&&jieqijs==0) //如果當(dāng)天只有公歷節(jié)日 輪番顯示生肖公歷節(jié)日顯示  
                        {
                                if(miao>=0&&miao<30)shengxiaoxs(); //顯示生肖及閏平年
              if(miao>=30&&miao<=59)gljxs();     //公歷節(jié)日顯示
                        }
                        else if(gljrjs==0&&nljs!=0&&jieqijs==0) //如果當(dāng)天只有農(nóng)歷節(jié)日  輪番顯示生肖農(nóng)歷節(jié)日
                        {
                          if(miao>=0&&miao<30)shengxiaoxs();  //顯示生肖及閏平年
              if(miao>=30&&miao<=59)nonglijrxs(); //顯示農(nóng)歷節(jié)日
                        }
                        else if(gljrjs==0&&nljs==0&&jieqijs!=0) //如果當(dāng)天只有節(jié)氣 輪番顯示生肖節(jié)氣
                        {
                          if(miao>=0&&miao<30)shengxiaoxs();  //顯示生肖及閏平年
              if(miao>=30&&miao<=59)jieqixs();    //顯示節(jié)氣
                        }
                        
                        else if(gljrjs!=0&&nljs!=0&&jieqijs==0) //如果當(dāng)天同時(shí)有公歷節(jié)日和農(nóng)歷節(jié)日 輪番顯示生肖公歷節(jié)日農(nóng)歷節(jié)日
                        {
                          if(miao>=0&&miao<20)shengxiaoxs();  //顯示生肖及閏平年
              if(miao>=20&&miao<40)gljxs();       //顯示公歷節(jié)日
                                if(miao>=40&&miao<=59)nonglijrxs(); //顯示農(nóng)歷節(jié)日
                        }
                  else if(gljrjs!=0&&nljs==0&&jieqijs!=0) //如果當(dāng)天同時(shí)有公歷節(jié)日和節(jié)氣 輪番顯示生肖公歷節(jié)日節(jié)氣
                        {
                          if(miao>=0&&miao<20)shengxiaoxs();  //顯示生肖及閏平年
              if(miao>=20&&miao<40)gljxs();       //顯示公歷節(jié)日
                                if(miao>=40&&miao<=59)jieqixs();    //顯示節(jié)氣
                        }
                        else if(gljrjs==0&&nljs!=0&&jieqijs!=0) //如果當(dāng)天同時(shí)有農(nóng)歷節(jié)日和節(jié)氣 輪番顯示生肖農(nóng)歷節(jié)日節(jié)氣
                        {
                          if(miao>=0&&miao<20)shengxiaoxs();  //顯示生肖及閏平年
              if(miao>=20&&miao<40)nonglijrxs();  //顯示農(nóng)歷節(jié)日
                                if(miao>=40&&miao<=59)jieqixs();    //顯示節(jié)氣
                        }
                        else if(jieqijs!=0&&nljs!=0&&gljrjs!=0) //如果當(dāng)天同時(shí)有公歷節(jié)日農(nóng)歷節(jié)日生肖 輪番顯示生肖公歷節(jié)日農(nóng)歷節(jié)日節(jié)氣
            {
                    if(miao>=0&&miao<15)shengxiaoxs(); //顯示生肖及閏平年
                    if(miao>=15&&miao<30)gljxs();      //公歷節(jié)日顯示
                    if(miao>=30&&miao<45)nonglijrxs(); //農(nóng)歷節(jié)日顯示
                    if(miao>=45&&miao<=59)jieqixs();   //顯示節(jié)氣
            }
            else shengxiaoxs(); //如果沒有其他節(jié)日只顯示生肖及閏平年
                        
                        
                        /*溫濕度顯示*/
                        DHT11_receive();          //讀取濕度溫度函數(shù)
            Disp_8x16(18,1,0,ZM_8x16[11]);
            Disp_8x16(20,1,0,ZM_8x16[RH/10]);      //濕度
            Disp_8x16(21,1,0,ZM_8x16[RH%10]);
            Disp_8x16(22,1,0,ZM_8x16[12]);
               
            Disp_8x16(18,2,0,ZM_8x16[13]);
            Disp_8x16(20,2,0,ZM_8x16[TH/10]);      //溫度
            Disp_8x16(21,2,0,ZM_8x16[TH%10]);
            Disp_8x16(22,2,0,ZM_8x16[14]);        
                        
                        if(nz1_xl==0&&nz2_xl==0) //如果沒有鬧鐘鈴響 顯示小動(dòng)物
                        {
                    if(miao>=0&&miao<5)
                          {
                                  Disp_16x16(9,0,0,ZM5_16x16[1]);        
                                  Disp_16x16(10,0,0,ZM5_16x16[0]);
                            Disp_16x16(11,0,0,ZM5_16x16[0]);
                          }
                    else if(miao>=5&&miao<10)
                    {
                            Disp_16x16(9,0,0,ZM5_16x16[0]);
                            Disp_16x16(10,0,0,ZM5_16x16[2]);
                                  Disp_16x16(11,0,0,ZM5_16x16[0]);
                    }
                    else if(miao>=10&&miao<15)
                    {
                                  Disp_16x16(9,0,0,ZM5_16x16[0]);
                      Disp_16x16(10,0,0,ZM5_16x16[0]);
                            Disp_16x16(11,0,0,ZM5_16x16[3]);
                    }
                    else if(miao>=15&&miao<20)
                          {
                                  Disp_16x16(9,0,0,ZM5_16x16[0]);        
                                  Disp_16x16(10,0,0,ZM5_16x16[0]);
                            Disp_16x16(11,0,0,ZM5_16x16[0]);
                          }
                    else
                    {
                            Disp_16x16(9,0,0,ZM5_16x16[1]);
                      Disp_16x16(10,0,0,ZM5_16x16[2]);
                            Disp_16x16(11,0,0,ZM5_16x16[3]);
                    }
                        }
                        else      //有鬧鐘鈴響 則顯示當(dāng)前鬧鐘
                        {
                                if(nz1_xl==1)
                                {
                                  Disp_8x16(18,0,0,ZM1_8x16[nz1_shi/10]);   //
                      Disp_8x16(19,0,0,ZM1_8x16[nz1_shi%10]);  //鬧鐘1時(shí)
                Disp_8x16(20,0,0,ZM1_8x16[11]);                   //:
                      Disp_8x16(21,0,0,ZM1_8x16[nz1_fen/10]);  //
                      Disp_8x16(22,0,0,ZM1_8x16[nz1_fen%10]);  //鬧鐘1分
                                        Disp_8x16(23,0,0,ZM1_8x16[12]);
                                }
                                
                                if(nz2_xl==1)
                                {
                                  Disp_8x16(18,0,0,ZM1_8x16[nz2_shi/10]);   //
                      Disp_8x16(19,0,0,ZM1_8x16[nz2_shi%10]);  //鬧鐘2時(shí)
                Disp_8x16(20,0,0,ZM1_8x16[11]);                   //:
                      Disp_8x16(21,0,0,ZM1_8x16[nz2_fen/10]);  //
                      Disp_8x16(22,0,0,ZM1_8x16[nz2_fen%10]);  //鬧鐘2分
                                        Disp_8x16(23,0,0,ZM1_8x16[12]);
                                }
                        
                        }
                }
                else//xianshiyemian=1已進(jìn)入功能菜單頁(yè)面
                {
                        if(nz1_xl==1||nz2_xl==1) //如果已進(jìn)入功能菜單頁(yè)面 則強(qiáng)行關(guān)閉鬧鐘響鈴
                        {
                          nz1_xl=0;
                          nz2_xl=0;
                        }
                        if(shezhiym==0) //功能菜單頁(yè)面
                        {
                                Ds3231ReadTime(); //不在時(shí)鐘設(shè)置下運(yùn)行時(shí)鐘數(shù)據(jù)
                                
                          Disp_64x48(0,0,0,ZM_64x48[0]);  //顯示時(shí)鐘圖標(biāo)
                    Disp_64x48(1,0,0,ZM_64x48[1]);  //顯示鬧鐘圖標(biāo)
              Disp_64x48(2,0,0,ZM_64x48[2]);  //顯示設(shè)置圖標(biāo)
                        
                          if(gncdym==1)fb_shizwz=1;else(fb_shizwz=0); //=1反白 =0取消反白
                    Disp_16x16(1,3,fb_shizwz,ZM5_16x16[10]);     //顯示文字"時(shí)"
                    Disp_16x16(2,3,fb_shizwz,ZM5_16x16[12]);     //顯示文字"鐘"
                        
                          if(gncdym==2)fb_nzwz=1;else(fb_nzwz=0);     //=1反白 =0取消反白
                    Disp_16x16(5,3,fb_nzwz,ZM5_16x16[11]);       //顯示文字"鬧"
                    Disp_16x16(6,3,fb_nzwz,ZM5_16x16[12]);       //顯示文字"鐘"
                        
                          if(gncdym==3)fb_szwz=1;else(fb_szwz=0);     //=1反白 =0取消反白
                    Disp_16x16(9,3,fb_szwz,ZM5_16x16[13]);       //顯示文字"設(shè)"
                    Disp_16x16(10,3,fb_szwz,ZM5_16x16[14]);      //顯示文字"置"
                        }
                        
                        else if(shezhiym==1) //shezhiym=0已進(jìn)入時(shí)鐘設(shè)置頁(yè)面
                  {
                                //當(dāng)進(jìn)入時(shí)鐘設(shè)置后 沒按下加減鍵時(shí)鐘依然保持運(yùn)行
                                //否則按下加減鍵設(shè)置時(shí)鐘生效 寫入Ds3231時(shí)鐘芯片 松開按鍵后恢復(fù)運(yùn)行時(shí)鐘數(shù)據(jù)
                                if(shizhongsz==0)Ds3231ReadTime(); //不在時(shí)鐘設(shè)置下運(yùn)行時(shí)鐘數(shù)據(jù)
                                else
                                {
                                  if(anjian2!=0&&anjian3!=0)Ds3231ReadTime(); //不在時(shí)鐘設(shè)置下運(yùn)行時(shí)鐘數(shù)據(jù)
                                }
                                       
                    Disp_16x16(5,0,0,ZM5_16x16[10]);   //顯示文字"時(shí)"
                    Disp_16x16(6,0,0,ZM5_16x16[12]);   //顯示文字"鐘"
                                
                                Disp_16x16(2,2,0,ZM5_16x16[15]);   //顯示文字"時(shí)"
                    Disp_16x16(3,2,0,ZM5_16x16[16]);   //顯示文字"間"
                                Disp_16x16(2,3,0,ZM5_16x16[17]);   //顯示文字"日"
                    Disp_16x16(3,3,0,ZM5_16x16[18]);   //顯示文字"期"
                                
                                if(shizhongsz==3)fbs_shi=1;else(fbs_shi=0);   //=1反白 =0取消反白
                                Disp_8x16(9,2,fbs_shi,ZM1_8x16[shi/10]);      //
              Disp_8x16(10,2,fbs_shi,ZM1_8x16[shi%10]);     //時(shí)
                                
                    Disp_8x16(11,2,0,ZM1_8x16[11]);               //:
                                
                                if(shizhongsz==2)fbs_fen=1;else(fbs_fen=0);   //=1反白 =0取消反白
                    Disp_8x16(12,2,fbs_fen,ZM1_8x16[fen/10]);     //
              Disp_8x16(13,2,fbs_fen,ZM1_8x16[fen%10]);     //分
                                
                    Disp_8x16(14,2,0,ZM1_8x16[11]);               //:
                                
                                if(shizhongsz==1)fbs_miao=1;else(fbs_miao=0); //=1反白 =0取消反白
              Disp_8x16(15,2,fbs_miao,ZM1_8x16[miao/10]);   //
              Disp_8x16(16,2,fbs_miao,ZM1_8x16[miao%10]);   //秒*/
                                
                                if(shizhongsz==6)fbs_nian=1;else(fbs_nian=0); //=1反白 =0取消反白
                                Disp_8x16(9,3,fbs_nian,ZM1_8x16[2]);          //
              Disp_8x16(10,3,fbs_nian,ZM1_8x16[0]);         //
                    Disp_8x16(11,3,fbs_nian,ZM1_8x16[nian/10]);   //
                    Disp_8x16(12,3,fbs_nian,ZM1_8x16[nian%10]);   //年
                                
                    Disp_8x16(13,3,0,ZM1_8x16[10]);               //-
                                
                                if(shizhongsz==5)fbs_yue=1;else(fbs_yue=0);   //=1反白 =0取消反白
                    Disp_8x16(14,3,fbs_yue,ZM1_8x16[yue/10]);     //
                    Disp_8x16(15,3,fbs_yue,ZM1_8x16[yue%10]);     //月
                                
                    Disp_8x16(16,3,0,ZM1_8x16[10]);               //-
                                
                                if(shizhongsz==4)fbs_ri=1;else(fbs_ri=0);     //=1反白 =0取消反白
                    Disp_8x16(17,3,fbs_ri,ZM1_8x16[ri/10]);       //
                    Disp_8x16(18,3,fbs_ri,ZM1_8x16[ri%10]);       //日
                        }
                                
                        
                  else if(shezhiym==2) //shezhiym=1已進(jìn)入鬧鐘設(shè)置頁(yè)面
                  {
                                Ds3231ReadTime(); //不在時(shí)鐘設(shè)置下運(yùn)行時(shí)鐘數(shù)據(jù)
                                
                    Disp_16x16(5,0,0,ZM5_16x16[11]);   //顯示文字"鬧"
                    Disp_16x16(6,0,0,ZM5_16x16[12]);   //顯示文字"鐘"
                                
                                /*顯示時(shí)鐘*/
                                Disp_8x16(8,1,0,ZM1_8x16[shi/10]);     //
              Disp_8x16(9,1,0,ZM1_8x16[shi%10]);     //時(shí)        
                    Disp_8x16(10,1,0,ZM1_8x16[11]);        //:
                    Disp_8x16(11,1,0,ZM1_8x16[fen/10]);    //
              Disp_8x16(12,1,0,ZM1_8x16[fen%10]);    //分
                    Disp_8x16(13,1,0,ZM1_8x16[11]);        //:
              Disp_8x16(14,1,0,ZM1_8x16[miao/10]);   //
              Disp_8x16(15,1,0,ZM1_8x16[miao%10]);   //秒*/
                                
                                /*鬧鐘1*/
                                Disp_16x16(2,2,0,ZM5_16x16[19]);   //顯示文字"鬧"
                    Disp_16x16(3,2,0,ZM5_16x16[20]);   //顯示文字"鐘"
                                Disp_8x16(8,2,0,ZM1_8x16[1]);     //顯示數(shù)字"1"
                                
                                if(naozhongsz==3)fb_nz1_shi=1;else(fb_nz1_shi=0);
                                Disp_8x16(10,2,fb_nz1_shi,ZM1_8x16[nz1_shi/10]);   //
                    Disp_8x16(11,2,fb_nz1_shi,ZM1_8x16[nz1_shi%10]);  //鬧鐘時(shí)
                                
              Disp_8x16(12,2,0,ZM1_8x16[11]);                   //:
                                
                                if(naozhongsz==2)fb_nz1_fen=1;else(fb_nz1_fen=0);
                    Disp_8x16(13,2,fb_nz1_fen,ZM1_8x16[nz1_fen/10]);  //
                    Disp_8x16(14,2,fb_nz1_fen,ZM1_8x16[nz1_fen%10]);  //鬧鐘分
                                
                                if(naozhongsz==1)fb_nz1_kg=1;else(fb_nz1_kg=0);
                                if(nz1_kg==1)Disp_16x16(8,2,fb_nz1_kg,ZM5_16x16[21]); //如果鬧鐘1打開 顯示文字"開"
                                else Disp_16x16(8,2,fb_nz1_kg,ZM5_16x16[22]);  //如果鬧鐘1關(guān)閉 顯示文字"關(guān)"
                                       
                                 
                                
                                /*鬧鐘2*/
                                Disp_16x16(2,3,0,ZM5_16x16[19]);   //顯示文字"鬧"
                    Disp_16x16(3,3,0,ZM5_16x16[20]);   //顯示文字"鐘"
                                Disp_8x16(8,3,0,ZM1_8x16[2]);     //顯示數(shù)字"2"
                                
                                if(naozhongsz==6)fb_nz2_shi=1;else(fb_nz2_shi=0); //=1反白 =0取消反白
                                Disp_8x16(10,3,fb_nz2_shi,ZM1_8x16[nz2_shi/10]);  //
                    Disp_8x16(11,3,fb_nz2_shi,ZM1_8x16[nz2_shi%10]);  //鬧鐘時(shí)
                                
              Disp_8x16(12,3,0,ZM1_8x16[11]);                   //:
                                
                                if(naozhongsz==5)fb_nz2_fen=1;else(fb_nz2_fen=0);  //=1反白 =0取消反白
                    Disp_8x16(13,3,fb_nz2_fen,ZM1_8x16[nz2_fen/10]);   //
                    Disp_8x16(14,3,fb_nz2_fen,ZM1_8x16[nz2_fen%10]);  //鬧鐘分
                                
                                if(naozhongsz==4)fb_nz2_kg=1;else(fb_nz2_kg=0);        //=1反白 =0取消反白
                                if(nz2_kg==1)Disp_16x16(8,3,fb_nz2_kg,ZM5_16x16[21]); //如果鬧鐘2打開 顯示文字"開"
                                else Disp_16x16(8,3,fb_nz2_kg,ZM5_16x16[22]);  //如果鬧鐘2關(guān)閉 顯示文字"關(guān)"
                  }
                        
                  else //shezhiym=2已進(jìn)入設(shè)置頁(yè)面
                  {
                                Ds3231ReadTime(); //不在時(shí)鐘設(shè)置下運(yùn)行時(shí)鐘數(shù)據(jù)
                                
                    Disp_16x16(5,0,0,ZM5_16x16[13]);   //顯示文字"設(shè)"
                    Disp_16x16(6,0,0,ZM5_16x16[14]);   //顯示文字"置"
                                
                                /*時(shí)鐘字體設(shè)置*/
                                Disp_16x16(0,1,0,ZM5_16x16[23]);   //顯示文字"字"
                                Disp_16x16(1,1,0,ZM5_16x16[24]);   //顯示文字"體"
                                Disp_16x16(2,1,0,ZM5_16x16[8]);   //顯示單向箭頭圖標(biāo)
                                
                                if(shezhixx==1)fb_shizhongzt=1;else(fb_shizhongzt=0);//=1反白 =0取消反白
                                switch(shizhongzt)
        {
                case 0:Disp_16x16(3,1,fb_shizhongzt,ZM5_16x16[25]);Disp_16x16(4,1,fb_shizhongzt,ZM5_16x16[24]); break; //顯示文字"宋體"
                case 1:Disp_16x16(3,1,fb_shizhongzt,ZM5_16x16[26]);Disp_16x16(4,1,fb_shizhongzt,ZM5_16x16[27]);break;  //顯示文字"數(shù)碼"
                case 2:Disp_16x16(3,1,fb_shizhongzt,ZM5_16x16[28]);Disp_16x16(4,1,fb_shizhongzt,ZM5_16x16[29]);break;  //顯示文字"創(chuàng)意"
        }
                                
                                
                                /*按鍵燈設(shè)置*/
                                Disp_16x16(7,1,0,ZM5_16x16[30]);   //顯示文字"鍵"
                                Disp_16x16(8,1,0,ZM5_16x16[31]);   //顯示文字"燈"
                                Disp_16x16(9,1,0,ZM5_16x16[8]);    //顯示單向箭頭圖標(biāo)
                                
                                if(shezhixx==2)fb_jdms=1;else(fb_jdms=0); //=1反白 =0取消反白
                                if(jdms==0)
                                {
                                        Disp_16x16(10,1,fb_jdms,ZM5_16x16[32]);   //顯示文字"全"
                                  Disp_16x16(11,1,fb_jdms,ZM5_16x16[33]);   //顯示文字"亮"
                                }
                                else
                                {
                                        Disp_16x16(10,1,fb_jdms,ZM5_16x16[34]);   //顯示文字"單"
                                  Disp_16x16(11,1,fb_jdms,ZM5_16x16[35]);   //顯示文字"點(diǎn)"
                                }
                                
                                
                                
                                /*背光時(shí)長(zhǎng)*/
                                Disp_16x16(0,2,0,ZM5_16x16[36]);   //顯示文字"背"
                                Disp_16x16(1,2,0,ZM5_16x16[37]);   //顯示文字"光"
                                Disp_16x16(2,2,0,ZM5_16x16[8]);   //顯示單向箭頭圖標(biāo)
                                
                                if(shezhixx==3)fb_bgsc=1;else(fb_bgsc=0); //=1反白 =0取消反白
                                switch(bgsc)
        {
                case 0:Disp_8x16(6,2,fb_bgsc,ZM1_8x16[1]);  //10秒設(shè)置
                                               Disp_8x16(7,2,fb_bgsc,ZM1_8x16[0]);
                                               Disp_16x16(4,2,0,ZM5_16x16[38]);
                                               Disp_16x16(5,2,0,ZM5_16x16[20]);
                                               miaomun=10;
                                               break;
                                               
                case 1:Disp_8x16(6,2,fb_bgsc,ZM1_8x16[2]);  //20秒設(shè)置
                                               Disp_8x16(7,2,fb_bgsc,ZM1_8x16[0]);
                                               Disp_16x16(4,2,0,ZM5_16x16[38]);
                                               Disp_16x16(5,2,0,ZM5_16x16[20]);
                                               miaomun=20;
                                               break;
                                       
                case 2:Disp_8x16(6,2,fb_bgsc,ZM1_8x16[3]);  //30秒設(shè)置
                                               Disp_8x16(7,2,fb_bgsc,ZM1_8x16[0]);
                                               Disp_16x16(4,2,0,ZM5_16x16[38]);
                                               Disp_16x16(5,2,0,ZM5_16x16[20]);
                                               miaomun=30;
                                               break;
                                       
                case 3:Disp_8x16(6,2,0,ZM1_8x16[12]);      //1分鐘設(shè)置
                                               Disp_8x16(7,2,fb_bgsc,ZM1_8x16[1]);
                                               Disp_16x16(4,2,0,ZM5_16x16[39]);
                                                                 Disp_16x16(5,2,0,ZM5_16x16[20]);
                                                                 miaomun=60;
                                                                 break;
                                                                 
                case 4:Disp_8x16(6,2,0,ZM1_8x16[12]);      //2分鐘設(shè)置
                                               Disp_8x16(7,2,fb_bgsc,ZM1_8x16[2]);
                                                                 Disp_16x16(4,2,0,ZM5_16x16[39]);
                                                                 Disp_16x16(5,2,0,ZM5_16x16[20]);
                                                                 miaomun=120;
                                                                 break;
                                                                 
                case 5:Disp_8x16(6,2,0,ZM1_8x16[12]);      //3分鐘設(shè)置
                                               Disp_8x16(7,2,fb_bgsc,ZM1_8x16[3]);
                                                                 Disp_16x16(4,2,0,ZM5_16x16[39]);
                                                                 Disp_16x16(5,2,0,ZM5_16x16[20]);
                                                                 miaomun=180;
                                                                 break;
        }
                                
                                
                                /*按鍵聲音*/
                                Disp_16x16(7,2,0,ZM5_16x16[30]);   //顯示文字"鍵"
                                Disp_16x16(8,2,0,ZM5_16x16[40]);   //顯示文字"聲"
                                Disp_16x16(9,2,0,ZM5_16x16[8]);    //顯示單向箭頭圖標(biāo)
                                
                                if(shezhixx==4)fb_anjiansy=1;else(fb_anjiansy=0); //=1反白 =0取消反白
                                if(anjiansy_kg==1)Disp_16x16(10,2,fb_anjiansy,ZM5_16x16[21]); //按鍵聲音開
                                else Disp_16x16(10,2,fb_anjiansy,ZM5_16x16[22]); //按鍵聲音開
                                
                                
                                /*整點(diǎn)報(bào)時(shí)*/
                                Disp_16x16(0,3,0,ZM5_16x16[41]);   //顯示文字"報(bào)"
                                Disp_16x16(1,3,0,ZM5_16x16[15]);   //顯示文字"時(shí)"
                                Disp_16x16(2,3,0,ZM5_16x16[8]);    //顯示單向箭頭圖標(biāo)
                                
                                if(shezhixx==5)fb_zdbs_kg=1;else(fb_zdbs_kg=0); //=1反白 =0取消反白
                                if(zdbs_kg==1)Disp_16x16(3,3,fb_zdbs_kg,ZM5_16x16[21]);   //顯示文字"開"
                                else Disp_16x16(3,3,fb_zdbs_kg,ZM5_16x16[22]);   //顯示文字"關(guān)"
                                
                                if(shezhixx==6)fb_zdbs_qd=1;else(fb_zdbs_qd=0); //=1反白 =0取消反白
                                Disp_8x16(10,3,fb_zdbs_qd,ZM1_8x16[zdbs_qd/10]);   //
              Disp_8x16(11,3,fb_zdbs_qd,ZM1_8x16[zdbs_qd%10]);   //整點(diǎn)報(bào)時(shí)允許范圍 起點(diǎn)
                    Disp_16x16(6,3,0,ZM5_16x16[9]);                    //顯示雙向箭頭圖標(biāo)   

        if(shezhixx==7)fb_zdbs_zd=1;else(fb_zdbs_zd=0); //=1反白 =0取消反白                                
              Disp_8x16(14,3,fb_zdbs_zd,ZM1_8x16[zdbs_zd/10]);   //
              Disp_8x16(15,3,fb_zdbs_zd,ZM1_8x16[zdbs_zd%10]);   //整點(diǎn)報(bào)時(shí)允許范圍 止點(diǎn)
                  }        
                }
        }                 
}

/*定時(shí)器0函數(shù)*/
void Timer0() interrupt 1
{
        TH0=0x0D1;
  TL0=0x20;  //給定時(shí)器0賦初值,定時(shí)1ms
        
        pingbgjs++;     //當(dāng)背光打開時(shí)定時(shí)器開始計(jì)數(shù) 用于屏背光自動(dòng)關(guān)閉控制
        if(pingbgjs==84)
        {
          miaojs++;
                if(miaojs==miaomun)
                {
                        beiguangLED=1; //
                        TR0=0;         //關(guān)閉定時(shí)器0
                }
                pingbgjs=0;
        }
}

/*定時(shí)器1函數(shù)*/
void Timer1() interrupt 3
{
        TH1=0x0D1;
  TL1=0x20;  //給定時(shí)器0賦初值,定時(shí)1ms        
        
        /*按鍵短聲*/
        if(anjiansy_kg==1&&nz1_xl!=1&&nz2_xl!=1)
        {
                if(anjian1==0||anjian2==0||anjian3==0||anjian4==0)
                {
                  if(anjians<10)anjians++;
                        
                  if(anjians>0&&anjians<5)fmq=0;
                  else fmq=1;
                }
        }
        
        
        /*鬧鐘響聲 滴滴滴~ 3聲*/
        if(nz1_xl==1||nz2_xl==1)
        {
          naozhonglx++;
          if(naozhonglx==100)naozhonglx=0; //鬧鐘鈴響計(jì)數(shù)變量
        
          if(naozhonglx>0&&naozhonglx<=5)fmq=0;          //第1聲
          else if(naozhonglx>5&&naozhonglx<=10)fmq=1;
        
          else if(naozhonglx>10&&naozhonglx<=15)fmq=0;   //第2聲
    else if(naozhonglx>15&&naozhonglx<=20)fmq=1;

    else if(naozhonglx>20&&naozhonglx<=25)fmq=0;         //第3聲
          else fmq=1;
        }
}


多功能時(shí)鐘.zip

287.11 KB, 下載次數(shù): 491, 下載積分: 黑幣 -5


作者: wjq1n    時(shí)間: 2022-12-27 08:10
創(chuàng)意字體并不好看吶
作者: 1860774xxxx    時(shí)間: 2022-12-27 12:21
wjq1n 發(fā)表于 2022-12-27 08:10
創(chuàng)意字體并不好看吶

創(chuàng)意字體是亂畫 你要是有好看的時(shí)鐘大字體也分享下貝
作者: mengsiu    時(shí)間: 2022-12-29 11:04
wjq1n 發(fā)表于 2022-12-27 08:10
創(chuàng)意字體并不好看吶

我也這么認(rèn)為,創(chuàng)意字體不怎么好看。(僅僅是個(gè)人感覺。)
作者: fancunwu    時(shí)間: 2022-12-29 14:17
樓主用rx8025T時(shí)鐘芯片,比sd3231便宜還精確,才幾毛錢一塊。
作者: 1109    時(shí)間: 2022-12-29 17:46
字體我覺得挺好看的,請(qǐng)問(wèn)樓主有PCB嗎?我想跟風(fēng)試制一個(gè)
作者: 1860774xxxx    時(shí)間: 2022-12-29 19:18
fancunwu 發(fā)表于 2022-12-29 14:17
樓主用rx8025T時(shí)鐘芯片,比sd3231便宜還精確,才幾毛錢一塊。

沒有rx8025 3231是已前買的
作者: 1860774xxxx    時(shí)間: 2022-12-29 19:18
1109 發(fā)表于 2022-12-29 17:46
字體我覺得挺好看的,請(qǐng)問(wèn)樓主有PCB嗎?我想跟風(fēng)試制一個(gè)

沒有 自己焊的
作者: mengsiu    時(shí)間: 2022-12-30 09:46
fancunwu 發(fā)表于 2022-12-29 14:17
樓主用rx8025T時(shí)鐘芯片,比sd3231便宜還精確,才幾毛錢一塊。

哪里來(lái)的幾毛錢一個(gè)?我看到的是幾塊錢一個(gè)。
作者: fancunwu    時(shí)間: 2022-12-31 10:54
mengsiu 發(fā)表于 2022-12-30 09:46
哪里來(lái)的幾毛錢一個(gè)?我看到的是幾塊錢一個(gè)。

某一個(gè)寶RX8025T。.59元一個(gè)還包郵
作者: Su_xin    時(shí)間: 2023-1-17 15:47

字體我覺得挺好看的,請(qǐng)問(wèn)樓主有PCB嗎?
作者: 1860774xxxx    時(shí)間: 2023-1-17 19:26
Su_xin 發(fā)表于 2023-1-17 15:47
字體我覺得挺好看的,請(qǐng)問(wèn)樓主有PCB嗎?

沒有 自己焊的 有電路圖 PCB板自己做就可以了
作者: 1860774xxxx    時(shí)間: 2023-1-17 19:29
沒有PCB 自己焊

IMG_20221226_134541.jpg (676.1 KB, 下載次數(shù): 166)

IMG_20221226_134541.jpg

作者: abslearn    時(shí)間: 2023-1-29 17:47
厲害,還是自己焊接的PCB 而且外觀還是不錯(cuò),功能挺齊全,贊一個(gè)
作者: hrx007zq    時(shí)間: 2023-1-30 20:08
LCD要另寫程序嗎?

作者: 1860774xxxx    時(shí)間: 2023-1-31 12:21
hrx007zq 發(fā)表于 2023-1-30 20:08
LCD要另寫程序嗎?

同型號(hào)屏不須要
作者: 老愚童63    時(shí)間: 2023-1-31 16:29
LCD屏帶字庫(kù)嗎?或者帶字庫(kù)與否都可以使用?

作者: gw168sh    時(shí)間: 2023-2-1 10:15
樓主你好,請(qǐng)問(wèn)有替代的屏型號(hào)嗎?這個(gè)屏買不到呢
作者: 1860774xxxx    時(shí)間: 2023-2-1 12:24
老愚童63 發(fā)表于 2023-1-31 16:29
LCD屏帶字庫(kù)嗎?或者帶字庫(kù)與否都可以使用?

不帶 同型號(hào)不須修改可用 不型號(hào)須自己寫屏程序
作者: 1860774xxxx    時(shí)間: 2023-2-1 12:25
gw168sh 發(fā)表于 2023-2-1 10:15
樓主你好,請(qǐng)問(wèn)有替代的屏型號(hào)嗎?這個(gè)屏買不到呢

可以換 自己改屏程序
作者: 老愚童63    時(shí)間: 2023-2-1 14:57
1860774xxxx 發(fā)表于 2023-2-1 12:24
不帶 同型號(hào)不須修改可用 不型號(hào)須自己寫屏程序

謝謝

作者: 1860774xxxx    時(shí)間: 2023-2-1 20:58
ks0108控制器的19264屏可用  否則自行改屏程序
作者: an2041    時(shí)間: 2023-2-13 19:58
1109 發(fā)表于 2022-12-29 17:46
字體我覺得挺好看的,請(qǐng)問(wèn)樓主有PCB嗎?我想跟風(fēng)試制一個(gè)

我按照電路畫過(guò)一個(gè)PCB圖下載程序正常顯示。
作者: 15352536450    時(shí)間: 2023-3-1 10:02
鬧鐘可以通過(guò)加程序變成10個(gè)鬧鐘嗎
作者: 15352536450    時(shí)間: 2023-3-1 11:16
外殼的鏈接可以分享下嗎

作者: 1860774xxxx    時(shí)間: 2023-3-1 12:22
15352536450 發(fā)表于 2023-3-1 10:02
鬧鐘可以通過(guò)加程序變成10個(gè)鬧鐘嗎

當(dāng)然可以
作者: 1860774xxxx    時(shí)間: 2023-3-1 18:52
15352536450 發(fā)表于 2023-3-1 11:16
外殼的鏈接可以分享下嗎

abs防水盒網(wǎng)上大把
作者: an2041    時(shí)間: 2023-3-8 08:47
Su_xin 發(fā)表于 2023-1-17 15:47
字體我覺得挺好看的,請(qǐng)問(wèn)樓主有PCB嗎?

我這里有個(gè)PCB可心用的,基本正常了。

2.JPG (1.19 MB, 下載次數(shù): 178)

2.JPG

1.jpg (245.37 KB, 下載次數(shù): 167)

1.jpg

LCD19264-2.zip

1.59 MB, 下載次數(shù): 89, 下載積分: 黑幣 -5


作者: hnxtlxx    時(shí)間: 2023-3-9 07:21
http://www.torrancerestoration.com/bbs/dpj-176725-1.html  這個(gè)大佬的字庫(kù)很漂亮,大氣
作者: 1860774xxxx    時(shí)間: 2023-3-9 12:26
發(fā)表于 2023-3-9 07:21


好看 有時(shí)間就換一下
作者: 1860774xxxx    時(shí)間: 2023-3-12 21:16
試了一下網(wǎng)友提供的時(shí)鐘字體 太粗了 與下面的小字很不協(xié)調(diào)  效果如圖 喜歡的自己換吧

IMG_20230312_210948.jpg (910.7 KB, 下載次數(shù): 161)

IMG_20230312_210948.jpg

作者: sdlyyy    時(shí)間: 2023-3-12 23:56
非常感謝,值得好好學(xué)習(xí)。
作者: stayalone838    時(shí)間: 2023-3-29 17:42
an2041 發(fā)表于 2023-2-13 19:58
我按照電路畫過(guò)一個(gè)PCB圖下載程序正常顯示。

大佬可以分享一下你的PCD嗎
作者: 3310mad2    時(shí)間: 2023-4-2 21:20
這個(gè)程序可以使用89c52嗎?不使用EEPROM的情況下

作者: 1860774xxxx    時(shí)間: 2023-4-2 23:01
3310mad2 發(fā)表于 2023-4-2 21:20
這個(gè)程序可以使用89c52嗎?不使用EEPROM的情況下

不知道哈 自己試試貝 定時(shí)器的得改 延遲程序你得改 鬧鐘保存你得改 設(shè)置保存你得改 否則用不了 還沒有臺(tái)燈調(diào)光  還不如買一個(gè)12的高速單片機(jī) 也不貴
作者: grant    時(shí)間: 2023-6-4 17:41
感謝樓主分享,我也跟風(fēng)試復(fù)制一個(gè)玩玩
作者: 風(fēng)信不語(yǔ)    時(shí)間: 2023-6-6 01:16
grant 發(fā)表于 2023-6-4 17:41
感謝樓主分享,我也跟風(fēng)試復(fù)制一個(gè)玩玩

我也是這樣打算的
作者: lym_tb_1    時(shí)間: 2023-6-6 06:47
這個(gè)外殼專門定做的嗎?
作者: lym_tb_1    時(shí)間: 2023-6-6 06:50
這個(gè)外殼是專門定做的還是哪里搞得?
作者: lym_tb_1    時(shí)間: 2023-6-6 06:56
1860774xxxx 發(fā)表于 2023-3-1 18:52
abs防水盒網(wǎng)上大把

哦,看了下還真是,開孔這么整齊要用什么工具?
作者: liaoxliang    時(shí)間: 2023-6-6 21:08
不錯(cuò) 不錯(cuò)  有空了 畫個(gè)板 仿制一個(gè)玩玩
作者: liaoxliang    時(shí)間: 2023-6-6 21:09
lym_tb_1 發(fā)表于 2023-6-6 06:56
哦,看了下還真是,開孔這么整齊要用什么工具。

電鉆,小臺(tái)鉆,電磨 銼刀,
作者: 1860774xxxx    時(shí)間: 2023-6-7 12:24
lym_tb_1 發(fā)表于 2023-6-6 06:56
哦,看了下還真是,開孔這么整齊要用什么工具?

亞克力板刀 據(jù)片 圓口用鉆頭
作者: hu_jia168    時(shí)間: 2023-6-7 21:00
1860774xxxx 發(fā)表于 2023-1-17 19:29
沒有PCB 自己焊

看起來(lái)不錯(cuò)呀
作者: xieruya    時(shí)間: 2023-6-12 15:34
樓主程序下載進(jìn)去了不行
作者: xieruya    時(shí)間: 2023-6-12 15:38
下載進(jìn)去不能用顯示都是亂碼
作者: cjhk    時(shí)間: 2023-6-15 13:24
樓主很無(wú)私   謝謝你的共享   我這邊也想做一個(gè)玩玩
作者: 1860774xxxx    時(shí)間: 2023-6-15 19:05
xieruya 發(fā)表于 2023-6-12 15:38
下載進(jìn)去不能用顯示都是亂碼

注意屏幕型號(hào) 注意接線
作者: 風(fēng)鈴草f    時(shí)間: 2023-7-13 11:44
an2041 發(fā)表于 2023-3-8 08:47
我這里有個(gè)PCB可心用的,基本正常了。

有原理圖嗎?
作者: yongquan    時(shí)間: 2023-10-5 20:36
感謝分享,自己不會(huì)做,學(xué)習(xí)一下,樓主如何改成可以設(shè)置多少鬧鐘的

作者: 1860774xxxx    時(shí)間: 2023-10-8 12:15
yongquan 發(fā)表于 2023-10-5 20:36
感謝分享,自己不會(huì)做,學(xué)習(xí)一下,樓主如何改成可以設(shè)置多少鬧鐘的

你的意思是指設(shè)鬧鐘時(shí)間還是設(shè)多少組鬧鐘?
作者: lmn2005    時(shí)間: 2023-10-8 19:12
那幾個(gè)按鍵都帶彩色燈的,是怎么實(shí)現(xiàn)的?

作者: ayld    時(shí)間: 2023-10-8 19:59
不錯(cuò)!
作者: 1860774xxxx    時(shí)間: 2023-10-8 20:24
lmn2005 發(fā)表于 2023-10-8 19:12
那幾個(gè)按鍵都帶彩色燈的,是怎么實(shí)現(xiàn)的?

買啊 某淘大把帶燈按
作者: yongquan    時(shí)間: 2023-10-8 22:18
1860774xxxx 發(fā)表于 2023-10-8 12:15
你的意思是指設(shè)鬧鐘時(shí)間還是設(shè)多少組鬧鐘?

想設(shè)置多組鬧鐘

作者: yongquan    時(shí)間: 2023-10-8 22:52
樓主按鈕上的燈是如何實(shí)現(xiàn)的

作者: 1860774xxxx    時(shí)間: 2023-10-9 12:21
yongquan 發(fā)表于 2023-10-8 22:52
樓主按鈕上的燈是如何實(shí)現(xiàn)的

帶燈按鍵 買的
作者: 1860774xxxx    時(shí)間: 2023-10-9 12:27
yongquan 發(fā)表于 2023-10-8 22:18
想設(shè)置多組鬧鐘

那就設(shè)置多組鬧鐘變量 比如1組nz_shi1 zn_fen1  2組nz_shi2 nz_fen2  每組前級(jí)加開關(guān)判斷鬧鐘是否開啟 然后每組分開與時(shí)鐘時(shí)間對(duì)比就可以了
作者: yongquan    時(shí)間: 2023-10-10 11:06
樓主,我有個(gè)藍(lán)色12864B
作者: hchi2006    時(shí)間: 2023-10-12 20:52
樓主你好!
     下載了軟件 ,用Keil打開代碼就死機(jī),是什么原因呀?
作者: 1860774xxxx    時(shí)間: 2023-10-13 06:55
hchi2006 發(fā)表于 2023-10-12 20:52
樓主你好!
     下載了軟件 ,用Keil打開代碼就死機(jī),是什么原因呀?

沒聽說(shuō)過(guò)還會(huì)這樣的
作者: yongquan    時(shí)間: 2023-10-25 10:56
正在學(xué)習(xí) ,怎么換成 OLED 屏

作者: 1860774xxxx    時(shí)間: 2023-10-25 20:13
yongquan 發(fā)表于 2023-10-25 10:56
正在學(xué)習(xí) ,怎么換成 OLED 屏

你說(shuō)的OLED屏是12864吧 這是19264屏 簡(jiǎn)單修改肯定是顯示不了 復(fù)雜修改還不如從寫代碼
作者: 418854190    時(shí)間: 2023-10-25 20:52
hchi2006 發(fā)表于 2023-10-12 20:52
樓主你好!
     下載了軟件 ,用Keil打開代碼就死機(jī),是什么原因呀?

把后綴.uvopt的文件刪了在打開
作者: arima    時(shí)間: 2023-10-25 22:46
外觀漂亮,內(nèi)部不咋的。準(zhǔn)備也做一個(gè)。。。
作者: 1860774xxxx    時(shí)間: 2023-10-26 12:26
arima 發(fā)表于 2023-10-25 22:46
外觀漂亮,內(nèi)部不咋的。準(zhǔn)備也做一個(gè)。。。

一個(gè)半個(gè)懶得打板
作者: hchi2006    時(shí)間: 2023-10-26 14:50
418854190 發(fā)表于 2023-10-25 20:52
把后綴.uvopt的文件刪了在打開

謝謝!我試試。
作者: Longan.Wang    時(shí)間: 2023-11-1 11:27
看看,51黑有你更精彩。!
作者: reking8    時(shí)間: 2023-11-25 07:34
這盒子哪里弄的
作者: 1860774xxxx    時(shí)間: 2023-11-27 22:09
reking8 發(fā)表于 2023-11-25 07:34
這盒子哪里弄的

防水盒 網(wǎng)上大把 自己開孔
作者: 太陽(yáng)黑子1    時(shí)間: 2023-11-30 22:56
外殼很好看哦
作者: yw123456789    時(shí)間: 2023-12-2 13:41
fancunwu 發(fā)表于 2022-12-29 14:17
樓主用rx8025T時(shí)鐘芯片,比sd3231便宜還精確,才幾毛錢一塊。

這個(gè)一個(gè)也7塊多吧
作者: niehaitao    時(shí)間: 2023-12-15 21:15
感謝樓主分享,自己搭了一個(gè),用手里的兩個(gè)STC12C5A60S2寫進(jìn)去一直顯示亂碼,以為是壞的,就用手頭的STC89C516重新把程序精簡(jiǎn)掉一些,也搞出來(lái)了,換了更大的字顯示時(shí)間,走了一些彎路,今天把STC12C5A60S2的也搞好了,修改了幾個(gè)小地方,樓主里面的程序還要研究一下才能搞明白,論壇確實(shí)能學(xué)到東西,非常感謝!

51hei圖片_20231215205659.jpg (147.6 KB, 下載次數(shù): 549)

51hei圖片_20231215205659.jpg

51hei圖片_20231215205808.jpg (103.4 KB, 下載次數(shù): 539)

51hei圖片_20231215205808.jpg

51hei圖片_20231215205800.jpg (121.06 KB, 下載次數(shù): 552)

51hei圖片_20231215205800.jpg

51hei圖片_20231215205754.jpg (137.08 KB, 下載次數(shù): 542)

51hei圖片_20231215205754.jpg

51hei圖片_20231215205713.jpg (143.71 KB, 下載次數(shù): 549)

51hei圖片_20231215205713.jpg

51hei圖片_20231215205728.jpg (146.54 KB, 下載次數(shù): 513)

51hei圖片_20231215205728.jpg

51hei圖片_20231215205721.jpg (141.86 KB, 下載次數(shù): 543)

51hei圖片_20231215205721.jpg

51hei圖片_20231215205741.jpg (148.75 KB, 下載次數(shù): 518)

51hei圖片_20231215205741.jpg

作者: 1860774xxxx    時(shí)間: 2023-12-16 19:07
niehaitao 發(fā)表于 2023-12-15 21:15
感謝樓主分享,自己搭了一個(gè),用手里的兩個(gè)STC12C5A60S2寫進(jìn)去一直顯示亂碼,以為是壞的,就用手頭的STC89C ...

動(dòng)手能力強(qiáng) 可以可以
作者: dyx811    時(shí)間: 2023-12-27 12:44
樓主太用心了!謝謝您的分享!向您學(xué)習(xí)!
作者: 3253087609ydrq    時(shí)間: 2024-5-18 00:41
樓主你好,STC12C5A60S2的P0口一定要加上拉電阻嗎
作者: 1860774xxxx    時(shí)間: 2024-5-18 12:21
3253087609ydrq 發(fā)表于 2024-5-18 00:41
樓主你好,STC12C5A60S2的P0口一定要加上拉電阻嗎

一定要 10K阻排可以了
作者: maijinzhi    時(shí)間: 2024-8-7 16:41
字體我覺得挺好看的,
作者: 巨人卡奧    時(shí)間: 2024-8-16 09:27
很漂亮的臺(tái)燈,謝謝你,好資料先收藏有空也做一個(gè)
作者: QQ6272272    時(shí)間: 2024-8-22 21:07
感謝樓主分享,值得好好學(xué)習(xí)
作者: an2041    時(shí)間: 2024-12-14 15:48
Su_xin 發(fā)表于 2023-1-17 15:47
字體我覺得挺好看的,請(qǐng)問(wèn)樓主有PCB嗎?

我之前做了一個(gè)PCB。
作者: an2041    時(shí)間: 2024-12-14 15:49
Su_xin 發(fā)表于 2023-1-17 15:47
字體我覺得挺好看的,請(qǐng)問(wèn)樓主有PCB嗎?

之前做的一個(gè)PCB

STC12C5A-48-19264.zip

576.09 KB, 下載次數(shù): 0, 下載積分: 黑幣 -5


作者: sjh7366    時(shí)間: 2024-12-15 13:27
感謝分享,收藏了
作者: gemxie    時(shí)間: 2024-12-20 21:02
這是代碼嗎??謝謝分享了
作者: aayon1979    時(shí)間: 2025-1-5 21:20
這個(gè)資源很好!




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1