欢迎来到天天文库
浏览记录
ID:52686578
大小:137.50 KB
页数:5页
时间:2020-03-29
《基于52单片机控制的1602液晶电子时钟显示程序(精心整理).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、基于52单片机控制的1602液晶电子时钟显示程序关于利用52单片机制作1602液晶电子时钟显示的程序,网上也有很多资料,不过个人感觉还是挺乱的。曾经我也是一名初学者,看过很多别人的资料,查找过很多书籍,一个个程序的摸索,经常被弄得头昏脑涨,深受其苦。今天,我自己精心的整理了一份“基于52单片机控制的1602液晶电子时钟显示程序”的资料,程序每个点几乎都有注释,适合初学者学习,供有兴趣的朋友参考。也算作为自己一直以来在网上搜索那么多资料而给大家的一点点回报吧。这程序简单易懂,也有一些可改善的地方,比如写命令和写数据的函数可以合并等等。大家可根据自己
2、的爱好进行修改,多动手多尝试,相信你很快就能学会。值得注意的是,1,此程序是利用52单片机控制,如果你的是51单片机,需要改动一下头文件#include的。2,关于引脚,大家需要根据实际情况定义具体的引脚,不同的学习板,或者你自己焊接的板子,引脚都可能不一样。3,本程序的日期是固定的,自己可以编写函数进行年月日显示。由于本作者水平有限,错误疏漏之处在所难免,欢迎读者指正。#include#defineucharunsignedchar#defineuintunsignedintsbitlcden=P3^4;//
3、1602使能信号sbitlcdrs=P3^5;//1602命令(0)/数据(1)选择端sbitwr=P3^6;//1602读写选择端,一般为低电平(0)sbitkey1=P3^7;//定义功能按键,可根据实际情况改变sbitkey2=P2^0;//数字增加按键,也可根据实际情况改变sbitdula=P2^6;//关闭实验板上数码管的段选,这两句可根据实际情况注释掉sbitwela=P2^7;//关闭实验板上数码管的段选uchartemp,num,shi,fen,miao;ucharcodetabe[]="2013-07-20";//固定日期,可扩
4、展为动态voiddelay(uintz)//延时1ms程序{uinti,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}voidwrite_com(ucharcom)//写命令{lcdrs=0;//rs为低电平写命令P0=com;delay(5);lcden=1;//高脉冲使能delay(5);lcden=0;}voidwrite_data(uchardat)//写数据{lcdrs=1;//rs为高电平写数据P0=dat;delay(5);lcden=1;delay(5);lcden=0;}voidinit()//初始
5、化{EA=1;//开总中断ET1=1;//开定时器1中断TMOD=0x10;//设置TMOD参数TH1=(65536-50000)/256;//给寄存器装初值TL1=(65536-50000)%256;TR1=1;//开启定时器1num=0;shi=0;fen=0;miao=0;lcden=0;dula=0;wela=0;wr=0;//写,低电平有效write_com(0x38);//设置16*2显示,5*7点阵,8位数据接口write_com(0x0C);//开显示,这里上下四句话需参考厂家提供的1602参数设置write_com(0x06);
6、//写一个字符后地址指针加1,且光标加1,写一个字符时,整屏不动write_com(0x01);//显示清屏,数据指针清0}voidd1602(ucharadd,uchardate)//给1602发送地址与数据{uchardate2,date1;//拆分个位与十位date2=date/10;date1=date%10;write_com(0x80+0x40+add);//写指令,地址write_data(date2+0x30);delay(5);//写数据,十位write_data(date1+0x30);delay(5);//写数据,个位}vo
7、idkey()//按键函数{if(key1==0){delay(5);//去抖延时if(key1==0){num++;//功能键按下次数while(!key1);//松手判断if(num==1)//第一次按下{TR1=0;//关定时器1,时钟暂停write_com(0x8b+0x40);//地址写到显示秒位置write_com(0x0f);//控制显示光标,光标闪烁}if(num==2)//第二次按下{write_com(0x88+0x40);//地址写到显示分位置}if(num==3)//第三次按下{write_com(0x85+0x40);/
8、/地址写到显示时位置}if(num==4)//第四次按下{num=0;write_com(0x0c);//开显示,不显示光标,光标也不闪
此文档下载收益归作者所有