ETC 12864LCD

DoYoung 电子技术 — 创造独立资源!
12864LCD电子钟说明文档
DoYoung 原创
V1.0 2007.2.11
目录
1. 概要 ............................................................................. 1
2. 仿制说明 ......................................................................... 2
3. 使用说明 ......................................................................... 3
4. 相关升级 ......................................................................... 6
5. 常见问题与注意事项................................................................ 6
版本信息 ............................................................................ 6
1
/7
12864LCD 电子钟说明文档
DoYoung 原创
1. 概要
作品简介
这 12864LCD 电子钟是利用 89S52 驱动 128*64LCD 显示的电子时钟制作,其采用 DS1302 芯片独立产
生时间。折叠台历式外型可以方便的摆放在桌面上,也可以折叠存放。隐形式按键设计使用户操作
更直观、方便。高精度温度显示,公历节日提醒是其卓越之处。模块化的源代码、新颖别致的电路
图使后继爱好者制作和升级开发更方便。
功能特征
9
9
9
9
9
9
9
9
9
年、月、日、小时、分、秒、星期、温度、节日同屏显示,一目了然。
时间设置功能,简单快捷。
整点报时(早 8 点至晚 21 点)
128*64LED 显示,亮度高
备用电池,长久走时
温度显示,00.0 度高精度(00.0~99.9 摄氏度)
隐藏式按键,模拟触摸屏的方位按键操作简单
国际、国内公历重要节日提醒
日历台式外型设计,至于桌面美观大方
部分程序举例
部分程序代码采用了简单高效的编写方法,保证性能意念新鲜。
采用数据指针方法的 LCD 串行通信部分程序:
/******************************************************************************/
//写指令或数据 (0,指令) (1,数据)
void lcm_w_test(bit start, unsigned char ddata) {
unsigned char start_data,Hdata,Ldata;
if(start==0)
start_data=0xf8;
//0:写指令
else
start_data=0xfa; //1:写数据
Hdata=ddata&0xf0;
//取高四位
Ldata=(ddata<<4)&0xf0; //取低四位
lcm_w_byte(start_data); //发送起始信号
delaynms(5); //延时是必须的
lcm_w_byte(Hdata);
//发送高四位
delaynms(5); //延时是必须的
lcm_w_byte(Ldata);
//发送低四位
delaynms(5); //延时是必须的
}
/******************************************************************************/
//发送一个字节(底层函数)
void lcm_w_byte(unsigned char bbyte) {
unsigned char i;
for(i=0;i<8;i++){
SID=bbyte&0x80; //取出最高位
SCLK=1;
SCLK=0;
bbyte<<=1; //左移
}
}
/******************************************************************************/
//延时(LCM 占用)
void delaynms(unsigned int di) {
doyoung
2
/7
12864LCD 电子钟说明文档
DoYoung 原创
unsigned int da,db;
for(da=0;da<di;da++);
for(db=0;db<10;db++);
}
/*****************************************************************************/
//清屏函数
void lcm_clr(void){
lcm_w_test(0,0x01);
delaynms(40); //启动等待,等 LCM 讲入工作状态
}
/*****************************************************************************/
//向 LCM 发送一个字符串,长度 64 字符之内。
//应用:lcm_w_word("您好!");
void lcm_w_word(unsigned char *str){
while(*str != '\0'){
lcm_w_test(1,*str++);
}
*str = 0;
}
/******************************************************************************/
2. 仿制说明
Doyoung 电子技术 将无条件共享原理图、说明文档、HEX 文件供有兴趣的朋友仿制使用。如您
成功仿制本设计,至信 doyoung.net@gmail.com,即可获得本制作品的源代码,用于学习或升级
升级开发。如果您成功升级了一次程序将可以获得 Doyoung现在制作品的所有源代码包(不包括
日后制作品)。目的只有一个,力图创造独立资料。
如果您决定仿制本设计,请先根据发布的原理图和元件 BOM 表购买元件。
品名
STN LCD 显示屏
蜂鸣器
时钟 IC
晶振
稳压 IC
陶瓷电容
电源适配器
陶瓷电容
电源接口座
电阻
微动开关
„
„
型号
128*64 汉字库
有源 5V
DS1302
12.00MHZ
LM7805
01.uF
9V 2A
30pF
(视电源而定)
10K
5*5*6
数量
1
1
1
1
1
2
1
2
1
1
4
品名
单片机
温度传感器 IC
备用电池
晶振
电位器
电解电容
LED
万能电路板*
电阻
电容
LED
型号
AT89S52
DS18B20
3.6V
32.768HZ
10K
220uF
蓝色
*
470 欧
10uF
双色-红绿,共阳
如果您的 LCD 是自动调整灰度的,可不接电位器,而将 VO 直接接高电平。
制作时,温度传感器 IC 应用线引出远离电路板,以保证温度精准。
doyoung
数量
1
1
1
1
1
2
1
*
6
1
4
3
/7
12864LCD 电子钟说明文档
DoYoung 原创
3. 使用说明
界面介绍
显示信息
年份显示
设置项
日期显示
[Dis] 2007 [Set]
2 月 14 日 星期五
23:34.10 23.5℃
今天情人节
星期显示
温度显示
时间显示
节日显示
时钟初始化
硬件制作完成,通电后屏幕将显示如照片样张一样的显示格式,但数据有可能错误,因为 DS1302
必须初始化。
按键 1
按键 2
按键 3
[Dis] 2007 [Set]
2 月 14 日 星期五
23:34.10 23.5℃
今天情人节
按键 4
开机后,同时按下 左下角(2)和右下角(4)两个按键。当屏幕四角的红色 LED 亮起时再转为同
时按下 左上角(1)、左下角(2)和右下角(4)三个按键(转按过程应在 3 秒之内)
。长按 3 秒后
屏幕将显示:
初始化成功!
2007-1-1 00:00.0
时钟调整
在正常状态下按右上角键(3:[Set])进入调时状态。根据屏幕四角的按键功能操作。
(下列图中红色字体会随着加/减调整而改变。)
调整年份
按键 1:退出
按键 2:加 1
[Esc] 2007 [Next]
2 月 14 日 星期五
23:34.10 23.5℃
[+] 调整年份 [-]
以下依次按 [Next] 调整其它数据。
doyoung
按键 3:下一项
按键 4:减 1
4
/7
12864LCD 电子钟说明文档
DoYoung 原创
调整月份
按键 1:退出
按键 2:加 1
[Esc] 2007 [Next]
2 月 14 日 星期五
23:34.10 23.5℃
[+] 调整月份 [-]
按键 3:下一项
按键 4:减 1
调整日期
按键 1:退出
按键 2:加 1
[Esc] 2007 [Next]
2 月 14 日 星期五
23:34.10 23.5℃
[+] 调整日期 [-]
按键 3:下一项
按键 4:减 1
调整星期
按键 1:退出
按键 2:加 1
[Esc] 2007 [Next]
2 月 14 日 星期五
23:34.10 23.5℃
[+] 调整星期 [-]
按键 3:下一项
按键 4:减 1
调整小时
按键 1:退出
按键 2:加 1
[Esc] 2007 [Next]
2 月 14 日 星期五
23:34.10 23.5℃
[+] 调整小时 [-]
按键 3:下一项
按键 4:减 1
调整分钟
按键 1:退出
按键 2:加 1
[Esc] 2007 [Next]
2 月 14 日 星期五
23:34.10 23.5℃
[+] 调整分钟 [-]
按键 3:下一项
按键 4:减 1
当状态处于 调整分钟 时,再按[Next]键将循环到 调整年份。
doyoung
5
/7
12864LCD 电子钟说明文档
DoYoung 原创
正常状态下,长按左上角键(1:[Dis])将显示版本信息。放开按键则返回正常状态。
12864LcdClock
Hello !!
V1.01 2006-11-26
from DoYoung
节日提醒内容
以下是现有的公历节日提醒内容。
if ( mo == 0x01 && dd == 0x01 ){ lcm_w_word("Happy New Year!!"); }//1 月
if ( mo == 0x01 && dd == 0x28 ){ lcm_w_word(" 世界麻风日
"); }
if ( mo == 0x02 && dd == 0x02 ){ lcm_w_word("
if ( mo == 0x02 && dd == 0x13 ){ lcm_w_word("
if ( mo == 0x02 && dd == 0x14 ){ lcm_w_word("
世界湿地日
明天情人节了
今天是情人节
"); }//2 月
"); }
"); }
if
if
if
if
if
if
if
if
if
if
if
(
(
(
(
(
(
(
(
(
(
(
mo
mo
mo
mo
mo
mo
mo
mo
mo
mo
mo
==
==
==
==
==
==
==
==
==
==
==
0x03
0x03
0x03
0x03
0x03
0x03
0x03
0x03
0x03
0x03
0x03
&&
&&
&&
&&
&&
&&
&&
&&
&&
&&
&&
dd
dd
dd
dd
dd
dd
dd
dd
dd
dd
dd
==
==
==
==
==
==
==
==
==
==
==
0x01
0x03
0x08
0x12
0x14
0x15
0x17
0x21
0x22
0x23
0x24
){
){
){
){
){
){
){
){
){
){
){
lcm_w_word(" 国际海豹日
"); }//3 月
lcm_w_word(" 全国爱耳日
"); }
lcm_w_word("
3.8 妇女节
"); }
lcm_w_word("
植树节
"); }
lcm_w_word(" 国际警察日
"); }
lcm_w_word(" 消费者权益日 "); }
lcm_w_word(" 国际航海日
"); }
lcm_w_word(" 世界森林日
"); }
lcm_w_word("
世界水日
"); }
lcm_w_word(" 世界气象日
"); }
lcm_w_word("世界防治结核病日"); }
if
if
if
if
(
(
(
(
mo
mo
mo
mo
==
==
==
==
0x04
0x04
0x04
0x04
&&
&&
&&
&&
dd
dd
dd
dd
==
==
==
==
0x01
0x07
0x08
0x13
){
){
){
){
lcm_w_word("愚人节 小心上当");
lcm_w_word(" 世界卫生日
");
lcm_w_word("
复活节
");
lcm_w_word(" 黑色星期五
");
}//4
}
}
}
if
if
if
if
if
if
if
(
(
(
(
(
(
(
mo
mo
mo
mo
mo
mo
mo
==
==
==
==
==
==
==
0x05
0x05
0x05
0x05
0x05
0x05
0x05
&&
&&
&&
&&
&&
&&
&&
dd
dd
dd
dd
dd
dd
dd
==
==
==
==
==
==
==
0x01
0x04
0x08
0x12
0x05
0x15
0x31
){
){
){
){
){
){
){
lcm_w_word(" 劳动节 放假
lcm_w_word("
青年节
lcm_w_word(" 世界红十字日
lcm_w_word(" 国际护士节
lcm_w_word("近日注意母亲节
lcm_w_word(" 国际家庭日
lcm_w_word(" 世界无烟日
");
");
");
");
");
");
");
}//5
}
}
}
}
}
}
if
if
if
if
if
if
(
(
(
(
(
(
mo
mo
mo
mo
mo
mo
==
==
==
==
==
==
0x06
0x06
0x06
0x06
0x06
0x06
&&
&&
&&
&&
&&
&&
dd
dd
dd
dd
dd
dd
==
==
==
==
==
==
0x01
0x05
0x26
0x06
0x13
0x15
){
){
){
){
){
){
lcm_w_word(" 国际儿童节
lcm_w_word(" 世界环境日
lcm_w_word(" 国际禁毒日
lcm_w_word(" 全国爱眼日
lcm_w_word("近日注意父亲节
lcm_w_word("近日注意父亲节
");
");
");
");
");
");
}//6
}
}
}
}
}
if ( mo == 0x07 && dd == 0x01 ){ lcm_w_word("香港回归记念日
if ( mo == 0x07 && dd == 0x07 ){ lcm_w_word("抗日战争记念日
if ( mo == 0x07 && dd == 0x11 ){ lcm_w_word(" 世界人口日
"); }//7
"); }
"); }
if ( mo == 0x08 && dd == 0x01 ){ lcm_w_word("
if ( mo == 0x08 && dd == 0x08 ){ lcm_w_word("
"); }//8
"); }
doyoung
八一建军节
中国男子节
6
/7
12864LCD 电子钟说明文档
DoYoung 原创
if ( mo == 0x08 && dd == 0x15 ){ lcm_w_word("抗战胜利记念日
"); }
if
if
if
if
(
(
(
(
mo
mo
mo
mo
==
==
==
==
0x09
0x09
0x09
0x09
&&
&&
&&
&&
dd
dd
dd
dd
==
==
==
==
0x10
0x18
0x20
0x27
){
){
){
){
lcm_w_word(" 中国教师节
");
lcm_w_word("九·一八事变记念");
lcm_w_word(" 国际爱牙日
");
lcm_w_word(" 世界旅游日
");
}//9
}
}
}
if
if
if
if
if
(
(
(
(
(
mo
mo
mo
mo
mo
==
==
==
==
==
0x10
0x10
0x10
0x10
0x10
&&
&&
&&
&&
&&
dd
dd
dd
dd
dd
==
==
==
==
==
0x01
0x04
0x24
0x12
0x13
){
){
){
){
){
lcm_w_word(" 中国国庆节
lcm_w_word(" 世界动物日
lcm_w_word("
联合国日
lcm_w_word("明天国际教师节
lcm_w_word(" 国际教师节
}//10
}
}
}
}
");
");
");
");
");
if ( mo == 0x11 && dd == 0x10 ){ lcm_w_word("
if ( mo == 0x11 && dd == 0x17 ){ lcm_w_word("
世界青年节
世界学生节
"); }//11
"); }
if
if
if
if
if
世界艾滋病日
明晚平安夜
今晚平安夜
圣诞快乐
明日新年
");
");
");
");
");
(
(
(
(
(
mo
mo
mo
mo
mo
==
==
==
==
==
0x12
0x12
0x12
0x12
0x12
&&
&&
&&
&&
&&
dd
dd
dd
dd
dd
==
==
==
==
==
0x01
0x23
0x24
0x25
0x31
){
){
){
){
){
lcm_w_word("
lcm_w_word("
lcm_w_word("
lcm_w_word("
lcm_w_word("
}//12
}
}
}
}
4. 相关升级
您可以升级本程序,为它加入更好的功能(例如闹钟、节日设置)。或者期待本站的程序升级下载。
如与朋友交流本站资料请注明 DoYoung。
5. 常见问题与注意事项
„
„
„
„
„
„
本程序版本已经经过一段时间的测试,基本可以保证其稳定性。如您应用中发现软件 BUG 请与
我联系,多谢支持。
在焊接键盘前请先上电测试键盘的位置,错误的位置会使操作混乱。
各产家的 12864LCD 显示屏的性能各有不同,制作前先决保您的显示屏是据有汉字库的,基本
引脚和主控制芯片型号一致。
如果您的 LCD 是自动调整灰度的,可不接电位器,而将 VO 直接接高电平。
可为蜂鸣器设置跳线或开关键来控制整点报时功能。整点报时时间为早 8 点至晚 21 点。
制作时,温度传感器 IC 应用线引出远离电路板,以保证温度精准。
版本信息
题目
作者
版本
声明
标注
12864LCD电子钟说明文档
杜洋
V1.0 2007.2.11
本站内容(包括程序代码、文档、照片、视频等)属个人所有,未经网站作者同意请勿转载或引用,对于
转载或复制而造成的任何不良后果概不负责。 对于本站内免费下载的资料、图片及视频不能保证其真实可
靠,对于免费下载的程序代码本站作者不给矛技术支持和服务。
ST2007-2-11D2254
doyoung