摘要:随着科技的发展,单片机的应用正在不断深入,涉及到日常生活的方方面面。本设计是基于单片机89C51为控制核心,以液晶为显示的数字时钟。本数字时钟设计的原理相对简单,所以硬件电路也相对简单,难点和重点主要放在C语言的编程上,使用到定时器的子程序、延时程序、时分秒的控制程序、液晶模块和单片机模块的初始化程序、液晶显示的程序等,各个函数交叉调用,配合主程序的运行。

 数字时钟的概述与功能的简介
本设计用到单片机的P0端做数据端,把数据发送到LCD的数据接收端,然后通过利用程序进行对液晶的控制,实现数字的显示。在本设计中,设计了四个功能按键,分别是启动/停止时钟,时、分、秒的加一功能,以此对时间的调整。硬件电路相对简单,所以软件的开销相对增大,特别是对液晶模块的程序设计,也正是设计本数字时钟的目的,希望通过此设计提高自己的软件编程与调试能力。由于个人能力也有限,在短时间内不能编写出用液晶显示年月日的程序,因为代码量确实增大不少。

(电路图的链接端与程序不完全一直)
仿真结果:

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar hour,min,sec,count,hour1,hour2,
sec1,sec2,min1,min2,keystopc,temp;
sbit keystop=P0^0;
sbit keyh=P0^1;
sbit keym=P0^2;
sbit keys=P0^3;
sbit lcden=P1^0;
sbit lcdrw=P1^1;
sbit lcdrs=P1^2;
uchar code table[]={
'0','1','2','3','4','5','6','7','8','9',':'};void init()                      //定时器初始化
{count=0;hour=23;min=59;sec=50;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TR0=1;ET0=1;EA=1;
}void delay(uint z)                //延时程序
{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);
}/**************************************************************LCD1602显示函数
*************************************************************/
void write_com(uchar com)
{lcdrs=0;P2=com;delay(5);lcden=1;delay(5);lcden=0;
}void write_data(uchar date)
{lcdrs=1;P2=date;delay(5);lcden=1;delay(5);lcden=0;
}
void init_1602()                //初始化1602
{lcden=0;lcdrw=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);
}void write_Char(unsigned char x,unsigned char y,unsigned char date) {     if (y == 0) {     write_com(0x80 + x);     }    else {     write_com(0xC0 + x);     }        write_data(date);  } void display(uchar hour1,uchar hour2,uchar min1,uchar min2,uchar sec1,uchar sec2)   //显示程序
{   //write_com_nextl(0x80+0x40+0x03);write_Char(1,0,table[hour1]);write_Char(2,0,table[hour2]);write_Char(3,0,table[0x0a]);write_Char(4,0,table[min1]);write_Char(5,0,table[min2]);write_Char(6,0,table[0x0a]);write_Char(7,0,table[sec1]);write_Char(8,0,table[sec2]);}/**************************************************************计时器/定时器0
*************************************************************/
void count0() interrupt 1
{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==20){count=0;sec++;if(sec==60){sec=0;min++;if(min==60){min=0;hour++;if(hour==24){hour=0;}}}}
}/**************************************************************主函数
*************************************************************/void main()
{init();init_1602();while(1){   if(keystop==0)                             //检测是否停止键按下{delay(10);if(keystop==0){if(keystopc!=1)   keystopc++;      //按停止键的次数 else              keystopc=0;while(keystop==0);                 //松手检测delay(5);while(keystop==0); }switch(keystopc){case 1:TR0=0;break;                // 按键一次就停止计数case 0:TR0=1;break;default:break;}}if(keyh==0)                 //实现小时加一{delay(5);if(keyh==0){ if(hour!=23)   hour++;else           hour=0;}while(!keyh);          delay(5);while(!keyh);}if(keym==0)              //实现分钟加一{delay(5);if(keym==0){  if(min!=59){min++;}else {min=0;}}while(!keym);      //松手检测delay(5);while(!keym);}if(keys==0)             //实现秒加一{delay(5);if(keys==0){  if(sec!=59){sec++;}else {sec=0;}}while(!keys);delay(5);while(!keys);}hour1=hour/10;hour2=hour%10;min1=min/10;min2=min%10;sec1=sec/10;sec2=sec%10;display(hour1,hour2,min1,min2,sec1,sec2);  //一直显示时钟}
}

用LCD1602实现简单的数字时钟相关推荐

  1. 微信小程序实现非常简单的数字时钟

    1. 首先在 .js 文件中定义一个计时函数,提示分钟是没有限制的,会超过60一直晚上加,这个逻辑可以自己加 timing: function(that) { // var second = that ...

  2. Arduino实战小项目: 数字时钟制作

    前言: 通过5641AS四位数码管,了解控制方法,顺带记录一下arduino线程的使用方法,并制作一个简单的数字时钟 效果如下: 目录 前言: 主要材料:

  3. 基于AT89S52芯片+LCD1602液晶显示+DS12C887时钟模块的数字时钟

    文章目录 1. 前提 2. 目标 3. 代码 1. 前提 51单片机,通过实验箱实现实时数字时钟,这里选用DS12C887时钟模块进行实验内容. 2. 目标 使用更为精准的DS12C887时钟模块进行 ...

  4. java的简单数字时钟_Java实现的简单数字时钟功能示例

    本文实例讲述了java实现的简单数字时钟功能.分享给大家供大家参考,具体如下: 应用名称:java数字时钟 用到的知识:java gui编程,线程 开发环境:win8+eclipse+jdk1.8 功 ...

  5. 告别电子小白,8个优选DS1302数字时钟方案大合辑

    数字时钟是一个在主屏幕显示数字时间和日期的 android 桌面插件.是一款朴实简约的时钟 widget,能展示时间,触摸激活闹钟和日历,并且字体颜色都可以进行设置,界面看起来十分的简洁大方,有iPh ...

  6. android 数字时钟代码大全,Android自定义view实现数字时钟

    最近在项目中遇到了一个需要实时更新时间的需求,并且用的地方还是挺多的,无奈做了一个简单的view来时现这个数字时钟. 首先看一下效果,比较简单,就是显示时分秒. 实现思路比较简单,利用handler的 ...

  7. html制作状态栏数字时钟,用HTML5制作数字时钟的教程_html5教程技巧

    就是这个数字时钟,当时觉得这个创意不错,但是也没去折腾.直到昨天同事又在网上看到这个案例,他觉得很酷炫,就跑过来问我,这个是怎么实现的,然后我大概想了一下实现方法后也来了点兴趣,就花了一点时间模仿做出 ...

  8. python数码时钟代码_Python+Pyqt实现简单GUI电子时钟

    本文实例为大家分享了Python+Pyqt实现简单GUI电子时钟的具体代码,供大家参考,具体内容如下 突发奇想想用GUI做一个简单的电子时钟界面,利用pyqt模块也很方便,代码如下: from PyQ ...

  9. 圆形数字时钟同时显示数字时钟、日期和星期特效

    前几天看到动画效果,于是今天想写个时钟效果分享. <!DOCTYPE html> <html lang="en"><head><meta ...

最新文章

  1. 安装64位Oracle 10g超详细教程
  2. linux 系统kill用法
  3. 初等数论--同余--WILSON定理
  4. DOM Element节点类型详解
  5. RxJava2:Observable和Observer如何传递
  6. 阿里云服务器购买流程详细2019更新(图文教程)...
  7. 跨程序提供及获取内容
  8. [Ubuntu] apache .htaccess根据访问的域名指向不同的目录
  9. 人工智能 深度学习(Deep learning)开源框架
  10. 【Python】if __name__ == __main__做了什么?
  11. 数字电子技术基础笔记【阎石第六版】 第一章 数字与编码
  12. Java区块链视频教程百度云_区块链开发入门到精通视频教程
  13. 如何让iPhone桌面简洁又不俗气?
  14. Mac Safari 12.0 升级后无限闪退,提示不支持扩展
  15. 计算机网络:从物理层到应用层的五层模型
  16. 下载b站外挂字幕,用 potplayer 播放视频也能看字幕了
  17. mysql数据库修改密码
  18. Jmeter阶梯压力测试_导出测试报告
  19. daemon函数理解及参数使用——daemon后进程退出的原因
  20. 毕业季·大学最遗憾的事/没有完成的事?

热门文章

  1. 渡过“疫情红利期”,生鲜电商还能“长青”?
  2. Eth2.0 节点的网络通信
  3. SuperMap iDesktop常见问题解答集锦 (三)
  4. E-R图转成关系规则及范式
  5. 上海松江新桥计算机教育,上海市松江区新桥小学学区范围
  6. python中的super用法详解_python super用法及原理详解
  7. SLAM从入门到如土:自定义msgs遇到的坑
  8. 图片处理看这篇就完了「GitHub 热点速览 v.21.48」
  9. 保存应用程序设置(QSettings)
  10. vue怎么和php交互,vue的axios组件如何与PHP后端交换数据