基于DS1302写的12864LCD时钟程序.doc
文本预览下载声明
以下是我写的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
显示全部