基于单片机的数字电子钟

摘要

时钟已经是人们不可或缺的生活物件,以前的老款钟表几乎都是上发条、电池功能、等类似手动操作的机械钟表,这种老式的钟表不仅价格上不够低廉并且时钟里面的构造也相对复杂维修起来也不简单,最重要的一点也是功能不多。随着数字集成电路的发展,数字电子时钟已经相当多的被用于个人家庭以及公共场所,例如教室、飞机、火车车站等场所,目前数字电子钟对于人们的日常生活中而言已经是一个必不可少的存在。本设计基于单片机,我用到了AT89C51这款型号的单片机来作为我设计的中心器件,并且采用了液晶芯片LCD1602和矩阵键盘,这次设计主要两个大部分一是硬件器件的选择以及拼接其次是软件程序的代码编写控制硬件来运行,模拟制成出了一款可以调节时间的数字电子时钟系统。该设计的结构上简单整洁,而且按键操作也相对方便。利用液晶芯片LCD1602显示日期
和时间,应用矩阵键盘对其分别进行设置、修改,通过软件的编程设计来实现24 h制的时间显示方式。数字电子钟相对于传统的时钟相比下优点明显,如体积小,质量轻、成本更低、精确性更高、操作方便快捷等,他给人们的日常生活和工作中增添许多便利之处。
关键词:单片机;电子时钟;LCD1602

第1章 绪论

时钟和手表在人们的日常生活中是无处不在的,过去年代的老款钟表几乎都是要上发条、安装电池等必须需要
人们手动来控制的机械钟表,这种老式的钟表不仅价格上不够低廉并且时钟里面的构造也相对复杂维修起来也不简单,最重要的一点也是功能不多。随着数字集成电路的发展,数字电子钟已经广泛被用于私人以及公共场所,例如教室、飞机、火车车站等场所,为人们提供了极大的便利,目前而言数字电子钟对于人们的平时生活中而言已经是一个不可缺少的存在。与传统的钟表相比较,电子时钟有着非常明显的优势,它在各个方面都领先于传统钟表。如体积小、重量轻、成本不高、耐久度高、准确度更精准、操作更便捷、安全性上更加优良等。随着世界科学的技能水平不断提高,钟表也展现着肉眼可见的蜕变,数字电子钟表正稳步地上升朝着更多模式、完胜老款钟表的准确度、质量更加轻薄的方向进步。
1.1 课题研究的背景及意义
   20 世纪末,电子科技技术的发展迅速加快,现在的电子产品也生产的越来越多。随后,现代电子产品和一批
高科技产品被应用于社会的许多领域,这对发展和提高社会生产力和信息化非常有效,但产品更新的频率也越来越快[1]。跟着科学技术的进步和社会的进步以及全球的竞争的内卷。现在的人们对于数字的电子钟的要求越来越高要求,对传统的时钟的要求也是越来越高,电子报警器、电子秒表、温度的检测等功能在我们的日常生活中经常被需要。所以便使得各式各样的功能的电子时钟有了一个比较不错的发展市场。
  同时单片机在多功能数字钟中的应用是非常适合的。单片机自从20世纪70年代被造出的开端,单片机以其成本效益高、体积小、功能强大、易于开发等优点迅速占据市场,并广泛应用于日常生活的各个领域。在我国,单片机的地位己经很大程度上的被和应用于工厂自动操控,消费的电子产品,人工自动化的机器,通讯系统和国家军事方面。因此,对大学生来说,学习计算机和技术、创造电子信息、创造通信和自动控制是提供和发展单片机技术的关键。
