时钟程序.docx
- 文档编号:26939744
- 上传时间:2023-06-24
- 格式:DOCX
- 页数:25
- 大小:15.69KB
时钟程序.docx
《时钟程序.docx》由会员分享,可在线阅读,更多相关《时钟程序.docx(25页珍藏版)》请在冰豆网上搜索。
时钟程序
**
全局变量:
**
调用模块:
**
作者:
kevin
**
日期:
2007
年
5
月
31
日
*********************************************************************
***********************/
voidLCMInit(void)
{
LCM_Data=0;
WriteCommandLCM(0x38,0);//
三次显示模式设置,不检测忙信号
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM(0x38,1);//
显示模式设置
开始要求每次检测忙信号
WriteCommandLCM(0x08,1);//
关闭显示
WriteCommandLCM(0x01,1);//
显示清屏
WriteCommandLCM(0x06,1);//
显示光标移动设置
WriteCommandLCM(0x0C,1);//
显示开及光标设置
}
/********************************************************************
**********************
**
函数名称:
DisplayOneChar()
**
功能描述:
按指定位置显示一个字符
**
输
入:
**
输
出:
**
全局变量:
**
调用模块:
**
作者:
kevin
**
日期:
2007
年
5
月
31
日
*********************************************************************
***********************/
void
DisplayOneChar(unsigned
char
X,
unsigned
char
Y,
unsigned
char
DData)
{
Y&=0x1;
X&=0xF;//
限制
X
不能大于
15
,
Y
不能大于
1
if(Y)X|=0x40;//
当要显示第二行时地址码
+0x40;
X|=0x80;//
算出指令码
WriteCommandLCM(X,0);//
这里不检测忙信号,发送地址码
WriteDataLCM(DData);
}
/********************************************************************
**********************
**
函数名称:
DisplayListChar()
**
功能描述:
按指定位置显示一串字符
**
输
入:
**
输
出:
**
全局变量:
**
调用模块:
**
作者:
kevin
**
日期:
2007
年
5
月
31
日
*********************************************************************
***********************/
void
DisplayListChar(unsigned
char
X,
unsigned
char
Y,
unsigned
char
code
*DData)
{
unsignedcharListLength;
ListLength=0;
Y&=0x1;
X&=0xF;//
限制
X
不能大于
15
,
Y
不能大于
1
while(DData[ListLength]>0x20)//
若到达字串尾则退出
{
if(X<=0xF)//X
坐标应小于
0xF
{
DisplayOneChar(X,Y,DData[ListLength]);//
显示单个字符
ListLength++;
X++;
}
}
}
/********************************************************************
**********************
**
函数名称:
Delay5Ms()
**
功能描述:
5ms
延时
**
输
入:
**
输
出:
**
全局变量:
**
调用模块:
**
作者:
kevin
**
日期:
2007
年
5
月
31
日
*********************************************************************
***********************/
voidDelay5Ms(void)
{
unsignedintTempCyc=5552;
while(TempCyc--);
}
/********************************************************************
**********************
**
函数名称:
Delay400Ms()
**
功能描述:
400ms
延时
**
输
入:
**
输
出:
**
全局变量:
**
调用模块:
**
作者:
kevin
**
日期:
2007
年
5
月
31
日
*********************************************************************
***********************/
voidDelay400Ms(void)
{
unsignedcharTempCycA=5;
unsignedintTempCycB;
while(TempCycA--)
{
TempCycB=7269;
while(TempCycB--);
};
}
/********************************************************************
**********************
**
函数名称:
timer0()
**
功能描述:
中断子程序,
1
秒重写一次液晶,以此实现
60
秒计数
**
输
入:
**
输
出:
**
全局变量:
**
调用模块:
**
作者:
kevin
**
日期:
2007
年
5
月
31
日
*********************************************************************
***********************/
voidtimer0()interrupt1using0
{inti;
TH0=(65536-50000)/256*3;//
中断设置初始
化
TL0=(65536-50000)%256*3;
tcount++;
if(tcount==60)//
满
1
秒
{i=0;
DisplayOneChar(i++,0,'T');//
在第
1
行第
1
个坐标显示
DisplayOneChar(i++,0,'I');//
在第
1
行第
2
个坐标显示
DisplayOneChar(i++,0,'M');//
在第
1
行第
3
个坐标显示
DisplayOneChar(i++,0,'E');//
在第
1
行第
4
个坐标显示
DisplayOneChar(i++,0,':
');//
在第
1
行第
5
个坐标显示
DisplayOneChar(i++,0,table[hour/10]);//
在第
1
行第
6
个坐标显示
DisplayOneChar(i++,0,table[hour%10]);//
在第
1
行第
7
个坐标显示
DisplayOneChar(i++,0,':
');//
在第
1
行第
1
个坐标显示
DisplayOneChar(i++,
0,
table[minute/10]);//
在第
1
行第
8
个坐标显示
DisplayOneChar(i++,
0,
table[minute%10]);//
在第
1
行第
9
个坐标显示
DisplayOneChar(i++,0,':
');//
在第
1
行第
10
个坐标显示
DisplayOneChar(i++,0,table[second/10]);//
在第
1
行第
11
个坐标显
示
DisplayOneChar(i++,0,table[second%10]);//
在第
1
行第
12
个坐标显
示
tcount=0;second++;
if(second==60)//
满
1
分
{second=0;minute++;//
分数加
1
,秒数归零
if(minute==60)//
满
1
小时
{
minute=0;hour++;//
小时数加
1
,分数归零
if(hour==24)
{hour=0;}
}
}
}
}
/********************************************************************
**********************
**
函数名称:
main()
**
功能描述:
主程序,设置初始时间,中断设置初始化,液晶显示,等待中断
**
输
入:
**
输
出:
**
全局变量:
**
调用模块:
**
作者:
kevin
**
日期:
2007
年
5
月
31
日
*********************************************************************
***********************/
voidmain()
{uchari;
second=0;minute=0;hour=0;//
设置初始时间
TH0=(65536-50000)/256;//
中断设置初始化
TL0=(65536-50000)%256;
EA=1;ET0=1;TMOD=0x21;TR0=1;
lcd();
i=0;
DisplayOneChar(i++,0,'T');//
在第
1
行第
1
个坐标显示
DisplayOneChar(i++,0,'I');//
在第
1
行第
2
个坐标显示
DisplayOneChar(i++,0,'M');//
在第
1
行第
3
个坐标显示
DisplayOneChar(i++,0,'E');//
在第
1
行第
4
个坐标显示
DisplayOneChar(i++,0,':
');//
在第
1
行第
5
个坐标显示
DisplayOneChar(i++,0,table[hour/10]);//
在第
1
行第
6
个坐标显示
DisplayOneChar(i++,0,table[hour%10]);//
在第
1
行第
7
个坐标显示
DisplayOneChar(i++,0,':
');//
在第
1
行第
1
个坐标显示
DisplayOneChar(i++,
0,
table[minute/10]);//
在第
1
行第
8
个坐标显示
DisplayOneChar(i++,
0,
table[minute%10]);//
在第
1
行第
9
个坐标显示
DisplayOneChar(i++,0,':
');//
在第
1
行第
10
个坐标显示
DisplayOneChar(i++,0,table[second/10]);//
在第
1
行第
11
个坐标显
示
DisplayOneChar(i++,0,table[second%10]);//
在第
1
行第
12
个坐标显
示
while
(1);//
等待中断
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 时钟 程序