闹钟实验报告 下载本文

}

write_com(0x80+0x40+6); //写出时间显示部分的两个冒号 write_date(':'); delay(5);

write_com(0x80+0x40+9); write_date(':'); delay(5);

write_sfm(4,shi); //分别送去液晶显示 write_com(0x80+0x40+4); write_sfm(7,fen);

write_com(0x80+0x40+7); write_sfm(10,miao);

write_com(0x80+0x40+10)

4.3.2 闹钟的实现

闹钟功能的实现涉及到两个方面:闹铃时间设定和是否闹铃判别与相应处理。闹铃时间设定模块的设计可参照时间设定模块,这里着重阐述闹铃判别与处理模块的设计问题。闹铃判别与闹铃处理的关键在于判别何时要进行闹铃。当时十位、时个位、分十位、分个位中任一位发生改变(进位)时,就必须进行闹铃判别。程序设计思想如图4.3。

[8]

闹铃判别处理 时十位、个位,分十位、个位改变了 是否设置了闹铃 Y 判当前时间是设定时间 Y 设置闹铃标志 N 清除闹铃标志 中断返回

4.3.3 显示程序

中断返回 显示程序包括时钟显示和定时显示程序。具体程序见附录。

液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表4.1是TC1602EL液晶模块的内部显示地址。

表4.1 内部显示地址

1 00 40 硬件原理图2 01 41 3 02 42 4 03 43 5 04 44 6 05 45 7 06 46 8 07 47 9 08 48 10 09 49 11 12 13 14 0D 4D 15 0E 4E 16 0F 4F [15]

0A 0B 0C 4A 4B 4C

程序:

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

使用说明:

K1键为菜单选项:单击→进入位选择修改;双击:修改; K2键为上调键;K3键为下调键;K4键为退出修改;

K5键为闹钟时间设置键;按一次:闹钟一;两次:闹钟二;三次:闹钟三;四次:重置 五次:纪念日

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

#include

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

位定义

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

sbit RS=P2^0; //功能数据选择位 sbit RW=P2^1; //读写选择位 sbit E=P2^2; //使能位 0 sbit busy=P0^7; //lcd忙标位 sbit menu=P1^0; //菜单及确定 sbit inc=P1^1; //增一 sbit dec=P1^2; //减一 sbit quit=P1^3; //退出 sbit sound=P1^4; //闹钟控制

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

全局变量

**********************************************************************/ unsigned

char

data

sec20,sec,min,hour,amin1,ahour1,amin2,ahour2,amin3,ahour3,temp,year1,year2,month,day,amonth,aday; //计秒,秒,分,时 unsigned

char

data

timebuf[]={0,0,0x3a,0,0,0x3a,0,0,0,0,0,0,0x2d,0,0,0x2d,0,0}; //存放时间

unsigned char key; //按键标志

unsigned char time=0; //记录按menu键的次数 unsigned char place=0x84; //记录光标的位置

unsigned char signal=0; //光标与时间值增减标志位 //0光标 1时间值

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

函数申明

********************************************************************