1.2 研究现状
目前,微机芯片被设计成具有高性能等特点,向着CMOS化、低功耗、低体积、更大容量、高功效、成本低廉和外围电路的趋势依然存在[2],如今,世界各地生产大量芯片的公司都在展示他们的微机芯片单元,即所谓的单片机或人们可以看到的微型芯片计算机。它是把中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、输入/
输出端口(I/0)等所有东西全部融合到一片电子板上可以理解为就是小型的计算机。
现在的单片机正所谓是应有尽有,从八位,十六位到32位,综观来看单片机现在大致已经有了主流的发展方向大致
有下面三种:
1.微机:芯片计算机有多种不同的包装形式,尤其是表面封装技术越来越流行,这就是为什么由单片机组成的系统正朝着小型化的方向发展。现在来说,单片机的成品质量把关更加严格需要产品从多方面进行完善,这就要求机器不仅功能、性能上强大,而且体积质量也要小且轻。即使是单片机制造商也可以根据用户的要求制造自己的单片机芯片。
2.主流与多样性并存:目前,尽管单片机具有多样性和优势,但唯一以80C51为核心的单片机仍然是最重要的。这将在一段时间内保持下去,不会有基于相互依存、互补和共同发展的垄断条款。
3.氧化物半导体化:目前,单片机的工作功率一般在100MW左右,而MCS-51系列的启动功率高达630MW,随着对
单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了互补金属氧化物半导体工艺[3]。CMOS虽然功耗较
低,但其物理性能还不够高,而CHMOS具有高速和低功耗的特点,更适合需要低电池消耗的应用。例如80C51就采用
了高密度金属氧化物半导体工艺和互补高密度金属氧化物半导体工艺。因此,该技术将成为未来单片机发展的主要
途径。
  现如今,生活中的各个方面都可以看到单片机的影子,想找到一个没有任何单片机存在的地方也是比较困难
的。对火箭进行导航的设备,飞机上的各种控制器件,计算机的通信系统和数据的传送,工业自动化过程中的实时
数据控制和处理,各种智能卡的广泛使用,豪华民用汽车的安全系统,录像机和摄像头,自动洗衣机控制,可编程
玩具,电子宠物等等,都是无法分开的。更不用说自动控制机器人、智能仪器、医疗设备和各种智能机器所在的区
域了。因此,单片机的研究、开发和应用将使科学家和工程师能够在计算机和智能控制领域创造出许多应用。

第2章 方案论述

2.1 设计目标
  基于51单片机实现采用LCD1602显示的可调电子钟,在LCD1602的第一行上显示日期,在第二行上显示时间,并且可以通过一个44的矩阵键盘实现日期和时间的调节。
2.2 总体设计思路
  本设计可以简单看作由51单片机、LCD1602显示模块、矩阵键盘模块三个部分组成。首先考虑LCD1602的驱动,
主要关注rs、rw、en三个管脚,这三个不同的引脚要一次分开连在51单片机的三个不同且独立的I/O口上。rs是寄存
器的选择输入端,当给到rs=0:指向指令寄存器;当给到rs=1:指向数据寄存器。rw是读写控制输入端,当rw=0:
写操作;当rw=1时是读数据的操作。en则是读/写操作的使能信号。利用这三个信号的配合,便能实现向LCD写入一
个字节的指令(write_cmd()函数)、向LCD写入一个字节的数据(write_data()函数)等功能,同时注意需要
lcd_init()函数对LCD进行初始化,其实质就是一系列指令的执行(复位、清屏、显示模式等),至此便可以在
LCD上显示指定的字符了。
  为完成电子钟的功能,需要定义YEAR、MONTH、DAY、HOUR等一系列变量,对这些变量首先应给定初始值2022年2
月28日8时30分30秒,当系统开始运行,程序便逐秒从低位开始向高位依次进位,在时间上遵循24小时制,只需注意
归零的时机这一问题即可,在日期上则需要单独考虑闰年的问题,另外以上的变量的数据类型都是整数,但在LCD上
则是以一个个字符的形式进行显示,因此可以通过itoa函数以及各种字符串处理函数等将整数转换成字符串进而按
顺序依次显示在LCD显示屏上。
  最后,为整个系统添加矩阵键盘显示模块,简单来说,就是间隔很短的时间逐行逐列扫描4
