单片机解密STC15F2K60S2单片机LCD12864数字时钟温度制作
- 单片机解密 电子数字时钟程序
- 单 片 机:单片机解密STC15F2K60S2
- 晶 振:12MHz
- 液 晶 屏:LCM-12864-ST7920
- 时 间: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-设置
- sbit K2 =P2^4; //K2-确认、返回
- sbit K3 =P2^6; //K3-加
- sbit K4 =P2^7; //K4-减
- sbit BLK=P2^0;
- sbit wei=P3^6;
- sbit duan=P3^7;
- //函数声明
- 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;
- //延时函数1ms/次
- void Delayms(uint ms)
- {
- uchar i;
- while(--ms!=0)
- for(i=0;i<125;i++);
- }
- //日期、时间设置函数
- 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("时");
- 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("秒");
- }
- //调整时间子函数
- void Set_time(uchar Set)
- {
- Write_Com(0x30);
- Write_Com(0x06);
- Write_LCD(0,0x98);
- Write_String("★调整");
-
- /* 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("小时");
- Address=0x84;
- Max=23;
- Min=0;
- Set_Time();
- Add_Sub();
- Set_Time();
- }

芯片解密