|
|
制作出來的實(shí)物圖如下:
IMG_20260228_202514.jpg (3.28 MB, 下載次數(shù): 0)
下載附件
2026-3-2 15:30 上傳
IMG_20260228_201615.jpg (2.92 MB, 下載次數(shù): 0)
下載附件
2026-3-2 15:30 上傳
單片機(jī)源程序如下:
- /**********************************************
- 電子數(shù)字時(shí)鐘程序
- 單 片 機(jī):STC15F2K60S2
- 晶 振:12MHz
- 液 晶 屏:LCM-12864-ST7920
- 時(shí) 間:2026年02月25日修改完成
- LCM12864使用并口連接方式,PSB、RST接高電平
- **********************************************/
- //頭文件
- #include "stc15f.h"
- #include <intrins.h>
- #include "LCD12864.h"
- #include "DS1302.h"
- #include "DS18B20.h"
- #include "NongLi.h"
- #include "Display_Time.h"
- #include "ZiKu.h"
- #include <math.h>
- #define uint unsigned int
- #define uchar unsigned char
- //定義按鍵
- sbit K1 =P2^3; //K1-設(shè)置
- sbit K2 =P2^4; //K2-確認(rèn)、返回
- sbit K3 =P2^6; //K3-加
- sbit K4 =P2^7; //K4-減
- sbit BLK=P2^0;
- sbit wei=P3^6;
- sbit duan=P3^7;
- //函數(shù)聲明
- void Add_Sub();
- void Delayms(uint);
- //定義全局變量
- bit W=0;
- uchar Miao,Fen,Shi,Ri,Yue,Zhou,Nian,Moontemp1,Moontemp2;
- signed char Address,Item,Max,Min;
- //延時(shí)函數(shù)1ms/次
- void Delayms(uint ms)
- {
- uchar i;
- while(--ms!=0)
- for(i=0;i<125;i++);
- }
- //日期、時(shí)間設(shè)置函數(shù)
- void Set_Time()
- {
- Nian=Read_DS1302(0x8D);
- Yue=Read_DS1302(0x89);
- Ri=Read_DS1302(0x87);
- Week=Read_DS1302(0x8B);
- Write_LCD(0,0x80);
- Write_String("20");
- Write_LCD(1,(Nian/16)+0x30);
- Write_LCD(1,Nian%16+0x30);
- Write_String("年");
- Write_LCD(1,(Yue/16)+0x30);
- Write_LCD(1,Yue%16+0x30);
- Write_String("月");
- /*
- Write_LCD(0,0x88);
- Write_String("星期");
- Write_LCD(1,Yue%16+0x30);
- */
- Write_LCD(1,(Ri/16)+0x30);
- Write_LCD(1,Ri%16+0x30);
- Write_String("日");
- if(Read_DS1302(0x85)!=Shi)
- Shi=Read_DS1302(0x85);
-
- Write_LCD(0,0x91);
- Write_LCD(1,(Shi/16)+0x30);
- Write_LCD(1,Shi%16+0x30);
- Write_String("時(shí)");
- if(Read_DS1302(0x83)!=Fen)
- Fen=Read_DS1302(0x83);
- Write_LCD(1,(Fen/16)+0x30);
- Write_LCD(1,Fen%16+0x30);
- Write_String("分");
- if(Read_DS1302(0x81)!=Miao)
- Miao=Read_DS1302(0x81);
- Write_LCD(1,(Miao/16)+0x30);
- Write_LCD(1,Miao%16+0x30);
- Write_String("秒");
- }
- //調(diào)整時(shí)間子函數(shù)
- void Set_time(uchar Set)
- {
- Write_Com(0x30);
- Write_Com(0x06);
- Write_LCD(0,0x98);
- Write_String("★調(diào)整");
-
- /* if(Set==6)
- {
- Write_String("星期");
- Address=0x8A;
- Max=7;
- Min=1;
- Set_Time();
- ds_w();
- Set_Time();
- }
- */
- if(Set==5)
- {
- Write_String("秒鐘");
- Address=0x80;
- Max=59;
- Min=0;
- Set_Time();
- Add_Sub();
- Set_Time();
- }
- if(Set==4)
- {
- Write_String("分鐘");
- Address=0x82;
- Max=59;
- Min=0;
- Set_Time();
- Add_Sub();
- Set_Time();
- }
- if(Set==3)
- {
- Write_String("小時(shí)");
- Address=0x84;
- Max=23;
- Min=0;
- Set_Time();
- Add_Sub();
- Set_Time();
- }
- if(Set==2)
- {
- Write_String("日期");
- Address=0x86;
- Yue=Read_DS1302(0x89);
- Moontemp1=Yue/16;
- Moontemp2=Yue%16;
- Yue=Moontemp1*10+Moontemp2;
- Nian= Read_DS1302(0x8d);
- Moontemp1=Nian/16;
- Moontemp2=Nian%16;
- Nian=Moontemp1*10+Moontemp2;
- if(Yue==2&&Nian%4!=0)
- {
- Max=28;
- Min=1;
- }
- if(Yue==2&&Nian%4==0)
- {
- Max=29;
- Min=1;
- }
- if(Yue==1||Yue==3||Yue==5||Yue==7||Yue==8||Yue==10||Yue==12)
- {
- Max=31;
- Min=1;
- }
- if(Yue==4||Yue==6||Yue==9||Yue==11)
- {
- Max=30;
- Min=1;
- }
- Set_Time();
- Add_Sub();
- Set_Time();
- }
- if(Set==1)
- {
- Write_String("月份");
- Address=0x88;
- Max=12;
- Min=1;
- Set_Time();
- Add_Sub();
- Set_Time();
- }
- if(Set==0)
- {
- Write_String("年份");
- Address=0x8C;
- Max=99;
- Min=0;
- Set_Time();
- Add_Sub();
- Set_Time();
- }
- }
- //加減子函數(shù)
- void Add_Sub()
- {
- Item=((Read_DS1302(Address+1))/16)*10+(Read_DS1302(Address+1))%16;
-
- if(K3==0) //如果按動(dòng)上調(diào)鍵
- Item++; //數(shù)加 1
- if(K4==0) //如果按動(dòng)下調(diào)鍵
- Item--; //數(shù)減 1
- if(Item>Max)
- Item=Min;
- if(Item<Min)
- Item=Max;
- Write_DS1302(0x8E,0x00);
- Write_DS1302(Address,(Item/10)*16+Item%10);
- Write_DS1302(0x8E,0x80);
- }
- //主函數(shù)
- void main()
- {
- uchar E=0;
- BLK=0;K1=1;K2=1;K3=1;K4=1;
- wei=0;
- duan=0;
- Init_DS1302();
- Init_LCD();
- Welcome();
- Delayms(3000);
- Delayms(3000);
- Delayms(3000);
- Clear_LCD();
- Clear12864_GDRAM();
- while(1)
- {
- if(W==0)
- {
- Display_Date();
- Display_Nl();
- Display_Time();
- Read_Temp();
- Display_Temp();
- Display_Week();
- }
- else {}
- //設(shè)置時(shí)間
- if(K1==0)
- {
- Delayms(20);
- if(K1==0&&W==1)
- {
- E++;
- if(E>=7)
- E=0;
- while(!K1);
- Set_time(E); //調(diào)整
- }
- if(K1==0&&W==0)
- {
- Clear_LCD();
- Clear12864_GDRAM();
- W=1;
- Set_time(E);
- }
- while(!K1);
- }
- //退出設(shè)置
- if(K2==0)
- {
- Delayms(20);
- if(K2==0&&W==1)
- {
- W=0;
- E=0;
- }
- if(K2==0&&W==0)
- {
- Clear_LCD();
- Clear12864_GDRAM();
- Write_Com(0x30);
- Write_Com(0x06);
- Welcome();
- while(!K2);
- }
- Clear_LCD();
- Clear12864_GDRAM();
- Display_Date();
- Display_Week();
- Display_Nl();
- Display_Time();
- Read_Temp();
- Display_Temp();
- while(!K2);
- }
- //加調(diào)整
- if(K3==0&&W==1)
- {
- Delayms(20);
- if(K3==0&&W==1)
- Set_time(E);
- while(!K3);
- }
- //減調(diào)整
- if(K4==0&&W==1)
- {
- Delayms(20);
- if(K4==0&&W==1)
- Set_time(E);
- while(!K4);
- }
- }
- }
復(fù)制代碼
原理圖和程序下載:
12864數(shù)顯時(shí)鐘溫度.7z
(95.76 KB, 下載次數(shù): 0)
2026-3-3 18:02 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|