4的矩阵键盘,判断是否有键盘被按下,如果按下,则读取改键盘的位置,并根据前期的定义执行相应程序即可,例如增加年、减少时、增加秒等。至此,按照这样的思路分析,整个电子钟系统便设计完成了。在这里插入图片描述

第3章 设计论述

3.1 单片机相关技术
3.1.1内部结构
本文使用的51系列单片机是AT89C51单片机。
51单片机其里面是有一个全面的输出入的系统构造的,它的各种原件被融合在一个大型的电路中,这样一个构造全
面的单片机就被生产出来了。其组成部分包括:
(1)单片机的内部处理器也就是CPU
(2)随机存储器,即 RAM 存储
(3)只读存储器,即 ROM 存储
(4)I/O 口电路,输入、输出口
(5)定时器和计数器,通过程序让其定时或是计数
(6)用于产生系统程序中断的中断系统
3-1 单片机内部结构示意图
单片机是一种必须与电一起工作的数字集成芯片,数字电路中只有两种电平:
  一种是高电平而另一种是低电平。我们研究了单芯片器件的TTL电平,其中高值为5V,低值为0V。由于TTL电平信号在计算机和二进制连接中仅由两个电平组成,我们通常将高电平信号5V与二进制中的“1”逻辑进行比较,将低电平信号0V与二进制中的“0”逻辑进行比较,这被称为TTL信号,它为我们的单片机控制装置的各个部分提供了标准的通信技术。
  与单片机不同,串行登录计算机使用的电平是MAX232,其中高电平为12V,低电平为12V。因此,当中心需要连接到降压芯片CH340时,单片机与计算机进行通信。
3.1.3最小系统
  51单片机的硬件系统中最基础的部分是单片机的最小系统,51单片机最小系统钟所含有的的4种电路是不可缺少
的。在此之上,对其余的硬件部分实施拓展延伸,51 单片机最小系统由以下四部分组成:
1.电源电路
  电源电路顾名思义,即是就给予单片机运行能量的一个部分,通常情况下是3.3V或者5V,具体需要多少伏的电
压以单片机的工作电压为基础,一般是5V,这里表示的是正常的情况下。
2.复位电路
  当RST复位时,输出端出现两个(或更多)正常的机器时间性能循环,单片机执行复位过程。如果我们把电源连
接到单片机上,或者单片机工作中有需要重启的障碍,我们可以执行复位过程。这样,单片机复位有两种形式,即
打开并按下复位按钮。重置初始状态时,重置电路会将单个芯片的每个电路重置为初始状态。但这是一种初始状
态。不仅是单片机厂商刚刚发布的发布状态,而且单片机最后一次进入程序运行状态,在单片机的软件代码编写
中,我们可以多次编写新的工作程序。
3.时钟电路
  时钟电路是一种晶体振荡电路,通常选择12Mhz振荡器,以方便定时器和计数器的使用和操作。晶体振荡是连接
xtal2引脚和xtal1引脚的单片器件,其相应功能是增加进出口量。时钟电路的功能是产生一个时钟周期,每个时钟
周期由一个语句执行,即不同的晶体振荡产生不同频率的时钟周期。对于振动,必须连接Cl和C2电容器进行电流过
滤,以防止突然过电流和晶体损坏,并提高发电机稳定性。容量的选择取决于不同材料的振动,如果振动材料是石
英晶体,在种状态下下,完全能选取三十皮法左右十皮法的电容量。如果振动是陶瓷谐振器,在另一种状态下,一
般来说能选择四十皮法左右十皮法的电容量。
3.2 液晶显示电路
  目前,很多电子产品都具有液晶显示功能,因此,液晶显示模块已是通用部件,如微波炉、电子计算器、天
