?? main.c
字號(hào):
/* 本程序所使用CPU為51單片機(jī),時(shí)鐘為24MHZ,程序主體網(wǎng)上所得,稍加修,念在下初學(xué),還請(qǐng)?jiān)髡咭?jiàn)諒。特此聲明*/
#include <reg51.h>
#include <intrins.h>
#include "LCM1602.h"
#include "DS1302.h"
struct TimerStruct //定義時(shí)鐘的數(shù)據(jù)結(jié)構(gòu)
{
unsigned char Year;
unsigned char Month;
unsigned char Day;
unsigned char Week;
unsigned char Hour;
unsigned char Minute;
unsigned char Second;
};
unsigned char DateBuffer[] ={"2000/12/20"}; // 隨便設(shè)置,不表示顯示的初始值,只為方便子程序調(diào)用
unsigned char TimeBuffer[] = {"21:49:00"}; //初始值在主程序中設(shè)置
unsigned int SecondCounter;//秒計(jì)數(shù)器(無(wú)符號(hào)整型)
void timer0(void) interrupt 1 //定時(shí)T0溢出中斷,每25mS產(chǎn)生一次中斷 方式1 9E58
{ unsigned char Temp;
struct TimerStruct RealClock;
TH0=0x9e;//(65536-46080)/256; //重新裝入定時(shí)25mS的初值到TH0,TL0
TL0=0x58;//(65536-46080)%256;
SecondCounter++; //秒計(jì)數(shù)器加1
if(SecondCounter==40) //到40,表示1S時(shí)間到
{
SecondCounter=0;
/****--以下是讀取DS1302的時(shí)鐘信息,并將結(jié)果存儲(chǔ)到顯示緩沖區(qū)中****/
Temp=Read_DS1302_RTC(0x81); //讀秒信息
RealClock.Second=Temp;
TimeBuffer[7]=(Temp%16)|0x30;
TimeBuffer[6]=(Temp>>4)|0x30;
Temp=Read_DS1302_RTC(0x83); //讀分信息
RealClock.Minute=Temp;
TimeBuffer[4]=(Temp%16)|0x30;
TimeBuffer[3]=(Temp>>4)|0x30;
Temp=Read_DS1302_RTC(0x85); //讀時(shí)信息
RealClock.Hour=Temp;
TimeBuffer[1]=(Temp%16)|0x30;
TimeBuffer[0]=(Temp>>4)|0x30;
Temp=Read_DS1302_RTC(0x87); //讀日信息
RealClock.Day=Temp;
DateBuffer[9]=(Temp%16)|0x30;
DateBuffer[8]=(Temp>>4)|0x30;
Temp=Read_DS1302_RTC(0x89); //讀月信息
RealClock.Month=Temp;
DateBuffer[6]=(Temp%16)|0x30;
DateBuffer[5]=(Temp>>4)|0x30;
Temp=Read_DS1302_RTC(0x8d); //讀年信息
RealClock.Year=Temp;
DateBuffer[3]=(Temp%16)|0x30;
DateBuffer[2]=(Temp>>4)|0x30;
/*****************---送到LCD上顯示出來(lái)***********************/
DisplayListChar(0,0,DateBuffer);//刷新LCD上的日期信息
DisplayListChar(0,1,TimeBuffer);//刷新LCD上的時(shí)間顯示信息
}
}
void main(void){
TMOD=0x01; //T0工作于16位定時(shí)功能
TH0=(65536-46080)/256; //T0定時(shí)25mS的初值裝入TH0,TL0
TL0=(65536-46080)%256;
EA=1; //CPU開(kāi)中斷
ET0=1; //允許T0溢出中斷
Delay400Ms();
LCMInit(); //初始化LCD
/************ Init_DS1302_RTC();//初始化DS1302*************/
Write_DS1302_RTC(0x8e,0x00); //Open Write Protect bit
Write_DS1302_RTC(0x80,0x00);//Write Second 0
Write_DS1302_RTC(0x82,0x52);//Write Minute 52
Write_DS1302_RTC(0x84,0x21);//Write Hour 21
Write_DS1302_RTC(0x86,0x14);//Write Day 14
Write_DS1302_RTC(0x88,0x10);//Write Month 10
Write_DS1302_RTC(0x8a,0x05);//Write Week Friday
Write_DS1302_RTC(0x8c,0x06);//Write Year 06
Write_DS1302_RTC(0x8e,0x80);//Close Write Protect bit
TR0=1; //啟動(dòng)T0開(kāi)始工作
while(1){ ; }
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -