基于51单片机的日历时钟显示系统设计学士学位论文 联系客服

发布时间 : 星期二 文章基于51单片机的日历时钟显示系统设计学士学位论文更新完毕开始阅读149a4416b94ae45c3b3567ec102de2bd9705de56

参考文献

[1] 李建忠. 单片机原理及应用. 西安: 西安电子科技大学出版,2006

[2] 张俊谟. 单片机中级教程—原理与应用(第二版). 北京: 北京航空航天大学出版,2006 [3] 马忠梅. 单片机的C语言应用程序设计(第3版). 北京: 航空航天大学出版社,2003 [4] 周润景. PROTEUS入门实用教程. 北京: 机械工业出版社,2007 [5] 武庆生,仇梅. 单片机原理与应用. 电子科技大学出版,1998 [6] 朱定华. 单片机原理与接口技术. 北京: 电子工业出版社,2001,4 [7] 刘瑞新. 单片机原理及应用教程. 机械工业出版社,2003,7

[8] 张毅刚,彭喜源. MCS-51单片机应用设计. 哈尔滨工业大学出版社,1997

[9] 李朝青. 单片机原理及接口技术(修订版)[M]. 北京: 北京航空航天大学出版社,1998.

[10] 张齐,朱宁西. 单片机应用系统设计技术—基于C51的Proteus仿真(第二版). 北京: 电子工业出版社,2009

[11] 胡汉才. 单片机原理及其接口技术[M]. 北京: 清华大学出版社,2000

[12] 谢维成,杨加国. 单片机原理与应用及C51程序设计. 北京: 清华大学出版社,2006 [13] 何立民. 单片机应用技术大全[M]. 北京: 北京航空航天大学出版社,1994 [14] 李广弟. 单片机基础[M]. 北京: 北京航空航天大学出版社,1992

[15] 沈红卫. 基于单片机的智能系统设计与实现. 北京: 电子工业出版社,2005 [16] 赵文博,刘文涛. 单片机语言C51程序设计. 北京:人民邮电出版社,2005

29

附录A 系统电路设计原理图

附录B 系统源程序

#include #include \#include \

void Delay1ms(unsigned int count) { unsigned int i,j; for(i=0;i

main() { SYSTEMTIME CurrentTime; LCD_Initial(); Initial_DS1302(); GotoXY(0,0); Print(\

30

GotoXY(0,1); Print(\ while(1) { DS1302_GetTime(&CurrentTime); DateToStr(&CurrentTime); TimeToStr(&CurrentTime); GotoXY(6,0); Print(CurrentTime.DateString); GotoXY(6,1); Print(CurrentTime.TimeString); Delay1ms(300); } }

/**************************************************************************

THE REAL TIMER DS1302 DRIVER LIB

COPYRIGHT (c) 2005 BY JJJ. -- ALL RIGHTS RESERVED --

File Name: DS1302.h Author: Jiang Jian Jun Created: 2003/7/21 Modified: NO Revision: 1.0

***************************************************************************/ #ifndef _REAL_TIMER_DS1302_2003_7_21_ #define _REAL_TIMER_DS1302_2003_7_21_

sbit DS1302_CLK = P1^6; //实时时钟时钟线引脚 sbit DS1302_IO = P1^7; //实时时钟数据线引脚 sbit DS1302_RST = P1^5; //实时时钟复位线引脚 sbit ACC0 = ACC^0; sbit ACC7 = ACC^7;

typedef struct __SYSTEMTIME__ { unsigned char Second; unsigned char Minute; unsigned char Hour;

31

unsigned char Week; unsigned char Day; unsigned char Month; unsigned char Year; unsigned char DateString[9]; unsigned char TimeString[9]; }SYSTEMTIME; //定义的时间类型

#define AM(X) X #define PM(X) (X+12) // 转成24小时制 #define DS1302_SECOND 0x80 #define DS1302_MINUTE 0x82 #define DS1302_HOUR 0x84 #define DS1302_WEEK 0x8A #define DS1302_DAY 0x86 #define DS1302_MONTH 0x88 #define DS1302_YEAR 0x8C

#define DS1302_RAM(X) (0xC0+(X)*2) //用于计算 DS1302_RAM 地址的宏

void DS1302InputByte(unsigned char d) //实时时钟写入一字节(内部函数) {

unsigned char i; ACC = d;

for(i=8; i>0; i--) {

DS1302_IO = ACC0; //相当于汇编中的 RRC DS1302_CLK = 1; DS1302_CLK = 0; ACC = ACC >> 1; } }

unsigned char DS1302OutputByte(void) //实时时钟读取一字节(内部函数) {

unsigned char i; for(i=8; i>0; i--) {

ACC = ACC >>1; //相当于汇编中的 RRC ACC7 = DS1302_IO; DS1302_CLK = 1; DS1302_CLK = 0; }

return(ACC); }

32