参考文献
[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
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
相关推荐: