找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 14292|回復(fù): 84
收起左側(cè)

全新STC12C5A60S2單片機(jī)+LCD19264大屏萬年歷農(nóng)歷生肖節(jié)氣節(jié)日顯示+鬧鐘+溫濕度+臺(tái)燈

  [復(fù)制鏈接]
ID:468209 發(fā)表于 2022-12-26 15:24 | 顯示全部樓層 |閱讀模式
本帖最后由 1860774xxxx 于 2022-12-26 15:28 編輯

這是舊版 退役拆解了
211618hzo6406o86rosoz0.jpg


新版
批注 2022-12-26 142331.jpg

與電路圖所示 共設(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)單無極調(diào)節(jié) 0-255可調(diào)
IMG_20221226_134802.jpg
IMG_20221226_134814.jpg


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

數(shù)碼字體
IMG_20221226_134937.jpg

創(chuàng)意字體
IMG_20221226_134904.jpg


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

4.新增功能菜單
IMG_20221226_135055.jpg

時(shí)鐘設(shè)置
IMG_20221226_135045.jpg

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

設(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ì)丟失
IMG_20221226_135135.jpg

IMG_20221226_135252.jpg


下載前須知
固件版本在v7.1及以上可用
批注 2022-12-26 140830.jpg


部分程序
#include <STC12C5A60S2.H>   //此文件中定義了單片機(jī)的一些特殊功能寄存器
#define uchar unsigned char //宏定義無符號(hào)字符形數(shù)據(jù)類型進(jìn)行聲明定義 定義名稱uchar 所占位數(shù)8位 范圍0~255
#define uint unsigned int   //宏定義無符號(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ù)是空白跳過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ì)直接跳過*/
        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ù)不是空白直接跳過
        
        jdms=IapReadByte(EEPROM_7);             //讀出EEPROM_7 鍵燈模式狀態(tài) 地址0x0007
        if(IapReadByte(EEPROM_7)==0xff)jdms=0;  //判斷鍵燈模式數(shù)據(jù)是否空白 如果空白重新初始化 默認(rèn)全亮 否則數(shù)據(jù)不是空白直接跳過
        
        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ù)不是空白直接跳過
        
        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ù)不是空白直接跳過
        
        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ù)不是空白直接跳過
        
        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ù)不是空白直接跳過
        
        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ù)不是空白直接跳過
}


