计数器两种工作模式和 4 种工作方式。
定时器/计数器工作在方式 0 时,为 13 位的计数器,由 TLX(X=0、1)的低 5 位和 THX 的高 8 位所
构成。TLX 低 5 位溢出则向 THX 进位,THX 计数溢出则置位 TCON 中的溢出标志位 TFX.
当定时器/计数器工作于方式 1,为 16 位的计数器。本设计师单片机多功能定时器,所以 MCS-51
内部的定时器/计数器被选定为定时器工作模式,计数输入信号是内部时钟脉冲,每个机器周期产生一
个脉冲使计数器增 1。
实时时钟实现的基本方法:
这次设计通过对单片机的学习、应用,以 AT89S51 芯片为核心,辅以必要的电路,设计了一个简
易的电子时钟,它主要通过 51 单片机综合仿真实验仪实现,通过 1602 能够准确显示时间,调整时间,
它的计时周期为 24 小时,从而到达学习、设计、开发软、硬件的能力。主要实现功能为显示时间,时间
校准调时(采用手动按键调时),闹铃功能(设置定时时间,到点后闹铃发出响声)。通过键盘可以进行
校时、定时。闹铃功能使用 I/O 口定时翻转电平驱动的无源蜂鸣器。本文主要介绍了工作原理及调试
实现。
四个按键 K1、K2、K3、K4、一个蜂鸣器。
1602 显示时钟、跑表。
时钟的最小计时单位是秒,但使用定时器的方式 1,最大的定时时间也只能达到 131ms。我们可把
定时器的定时时间定为 50ms。这样,计数溢出 20 次即可得到时钟的最小计时单位:秒。而计数 20 次
可以用软件实现。
秒计时是采用中断方式进行溢出次数的累积,计满 20 次,即得到秒计时。从秒到分,从分到时是
通过软件累加并进行比较的方法来实现的。要求每满 1 秒,则“秒”单元中的内容加 1;“秒”单元满
60,则“分”单元中的内容加 1;“分”单元满 60,则“时”单元中的内容加 1;“时”单元满 24,则将
时、分、秒的内容全部清零。
实时时钟程序设计步骤:
先对系统进行初始化,如:LCD1602 初始化,DS1302 初始化等,然后才能进入主显示模块,
即可在 LCD1602 上看到相应的信息。对于 LCD1602 的初始化,主要是对开启显示屏,清屏,设
置显示初始行等操作。DS1302 的初始化主要是先开启写功能,然后写入一个初始值。
本系统采用的是 LCD1602 液晶显示器,由于其是本身带有驱动模块的液晶屏,所以对于
LCD1602 操作程序可分为开显示、设置显示初始行、写数据和清屏等部分。LCD1602 的写命令程
序和写数据程序分别以子程序的形式写在程序里,以便主程序中的调用。
(1)选择工作方式,计算初值;
(2)采用中断方式进行溢出次数累计;
(3)计时是通过累加和数值比较实现的;
(4)时钟显示缓冲区:时钟时间在方位数码管上进行显示,为此在内部 RAM 中要设置显示缓冲
区,共 6 个地址单元。显示缓冲区从左到右依次存放时、分、秒数值;
(5)主程序:主要进行定时器/计数器的初始化编程,然后反复调用显示子程序的方法等待中断
的到来;
(6)中断服务程序:进行计时操作;
(7)加 1 子程序:用于完成对时、分、秒的加操作,中断服务程序在秒、分、时加 1 时共有三种
条调用加 1 子程序,包括三项内容:合字、加 1 并进行十进制调整、分字。
程序说明:
按 K1 按键进入设定状态
按 K2,依次进入闹钟功能是否启用,闹钟时,分秒,年,月,日及时间时,分,秒的设置,直到退出设置状态
按 K3,调整是否起用闹钟和调节闹钟时,分,秒,年,月,日,时间的时,分,秒的数字
LCD 第二排中间显示小喇叭,表示启用闹钟功能,无则禁止闹钟功能(可在调整状态进行设置)
正常状态,LCD 上排最前面显示自定义字符,LCD 下排最前面闪动"_"
设置状态 ,LCD 上排最前面显示 "P",下排最前面在设置闹钟时间时显示 "alarm_",其它状态显示
评论0