摘要:
51系列单片机是各单片机中最为典型和最有代表性的一种。由RAM ,ROM,CPU构成,定时,计数和多种接口于一体的微控制器。本次设计的数字电子时钟采用了STC89C52芯片进行控制,使用DS1302时钟芯片产生时钟数据,通过LCD1602液晶显示屏进行刷新显示。同时,使用4*4矩阵键盘,可以进行日期和时间的调整,且操作简单,计时误差小,显示亮度高,具有良好的实用价值。

一.电子时钟的功能及原理
1.本设计采用时钟芯片,通过单片机对其输出的时间数据进行年、月、日、时、分、秒的解码,并将解码后的数据送到显示屏进行显示。单片机使用定时器T0,每定时2ms后,单片机便产生一个的计时溢出中断,在中断服务函数对矩阵按键进行动态扫描,这样既避免了按键消抖,又减轻了CPU的工作载荷。
2.此外,为了提高电子时钟的实用性,本课题还添加了一个矩阵键盘和蜂鸣器,通过矩阵键盘来调整时间,16个按键分别为‘0~9数字键’、‘设置键’、‘esc键’、‘增加键’、‘减少键’、‘向左键’、‘向右键’。 单片机确定有按键按下,在蜂鸣器控制脚产生一个高电平,使蜂鸣器发出“嘀”的一声,以此来说明按下的动作被执行了。
3.同时电子时钟具有报时的功能,当时间到了整点,比如到了10点钟时,蜂鸣器会连续发出10个响声,表示现在是10点正;当时间到了某点30分时,蜂鸣器会响一声,表示现在是某时半点。

二.电子时钟的硬件设计
1.总体硬件框图

2 电子时钟硬件系统主要模块功能简要介绍
(1)单片机:本次设计采用AT89C52芯片,低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash 存储器。256字节RAM, 32 位I/O 口线,与工业80C51 产品指令和引脚完全兼容。价格较低,能满足本次设计的要求

(2) 电源和复位模块:AT89C52需5V电压,所以可以采用USB接口的5V电源对其供电,复位电路可采用上电复位、按键电平复位、按键脉冲复位3种,本次采用按键电平复位。
(3)显示模块:该模块由LCD1602液晶显示屏组成,共有16个引脚,其中有11个需与单片机相接,工作控制引脚分别接于单片机的P2.4-P2.6脚,数据引脚接于单片机的P0.0-P0.7口上,使用可调电阻实现对显示屏文字清析度的调节。

(4)矩阵键盘模块:键盘由16个按键组成,行脚分别接在单片机的P1.0-P1.3口,列脚分别接在单片机P1.4-P1.7口上。

(5)DS1302时钟模块:为了保证同步工作方式的思想,单片机必须有时钟信号,以使其系统在时钟信号的控制下按时序协调工作。

(6)总体实物图

3. 电子时钟元器件清单

三.电子时钟软件系统的设计

1 电子时钟软件系统主要模块功能简要介绍
(1) 主程序:主程序的主要功能是进行定时器/计数器,显示缓冲区的初始化,显示,以及判断是否有功能键按下,判断按下的键并调相应的键功能程序。
(2) 键功能程序:键功能程序的主要功能是执行对应的功能,主要对16个按键进行编码,当单片机得到按下的键的编码,单片机便会跳转到相应的子程序执行相应的功能。
(3) 中断服务程序:中断服务程序的主要功能是进行计时操作和按键扫描,程序开始进行按键检测,然后判断计数溢出是否满了100次,若不满100次则表明没有到达最小的刷新时间,则中断结束;若满100次表明已到达了刷新时间,则将刷新时间标志位置1,进行时间的刷新。

2 电子时钟软件系统程序流程框图

3.主程序代码

void main()
{InitLCD1602(); //初始化 lcd1602InitDS1302(); //初始化 DS1302ConfgiTimer0(2); //初始化定时器,并定时 2msDelay_nms(10);buz = 0;LcdShowStr(0,0,"Date:20 - - ");LcdShowStr(0,1,"Time: : : ");while(1){KeyDriver();//检测按键动作if (flag200ms == 1 && (setTimeIndex == 0)) //每 200ms 且 setTimeIndex==0 处于非设定时间状态时刷新一次时间显示{flag200ms = 0;GetTimeFromDS1302(&timeBuf); //从 DS1302 中获取时间到 timeBuf 结构体指针变量的成员中if(timeBuf.sec != psec) //当前秒值和上一次的秒值不相等{RefreshLcdShowTime();//刷新时间显示psec = timeBuf.sec;//备份当前的秒值(秒寄存器值)On_Timr_Alarm();}}}
}

源码下载:关注公众号,首页回复“电子时钟”获取电子时钟的源码工程