平、电子手表等各种家用电子产品中随处可见,显示内容有图形、特殊的符号或数字。在单片机经常用的输出方式
采用以下几类:LCD显示、7段数码管和发光管。因为每个LCD点在接收到指令后在一段时间内其色彩和饱和度不会发
生变化,并继续发光。与CRT显示器不同,它需要不断更新亮度。因此,LCD没有闪烁问题,并且图像质量清晰。
在单片机系统的输出界面采用晶液显示器有如下多个优点:
(一)高质量。依照上面所叙述的原理,每一个LCD点在接受的信息后在一段短时间内保持同样的色彩的饱和度,不
同于CRT会存在闪烁问题。
(二)数字接口。LCD 显示器本身是数字的,与单片机的接口简单方便稳定可靠。
  (三)小巧、智能。LCD 显示器的显示原理是利用显示屏上的电极来控制液晶分子状态,通过这种方式来实现
显示效果。与传统显示器相比较下,它体积小巧,且对于相同面积的显示器,它的重量更轻一些。
(四)低功率。LCD的内部功耗明显低于传统的显示器。
3.2.1 LCD 显示原理
  它的工作原理主要利用了液晶的物理性质,通过电压控制其显示范围,并在通电时显示所需图形,液晶显示器
有许多优点,比方说:轻薄小巧、适用于 LSI 直接驱动、可实现全彩色显示,由于LCD的自身的优点,LCD已被广泛
应用于笔记本电脑、数码相机设备、PDA 移动通信终端等各个领域。按照不同的分类方式,其有如下类别:按其显
示方式有,字符显示、段式显示、点阵式显示等。根据颜色来分,多种色彩显示和单一的黑白显示等。根据驱动方
式来分,包括静态驱动、简单矩阵驱动及主动矩阵驱动。 LCD 显示线段、符号和象形文字的原理分别如下:
1.线段的显示
  液晶显示器是由 M×N 个显示单元组合而成,比如 LCD 显示屏有 64 行,128 列,每 8 个点相当于 1 字节
的 8 位,所以每一行由16字节组成,即 16×8=128 个点构成。显示屏的 64×16 个显示单元对应于1024 字节的
RAM区域,每个字节的内容在显示器屏幕上显示相应所在位的亮度。换句话说,显示屏第一行的亮暗取决RAM 区的
000H 至 00FH 地址 16 字节的内容,若(000H)=FFH 时,即 11111111B,那么显示屏的左上方出现亮线,长度是
8 个点;若(3FFH)=FFH 时,即 11111111B,那么显示屏的右下方出现亮线;若(000H)=FFH,(001H)=00H,
(002H)=FFH,……(00EH)=FFH,(00FH)=00H 时,此时显示屏的第一行出现一条虚线,它由8段亮线与8段暗线
交替而成,这便是LCD显示线段的原理。
2.符号的显示
  比起线段的显示,LCD 显示一个符号相对复杂,6×8或8×8的符号使八位字节不仅由屏幕上某一点对应的8个字
节组成,还包括“1”或“0”。对于每个字节中的不同位,“1”并不表示“0”。这是一个象征。此外,对于控制
器的内置字符生成器,字符显示相对简单,允许控制器处理文本,找到适当的RAM地址,设置光标,并根据LCD上显
示的行号和列号发送适当的代码。
3.象形文字的显示
  显示汉字通常使用图形的方式,第一步可利用象形文字模拟摘取软件摘取准备显示的象形文字的码,一个象形
文字所需要的空间是三十二个字节,被分成左右两个区域,依次是需要空间十六个字节,左区域是一三五、右区域
是二四六与字符显示类似,按照在 LCD 上要显示的行数合列数找到与其对应的RAM地址,设置光标并发送到将显示的第一个字节,紧接着光标地址往后递增一,发送第二个字节,再送第三个字节以此类推……直至 32B 显示完即可在 LCD上出现了一个完整汉字。
3.2.2LCD1602 引脚功能
  当前使用较多的 LCD 显示模块主要有 161,162,202 和 402 行等几种。本设计采用的液晶显示器类型是 16*2,其实物如图 3-9,它是标准的 16 脚接口,其各个引脚功能如下:
