历史上的今天
今天是:2026年03月07日(星期六)
2023年03月07日 | 基于89C51时钟电路的设计与制作
2023-03-07 来源:elecfans
随着电子技术的飞速发展,单片机的使用率越来越高。教学之余,为了激发学生对51单片机的学习兴趣,我利用89C51制作了一款电子时钟,经验证这款电子时钟简单实用,以至于班上的每个同学都制作一款。由于51系列单片机机展小巧、程序编写简、功能强大、价格便宜等优点,由51单片机制作的小型智能产品越来越多,也是电子技术相关专业学生毕业设计的首选芯片(见图1)。

1 电路设计流程框图(见图2)

2 基于89C51时钟电路的方案及原理
基于89C51时钟电路主要由主要由微处理器电路、LED数码管显示电路、键盘电路、显示驱动电路、时钟模块、电源电路等组成。89C51的管脚及技术细节可以查阅有关手册。电路模块的基本工作过程是:
(1)显示电路主要由两片74HC595和7个LED共阴红色数码管、LED发光二极管及限流电阻组成。74HC595是数码管和发光二极管的显示驱动电路,是一种8位串行输入、8位串行输出或并行输出的高速CMOS移位寄存器、8位并行输出口具有三态输出功能(即可被程控成高阻状态)。显示电路采用动态扫描方式驱动数码管,即数码管的阴极和阳极都用74HC595驱动,微处理器控制将将要显示的内容(7位数字段码)快速的分时送到LED两端。这种设计的优点是最大限度地降低了系统的硬件支出(与静态显示电路相比)。
(2)时钟模块电路DS12887是美国Dalls公司生产的实时时钟芯片,采用CMOS技术制成,具有内部晶振和时钟芯片备份锂电池。该芯片具有良好的微处理器接口(有Motorola和Intel两种时序可供选择,在本系统中采用Intel时序)。芯片内含128个字节RAM单元与软件接口,其中14个字节作为时钟和控制寄存器。114个字节为通用RAM(在本系统中未用),所有RAM单元都具有掉电保护功能。采用该芯片作为该系统的实时时钟基准,是为了保证时钟运行的高精度。
(3)键盘是单片机的主要输入设备,是时间设置和控制的人机接口。本系统中设计了16个键,本系统中实际使用9个键,其余7个键留备系统扩展用。16个按键的硬件连接方式是4×4矩阵。单片机对键盘状态的检测是通过动态扫描方式进行的。这样做的目的是大大减少了键盘电路所占用的单片机端口线的数量。16个键的键值读取占用了8根I/O口线(P2口)。如果采用静态键盘方式,则需占用16根口线。另外,这个键盘具有连击功能,即按下某一键达到一定时长后,该键对应的功能将得到反复执行。利用这个连击功能,可以快速地调整时钟和输入闹钟程序。
3 软件编程主程序流程框图(见图3)

4 定时闹钟扫描子程序
该子程序的功能是:将事先编好的闹钟程序代码从EEPROM中逐条读出,并与当前的实时时钟进行一次比较。若某一条闹钟程序的语句(下面有说明)中的时间代码与当前的实时时钟相同,则执行该语句对应的闹钟功能。否则扫描下一条语句,直至闹钟程序末。
闹钟程序:所以闹钟语句的集合闹钟语句:由一个时代码、一个分代码和一个闹钟时长代码组成。一条闹钟语句定义一个闹钟操作。闹钟程序存放在EEPROM芯片(型号AT24C16)中,AT24C16是ATMEL公司生产的电擦电写串行存储器,容量是2K字节。一周的闹钟程序被编成7页,一天一页,每一页占256个字节,AT24C16中剩下的256个字节留备用。
每条闹钟语句分配4个字节:
第一个字节:存放“时”代码(指定 时)
第二个字节:存放“分”代码(指定 分)
第三个字节:存放“时长”代码(控制闹钟时间长短)
第四个字节:未用。
因为一页占256个字节,那么一页中可存放约60条闹钟语句,即在一天中最多可设置60个闹钟点。定时闹钟程序流程框图(见图4)。

5 结论
以89C51为核心制作的数字时钟,经过电路调试和软件调试,可以实时时钟的显示和调整、整点报时、定时闹钟的设定、以一周为周期的闹钟功能。
上一篇:基于51单片机的篮球记分牌设计
下一篇:89C51单片机中断知识要点
史海拾趣
|
据统计,从1989年至2000年,平均每辆车上电子装置在整个汽车制造成本中所占的比例由16%增至23%以上。一些豪华轿车上,使用单片微型计算机的数量已经达到48个,电子产品占到整车成本的50%以上,目前电子技术的应用几乎已经深入到汽车所有的系 ...… 查看全部问答> |
|
汽车集团子公司招聘 汽车音响硬件工程师/Wince 软件工程师 北京鹏浩基业科技发展有限公司是北京汽车集团的全资子公司,注册资金为2212万人民币,拥有来自海内外著名公司的专业人才组成的团队。公司聚焦于汽车电 子产品与汽车工业信息化两个方向,走以高科技推动汽车行业发展的道路。公司业务取得迅猛发展。 ...… 查看全部问答> |
|
我把nboot烧写到FLASH的BL0块中,然后把EBOOT烧写到BL2块中,然后通过EBOOT把NK.BIN再下载到FLASH中, 问题一: 那么这个NK.BIN是被EBOOT下载到FLASH哪个地方的呢?是不是代码在EBOOT哪个地方?还是在别的地方?能否告诉下小弟! 问题二: 为什么EBOOT非 ...… 查看全部问答> |
|
一点很基础的疑惑 想请教下 我现在用的2440板子 先通过jtag把Uboot下到NorFalsh 再通过Uboot把Eboot和NK下到NandFalsh 然后从NandFalsh启动运行 1.可以不用UBoot 直接把程序下到NandFalsh吗? 2.如果可以 用什么方法 ...… 查看全部问答> |
|
本人新手,对ZigBee基本不了解,现要做一个ZigBee的无线抄表系统中抄表终端到采集器间的软件部分,请问各位我该怎么去做,用到的有CC2430,LED显示模块,几个按钮还有RS232串口。 最好有各个模块的初始化代码,以及各种功能的实现方法做参考。 谢 ...… 查看全部问答> |
|
#include \"DSP28_Device.h\" // DSP281x Headerfile Include File//#include \"DSP281x_Examples.h\" // DSP281x Examples Include File//#include \"f2812a.h\"#include\"math.h\" #define FIRNUMBER 25#de ...… 查看全部问答> |
|
为啥315/433M收发模块发射端高电平接收端接收到的是低电平呢? 为啥315/433M收发模块发射端高电平接收端接收到的是低电平呢? 接收端做下反相是容易,不过采用发高收低这种机制是有什么特殊的原因吗?… 查看全部问答> |




