LCD1602液晶显示屏显示时钟且能修改时间

发布者:糖果龙猫最新更新时间:2015-05-25 来源: 51hei关键字:LCD1602  液晶显示屏  显示时钟  修改时间 手机看文章 扫描二维码
随时随地手机看文章
CODE:

/***************************************
程序功能:
LCD液晶显示屏显示时钟并且可以修改时间
***************************************/
#include
#define uint unsigned int
#define uchar unsigned char
sbit K1=P1^0;//设置三个独立键盘
sbit K2=P1^3;
sbit K3=P1^5;
sbit lcdwrite=P2^5;
sbit lcddatecommand=P2^6;
sbit lcde=P2^7;
uchar code firstline[]="2013-06-03";
uchar code secondline[]="00-00-00";
uchar i;
uchar hour,minutes,seconds;
uchar count,num;
uchar cnt;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=0;y<=112;y++)
{
}
}
}
void write_command(uchar command)
{
lcddatecommand=0;
lcdwrite=0;
P0=command;
delay(1);
lcde=1;
delay(1);
lcde=0;
}
void write_date(uchar date)
{
lcddatecommand=1;
lcdwrite=0;
P0=date;
delay(1);
lcde=1;
delay(1);
lcde=0;
}
void LCDinit()
{
lcde=0;
write_command(0x38);//设置16*2显示,5*7点阵,8位数据接口
write_command(0x0f);//设置开显示,不显示光标
write_command(0x06);// 写一个字符后地址指针加1
write_command(0x80);
for(i=0;i<10;i++)
{
write_date(firstline[i]);
delay(1);
}
write_command(0x80+0x40);
for(i=0;i<8;i++)
{
write_date(secondline[i]);
delay(1);
}
}
void Time0init()
{
TMOD=0x01;//开启定时器1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void Clockinit()
{
hour=0;
minutes=0;
seconds=0;
count=0;
num=0;
}[page]
void display(uchar hour,uchar minutes,uchar seconds)//接收并发送数据到液晶屏幕
{
uchar hourge,hourshi,minutesshi,minutesge,secondsshi,secondsge;
hourshi=hour/10;
hourge=hour%10;
write_command(0x80+0x40);
write_date(hourshi+48);
delay(1);
write_date(hourge+48);
delay(1);

minutesshi=minutes/10;
minutesge=minutes%10;
write_command(0x80+0x43);
write_date(minutesshi+48);
delay(1);
write_date(minutesge+48);
delay(1);

secondsshi=seconds/10;
secondsge=seconds%10;
write_command(0x80+0x46);
write_date(secondsshi+48);
delay(1);
write_date(secondsge+48);
delay(1);
}
void revise()
{
if(K1==0)
{
delay(5);
if(K1==0)
{
cnt++;//计数第几次按下
TR0=0;
}
while(!K1);
delay(5);
while(!K1);
}
if(cnt==1)//第一次按下,调整秒钟,调整时秒钟有光标闪烁
{
write_command(0x80+0x46);
write_command(0x0f);
if(K2==0)
{
delay(5);
if(K2==0)
{
seconds++;
if(seconds==60)
{
seconds=0;
}
}
while(!K2);
delay(5);
while(!K2);
}
if(K3==0)
{
delay(5);
if(K3==0)
{
seconds--;
if(seconds==-1)//here is a bug
{
seconds=59;
}
}
while(!K3);
delay(5);
while(!K3); 
}
}

if(cnt==2)//第二次按下,调整分钟,调整时秒钟有光标闪烁
{
write_command(0x80+0x43);
write_command(0x0f);
if(K2==0)
{
delay(5);
if(K2==0)
{
minutes++;
if(minutes==60)
{
minutes=0;
}
}
while(!K2);
delay(5);
while(!K2);
}
if(K3==0)
{
delay(5);
if(K3==0)
{
minutes--;
if(minutes==-1)//here is a bug
{
minutes=59;
}
}
while(!K3);
delay(5);
while(!K3); 
}
}
if(cnt==3)//第三次按下,调整时钟,调整时秒钟有光标闪烁
{
write_command(0x80+0x40);
write_command(0x0f);
if(K2==0)
{
delay(5);
if(K2==0)
{
hour++;
if(hour==24)
{
hour=0;
}
}
while(!K2);
delay(5);
while(!K2);
}
if(K3==0)
{
delay(5);
if(K3==0)
{
hour--;
if(hour==-1)//here is a bug
{
hour=23;
}
}
while(!K3);
delay(5);
while(!K3); 
}
}
if(cnt==4)
{
TR0=1;
cnt=0;
}
}
void main()
{
LCDinit();
Time0init();
Clockinit();
while(1)
{
revise();
display(hour,minutes,seconds);

}
void Time0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==20)
{
count=0;
seconds++;
if(seconds==60)
{
seconds=0;
minutes++;
if(minutes==60)
{
minutes=0;
hour++;
if(hour==24)
{
hour=0;
}
}
}

}

关键字:LCD1602  液晶显示屏  显示时钟  修改时间 引用地址:LCD1602液晶显示屏显示时钟且能修改时间

上一篇:自己实现的Proteus仿真(共阴极数码管)
下一篇:51单片机驱动无源蜂鸣器

推荐阅读最新更新时间:2024-03-16 14:03

LCD1602液晶显示器 C51模块化程序+电路图
下面是51单片机驱动1602液晶的电路图: 程序一共有3个文件: /********************** lcd.h 头文件 **********************/ #ifndef _LCD_H_ #define _LCD_H_ #include reg51.h extern void lcd_init(); extern void lcd_busy(); extern void lcd_write_dat(unsigned char dat); extern void lcd_write_com(unsigned char dat); extern void lcd_xy(unsigned char x,
[单片机]
<font color='red'>LCD1602</font>液晶<font color='red'>显示</font>器 C51模块化程序+电路图
ATmega16驱动ds12c887显示lcd1602
#include iom16v.h #include macros.h #define uchar unsigned char #define uint unsigned int #define DS_ PORTC&=~BIT(6) #define DS PORTC|=BIT(6) #define RW_ PORTC&=~BIT(5) #define RW PORTC|=BIT(5) #define AS_ PORTC&=~BIT(4) #define AS PORTC|=BIT(4) #define CS_ PORTC&=~BIT(3) #define CS PORTC|=BIT(3) uchar tab1 ={"DAT:"};
[单片机]
C51编程20-应用篇(LCD1602显示-1)
回顾之前编程教程,第1篇是I/O篇,I/O主要说明I/O的引脚特性以及如何通过C51控制I/O的电平输入输出;第2篇是中断篇,中断篇中介绍了中断系统必要性以及如何使用单片机中的中断系统(外部中断0、外部中断1、定时器/计数器0、定时器/计数器1、串行中断)。 通过I/O篇与中断篇的学习,其实基本学习完51单片机了。应用篇的出现是为了更好的利用单片机去做项目,通过做项目更好的利用单片机中I/O与中断系统。 言归正传,开始本文内容。 在I/O篇的综合练习中,矩阵键盘用作输入,单片机数据处理与控制I/O口,数码管用作显示,如下图所示。 上面的结构,可以总结成3个部分: 输入部分:键盘 中央处理部分:51单片机
[单片机]
C51编程20-应用篇(<font color='red'>LCD1602</font><font color='red'>显示</font>-1)
基于51单片机+DHT11温湿度+LCD1602显示
DHT11温湿度相关介绍 DHT11产品概述 DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传 感器。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高 的可靠性与卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测 温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快 响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的 湿度校验室中进行校准。校准系数以程序的形式储存在OTP内存中,传感器内 部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集 成变得简易快捷。超小的体积、极低的功耗,信号传输距离可达20米以上,使 其成为各类应用甚至最为
[单片机]
基于51单片机+DHT11温湿度+<font color='red'>LCD1602</font><font color='red'>显示</font>
51单片机+LCD1602电子密码锁程序
24c02采用IIC与单片机通信,其详细通信时序参考24C02数据手册。我们只需使用At24c02Read(unsigned char addr)和At24c02Write(unsigned char addr,unsigned char dat)即可。 一、实验现象 将线连接好并将程序下载后,可以看到1602上显示: 此时可以按下任意键继续 在这里我们可以“1”或“9”选择开锁或者是修改密码。如果这里选择的开锁,按下确定键,此时会提示输入密码,初始密码默认为888888,输入密码 然后按下确定键,如果密码正确则会显示: 并且可以看到继电器模块指示灯亮并可以听到继电器闭合的声音。 如果密码错误则会提
[单片机]
51单片机+<font color='red'>LCD1602</font>电子密码锁程序
STM32实例-LCD1602电路
1602 液晶,从它的名字我们就可以看出它的显示容量,就是可以显示 2 行,每行 16 个字符的液晶,电路图如下所示。 LCD1602它的任务电压是 4.5V~5.5V,关于这点我们设计电路的时分,直接依照 5V 零碎设计,然则包管我们的 5V 零碎最低不克不及低于 4.5V。在 5V 任务电压下丈量它的任务电流是 2mA,人人留意,这个 2mA 仅仅是指液晶,而它的黄绿背光多是用 LED 做的,所以功耗不会太小的,一二十毫安照样有的。1602 液晶一共 16 个引脚,每一个引脚的功用,我们都可以在它的数据手册上取得。而这些根本的信息,在我们设计电路和编写代码之前,必须先看明确,1602 液晶引脚功用如下表所示。 LCD
[单片机]
MEGA8单片机驱动LCD1602液晶
个头文件,搞了好久都没成功!都快到心灰意冷的边缘了,突然灵光一闪:会不会是mega8的Flash不行了?这片mega8陪伴了我好几年,也应该退休了。抱着试试看的想法换了一片新的mega8,一切ok!自己觉得奇怪,之前在烧程序时,并没有报错啊? 调试过程总结一下: 1)由于找不到的1620资料,不知道它的操作时序。看到一些帖子说1620和1602没区别,还是有点将信将疑。后面用网友编写的1602程序试验,才知道它们俩没啥区别 2)关于是否检测LCD处于空闲,觉得还是最好在写指令和写数据时都加上。不检测,会导致显示结果不正常。 3)由于连线很多14根(加上背光就是16根),如果有一根除了问题就会影响到显示。所以我是用万用表一根线一根线
[单片机]
ELDIM推出第三代时间测量系统,完整评价LCD时间依赖性
如今,液晶显示屏在很多领域得到广泛应用,为了提高竞争力,必须保证显示屏的光电技术指标。因此,像素点的电子寻址具有非常重要的作用。这一技术近年来得到了很快的发展,不幸的是,测量标准跟不上发展的需求,在特征表示技术上留下了空白。 为了向显示器工业提供一种可靠的方案,法国ELDIM公司日前推出了第三代时间测量系统Imaging OPTIScope。经过多次测试和试验之后,Imaging OPTIScope系统可以提供有效的方案,以准确和完整地评价液晶显示屏的时间依赖性。 Imaging OPTIScope系统的设计目的,是为了符合现有的ISO, VESA, EIAJ等等标准,但在设计中也考虑了系统的发展潜力,以适应用户最新的
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved