教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 求职职场 >

基于51单片机的LCD1602简单数字时钟

来源:网络收集 时间:2026-10-01
导读: 原理图: 源程序: 标题:LCD1602时钟 效果:在LCD1602 作者:皖绩小挺 说明:P0 key4:P3.6 宏定义 //定义LCD1602端口 sbit lcdrw=P1^1; sbit lcden=P1^2; sbit key1=P3^7; //定义按键端口 sbit key2=P3^6; sbit key3=P3^5; sbit key4=P3^4; sbit key5=P3^3;

原理图:

源程序:

标题:LCD1602时钟

效果:在LCD1602

作者:皖绩小挺

说明:P0

key4:P3.6

宏定义

//定义LCD1602端口

sbit lcdrw=P1^1;

sbit lcden=P1^2;

sbit key1=P3^7; //定义按键端口

sbit key2=P3^6;

sbit key3=P3^5;

sbit key4=P3^4;

sbit key5=P3^3;

uchar tt; //设置全局变量

uchar hour,minute,second;

uchar table[]="HELLO WORLD" ; //第一行字符(11个)

uchar table1[]="00:00:00"; //第二行字符(8个)

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

延时函数

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

void delay(uint z) //delay(1)约1ms

{

uint x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

LCD1602写命令

void write_lcdcom(uchar lcd_com)

{

lcdrs=0; //rs lcdrw=0; //rw

P0=lcd_com;

delay(5);

lcden=1;

delay(5);

}

{

lcdrs=1;

lcdrw=0;

P0=lcd_data;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

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

LCD1602读命令

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

void read_lcdcom(uchar lcd_com)

{

lcdrs=0;

lcdrw=1; //rw高电平进行读操作

P0=lcd_com;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

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

LCD1602读数据

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

void read_lcddata(uchar lcd_data)

{

lcdrs=1;

lcdrw=1;

P0=lcd_data;

delay(5);

lcden=1;

delay(5);

lcden=0;

}

{

位,双行显示,5X7点阵

光标右移,不整屏移动

delay(5);

write_lcdcom(0x0c); //显示屏幕,光标不显示

delay(5);

hour=0; //赋系统时间初值

minute=0;

second=0;

key1=1;

key2=1;

key3=1;

key4=1;

key5=1;

write_lcdcom(0x80+2); //显示第一行

for(i=0;i<11;i++)

{

write_lcddata(table[i]);

//delay(5);

}

write_lcdcom(0x80+0x44); // 显示第二行

for(i=0;i<8;i++)

{

write_lcddata(table1[i]);

//delay(5);

}

TMOD=0x01; //

EA=1; // ET0=1; // TR0=1; }

{

shi=time/10; //取时间高位

ge=time%10;

write_lcdcom(0x80+0x40+add); //写入指令,显示位置

write_lcddata(0x30+shi);//写入数据,显示内容,利用液晶屏内部字符发生 write_lcddata(0x30+ge); //存储器(CGROM),直接写入需要显示字符的地址 //'0'的地址就是0x30

}

/***************************************************************** 定时器

************************************************************************/ void t0() interrupt 1

{

TH0=(65536-50000)/256; //重载初值

TL0=(65536-50000)%256;

tt++; //每50ms,tt加1

if(tt==20)

{

tt=0;

second++;

if(second==60)

{

second=0;

minute++;

if(minute==60)

{

minute=0;

hour++;

if(hour==24)

{

hour=0;

}

}

}

}

}

{

if(key1==0) //小时加1

{

delay(5);

if(key1==0)

{

TR0=0;

hour++;

if(hour==24) hour=0; write_hms(4,hour); delay(200); //使得调整的时候清晰可见,以免每按一次变化太大 TR0=1; } } if(key2==0) // 小时减1 { delay(5); if(key2==0) { TR0=0; hour--; if(hour>24) //当减到00时再减的数不是<0 hour=23; write_hms(4,hour); delay(200); TR0=1; } } if(key3==0) // { delay(5); if(key3==0) { TR0=0; } } if(key4==0) // 分钟减1 { delay(5); if(key4==0) { TR0=0; minute--;

if(minute>24)

minute=59;

write_hms(7,minute);

delay(200);

TR0=1;

}

}

if(key5==0) //秒钟清零

{

delay(5);

if(key5==0)

{

TR0=0;

second=0;

write_hms(10,second);

TR0=1;

}

}

}

主函数

void main(void)

{

lcdinit(); // while(1)

{

} }

…… 此处隐藏:821字,全部文档内容请下载后查看。喜欢就下载吧 ……
基于51单片机的LCD1602简单数字时钟.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/122607.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150份
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)