基于51单片机的LCD1602电子时钟相关推荐

  1. 基于51单片机的数字电子时钟

    基于51单片机的数字电子时钟 单片机课程设计要求使用51单片机完成一个电子时钟,要求满足基本功能的同时增添丰富的功能参考了很多大佬的方案代码才勉强完成,工程文件下载点击此链接欢迎交流.如遇下载问题可以 ...

  2. keil c语言 1602时钟代码,基于单片机的LCD1602电子时钟设计.doc

    基于单片机的LCD1602电子时钟设计 设计任务和目的 1.1.设计任务 (1):用单片机设计基于LCD1602的电子时钟,显示时间和日期: (2):误差精度控制在1s/天: (3):具有时间和日期的 ...

  3. 基于单片机的LCD1602电子时钟设计(代码)

    博主福利:100G+电子设计学习资源包! http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5 ...

  4. 基于51单片机的简易电子计算器——有温度显示和万年历等额外功能

    基于51单片机的简易电子计算器--有温度显示和万年历等额外功能 设计实际所实现的功能 模式一可显示日期.时钟.温度,模式二可进行计算器的计算,且显示日期温度模式和计算器模式可随意切换,模式三可以滚动显 ...

  5. 基于51单片机HX711的电子秤称重计价proteus仿真程序设计

    设计要求 1.利用压力传感器检测重量信号,经放大和A/D转换,送单片机进行处理,并在液晶屏上显示出被称重量值: 2.最小显示单位为1克: 3.量程超过报警值蜂鸣器报警 资料下载地址:基于51单片机HX ...

  6. 【006】基于51单片机的简易电子计算器Proteus仿真设计

    一.压缩包资料内容(私信获取) (1).基于51单片机的简易电子计算器proteus仿真设计一份: (2).基于51单片机的简易电子计算器proteus仿真设计keli源代码一份: (3).基于51单 ...

  7. 基于51单片机的LCD1602显示温湿度

    51单片机基础难点知识理解后,直接通过下面3个小项目可以更好理解51单片机.中断 定时器 串口甚至是基础的IO输入输出都有结合,再加上一些外设模块的学习(如1602显示屏,L298N电机驱动等) 项目 ...

  8. 51单片机用c语言在液晶1602上显示汉字,lcd1602与单片机连接图,基于51单片机的lcd1602液晶显示屏连接电路图...

    描述 LCD1602是一种工业字符型液晶,能够同时显示16x02即32个字符.LCD1602液晶显示原理 LCD1602液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示, ...

  9. 基于51单片机的lcd1602万年历设计_温度+闹钟心得

    基于51单片机的lcd1602万年历设计_温度+闹钟心得 下载地址 https://download.csdn.net/download/weixin_44017446/10908985 当看到这个学 ...

最新文章

  1. java8异步_Java8新特性之:CompletableFuture
  2. mvc html编辑器,MVC3 Html编辑器助手显示旧模型值
  3. python数组求和函数_python数据分析之Numpy数据库第三期数组的运算
  4. git 撤销对工作区中文件的修改
  5. (四)DOM对象和jQuery对象
  6. android studio crashlytics,完美解决Android Studio集成crashlytics后无法编译的问题
  7. 苹果出来挨打!又一个不配充电器的来了
  8. Could not connect to Redis at 127.0.0.1:13141: Cannot assign requested address
  9. 基于左子结点/右兄弟结点表示法和二叉链表来实现二叉树ADT
  10. 间接蒸发冷却在华北地区某数据中心的应用
  11. STM32一体化步进电机驱动器控制步进电机
  12. PTA 7-5 jmu-java-m05-自定义Judgeable接口 (10 分) JAVA
  13. 深度系统安装移动硬盘启动_如何安装PE系统(移动硬盘) ?
  14. Kindeditor在线 HTML 编辑器使用
  15. 【Linux】Centos设置Python的软链接
  16. redis为什么快?
  17. 安全漏洞-报错页面泄露文件路径
  18. dpdk-pktgen 的安装和基本使用
  19. 微机原理与接口技术--西安电子科技大学-笔记一
  20. 如何使用 Skopeo 做一个优雅的镜像搬运工

热门文章

  1. new new Foo().getName()面试题解析
  2. 在Nuxt项目中使用iconfont阿里巴巴图标unicode
  3. 代码中的软件工程:正则表达式十步通关
  4. XU316-1024-熙光技术
  5. 精读《图解密码技术》——第十章 证书
  6. 滴滴校招 餐馆最大收益问题
  7. iOS之AR开发--demo制作篇:图片识别
  8. 淘宝卖家中心打开淘宝客推广网页空白
  9. 你所不知道的Win键
  10. 验房师丨验房项目以及验房整改建议