第 1 引脚:VSS 端,即电源地
第 2 引脚:VDD 端,即正电源极,可连接到5V
  第 3 引脚:VL 端,它是一个用于调整LCD对比度的端子,不同的连接方式,不同的对比度值,对比度在接正电源极时最弱,而在接地电源时其值最高。饱和度不能设置的过于高不然会出现“阴影”情况,在应用过程中可以使用10K 电位计进行调整。
  第 4 引脚:RS 端,它可进行寄存器选择控制,此端设置为 1 时选用数据寄存器,设置为 0 则选用指令寄存器。
  第 5 引脚:RW 端,它可进行读写信号线控制,此端设置为 1 时进行读操作,设置为 0 则进行写操作。
第 6 引脚:E 端,它是使能端,又为EN端,此端设置为1时读取信息,负跳变则执行指令。
第 7~14 引脚:D0 至 D7 端,是 8 位数据端,为双向端口可实现输入与输出。
第 15~16 引脚:空脚或背灯电源。15 脚背灯正极,16 脚背灯负极。
  本设计中,D0~D7 分别与单片机 P0.0~P0.7 相连,实现数据传送;RS 与 P1.3 连接,通过 P1.3 输出信号
控制寄存器的选择,输出为 1 时选择数据寄存器,输出为 0 时选择指令寄存器;RW 与 P1.6 连接,实现读写操作
的控制;E 与 P1.7 连接,实现使能控制。
3.3 系统硬件设计
  同时,将基于STC89C51的秒表的精确计时误差降至最低。LCD屏幕用于显示所有模块,以及月份、年份、时、分
和秒。由于软件的灵活性,软件的时间被控制并设置为24小时。
键盘
3.3.1.单片机
  单片机,英文名Micro Controller Unit,简称MCU。在这次的设计当中,使用AT89C51芯片作为CPU,这是一种带
有4K字节闪存的低压高性能CMOS 8位处理器。除了MCS-51系列单片机的所有优点外,系统中还有4K可编程闪存。关
机断开模式功耗低,大大降低了电路功耗。它还包括定时器、可编程存储器、数据存储器和其他硬件。其硬件满足
整个控制系统的要求,无需额外的存储芯片和时钟设备。这些设备很容易形成最小的系统。单片机和计算机相比算
是一个简易版计算机,一个芯片就可以构成完整的系统,但在性能上会比计算机相差很多,但是单片机的成本低、
体积小、结构简单,在生活和工业领域有很大的作用。
VCC:电源输入端,接入+5V电压
GND:为接地端。
  P0口:P0端口既可以用作输入输出,同样的也能当成转发位置数据。当P0端口用作输入输出端口时,P0是一个8
位准双向孔,上电压复位后,PO口里面没有上拉电阻,所以作在一定要在外侧连接一个一万至四千七的上拉电阻。
当P0堪称位置数据总线时,它是一条具有8位地址[a0-a7]和数据线(d0-d7)的线路,没有外部上拉电阻。
  P1口:P1端口是一个双向端口,内部上拉电阻为8位,P1端口缓冲区可接受4ttl输出电流P1管底部,写入1,建
立起来,可用于输入,P1端口外部上拉到低水平,输出内部吸引产生的电流.。
  P2口:P2端口是一个具有内部上拉电阻器的八位双向IO端口,P2 输出延缓区能导致4 个 TTL 逻辑被启动。当
“1”写入P2端口时,内部上拉电阻器将端口向上输出,然后它可以用作输出端口。在访问程序外部存储器或读取具
有16位地址的外部数据时,P2端口将发送到8位地址。在这种应用中,P2 口使用很强的内部上拉发送1。在编写和检
查的环节,P2口同样可以接收高8位地址字节和一些控制信号。
  P3口:P3端口是内侧带有上拉电阻的双面口。当“1”写入P3端口时,里面上拉电阻器拉伸端口,同时可以将端