/*背光時(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í)行以下程序 否則直接跳過此程序
  {
          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)
*輸入    :無
*輸出    :無
*調(diào)用說明:外部調(diào)用
*函數(shù)說明: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模式,無中斷
        //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

回復(fù)

使用道具 舉報(bào)

ID:1037819 發(fā)表于 2022-12-27 08:10 | 顯示全部樓層
創(chuàng)意字體并不好看吶
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2022-12-27 12:21 來自手機(jī) | 顯示全部樓層
wjq1n 發(fā)表于 2022-12-27 08:10
創(chuàng)意字體并不好看吶

創(chuàng)意字體是亂畫 你要是有好看的時(shí)鐘大字體也分享下貝
回復(fù)

使用道具 舉報(bào)

ID:16255 發(fā)表于 2022-12-29 11:04 | 顯示全部樓層
wjq1n 發(fā)表于 2022-12-27 08:10
創(chuàng)意字體并不好看吶

我也這么認(rèn)為,創(chuàng)意字體不怎么好看。(僅僅是個(gè)人感覺。)
回復(fù)

使用道具 舉報(bào)

ID:34298 發(fā)表于 2022-12-29 14:17 | 顯示全部樓層
樓主用rx8025T時(shí)鐘芯片,比sd3231便宜還精確,才幾毛錢一塊。
回復(fù)

使用道具 舉報(bào)

ID:57414 發(fā)表于 2022-12-29 17:46 | 顯示全部樓層
字體我覺得挺好看的,請(qǐng)問樓主有PCB嗎?我想跟風(fēng)試制一個(gè)
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2022-12-29 19:18 來自手機(jī) | 顯示全部樓層
fancunwu 發(fā)表于 2022-12-29 14:17
樓主用rx8025T時(shí)鐘芯片,比sd3231便宜還精確,才幾毛錢一塊。

沒有rx8025 3231是已前買的
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2022-12-29 19:18 來自手機(jī) | 顯示全部樓層
1109 發(fā)表于 2022-12-29 17:46
字體我覺得挺好看的,請(qǐng)問樓主有PCB嗎?我想跟風(fēng)試制一個(gè)

沒有 自己焊的
回復(fù)

使用道具 舉報(bào)

ID:16255 發(fā)表于 2022-12-30 09:46 | 顯示全部樓層
fancunwu 發(fā)表于 2022-12-29 14:17
樓主用rx8025T時(shí)鐘芯片,比sd3231便宜還精確,才幾毛錢一塊。

哪里來的幾毛錢一個(gè)?我看到的是幾塊錢一個(gè)。
回復(fù)

使用道具 舉報(bào)

ID:34298 發(fā)表于 2022-12-31 10:54 | 顯示全部樓層
mengsiu 發(fā)表于 2022-12-30 09:46
哪里來的幾毛錢一個(gè)?我看到的是幾塊錢一個(gè)。

某一個(gè)寶RX8025T。.59元一個(gè)還包郵
回復(fù)

使用道具 舉報(bào)

ID:93626 發(fā)表于 2023-1-17 15:47 | 顯示全部樓層

字體我覺得挺好看的,請(qǐng)問樓主有PCB嗎?
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2023-1-17 19:26 來自手機(jī) | 顯示全部樓層
Su_xin 發(fā)表于 2023-1-17 15:47
字體我覺得挺好看的,請(qǐng)問樓主有PCB嗎?

沒有 自己焊的 有電路圖 PCB板自己做就可以了
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2023-1-17 19:29 來自手機(jī) | 顯示全部樓層
沒有PCB 自己焊
IMG_20221226_134541.jpg
回復(fù)

使用道具 舉報(bào)

ID:894868 發(fā)表于 2023-1-29 17:47 | 顯示全部樓層
厲害,還是自己焊接的PCB 而且外觀還是不錯(cuò),功能挺齊全,贊一個(gè)
回復(fù)

使用道具 舉報(bào)

ID:1061818 發(fā)表于 2023-1-30 20:08 | 顯示全部樓層
LCD要另寫程序嗎?
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2023-1-31 12:21 來自手機(jī) | 顯示全部樓層
hrx007zq 發(fā)表于 2023-1-30 20:08
LCD要另寫程序嗎?

同型號(hào)屏不須要
回復(fù)

使用道具 舉報(bào)

ID:491875 發(fā)表于 2023-1-31 16:29 | 顯示全部樓層
LCD屏帶字庫(kù)嗎?或者帶字庫(kù)與否都可以使用?
回復(fù)

使用道具 舉報(bào)

ID:512651 發(fā)表于 2023-2-1 10:15 | 顯示全部樓層
樓主你好,請(qǐng)問有替代的屏型號(hào)嗎?這個(gè)屏買不到呢
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2023-2-1 12:24 來自手機(jī) | 顯示全部樓層
老愚童63 發(fā)表于 2023-1-31 16:29
LCD屏帶字庫(kù)嗎?或者帶字庫(kù)與否都可以使用?

不帶 同型號(hào)不須修改可用 不型號(hào)須自己寫屏程序
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2023-2-1 12:25 來自手機(jī) | 顯示全部樓層
gw168sh 發(fā)表于 2023-2-1 10:15
樓主你好,請(qǐng)問有替代的屏型號(hào)嗎?這個(gè)屏買不到呢

可以換 自己改屏程序
回復(fù)

使用道具 舉報(bào)

ID:491875 發(fā)表于 2023-2-1 14:57 | 顯示全部樓層
1860774xxxx 發(fā)表于 2023-2-1 12:24
不帶 同型號(hào)不須修改可用 不型號(hào)須自己寫屏程序

謝謝
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2023-2-1 20:58 來自手機(jī) | 顯示全部樓層
ks0108控制器的19264屏可用  否則自行改屏程序
回復(fù)

使用道具 舉報(bào)

ID:45164 發(fā)表于 2023-2-13 19:58 | 顯示全部樓層
1109 發(fā)表于 2022-12-29 17:46
字體我覺得挺好看的,請(qǐng)問樓主有PCB嗎?我想跟風(fēng)試制一個(gè)

我按照電路畫過一個(gè)PCB圖下載程序正常顯示。
回復(fù)

使用道具 舉報(bào)

ID:269960 發(fā)表于 2023-3-1 10:02 | 顯示全部樓層
鬧鐘可以通過加程序變成10個(gè)鬧鐘嗎
回復(fù)

使用道具 舉報(bào)

ID:269960 發(fā)表于 2023-3-1 11:16 | 顯示全部樓層
外殼的鏈接可以分享下嗎
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2023-3-1 12:22 來自手機(jī) | 顯示全部樓層
15352536450 發(fā)表于 2023-3-1 10:02
鬧鐘可以通過加程序變成10個(gè)鬧鐘嗎

當(dāng)然可以
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2023-3-1 18:52 來自手機(jī) | 顯示全部樓層
15352536450 發(fā)表于 2023-3-1 11:16
外殼的鏈接可以分享下嗎

abs防水盒網(wǎng)上大把
回復(fù)

使用道具 舉報(bào)

ID:45164 發(fā)表于 2023-3-8 08:47 | 顯示全部樓層
Su_xin 發(fā)表于 2023-1-17 15:47
字體我覺得挺好看的,請(qǐng)問樓主有PCB嗎?

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

LCD19264-2.zip

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

回復(fù)

使用道具 舉報(bào)

ID:529213 發(fā)表于 2023-3-9 07:21 來自手機(jī) | 顯示全部樓層
http://www.torrancerestoration.com/bbs/dpj-176725-1.html  這個(gè)大佬的字庫(kù)很漂亮,大氣
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2023-3-9 12:26 來自手機(jī) | 顯示全部樓層
發(fā)表于 2023-3-9 07:21


好看 有時(shí)間就換一下
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2023-3-12 21:16 來自手機(jī) | 顯示全部樓層
試了一下網(wǎng)友提供的時(shí)鐘字體 太粗了 與下面的小字很不協(xié)調(diào)  效果如圖 喜歡的自己換吧
IMG_20230312_210948.jpg
回復(fù)

使用道具 舉報(bào)

ID:824664 發(fā)表于 2023-3-12 23:56 | 顯示全部樓層
非常感謝,值得好好學(xué)習(xí)。
回復(fù)

使用道具 舉報(bào)

ID:1054240 發(fā)表于 2023-3-29 17:42 | 顯示全部樓層
an2041 發(fā)表于 2023-2-13 19:58
我按照電路畫過一個(gè)PCB圖下載程序正常顯示。

大佬可以分享一下你的PCD嗎
回復(fù)

使用道具 舉報(bào)

ID:106272 發(fā)表于 2023-4-2 21:20 | 顯示全部樓層
這個(gè)程序可以使用89c52嗎?不使用EEPROM的情況下
回復(fù)

使用道具 舉報(bào)

ID:468209 發(fā)表于 2023-4-2 23:01 來自手機(jī) | 顯示全部樓層
3310mad2 發(fā)表于 2023-4-2 21:20
這個(gè)程序可以使用89c52嗎?不使用EEPROM的情況下

不知道哈 自己試試貝 定時(shí)器的得改 延遲程序你得改 鬧鐘保存你得改 設(shè)置保存你得改 否則用不了 還沒有臺(tái)燈調(diào)光  還不如買一個(gè)12的高速單片機(jī) 也不貴
回復(fù)

使用道具 舉報(bào)

ID:287832 發(fā)表于 2023-6-4 17:41 | 顯示全部樓層
感謝樓主分享,我也跟風(fēng)試復(fù)制一個(gè)玩玩
回復(fù)

使用道具 舉報(bào)

ID:1082284 發(fā)表于 2023-6-6 01:16 來自手機(jī) | 顯示全部樓層
grant 發(fā)表于 2023-6-4 17:41
感謝樓主分享,我也跟風(fēng)試復(fù)制一個(gè)玩玩

我也是這樣打算的
回復(fù)

使用道具 舉報(bào)

ID:94253 發(fā)表于 2023-6-6 06:47 | 顯示全部樓層
這個(gè)外殼專門定做的嗎?
回復(fù)

使用道具 舉報(bào)

ID:94253 發(fā)表于 2023-6-6 06:50 | 顯示全部樓層
回復(fù)

使用道具 舉報(bào)

ID:94253 發(fā)表于 2023-6-6 06:56 | 顯示全部樓層
1860774xxxx 發(fā)表于 2023-3-1 18:52
abs防水盒網(wǎng)上大把

哦,看了下還真是,開孔這么整齊要用什么工具。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表