📄 main.c
字号:
#include<intrins.h>
#include<stdio.h>
#include <REG52.H>
//#include "1602.h"
//这里各人的1602程序不一样.所以我把测试程序中的这一块去掉了
#include "DS1302.h"
sbit LCM_power = P0^0;
sbit key01=P0^3;
unsigned char code use[]={"date:/"};
unsigned char code use1[]={"time:/"};
extern void Init_1602(void);
extern void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);
extern void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);
extern void Delay5Ms(void);
void main()
{
SYSTEMTIME CurrentTime;
//long int delay;
//delay=100000;
//while(delay--);
/*波特率600 晶振12M与电脑串行通信*/
SCON = 0x50; /*scon八位 SM0,SM1,SM2,REN,TB8,RB8,TI,RI 设置为01010000串
口方式一,允许接收REN*/
TMOD = 0x20; ;/*定时器一方式2 八位自动装载模式*/
PCON = PCON&0x80;/*波特率倍数为SMOD位为1*/
TCON = 0x40; /*TCON八位,TF1,TR1,TF0,TR0,,,,,*/
// IP=0X02; //用于设置中断优先级,设置外部中断优先,
//IP的第0位到第5位分别代表PX0,PT0,PX1,PT1,PS(串口通信),PT2
//5---0 ps,pt1,px1,pt0,px0
TH1 = 0xcc;
TL1 = 0xcc;//设置初值
TR1 =1;
ET1=1;
TI = 1;
// TH0=0xd8;
// TL0=0x0d;//精确延时10ms
// TR0=1;
// ET0=1;
// IT1=1;
EA=1;
// Lcddelay(0xaf);
// LcdReset();
DS1302_Initial();
Init_1602();
// DisplayListChar(0,0,"Date: ",6);
// DisplayListChar(0,1,"Time: ",6);
CurrentTime.Year = 9;
CurrentTime.Month = 6;
CurrentTime.Day = 12;
CurrentTime.Week = 3;
CurrentTime.Hour = 13;
CurrentTime.Minute = 12;
CurrentTime.Second = 27;
DS1302_SetTime(&CurrentTime);
DisplayListChar(0, 0, use);
DisplayListChar(0, 1, use1);
DisplayOneChar(8,0,(CurrentTime.Year%100)/10+0x30);
DisplayOneChar(9,0,(CurrentTime.Year%10)+0x30);
DisplayOneChar(11,0,(CurrentTime.Month/10)+0x30);
DisplayOneChar(12,0,(CurrentTime.Month%10)+0x30);
DisplayOneChar(14,0,(CurrentTime.Day/10)+0x30);
DisplayOneChar(15,0,(CurrentTime.Day%10)+0x30);
LCM_power=1;
while(1)
{
DS1302_GetTime(&CurrentTime);
// printf("year:%d\n\t",(int)CurrentTime.Year);
// printf("month:%d\n\t",(int)CurrentTime.Month);
// printf("day:%d\n\t",(int)CurrentTime.Day);
// printf("week:%d\n\t",(int)CurrentTime.Week);
// printf("Hour:%d\n\t",(int)CurrentTime.Hour);
// printf("Minute:%d\n\t",(int)CurrentTime.Minute);
//printf("Second:%d\n\t",(int)CurrentTime.Second);
DisplayOneChar(6,1,(CurrentTime.Week)+0x30);
DisplayOneChar(8,1,(CurrentTime.Hour%100)/10+0x30);
DisplayOneChar(9,1,(CurrentTime.Hour%10)+0x30);
DisplayOneChar(11,1,(CurrentTime.Minute/10)+0x30);
DisplayOneChar(12,1,(CurrentTime.Minute%10)+0x30);
DisplayOneChar(14,1,(CurrentTime.Second/10)+0x30);
DisplayOneChar(15,1,(CurrentTime.Second%10)+0x30);
key01=1;
if(!key01)
{
key01=1;
Delay5Ms();
if(!key01)
{
LCM_power=~LCM_power;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -