资源描述
(完整word)单片机lcd1602液晶屏电子时钟C程序
/********************************************************************
* 文件名 : 液晶1602显示.c
* 描述 : 该程序实现了对液晶1602的控制。
* 创建人 : 东流,2009年4月10日
* 版本号 : 2.0
***********************************************************************/
#include〈reg52。h〉
#define uchar unsigned char
#define uint unsigned int
uint count,t;
int shi=1,fen=11,miao=22,nian=12,yue=7,ri=1;
uchar shijian[16]={"time 00-00-00 t"},shijian1[16]={"date 00-00—00 ”};
//这三个引脚参考资料
sbit E=P2^7; //1602使能引脚
sbit RW=P2^6; //1602读写引脚
sbit RS=P2^5; //1602数据/命令选择引脚
sbit LE = P3^7;
sbit key1 = P3^2; //小时修改建
sbit key2 = P3^3; //分钟修改键
sbit key3 = P3^4; //显示选择键
/********************************************************************
* 名称 : delay()
* 功能 : 延时,延时时间大概为5US。
* 输入 : 无
* 输出 : 无
***********************************************************************/
void delay()
{
uint n=250;
while(n--);
}
/********************************************************************
* 名称 : bit Busy(void)
* 功能 : 这个是一个读状态函数,读出函数是否处在忙状态
* 输入 : 输入的命令值
* 输出 : 无
***********************************************************************/
bit Busy(void)
{
bit busy_flag = 0;
RS = 0;
RW = 1;
E = 1;
delay();
busy_flag = (bit)(P0 & 0x80);
E = 0;
return busy_flag;
}
/********************************************************************
* 名称 : wcmd(uchar del)
* 功能 : 1602命令函数
* 输入 : 输入的命令值
* 输出 : 无
***********************************************************************/
void wcmd(uchar del)
{
while(Busy());
RS = 0;
RW = 0;
E = 0;
delay();
P0 = del;
delay();
E = 1;
delay();
E = 0;
}
/********************************************************************
* 名称 : wdata(uchar del)
* 功能 : 1602写数据函数
* 输入 : 需要写入1602的数据
* 输出 : 无
***********************************************************************/
void wdata(uchar del)
{
while(Busy());
RS = 1;
RW = 0;
E = 0;
delay();
P0 = del;
delay();
E = 1;
delay();
E = 0;
}
/********************************************************************
* 名称 : L1602_init()
* 功能 : 1602初始化,请参考1602的资料
* 输入 : 无
* 输出 : 无
***********************************************************************/
void L1602_init(void)
{
wcmd(0x38);
wcmd(0x0c);
wcmd(0x06);
wcmd(0x01);
}
void timeInit()
{
TMOD = 0X01; //定义定时器1工作方式 16位定时 c/t选为定时器 GATE选TR1控制
TL0 = (65536—10000)%256;
TH0 = (65536-10000)/256;
TR0=1;
EA=1;
ET0=1;
}
void timeint() interrupt 1
{
TL0 = (65536—10000)%256;
TH0 = (65536—10000)/256;
count++;
}
/*************************
***时间日期设定
*************************/
void shijianxian()
{
if(count>=100)
{
miao++;
count=0;
}
if(miao>=60)
{
fen++;
miao=0;
}
if(fen>=60)
{
shi++;
fen=0;
}
if(shi〉=24)
{
ri++;
shi=0;
}
if(ri〉30)
{
yue++;
ri=1;
}
if(yue〉12)
{
nian++;;
yue=1;
}
if(nian==99)
{
nian=0;
}
if((key1==0)&((t%6)==0))
{
delay();
if((key1==0)&((t%6)==0))
{
shi++;
if(shi>23) shi=0;
}
delay();
}
if((key3==0)&((t%6)==0))
{
delay();
if((key3==0)&((t%6)==0))
{
shi--;
if(shi<0) shi=23;
}
}
if((key1==0)&((t%6)==1))
{
delay();
if((key1==0)&((t%6)==1))
{
fen++;
if(fen>59) fen=0;
}
delay();
}
if((key3==0)&((t%6)==1))
{
delay();
if((key3==0)&((t%6)==1))
{
fen—-;
if(fen<0) fen=59;
}
delay();
}
if((key1==0)&((t%6)==2))
{
delay();
if((key1==0)&((t%6)==2)) yue++;
delay();
}
if((key1==0)&((t%6)==3))
{
delay();
if((key1==0)&((t%6)==3)) ri++;
delay();
}
}
/******************************
****时间显示
*******************************/
void shijianxian1()
{
shijian[6]=shi/10+48;
shijian[7]=shi%10+48;
shijian[9]=fen/10+48;
shijian[10]=fen%10+48;
shijian[12]=miao/10+48;
shijian[13]=miao%10+48;
shijian[8]=45;
shijian[11]=45;
shijian[15]=t+48;
}
/******************************
****日期显示
*******************************/
void riqi()
{
shijian1[6]=nian/10+48;
shijian1[7]=nian%10+48;
shijian1[9]=yue/10+48;
shijian1[10]=yue%10+48;
shijian1[12]=ri/10+48;
shijian1[13]=ri%10+48;
shijian1[8]=45;
shijian1[11]=45;
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main()
{
uint i;
L1602_init();
timeInit();
while(1)
{
shijianxian();
shijianxian1();
if(key2==0)
{
delay();
if( (key2==0))
t++;
if(t>=6) t=0;
delay();
}
riqi();
for(i=0;i<16;i++)
{
wcmd(0xc0+i);
wdata(shijian[i]);
wcmd(0x80+i);
wdata(shijian1[i]);
}
}
}当我被上帝造出来时,上帝问我想在人间当一个怎样的人,我不假思索的说,我要做一个伟大的世人皆知的人。于是,我降临在了人间。
我出生在一个官僚知识分子之家,父亲在朝中做官,精读诗书,母亲知书答礼,温柔体贴,父母给我去了一个好听的名字:李清照。
小时侯,受父母影响的我饱读诗书,聪明伶俐,在朝中享有“神童”的称号。小时候的我天真活泼,才思敏捷,小河畔,花丛边撒满了我的诗我的笑,无可置疑,小时侯的我快乐无虑.
“兴尽晚回舟,误入藕花深处.争渡,争渡,惊起一滩鸥鹭。”青春的我如同一只小鸟,自由自在,没有约束,少女纯净的心灵常在朝阳小,流水也被自然洗礼,纤细的手指拈一束花,轻抛入水,随波荡漾,发髻上沾着晶莹的露水,双脚任水流轻抚。身影轻飘而过,留下一阵清风。
可是晚年的我却生活在一片黑暗之中,家庭的衰败,社会的改变,消磨着我那柔弱的心。我几乎对生活绝望,每天在痛苦中消磨时光,一切都好象是灰暗的。“寻寻觅觅冷冷清清凄凄惨惨戚戚"这千古叠词句就是我当时心情的写照.
最后,香消玉殒,我在痛苦和哀怨中凄凉的死去。
在天堂里,我又见到了上帝。上帝问我过的怎么样,我摇摇头又点点头,我的一生有欢乐也有坎坷,有笑声也有泪水,有鼎盛也有衰落。我始终无法客观的评价我的一生。我原以为做一个着名的人,一生应该是被欢乐荣誉所包围,可我发现我错了。于是在下一轮回中,我选择做一个平凡的人.
我来到人间,我是一个平凡的人,我既不着名也不出众,但我拥有一切的幸福:我有温馨的家,我有可亲可爱的同学和老师,我每天平凡而快乐的活着,这就够了.
天儿蓝蓝风儿轻轻,暖和的春风带着春的气息吹进明亮的教室,我坐在教室的窗前,望着我拥有的一切,我甜甜的笑了。我拿起手中的笔,不禁想起曾经作诗的李清照,我虽然没有横溢的才华,但我还是拿起手中的笔,用最朴实的语言,写下了一时的感受:
人生并不总是完美的,每个人都会有不如意的地方。这就需要我们静下心来阅读自己的人生,体会其中无尽的快乐和与众不同。
“富不读书富不久,穷不读书终究穷。”为什么从古到今都那么看重有学识之人?那是因为有学识之人可以为社会做出更大的贡献。那时因为读书能给人带来快乐。
自从看了《丑小鸭》这篇童话之后,我变了,变得开朗起来,变得乐意同别人交往,变得自信了……因为我知道:即使现在我是只“丑小鸭",但只要有自信,总有一天我会变成“白天鹅"的,而且会是一只世界上最美丽的“白天鹅”……
我读完了这篇美丽的童话故事,深深被丑小鸭的自信和乐观所折服,并把故事讲给了外婆听,外婆也对童话带给我们的深刻道理而惊讶不已。还吵着闹着多看几本名着。于是我给外婆又买了几本名着故事,她起先自己读,读到不认识的字我就告诉她,如果这一面生字较多,我就读给她听整个一面。渐渐的,自己的语文阅读能力也提高了不少,与此同时我也发现一个人读书的乐趣远不及两个人读的乐趣大,而两个人读书的乐趣远不及全家一起读的乐趣大。于是,我便发展“业务”带动全家一起读书……现在,每每遇到好书大家也不分男女老少都一拥而上,争先恐后“抢书”,当我说起我最小应该让我的时候,却没有人搭理我.最后还把书给撕坏了,我生气地哭了,妈妈一边安慰我一边对外婆说:“孩子小,应该让着点。”外婆却不服气的说:“我这一把年纪的了,怎么没人让我呀?”大家人你一言我一语,谁也不肯相让……读书让我明白了善恶美丑、悲欢离合,读一本好书,犹如同智者谈心、谈理想,教你辨别善恶,教你弘扬正义。读一本好书,如品一杯香茶,余香缭绕.读一本好书,能使人心灵得到净化.书是我的老师,把知识传递给了我;书是我的伙伴,跟我诉说心里话;书是一把钥匙,给我敞开了知识的大门;书更是一艘不会沉的船,引领我航行在人生的长河中。其实读书的真真乐趣也就在于此处,不是一个人闷头苦读书;也不是读到好处不与他人分享,独自品位;更不是一个人如痴如醉地沉浸在书的海洋中不能自拔。而是懂得与朋友,家人一起分享其中的乐趣。这才是读书真正之乐趣呢!这所有的一切,不正是我从书中受到的教益吗?
我阅读,故我美丽;我思考,故我存在.我从内心深处真切地感到:我从读书中受到了教益。当看见有些同学宁可买玩具亦不肯买书时,我便想到培根所说的话:“世界上最庸俗的人是不读书的人,最吝啬的人是不买书的人,最可怜的人是与书无缘的人."许许多多的作家、伟人都十分喜欢看书,例如毛泽东主席,他半边床上都是书,一读起书来便进入忘我的境界。
书是我生活中的好朋友,是我人生道路上的航标,读书,读好书,是我无怨无悔的追求。
展开阅读全文