之前花了40塊錢(qián)買(mǎi)了個(gè)萬(wàn)年歷的套件,用的是TG1508D5V2芯片,結(jié)果焊接好后發(fā)現(xiàn)按鍵無(wú)反應(yīng),被我折騰了好久,不僅按鍵沒(méi)弄好,顯示也有問(wèn)題了,問(wèn)了賣(mài)家也說(shuō)不清楚,賣(mài)家又沒(méi)有技術(shù)支持,然后就扔在那兒了,現(xiàn)在我已經(jīng)學(xué)會(huì)了單片機(jī),所以重新拿它出來(lái)自己改造,把萬(wàn)年歷芯片換成了89C52單片機(jī),自己寫(xiě)程序,然后自己還弄了首加沃特舞曲作為鬧鈴聲,看下程序就自己會(huì)編了,照著譜子編。
原理圖:
這個(gè)就是壞了的芯片,應(yīng)該是壞了吧,換上了我們的89C52
PCB正面,左邊那個(gè)位置就是放芯片的,我現(xiàn)在把芯片弄下來(lái)了,放了排針
反面,基本上電路都沒(méi)有改動(dòng),只有4個(gè)led的線路改了下
單片機(jī)小板,89C52+1302,以及13個(gè)三極管 反面
接上飛線,不算很多飛線吧
4個(gè)按鍵,還是按原來(lái)的不變 組裝好,用的是5v的開(kāi)關(guān)電源,以前是變壓器 不知道怎么倒過(guò)來(lái)了,哈哈 完成,下面聽(tīng)聽(tīng)我編的加沃特舞曲吧,可能大家不喜歡,天空之城比較好聽(tīng),這個(gè)加沃特舞曲是我以前學(xué)小提琴的時(shí)候拉過(guò)的,所以就拿來(lái)編了 - #include
- #include
- #include "nongli.h"
- #define uchar unsigned char
- #define uint unsigned int
- unsigned int c;
- uchar code disdata[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc7,0xc1,0x86,0xc8,0x8e,0x89};// 無(wú)小數(shù)點(diǎn)數(shù)碼管段碼表(0~9,L,U,E,N,F,H)
- /****************************************************************************/
- sbit clock_clk = P1 ^ 0; //ds1302_clk(時(shí)鐘線)//DS1302時(shí)鐘接口
- sbit clock_dat = P1 ^ 1; //ds1302_dat(數(shù)據(jù)線)//DS1302時(shí)鐘接口
- sbit clock_Rst = P1 ^ 2; //ds1302_Rst(復(fù)位線)//DS1302時(shí)鐘接口
- sbit KEY =P1 ^ 3; //按鍵1,設(shè)置
- sbit KEY1 =P1 ^ 4; //按鍵2,上調(diào)
- sbit KEY2 =P1 ^ 5; //按鍵3,下調(diào)
- sbit KEY3 =P1 ^ 6; //按鍵4, 退出
- sbit voic =P1 ^ 7; //聲音輸出
- //sbit J1 =P3 ^ 5; //鬧鐘輸出端
- sbit J2 =P3 ^ 6; //整點(diǎn)報(bào)時(shí)輸出端
- sbit J3 =P3 ^ 7; //音樂(lè)播放輸出端
- //正極端為P2接口和以下P3接口,負(fù)極端為P0接口
- sbit HH1 =P3 ^ 0; //設(shè)置LED點(diǎn)陣屏連接的I/O口
- sbit HH2 =P3 ^ 1; //設(shè)置LED點(diǎn)陣屏連接的I/O口
- sbit HH3 =P3 ^ 2; //設(shè)置LED點(diǎn)陣屏連接的I/O口
- sbit HH4 =P3 ^ 3; //設(shè)置LED點(diǎn)陣屏連接的I/O口
- sbit HH5 =P3 ^ 4; //設(shè)置LED點(diǎn)陣屏連接的I/O口
- //定義累加器A中的各位
- sbit a0 = ACC ^ 0;sbit a1 = ACC ^ 1;sbit a2 = ACC ^ 2;
- sbit a3 = ACC ^ 3;sbit a4 = ACC ^ 4;sbit a5 = ACC ^ 5;
- sbit a6 = ACC ^ 6;sbit a7 = ACC ^ 7;
- //定義全局變量
- unsigned char yy,mo,dd,xq,hh,mm,ss,NZ_H,NZ_M,G,L;//定義時(shí)間映射全局變量(專(zhuān)用寄存器)
- unsigned char MENU;//菜單切換標(biāo)志位
- unsigned char TIME_YY,TIME_MO,TIME_DD,TIME_HH,TIME_MM,TIME_SS;//設(shè)置年、月、日、時(shí)、分、秒存放區(qū),用于調(diào)時(shí)
- //unsigned char AL1_HH,AL1_MM;//設(shè)置J時(shí)、分*
- //unsigned char AL2_HH,AL2_MM;//設(shè)置J時(shí)、分*
- unsigned char NZ_HH,NZ_MM;//設(shè)置NZ時(shí)、分*
- unsigned char GG;//鬧鐘開(kāi)啟關(guān)閉位
- unsigned char LL;//整點(diǎn)報(bào)時(shí)開(kāi)啟關(guān)閉位
- data unsigned char cou = 0; // 軟計(jì)數(shù)器,對(duì)10ms時(shí)基信號(hào)累加到1s
- data unsigned char bn;//掃描映射全局變量
- data unsigned char DY_PWM;//顯示亮度
- //以下是C調(diào)低音的音頻宏定義
- #define L1 262 //將"L1"宏定義為低音"1"的頻率262Hz 時(shí)間是1/262=3826/2 us 取半周期
- #define L2 286 //將"L2"宏定義為低音"2"的頻率286Hz
- #define L3 311 //將"L3"宏定義為低音"3"的頻率311Hz
- #define L4 349 //將"L4"宏定義為低音"4"的頻率349Hz
- #define L5 392 //將"L5"宏定義為低音"5"的頻率392Hz
- #define L6 440 //將"l_a"宏定義為低音"6"的頻率440Hz
- #define L7 494 //將"L7"宏定義為低音"7"的頻率494Hz
- //以下是C調(diào)中音的音頻宏定義
- #define Z1 523 //將"Z1"宏定義為中音"1"的頻率523Hz
- #define Z2 587 //將"Z2"宏定義為中音"2"的頻率587Hz
- #define Z3 659 //將"Z3"宏定義為中音"3"的頻率659Hz
- #define Z4 698 //將"Z4"宏定義為中音"4"的頻率698Hz
- #define Z5 784 //將"Z5"宏定義為中音"5"的頻率784Hz
- #define Z6 880 //將"Z6"宏定義為中音"6"的頻率880Hz
- #define Z7 987 //將"Z7"宏定義為中音"7"的頻率523H
- //以下是C調(diào)高音的音頻宏定義
- #define H1 1046 //將"H1"宏定義為高音"1"的頻率1046Hz
- #define H2 1174 //將"H2"宏定義為高音"2"的頻率1174Hz
- #define H3 1318 //將"H3"宏定義為高音"3"的頻率1318Hz
- #define H4 1396 //將"H4"宏定義為高音"4"的頻率1396Hz
- #define H5 1567 //將"H5"宏定義為高音"5"的頻率1567Hz
- #define H6 1760 //將"H6"宏定義為高音"6"的頻率1760Hz
- #define H7 1975 //將"H7"宏定義為高音"7"的頻率1975Hz
- #define O 0 //定義休止符
- //以下是《加沃特舞曲》簡(jiǎn)譜 //每行對(duì)應(yīng)一小節(jié)音符
- unsigned int code f1[]={ H2,H3,H2,Z7,H1,H2,H1,Z6, Z5,H4,H5,Z5,O, H1,H2,H1,Z6,Z7,H1,Z7,Z5, Z6,H1,H2,Z2,O,
- H2,H3,H2,Z7,H1,H2,H1,Z6, Z5,H4,H5,Z5,O, Z7,Z5,Z3,Z5,Z3,Z1, Z2,H1,H2,Z2,O,
- Z6,H1,Z7,H2,H1,Z7,Z6,Z5, Z4,Z6,H1,O, Z7,H2,H1,H3,H2,H1,Z7,Z6, Z5,Z7,H2,O,
- H3,H2,H2,H1,H1,Z7,Z7,Z5, Z6,H1,H3,O, H2,Z7,Z4,Z5,H1,Z6,Z3,Z4, Z5,H4,H5,Z5,O,
-
- Z7,Z7,H1,H1, H2,H5,H4,H5,H2,O, Z5,Z5,Z6,Z6, Z7,H2,H1,H2,H3,H2,H1,Z7,Z6,Z2,Z4,Z2,
- Z3,Z5,Z3,H3,Z3, Z2,Z5,Z2,H2,Z2, H1,Z2,Z7,Z2, Z6,Z6,Z7,H1,Z7,Z6,O,
- Z7,Z7,H1,H1, H2,H5,H4,H5,H2,O, Z5,Z5,Z6,Z6, Z7,H2,H1,H2,H3,H2,H1,Z7,Z6,Z2,Z4,Z2,
- Z3,Z5,Z3,H3,Z3, Z2,Z5,Z2,H2,Z2, H1,Z2,Z7,Z2, Z6,Z6,Z7,H1,Z7,Z6,O,
-
- H1,H1,Z7,Z6,Z5,Z4, H4,H5,Z2,Z5,O,
- H1,H1,Z7,Z6,Z5,Z4, H4,H5,Z5,Z7,O,
- Z3,Z5,Z4,Z3,Z2,Z1,H3, Z2,Z2,Z3,Z2,Z1,L7,H2,
- H1,H3,H2,H1,Z7,Z6,H4, H5,Z5,L5,O,
- 0xff}; //以0xff作為音符的結(jié)束標(biāo)志
- //以下是簡(jiǎn)譜中每個(gè)音符的節(jié)拍
- //"4"對(duì)應(yīng)4個(gè)延時(shí)單位,"2"對(duì)應(yīng)2個(gè)延時(shí)單位,"1"對(duì)應(yīng)1個(gè)延時(shí)單位
- unsigned char code JP1[ ]={ 4,4,4,4,4,4,4,4, 8,1,8,8,8, 4,4,4,4,4,4,4,4, 8,1,8,8,8, 4,4,4,4,4,4,4,4, 8,1,8,8,8,
- 8,4,4,8,4,4, 8,1,8,8,8, 4,4,4,4,4,4,4,4, 8,8,8,8, 4,4,4,4,4,4,4,4, 8,8,8,8,
- 4,4,4,4,4,4,4,4, 8,8,8,8, 4,4,4,4,4,4,4,4, 8,1,8,8,8,
- 16,16,16,16, 8,8,8,8,16,16, 16,16,16,16, 4,4,4,4,4,4,4,4,8,8,8,8,
- 16,8,8,16,16, 16,8,8,16,16, 16,16,16,16, 16,4,4,4,4,16,16,
- 16,16,16,16, 8,8,8,8,16,16, 16,16,16,16, 4,4,4,4,4,4,4,4,8,8,8,8,
- 16,8,8,16,16, 16,8,8,16,16, 16,16,16,16, 16,4,4,4,4,16,16,
- 16,4,4,4,4,16,16, 16,16,16,16, 16,4,4,4,4,16,16, 16,16,16,16,
- 16,4,4,4,4,16,16, 16,4,4,4,4,16,16, 16,4,4,4,4,16,16, 16,16,16,16,
- };
- /****************************************************************************/
- //延時(shí)
- void DelayMS(uint i) { while(i--); }
- /*
- void DelayMS(uint x)
- {
- uchar t;
- while(x--) for(t=0;t<30;t++);
-
- }
- */
- /****************************************************************************/
- void diplay_data (unsigned char l,unsigned char d){
- switch (l){//顯示的列位置
- case 1://
- P0 = d;P2 = 0x01;DelayMS(c);P0=0xff;P2 = 0x00;
- break;//
- case 2://
- P0 = d;P2 = 0x02;DelayMS(c);P0=0xff;P2 = 0x00;
- break;//
- case 3://
- P0 = d;P2 = 0x04;DelayMS(c);P0=0xff;P2 = 0x00;
- break;//
- case 4://
- P0 = d;P2 = 0x08;DelayMS(c);P0=0xff;P2 = 0x00;
- break;//
- case 5://
- P0 = d;P2 = 0x10;DelayMS(c);P0=0xff;P2 = 0x00;
- break;//
- case 6://
- P0 = d;P2 = 0x20;DelayMS(c);P0=0xff;P2 = 0x00;
- break;//
- case 7://
- P0 = d;P2 = 0x40;DelayMS(c);P0=0xff;P2 = 0x00;
- break;//
- case 8://
- P0 = d;P2 = 0x80;DelayMS(c);P0=0xff;P2 = 0x00;
- break;//
- case 9://
- P0 = d;HH1 = 1;DelayMS(c);P0=0xff;HH1 = 0;
- break;//
- case 10://
- P0 = d;HH2 = 1;DelayMS(c);P0=0xff;HH2 = 0;
- break;//
- case 11://
- P0 = d;HH3 = 1;DelayMS(c);P0=0xff;HH3 = 0;
- break;//
- case 12://
- P0 = d;HH4 = 1;DelayMS(c);P0=0xff;HH4 = 0;
- break;//
- case 13://
- P0 = d;HH5 = 1;DelayMS(c);P0=0xff;HH5 = 0;
- break;//
- }
- }
- /*********************************************************************************************/
- /*********************************************************************************************
- 函數(shù)名:1302驅(qū)動(dòng)程序
- 調(diào) 用:
- 參 數(shù):無(wú)
- 返回值:無(wú)
- 結(jié) 果:
- 備 注:適用于DS1302芯片+32.768KHz6pF晶體
- /**********************************************************************************************/
- //1302驅(qū)動(dòng)程序(底層協(xié)議)
- void clock_out(unsigned char dd){
- ACC=dd;// 0x80 = 1000 0000
- clock_dat=a0; clock_clk=1; clock_clk=0;
- clock_dat=a1; clock_clk=1; clock_clk=0;
- clock_dat=a2; clock_clk=1; clock_clk=0;
- clock_dat=a3; clock_clk=1; clock_clk=0;
- clock_dat=a4; clock_clk=1; clock_clk=0;
- clock_dat=a5; clock_clk=1; clock_clk=0;
- clock_dat=a6; clock_clk=1; clock_clk=0;
- clock_dat=a7; clock_clk=1; clock_clk=0;
- }
- /*****************************************************************************/
- //DS1302寫(xiě)數(shù)據(jù)(底層協(xié)議)
- void write_clock(unsigned char ord, unsigned char dd){
- clock_clk=0;
- clock_Rst=0;
- clock_Rst=1;
- clock_out(ord);
- clock_out(dd);
- clock_Rst=0;
- clock_clk=1;
- }
- /*****************************************************************************/
- //DS1302寫(xiě)入字節(jié)(底層協(xié)議)
- unsigned char clock_in(void){
- clock_dat=1;
- a0=clock_dat;
- clock_clk=1; clock_clk=0; a1=clock_dat;
- clock_clk=1; clock_clk=0; a2=clock_dat;
- clock_clk=1; clock_clk=0; a3=clock_dat;
- clock_clk=1; clock_clk=0; a4=clock_dat;
- clock_clk=1; clock_clk=0; a5=clock_dat;
- clock_clk=1; clock_clk=0; a6=clock_dat;
- clock_clk=1; clock_clk=0; a7=clock_dat;
- return(ACC);
- }
- /*****************************************************************************/
- //DS1302讀數(shù)據(jù)(底層協(xié)議)
- unsigned char read_clock(unsigned char ord){
- unsigned char dd=0;
- clock_clk=0;
- clock_Rst=0;
- clock_Rst=1;
- clock_out(ord);
- dd=clock_in();
- clock_Rst=0;
- clock_clk=1;
- return(dd);
- }
- /*****************************************************************************/
- //常用時(shí)鐘數(shù)據(jù)讀取
- void read_clockS(void){
- ss = read_clock(0x81);//讀取秒數(shù)據(jù)
- mm = read_clock(0x83);//讀取分鐘數(shù)據(jù)
- hh = read_clock(0x85);//小時(shí)
- dd = read_clock(0x87);//日
- mo = read_clock(0x89);//月
- yy = read_clock(0x8d);//年
- // xq = read_clock(0x8b);//星期
- // xq = xq%16; //字節(jié)低4位的BCD碼放入xq
- // AL1_H = read_clock(0xc1);
- // AL1_M = read_clock(0xc3);
- // AL2_H = read_clock(0xc5);
- // AL2_M = read_clock(0xc9);
- NZ_H = read_clock(0xd1);
- NZ_M = read_clock(0xe1);
- G = read_clock(0xe3);
- L = read_clock(0xe5);
- }
- /*****************************************************************************/
- /*********************************************************************************************
- 函數(shù)名:1302初始化程序
- 調(diào) 用:
- 參 數(shù):無(wú)
- 返回值:無(wú)
- 結(jié) 果:初始化時(shí)鐘芯片,自動(dòng)檢測(cè)并初始化
- 備 注:適用于DS1302芯片+32.768KHz6pF晶體
- /**********************************************************************************************/
- //設(shè)置1302的初始時(shí)間(自動(dòng)初始化)
- void Init_1302(void){//-設(shè)置1302的初始時(shí)間(2010年1月1日00時(shí)00分50秒星期一)
- unsigned char f;
- if(read_clock(0x81) == 0x80){
- write_clock(0x8e,0x00);//允許寫(xiě)操作
- write_clock(0x8c,0x10);//年
- write_clock(0x8a,0x05);//星期
- write_clock(0x88,0x01);//月
- write_clock(0x86,0x01);//日
- write_clock(0x84,0x23);//小時(shí)
- write_clock(0x82,0x59);//分鐘
- write_clock(0x80,0x50);//秒
- write_clock(0x90,0x05);//充電設(shè)置(0x05不充電,0xa5充電)
- write_clock(0xe2,0x00);//充電設(shè)置(0x05不充電,0xa5充電)
- write_clock(0xe4,0x00);//
- for(f=0;f<60;f=f+2){//清除鬧鐘RAM位為0
- write_clock(0xc0+f,0x00);
- }
- write_clock(0xC4,0x09);//背光初始為亮度9
- write_clock(0x8e,0x80);//禁止寫(xiě)操作
- }
- }
- /**********************************************************************************************/
- //主程序
- void main()
- {
- //uchar i,wei=0x80;
- unsigned char s,d,f,h,g,e,nn;
- unsigned int b;
- unsigned int i,j;
- MENU=0;
- voic=0;
- s=0,d=0,f=0,h=0,g=0,e=0,nn=0;
- GG=0x00,LL=0x00;
- HH1=0,HH2=0,HH3=0,HH4=0,HH5=0;
- P2=0x00,P0=0xff;
- // J1=1;
- J2=1;
- J3=1;
- c=60;
- i=0;
- Init_1302();//初始程序
- while(1)
- {
- read_clockS();
- Conversion(0,yy,mo,dd); //公歷轉(zhuǎn)農(nóng)歷
- Conver_week(0,yy,mo,dd);//計(jì)算星期
- /*
- diplay_data (1,disdata[hh/16]);
- diplay_data (2,disdata[hh%16]);
- diplay_data (3,disdata[mm/16]);
- diplay_data (4,disdata[mm%16]);
- diplay_data (5,disdata[ss/16]);
- diplay_data (6,disdata[ss%16]);
- diplay_data (7,disdata[xq]);
- diplay_data (8,disdata[9]);
- */
- /**************************************************************************/
- if(MENU==0){ //顯示正常走時(shí)主界面
- voic=0;
- c=60;
- diplay_data (1,disdata[yy/16]);//1
- diplay_data (2,disdata[yy%16]);//2
- //diplay_data (3,disdata[mo/16]);//3,5
- diplay_data (4,disdata[mo%16]);//4
- diplay_data (5,disdata[dd%16]);//6
- diplay_data (6,disdata[hh/16]);//7
- diplay_data (7,disdata[hh%16]);//8
- diplay_data (8,disdata[mm/16]);//9
- diplay_data (9,disdata[mm%16]);//10
- //diplay_data (10,disdata[mm%16]);//11,13
- diplay_data (11,disdata[month_moon%10]);//12
- diplay_data (12,disdata[day_moon%10]);//14
- if(week==0){diplay_data (13,disdata[8]);}
- else{diplay_data (13,disdata[week]);};//15
- if(dd/16==0){
- if(mo/16==1){
- diplay_data (3,0xdf);//3,5
- }
- }else{
- if(mo/16==1){
- diplay_data (3,disdata[dd/16]-0x20);//3,5
- }else{
- diplay_data (3,disdata[dd/16]);//3,5
- }
- }
- if(day_moon/10==0){
- if(month_moon/10==1){
- diplay_data (10,0xdf);//11,13
- }
- }else{
- if(month_moon/10==1){
- diplay_data (10,disdata[day_moon/10]-0x20);//11,13
- }else{
- diplay_data (10,disdata[day_moon/10]);//11,13
- }
- }
- if(ss%16%2){
- diplay_data (1,0x7f);
- diplay_data (2,0x7f);
- }else{
- diplay_data (1,0xff);
- diplay_data (2,0xff);
- }
- if(G==0xff){
- diplay_data (4,0x7f);
- }else{
- diplay_data (4,0xff);
- }
- if(L==0xff){
- diplay_data (3,0x7f);
- }else{
- diplay_data (3,0xff);
- }
-
- if(KEY==0){
- s++;
- if(s>10){
- s=0;MENU++;
- while(KEY==0){
- TIME_YY = yy/16*10+yy%16;
- diplay_data (1,disdata[TIME_YY/10]);
- diplay_data (2,disdata[TIME_YY%10]);
- }
- }
- }//長(zhǎng)短按鍵處理//長(zhǎng)按轉(zhuǎn)到MENU1
- if(KEY1==0)d++;//打開(kāi)或關(guān)閉整點(diǎn)報(bào)時(shí)
- if(d>10&&KEY1==1){
- d=0;LL=~LL;
- write_clock(0x8e,0x00);//允許寫(xiě)操作
- write_clock(0xe4,LL);//
- }
- if(KEY2==0)f++;//打開(kāi)或關(guān)閉鬧鐘
- if(f>10&&KEY2==1){
- f=0;GG=~GG;
- write_clock(0x8e,0x00);//允許寫(xiě)操作
- write_clock(0xe2,GG);//
- }
- if(KEY3==0)h++;//打開(kāi)或關(guān)閉音樂(lè)
- if(h>10&&KEY3==1){
- h=0;J3=~J3;
- }
-
- }
- /***************************************************************/
- if(MENU==1){//設(shè)置年份
- diplay_data (1,disdata[TIME_YY/10]);
- diplay_data (2,disdata[TIME_YY%10]);
- if(KEY==0){
- s++;
- if(s>10){
- s=0;MENU++;
- write_clock(0x8e,0x00);
- write_clock(0x8c,(TIME_YY/10)*16+TIME_YY%10);
- while(KEY==0){
- TIME_MO = mo/16*10+mo%16;
- if(TIME_MO/10==1){diplay_data (3,0xdf);}
- diplay_data (4,disdata[TIME_MO%10]);
- }
- }
- }//長(zhǎng)短按鍵處理//長(zhǎng)按轉(zhuǎn)到MENU1
- if(KEY1==0)d++;
- if(d>10&&KEY1==1){
- d=0;TIME_YY++;if(TIME_YY>99)TIME_YY=0;
- }
- if(KEY2==0)f++;
- if(f>10&&KEY2==1){
- f=0;
- if(TIME_YY>0){
- TIME_YY--;
- }
- else{
- TIME_YY=99;
- }
- }
- if(KEY3==0)h++;
- if(h>10&&KEY3==1){
- h=0;MENU=0;
- write_clock(0x8e,0x00);
- write_clock(0x8c,(TIME_YY/10)*16+TIME_YY%10);
- }
- }
- /*************************************************************************************/
- if(MENU==2){//設(shè)置月份
- if(TIME_MO/10==1){diplay_data (3,0xdf);}
- diplay_data (4,disdata[TIME_MO%10]);
- if(KEY==0){
- s++;
- if(s>10){
- s=0;MENU++;
- write_clock(0x8e,0x00);
- write_clock(0x88,(TIME_MO/10)*16+TIME_MO%10);
- while(KEY==0){
- TIME_DD = dd/16*10+dd%16;
- if(TIME_DD/10!=0){diplay_data (3,disdata[TIME_DD/10]);}
- diplay_data (5,disdata[TIME_DD%10]);
- }
- }
- }//長(zhǎng)短按鍵處理//長(zhǎng)按轉(zhuǎn)到MENU1
- if(KEY1==0)d++;
- if(d>10&&KEY1==1){
- d=0;TIME_MO++;if(TIME_MO>12)TIME_MO=1;
- }
- if(KEY2==0)f++;
- if(f>10&&KEY2==1){
- f=0;
- if(TIME_MO>1){
- TIME_MO--;
- }
- else{
- TIME_MO=12;
- }
- }
- if(KEY3==0)h++;
- if(h>10&&KEY3==1){
- h=0;MENU=0;
- write_clock(0x8e,0x00);
- write_clock(0x88,(TIME_MO/10)*16+TIME_MO%10);
- }
- }
- /***********************************************************************/
- if(MENU==3){ //調(diào)整日期
- if(TIME_DD/10!=0){diplay_data (3,disdata[TIME_DD/10]);}
- diplay_data (5,disdata[TIME_DD%10]);
- if(KEY==0){
- s++;
- if(s>10){
- s=0;MENU++;
- //Conver_week(0,TIME_YY,TIME_MO,TIME_DD);//計(jì)算星期
- write_clock(0x8e,0x00);
- write_clock(0x86,(TIME_DD/10)*16+TIME_DD%10);
- //write_clock(0x8a,(week/10)*16+week%10);
- while(KEY==0){
- TIME_HH = hh/16*10+hh%16;
- diplay_data (6,disdata[TIME_HH/10]);
- diplay_data (7,disdata[TIME_HH%10]);
- }
- }
- }//長(zhǎng)短按鍵處理//長(zhǎng)按轉(zhuǎn)到MENU1
- if(TIME_MO==1||TIME_MO==3||TIME_MO==5||TIME_MO==7||TIME_MO==8||TIME_MO==10||TIME_MO==12){
- if(KEY1==0)d++;
- if(d>10&&KEY1==1){
- d=0;TIME_DD++;if(TIME_DD>31)TIME_DD=1;
- }
- if(KEY2==0)f++;
- if(f>10&&KEY2==1){
- f=0;
- if(TIME_DD>1){
- TIME_DD--;
- }
- else{
- TIME_DD=31;
- }
- }
- }
- if(TIME_MO==4||TIME_MO==6||TIME_MO==9||TIME_MO==11){
- if(KEY1==0)d++;
- if(d>10&&KEY1==1){
- d=0;TIME_DD++;if(TIME_DD>30)TIME_DD=1;
- }
- if(KEY2==0)f++;
- if(f>10&&KEY2==1){
- f=0;
- if(TIME_DD>1){
- TIME_DD--;
- }
- else{
- TIME_DD=30;
- }
- }
- }
- if(TIME_MO==2){
- if(TIME_YY%4==0){
- if(KEY1==0)d++;
- if(d>10&&KEY1==1){
- d=0;TIME_DD++;if(TIME_DD>29)TIME_DD=1;
- }
- if(KEY2==0)f++;
- if(f>10&&KEY2==1){
- f=0;
- if(TIME_DD>1){
- TIME_DD--;
- }
- else{
- TIME_DD=29;
- }
- }
- }else{
- if(KEY1==0)d++;
- if(d>10&&KEY1==1){
- d=0;TIME_DD++;if(TIME_DD>28)TIME_DD=1;
- }
- if(KEY2==0)f++;
- if(f>10&&KEY2==1){
- f=0;
- if(TIME_DD>1){
- TIME_DD--;
- }
- else{
- TIME_DD=28;
- }
- }
- }
- }
- if(KEY3==0)h++;
- if(h>10&&KEY3==1){
- h=0;MENU=0;
- Conver_week(0,TIME_YY,TIME_MO,TIME_DD);//計(jì)算星期
- week--;
- write_clock(0x8e,0x00);
- write_clock(0x86,(TIME_DD/10)*16+TIME_DD%10);
- write_clock(0x8a,(week/10)*16+week%10);
- }
- }
- /***************************************************************/
- if(MENU==4){//設(shè)置時(shí)間:小時(shí)
- diplay_data (6,disdata[TIME_HH/10]);
- diplay_data (7,disdata[TIME_HH%10]);
- if(KEY==0){
- s++;
- if(s>10){
- s=0;MENU++;
- write_clock(0x8e,0x00);
- write_clock(0x84,(TIME_HH/10)*16+TIME_HH%10);
- while(KEY==0){
- TIME_MM = mm/16*10+mm%16;
- diplay_data (8,disdata[TIME_MM/10]);
- diplay_data (9,disdata[TIME_MM%10]);
- }
- }
- }//長(zhǎng)短按鍵處理//長(zhǎng)按轉(zhuǎn)到MENU1
- if(KEY1==0)d++;
- if(d>10&&KEY1==1){
- d=0;TIME_HH++;if(TIME_HH>23)TIME_HH=0;
- }
- if(KEY2==0)f++;
- if(f>10&&KEY2==1){
- f=0;
- if(TIME_HH>0){
- TIME_HH--;
- }
- else{
- TIME_HH=23;
- }
- }
- if(KEY3==0)h++;
- if(h>10&&KEY3==1){
- h=0;MENU=0;
- write_clock(0x8e,0x00);
- write_clock(0x84,(TIME_HH/10)*16+TIME_HH%10);
- }
- }
- /*************************************************************************************/
- if(MENU==5){//設(shè)置時(shí)間:分鐘
- diplay_data (8,disdata[TIME_MM/10]);// diplay_data (3,disdata[TIME_MM/10]+0x80);
- diplay_data (9,disdata[TIME_MM%10]);// diplay_data (4,disdata[TIME_MM%10]+0x80);
- if(KEY==0){
- s++;
- if(s>10){
- s=0;MENU++;
- write_clock(0x8e,0x00);
- write_clock(0x82,(TIME_MM/10)*16+TIME_MM%10);
- write_clock(0x80,0x00);
- while(KEY==0){
- NZ_HH = NZ_H/16*10+NZ_H%16;
- diplay_data (6,disdata[NZ_HH/10]);
- diplay_data (7,disdata[NZ_HH%10]);
- diplay_data (4,0x7f);
- }
- }
- }//長(zhǎng)短按鍵處理//長(zhǎng)按轉(zhuǎn)到MENU1
- if(KEY1==0)d++;
- if(d>10&&KEY1==1){
- d=0;TIME_MM++;if(TIME_MM>59)TIME_MM=0;
- }
- if(KEY2==0)f++;
- if(f>10&&KEY2==1){
- f=0;
- if(TIME_MM>0){
- TIME_MM--;
- }
- else{
- TIME_MM=59;
- }
- }
- if(KEY3==0)h++;
- if(h>10&&KEY3==1){
- h=0;MENU=0;
- write_clock(0x8e,0x00);
- write_clock(0x82,(TIME_MM/10)*16+TIME_MM%10);
- write_clock(0x80,0x00);
- }
- }
- /***************************************************************************************/
- if(MENU==6){//設(shè)置NZ:小時(shí)
- diplay_data (6,disdata[NZ_HH/10]);
- diplay_data (7,disdata[NZ_HH%10]);
- diplay_data (4,0x7f);
- if(KEY==0){
- s++;
- if(s>10){
- s=0;MENU++;
- write_clock(0x8e,0x00);//允許寫(xiě)操作
- write_clock(0xd0,(NZ_HH/10*16+NZ_HH%10));//年
- while(KEY==0){
- NZ_MM = NZ_M/16*10+NZ_M%16;
- diplay_data (8,disdata[NZ_MM/10]+0X80);
- diplay_data (9,disdata[NZ_MM%10]);
- diplay_data (4,0x7f);
- }
- }
- }//長(zhǎng)短按鍵處理//長(zhǎng)按轉(zhuǎn)到MENU1
- if(KEY1==0)d++;
- if(d>10&&KEY1==1){
- d=0;NZ_HH++;if(NZ_HH>23)NZ_HH=0;
- }
- if(KEY2==0)f++;
- if(f>10&&KEY2==1){
- f=0;
- if(NZ_HH>0){
- NZ_HH--;
- }
- else{
- NZ_HH=23;
- }
- }
- if(KEY3==0)h++;
- if(h>10&&KEY3==1){
- h=0;MENU=0;
- write_clock(0x8e,0x00);
- write_clock(0xd0,(NZ_HH/10*16+NZ_HH%10));//年
- }
- }
- /***************************************************************************************/
- if(MENU==7){//設(shè)置NZ:分鐘
- diplay_data (8,disdata[NZ_MM/10]+0X80);
- diplay_data (9,disdata[NZ_MM%10]);
- diplay_data (4,0x7f);
- if(KEY==0){
- s++;
- if(s>10){
- s=0;MENU++;
- write_clock(0x8e,0x00);//允許寫(xiě)操作
- write_clock(0xe0,(NZ_MM/10*16+NZ_MM%10));//
- while(KEY==0){
- GG = G;
- diplay_data (6,disdata[15]);
- diplay_data (7,disdata[1]);
- diplay_data (8,disdata[0]);
- if(GG==0xff){
- diplay_data (9,disdata[13]);
- diplay_data (4,0x7f);
- }else{
- diplay_data (9,disdata[14]);
- diplay_data (4,0xff);
- }
- }
- }
- }//長(zhǎng)短按鍵處理//長(zhǎng)按轉(zhuǎn)到MENU1
- if(KEY1==0)d++;
- if(d>10&&KEY1==1){
- d=0;NZ_MM++;if(NZ_MM>59)NZ_MM=0;
- }
- if(KEY2==0)f++;
- if(f>10&&KEY2==1){
- f=0;
- if(NZ_MM>0){
- NZ_MM--;
- }
- else{
- NZ_MM=59;
- }
- }
- if(KEY3==0)h++;
- if(h>10&&KEY3==1){
- h=0;MENU=0;
- write_clock(0x8e,0x00);
- write_clock(0xe0,(NZ_MM/10*16+NZ_MM%10));//
- }
- }
- /**************************************************************************/
- if(MENU==8){//鬧鐘開(kāi)啟和關(guān)閉
- diplay_data (6,disdata[15]);
- diplay_data (7,disdata[1]);
- diplay_data (8,disdata[0]);
- if(GG==0xff){
- diplay_data (9,disdata[13]);
- diplay_data (4,0x7f);
- }else{
- diplay_data (9,disdata[14]);
- diplay_data (4,0xff);
- }
- if(KEY==0){
- s++;
- if(s>10){
- s=0;MENU=0;
- write_clock(0x8e,0x00);//允許寫(xiě)操作
- write_clock(0xe2,GG);//
- while(KEY==0){
- diplay_data (1,disdata[yy/16]);//1
- diplay_data (2,disdata[yy%16]);//2
- //diplay_data (3,disdata[mo/16]);//3,5
- diplay_data (4,disdata[mo%16]);//4
- diplay_data (5,disdata[dd%16]);//6
- diplay_data (6,disdata[hh/16]);//7
- diplay_data (7,disdata[hh%16]);//8
- diplay_data (8,disdata[mm/16]);//9
- diplay_data (9,disdata[mm%16]);//10
- //diplay_data (10,disdata[mm%16]);//11,13
- diplay_data (11,disdata[month_moon%10]);//12
- diplay_data (12,disdata[day_moon%10]);//14
- diplay_data (13,disdata[xq]);//15
- if(dd/16==0){
- if(mo/16==1){
- diplay_data (3,0xdf);//3,5
- }
- }else{
- if(mo/16==1){
- diplay_data (3,disdata[dd/16]-0x20);//3,5
- }else{
- diplay_data (3,disdata[dd/16]);//3,5
- }
- }
- if(day_moon/16==0){
- if(month_moon/16==1){
- diplay_data (10,0xdf);//11,13
- }
- }else{
- if(month_moon/16==1){
- diplay_data (10,disdata[day_moon/16]-0x20);//11,13
- }else{
- diplay_data (10,disdata[day_moon/16]);//11,13
- }
- }
- if(ss%16%2){
- diplay_data (1,0x7f);
- diplay_data (2,0x7f);
- }else{
- diplay_data (1,0xff);
- diplay_data (2,0xff);
- }
- if(G==0xff){
- diplay_data (4,0x7f);
- }else{
- diplay_data (4,0xff);
- }
- if(L==0xff){
- diplay_data (3,0x7f);
- }else{
- diplay_data (3,0xff);
- }
- }
- }
- }//長(zhǎng)短按鍵處理//長(zhǎng)按轉(zhuǎn)到MENU1
- if(KEY1==0)d++;
- if(d>10&&KEY1==1){
- d=0;GG = ~GG;
- }
- if(KEY2==0)f++;
- if(f>10&&KEY2==1){
- f=0;
- GG = ~GG;
- }
- if(KEY3==0)h++;
- if(h>10&&KEY3==1){
- h=0;MENU=0;
- write_clock(0x8e,0x00);
- write_clock(0xe2,GG);//
- }
- }
- /**************************************************************************/
- if(MENU==9){//顯示鬧鐘界面
- //i=0; //從第1個(gè)音符f[0]開(kāi)始播放
- while(f1[i]!=0xff&&KEY!=0&&NZ_M==mm) //只要沒(méi)有讀到結(jié)束標(biāo)志就繼續(xù)播放
- {
- if(f1[i]!=0){
- b=(f1[i]*JP1[i])/64;
- c=62500/f1[i]; //
- for(j=0;j<b;j++){ 控制節(jié)拍數(shù)
-
- diplay_data (6,disdata[10]);
- voic = ~voic;
- diplay_data (7,disdata[0]);
- voic = ~voic;
- diplay_data (8,disdata[11]);
- voic = ~voic;
- diplay_data (9,disdata[12]);
- voic = ~voic;
- }
- }else{
- voic = 0;
- b=125*JP1[i]/32;
- c=125;
- for(j=0;j<b;j++){ 控制節(jié)拍數(shù)
- diplay_data (6,disdata[10]);
- diplay_data (7,disdata[0]);
- diplay_data (8,disdata[11]);
- diplay_data (9,disdata[12]);
- }
- }
- i++; //播放下一個(gè)音符
- }
- voic = 0;
- //diplay_data (6,disdata[10]);
- //diplay_data (7,disdata[0]);
- //diplay_data (8,disdata[11]);
- //diplay_data (9,disdata[12]);
- //J1=0;
- if(KEY==0||NZ_M!=mm){
- s++;
- if(s>10||NZ_M!=mm){
- s=0;MENU=0;c=60;i=0;voic=0;
- write_clock(0x8e,0x00);//允許寫(xiě)操作
- write_clock(0xe2,0x00);//
- while(KEY==0){
- diplay_data (1,disdata[yy/16]);//1
- diplay_data (2,disdata[yy%16]);//2
- //diplay_data (3,disdata[mo/16]);//3,5
- diplay_data (4,disdata[mo%16]);//4
- diplay_data (5,disdata[dd%16]);//6
- diplay_data (6,disdata[hh/16]);//7
- diplay_data (7,disdata[hh%16]);//8
- diplay_data (8,disdata[mm/16]);//9
- diplay_data (9,disdata[mm%16]);//10
- //diplay_data (10,disdata[mm%16]);//11,13
- diplay_data (11,disdata[month_moon%10]);//12
- diplay_data (12,disdata[day_moon%10]);//14
- diplay_data (13,disdata[xq]);//15
- if(dd/16==0){
- if(mo/16==1){
- diplay_data (3,0xdf);//3,5
- }
- }else{
- if(mo/16==1){
- diplay_data (3,disdata[dd/16]-0x20);//3,5
- }else{
- diplay_data (3,disdata[dd/16]);//3,5
- }
- }
- if(day_moon/16==0){
- if(month_moon/16==1){
- diplay_data (10,0xdf);//11,13
- }
- }else{
- if(month_moon/16==1){
- diplay_data (10,disdata[day_moon/16]-0x20);//11,13
- }else{
- diplay_data (10,disdata[day_moon/16]);//11,13
- }
- }
- if(ss%16%2){
- diplay_data (1,0x7f);
- diplay_data (2,0x7f);
- }else{
- diplay_data (1,0xff);
- diplay_data (2,0xff);
- }
- if(G==0xff){
- diplay_data (4,0x7f);
- }else{
- diplay_data (4,0xff);
- }
- if(L==0xff){
- diplay_data (3,0x7f);
- }else{
- diplay_data (3,0xff);
- }
- }
- }
- }
- }
-
- /***************************************************************/
- if(MENU==0&&NZ_H==hh&&NZ_M==mm&&G==0xff){
- MENU=9;
- }
- if(MENU==0&&L==0xff&&mm==0&&ss>=0&&ss<15){
- if(ss%2==0){
- J2=0;
- }
- else{
- J2=1;
- }
- }else{
- J2=1;
- }
- /**********************************************************************************************/
- }
- }
復(fù)制代碼
|