文档详情

基于DS1302写的12864LCD时钟程序.doc

发布:2017-03-24约1.63万字共17页下载文档
文本预览下载声明
以下是我写的12864LCD并行口时钟显示程序,时钟用按键可调 /***************12864.h头文件******************************/ #ifndef _12864_h #define _12864_h /*****包含头文件**************/ #includereg51.h #includestring.h #includeDS1302.h /********定义I/0口**********/ #define LCD12864_DATA P0 sbit LCD12864_E = P2^7; sbit LCD12864_RW = P2^5; sbit LCD12864_RS = P2^6; sbit LCD12864_RET= P2^0; sbit LCD12864_PSB =P2^2; /******声明全局函数*********/ void Delay1ms(unsigned int); //声明延时函数 void BusyChk_12864(void); //声明忙检测函数 void WrCom(unsigned char); //声明写入命令函数 //unsigned char ReDat(void); //声明读数据函数 void WrDat(unsigned char); //声明写数据函数 void LcdInit(void); //12864初始化函数 void SetAddress(unsigned char ,unsigned char); //设置地址转换 void DisplayString(unsigned char ,unsigned char,unsigned char *p);//行显示字符 void DisplayTime(); void DisplayDay(); void DisplayWeek(); #endif /*****************************12864.c***********************************/ #include12864.h /******************************************************************************* * 函 数 名 : Delay1ms * 函数功能 : 延时函数,延时1ms * 输 入 : c * 输 出 e : 无 * 说 名 : 该函数是在12MHZ晶振下,12分频单片机的延时。 *******************************************************************************/ void Delay1ms(unsigned int i) //误差 0us { unsigned char a; for (i; i0; i--) { for (a=199;a0;a--) ; } } /**************************************************************************** 函数名字:void BusyChk() 函数功能:12864LCD忙检测 * 输 入 : 无 * 输 出 : 无 *******************************************************************************/ void BusyChk(void) { unsigned int timeout=0; LCD12864_E=0; //E=0 使能关闭 LCD12864_RS=0; //0 指令;1 数据 LCD12864_RW=1; //1 读数据;0写数据 Delay1ms(50); //延时100ms LCD12864_E=1; //1 开使能,读数据 while(((LCD12864_DATA 0x80) ++timeout));//判断 1表示内部在工作; 0表示正常 LCD12864_E=0; //E=0 使能关闭 } /**************************************************************************** 函数名字:void Wr
显示全部
相似文档