基于51单片机控制的1602液晶电子时钟显示程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于51单片机控制的1602液晶电子时钟显示程序

[ 2007-05-31 13:31:45 | By: kevin ]

刚写好的基于51单片机控制的1602液晶电子时钟显示程序,整理了一下,并尽量加上的注释,放出来大家共享及交流。

有兴趣的可以参考一下,各管脚定义都比较明显,有一定基础的可稍作修改即可进行实验。

//基于51单片机控制的1602液晶电子时钟显示程序

#i nclude

#i nclude

#define uchar unsigned char

#define LCM_RS P2_2 //定义引脚

#define LCM_RW P2_1

#define LCM_E P2_0

#define LCM_Data P0

#define Busy 0x80 //用于检测LCM状态字中的Busy标识

uchar i, j, k, second, tcount, minute, hour;

void WriteDataLCM(unsigned char WDLCM);

void WriteCommandLCM(unsigned char WCLCM,BuysC);

unsigned char ReadDataLCM(void);

unsigned char ReadStatusLCM(void);

void LCMInit(void);

void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);

void DisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData);

void DisplayqListChar(unsigned char X, unsigned char Y, unsigned char code *DData);

void Delay5Ms(void);

void Delay400Ms(void);

unsigned char code table[]={'0','1','2','3','4','5','6','7','8','9'};//数码管数字编码unsigned char code MyNo[] = {"NAME:Who_am_I?"};

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

** 函数名称:delay()

** 功能描述:延时子程序,大约延时n MS

** 输入:

** 输出:

** 全局变量:

** 调用模块:

** 作者:kevin

** 日期:2007年5月31日

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

delay(uchar n)

{uchar i,j,k;

for(i=2;i>0;i--)

for(j=n;j>0;j--)

for(k=125;k>0;k--);

}

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

** 函数名称:lcd()

** 功能描述:液晶初始化,然后在液晶屏第二行显示提示信息

** 输入:

** 输出:

** 全局变量:

** 调用模块:Delay400Ms(),LCMInit(),DisplayListChar()

** 作者:kevin

** 日期:2007年5月31日

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

void lcd(void)

{

Delay400Ms(); //启动等待,等LCM讲入工作状态

LCMInit(); //LCM初始化

Delay5Ms(); //延时片刻(可不要)

DisplayListChar(0, 1, MyNo);

}

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

** 函数名称:WriteDataLCM()

** 功能描述:写数据

** 输入:WDLCM

** 输出:

** 全局变量:

** 调用模块:

** 作者:kevin

** 日期:2007年5月31日

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

void WriteDataLCM(unsigned char WDLCM)

{

ReadStatusLCM(); //检测忙

LCM_Data = WDLCM;

LCM_RS = 1;

LCM_RW = 0;

LCM_E = 0; //若晶振速度太高可以在这后加小的延时

LCM_E = 0; //延时

LCM_E = 1;

}

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

** 函数名称:WriteCommandLCM()

** 功能描述:写指令

** 输入:

** 输出:

** 全局变量:

** 调用模块:

相关文档
最新文档