口用作输入端口。当用作输入元件时,由于内部电阻(IIL),外部底部端子输出电流。 P3端口还用于STC89C52的
特殊功能。P3端口在Flash编程和验证过程中也会接收到一些控制信号。
P3端口也可用于某些特殊的AT89C51功能连接,如下列所示:
P3口管脚的备选功能如下:
P3.0 RXD(串行输入端口)
P3.1 TXD(串行输出端口)
P3.2 /INT0(外部中断0,下降沿中断或低电平中断)
P3.3 /INT1(外部中断1,下降沿中断或低电平中断)
P3.4 T0(计时器/定时器0的外部输入)
P3.5 T1(计时器/定时器1的外部输入)
P3.6 /WR(外侧程序的保存装置写脉冲)
P3.7 /RD(外侧程序的保存装置读脉冲)
P3口同时,接收一些控制信号,用于闪烁编程和编程检查。
RST:复位引脚。
/ALE:位置的锁存可以让信号输出的一个端口,同时,仍然可以用作编辑脉冲输入的一个端口。
/PSEN:从外部程序保存装置中输出频段信号。
/EA:内外存储器的选择引脚。
XTAL1:内部时钟电路中反向放大器的输入端
XTAL2:内部时钟电路中反向放大器的输出端。在这里插入图片描述

3.3.2.电源和复位模块
  AT89C51需要5V电压,所以可以采用USB接口的5V电源对其供电,复位电路可采用上复位电压、复位按键电平、
脉冲复位按键3种,本设计采用上复位压。无论是对哪种类的单片机,都属于单片机回路的相应设计,单片电路的设
计质量直接影响整个系统的运行安全,复位电路的主要功能-系统在连接时必须发出复位信号,电源稳定前,重置信
号不会被取消。为了保证可靠性,电源稳定后需要经过一定时间后才能进行对复位信号的撤销,为使得电源插头已
经电源开关分合过程中的抖动被引起而对复位进行影响。在选择单片机复位电路参数时,必须保证两个以上机器循
环的正确稳定性和高水平持续时间。主要采用四种复位电路,集成电路;看门狗式;比较器复位电路;差分复位电
路。
3.2.3.显示模块
  该模块由LCD1602液晶显示屏组成,共有16个引脚,其中有11个需与单片机相接,使用可调电阻实现对显示屏文
字清晰度的调节。
3.2.4矩阵键盘模块
键盘由12个按键组成,行脚分别接在单片机的P2.0-P2.3口,列脚分别接在单片机P2.4-P2.7口上。
3.4 系统软件设计
3.4.1 主程序
主程序的主要功能是调用各子程序完成本次设计的预定目标,例如调用矩阵键盘程序实现时钟的调节,再如调用LCD
显示程序实现时钟信息的显示。如图所示:
LCD初始化
显示时间信息
时间刷新
判断按下


图3-3 主程序设计图
3.4.2 LCD显示程序
  该程序主要功能是对LCD屏进行初始化,以及写入一个字节的命令或数据,其实现的主要依据是LCD1602自身的
硬件特点。
关键程序设计如下所示:
/向LCD写入一个字节的指令/
void write_cmd(u8 cmd){
rs = 0; //选择发送命令
rw = 0; //选择写入
DATA = cmd; //放入命令
delay(5); //等待数据稳定
en = 1; //写入时序
delay(5); //保持时间
en = 0;
}
/向LCD写入一个字节的数据/
void write_data(u8 dat){
rs = 1; //选择输入数据
rw = 0; //选择写入
DATA = dat; //放入数据
delay(5); //等待数据稳定
en = 1; //写入时序
delay(5); //保持时间
en = 0;
}
/LCD屏初始化/
void lcd_init(void){
write_cmd(0x02);//复位
write_cmd(0x06);//写一个指针加1
write_cmd(0x0c);//开显示不显示光标
write_cmd(0x38);//开显示
write_cmd(0x01); //清屏
3.4.3 时钟进位程序
  本设计采用单片机自带定时器资源,时钟部分的模块采用自带定时器0实现精确计时。从每星期的重置,每当满
足60秒加一分钟,每当满足60分钟加一个小时,完整的一天24小时,循环转移。软件部分根据每月天数(有哪些月
是31天又有那些月是30天的,并且会根据平年和闰年来判断2月份是29天还是28天)按上述规定进行精心设计。这项
施工严格按照进动规则进行,以确保时钟和日期的正确运行。此外,按下按钮时可以设置时间。
系统时钟每刷新1秒,调用一次该程序,该程序从低位开始依次讨论,实现时间各位次的进位及归零操作。
具体发送程序如下所示:
/时间进位以及归零/

void set_time(char hour, char min, char sec){
if( sec >= 60){
sec = 0;
min++;
}
if(min>=60){
min = 0;
hour++;
}
if( hour>=24){
hour = 0;
}
if(sec<0){
sec = 59;
min--;
}
if(min<0){
min = 59;
hour--;
}
if(hour<0){
hour = 23;
}
NOW = hour*3600 + min *60 +sec;
}
3.4.4 日期进位程序
  根据C语言课程学习中积累的经验,对于日期的进位需单独考虑闰年问题,为解决这一问题,只需在编写此程序
时理清各种特殊情况,逐个讨论即可。
关键程序如下所示:
/*闰年的判断*/
u8 is_leap(int year){
u8 yes = 0;
if(year%400 == 0){
yes = 1;
}else{
if(year%4==0 && year%100!=0){
yes = 1;
}else{
yes = 0;
10
}
}
return yes;
}
/*月份以及天数设置,需分大小月考虑,同时要根据闰年与否单独设置二月*/
void adj_date(){
u8 leap = 0;
leap = is_leap(YEAR);
  if(leap && MONTH==2 && DAY>29 ){
MONTH = 3;
DAY = 1;
return;
}
if(DAY>28 && MONTH==2){
MONTH = 3;
DAY = 1;
return;
}
  if(DAY>30 && (MONTH==4 || MONTH==6 || MONTH==9 || MONTH==11)){
MONTH ++;
DAY = 1;
return;
}
  if(DAY>31 && (MONTH==1 || MONTH==3 || MONTH==5 || MONTH==7 || MONTH==8 || MONTH==10 || 
MONTH==12)){
MONTH++;
DAY = 1;
if(MONTH>12){
YEAR++;
MONTH = 1;
}
}
if(DAY<=0){
DAY = 1;
}
if(MONTH<=0){
MONTH=1;
}
if(YEAR<=0){
YEAR =1;
}
return;
}

3.4.5 矩阵键盘程序
  矩阵键盘可以有效节约单片机I/O口,其设计思路是依次拉低按键的各个行,再读取列的数据,假如列有低电
平,则认为此行有按键按下,标记此行有按键按下并存入行坐标即可。另外,对于按键设备,应该通过检测出按键
闭合后执行一个延时程序来实现按键的消抖。

程序如下:
/检测有按键按下并读取键值/
u8 key_scan(void){
u8 temp, temp2;
P2 = 0xf0;
temp = P2;
if(temp !=0xf0){ //读取按键是否按下
delay(5);//延时进行消抖
temp = P2;
if(temp !=0xf0){//再次检测键盘是否按下
temp2 = temp & 0xf0;
P2 = 0x0f;
delay(1);
temp = P2;
temp2 |= temp;
}
}
return decode(temp2);
}

第4章 结论

随着电子科技的不断进步和创新,电子表的性能、款式和使用方式发生了许多变化。许多数字电子表具有报警
系统、电子计时秒表、环境温度控制等功能。同时,单片机在多功能数字时钟中的应用也非常广泛。电子钟表是以
单片机位基本构架而开拓出的,本设计当中介绍了AT89C51单片机作为整个系统的控制中心。LCD1602用于在24小时
系统时间模式下显示小时、分和秒。振荡脉冲由频率为12兆赫的石英振荡器产生,并由定时器计时。由于采用的是
只有12HZ大小的晶体振荡器,模拟示波器上的时钟微微晃动。4*4矩阵键盘只使用9个键,简化了系统的结构和成
本,强调实用性和视觉美学。由于不同的模块不同,互不影响,因此显示了编程的优点。由于结构不太复杂,体积
小,重量轻,所以相对容易维护。
  论文所设计的系统只考虑了一些简单情况,做了简单的9个按键,并未在按键功能等方面进行深入发掘。按键功
能部分可以更进一步研究和完善按键的数量以及按键的功能,比如再次简化按键数量缩小产品制作需要的成本,也
可以更加的轻。
  由于该系统尚未投入实际应用,实际生产过程中存在许多缺陷和不足,需要总结实际试验和经验。 基于单片机的数字电子钟的设计与实现存在许多需要解决的新问题,涉及到许多未掌握的理论、方法和技术,这些都去深入学习和积累知识,需要更进一步的研究与开发,去完善,才能实现投入实际应用。虽然我的设计看上去并没有很华丽,但是可以保证基本功能的正常运行,放到平时的生活中,例如家庭是可以保证人们对时间的确认,以及对今天的日期所确认,在公共场所比如各类的站台也是可以给人们提供准确时间。这次设计也让我对单片机的有了更好的认识和学习,设计过程中虽然磕磕绊绊,但也磨练了我面对困难时的精神,在以后也会更加努力的完善自己,实现
对自己的超越。

8051单片机数字钟(完整)(包括原理图,c语言源代码) 键盘8为显示功能键: 按第一次——显示时间 按第二次——显示日期 按第三次——显示星期 键盘0为调节功能键: 按第一次-----1,2两位闪烁 按第二次-----4,5两位闪烁 按第三次-----7,8两位闪烁 键盘1为增加键: 1,2两位闪烁时,按一下加1 4,5两位闪烁时,按一下加1 7,8两位闪烁时,按一下加1 键盘2为减少键: 1,2两位闪烁时,按一下减1 4,5两位闪烁时,按一下减1 7,8两位闪烁时,按一下减1 上电初始时数码管显示为00-00-00 按第一次键盘8——显示时间 显示模式为:时-分-秒 在显示时间的时候按键盘0调节功能键: 按第一次-----秒的两位闪烁 按第二次-----分的两位闪烁 按第三次-----时的两位闪烁 按第四次-----秒,分,时均不闪烁,时间正常显示 当秒的两位闪烁时,按键盘1一下秒加1,按键盘2一下秒减1 当分的两位闪烁时,按键盘1一下分加1,按键盘2一下分减1 当时的两位闪烁时,按键盘1一下时加1,按键盘2一下时减1 按第二次键盘8——显示日期 显示模式为:年-月-日 在显示日期的时候按键盘0调节功能键: 按第一次-----日的两位闪烁 按第二次-----月的两位闪烁 按第三次-----年的两位闪烁 按第四次-----年,月,日均不闪烁,日期正常显示 当日的两位闪烁时,按键盘1一下日加1,按键盘2一下日减1 当月的两位闪烁时,按键盘1一下月加1,按键盘2一下月减1 当年的两位闪烁时,按键盘1一下年加1,按键盘2一下年减1 按第三次键盘8——显示星期 显示模式为:最后一位显示1—7 在显示日期的时候按键盘0调节功能键: 按第一次-----星期闪烁 按第二次-----星期正常显示 当星期闪烁时,按键盘1一下星期加1,按键盘2一下星期加减1 按第四次键盘8返回显示时间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值