具体实现功能
系统由STC89C52单片机+DS1302时钟芯片+按键模块+LCD1602显示+电源构成。
具体功能:
1、可以显示年、月、日、时、分、秒、星期、农历;
2、按键可以设置闹钟及报警;
3、按键可以调整时间,显示是平年还是闰年。
共4个按键:设置、加、减、切换。
设计背景
在现实我们生活中每个人都可能有自己的时钟,光阴在永不停息的流逝,有了时钟人们就能随着时间有计划的过着每一天。然而现在绝大部分的时钟有的需要不断地更换电池,有些时钟需要外接电源,如果一旦电池没电或者外接电源无法供电,时钟就会停止计时了。而美国DALLAS 公司的新型时钟日历芯片DS1302就能解决这一问题。该器件能提供实时时钟(RTC)/日历、定时闹钟。少于31天的月份,月末日期可自动调整,其中包括闰年补偿。该器件还可以工作于24小时货代/PM指示的12小时格式。
本时钟还具有环保、走时无噪音、低功耗等非实时时钟不具有的功能。该实时时钟不但可以作为家用,而且更可以在公共场合使用,如车站、码头、商场等场所。
硬件设计
用AT89C52作为主控单片机,时钟模块选用DS1302作为时钟芯片,显示模块选用LCD1602,设置部分选用按键电路。
AT89C52与MCS-51单片机产品兼容 、8K字节在系统可编程Flash存储器、1000次擦写周期、 全静态操作:0Hz~33Hz 、 三级加密程序存储器、32个可编程I/O口线 、三个16位定时器/计数器 八个中断源、全双工UART串行通道、低功耗空闲和掉电模式 、掉电后中断可唤醒 、看门狗定时器 、双数据指针、掉电标识符 。
DS1302 实时时钟芯片功能丰富,可以用来直接代替IBM PC 上的时钟日历芯片DS12887,同时,它的管脚也和MC146818B、DS12887 相兼容。由于DS1302 能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决子“千年”问题;DS1302 自带有锂电池,外部掉电时,其内部时间信息还能够保持10 年之久;对于一天内的时间记录,有12 小时制和24 小时制两种模式。用户还可对DS1302 进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。
软件设计
程序流程:主程序开始初始化,并打开中断,然后执行扫描闹钟、键盘及读取18B20值。当有S1键按下时,执行时钟设置,当有S4键按下时,则进入闹钟设置,无论是时钟还是闹钟,设置完后退出,时钟恢复实时显示。
原理图
本系统原理图设计采用Altium Designer19,具体如图。
程序
本设计利用KEIL5软件实现程序设计,具体如图。
仿真实现
本设计利用protues8.7软件实现仿真设计,具体如图。
关键字:51单片机 数字时钟 万年历
引用地址:
22-基于51单片机的数字时钟(万年历)
推荐阅读最新更新时间:2024-11-20 10:25
51单片机介绍及头文件
上次买芯片无意间发现STC也有8个脚的单片机,在我印象中貌似只有ATMEAG有8只脚的。于是乎买了几个回来,今天下了手册研究以下。再次将心得写出来 STC的8脚单片机有直插和SOP两种形式的封装,其中有6个IO口,剩下2个是VCC和GND ,不需要带晶振内部自带有时钟发生电路,在此要说明这种型号的单片机有专用的烧录软件,在宏晶官网都有下载。这6个IO口实际上是我们普通单片机上的P3口,实际编程时也是使用P3.X来实现IO口操作。唯一的不同就是没有硬件的串口,需要用到定时器来模拟(这点不好),但是下载电路和STC的串口下载电路时一样的。不做修改。这个有点费解?下载时用到的是串口形式的下载电路,硬件上使用时却没有串口。杯具啊! 关于I
[单片机]
关于两块51单片机之间的串口通信(排队叫号系统)
一、项目要求 叫号:按下按键叫号,数码管显示叫号的号数,蜂鸣器响。 取号:按下按键取号,两个数码管分别显示取到的号数和等待的人数。 (PS:推荐使用串口调试助手进行调试) 二、可能使用到的工具 1.串口调试助手(百度网盘自行下载) 链接:https://pan.baidu.com/s/1XmCBUDD7kF8a5393fh_bBg 提取码:znv3 三、串口通信原理 1.由51单片机引脚图可看出,P3.1(TXD)和P3.0(RXD)为串行通信口, P3.0为串行接收口,P3.1为串行发送口。要使两块单片机板可以进行串口通信,则将两块板之间的RXD/TXD交叉连接。 四、设计流程图 五、硬件设计 六、界面实现
[单片机]
51单片机启动代码:STARTUP.A51
通过Keil编译器建立工程时,Keil会提示是否添加STARTUP.A51文件到工程,该文件即为51单片机启动代码。 51单片机复位后马上执行STARTUP.A51文件中的启动代码,根据启动代码中的设置依次执行以下操作: 内部RAM清零 外部RAM清零 清零分页的外部RAM 初始化SMALL内存模型的可重入模拟堆栈及其堆栈指针 初始化LARGE内存模型的可重入模拟堆栈及其堆栈指针 初始化COMPACT内存模型的可重入模拟堆栈及其堆栈指针 初始化8051单片机的硬件堆栈指针 将系统控制权转交给初始化全局变量的代码,如果没有被初始化的全局变量则转交给C程序文件中的main函数。 STARTUP.A51启动文件中定
[单片机]
51单片机扩展数据存储器RAM proteus仿真
8051单片机芯片扩展数据存储器完整案例下面是proteus仿真原理图: 单片机源程序: #include reg51.h #include absacc.h sbit K1=P3^4; sbit K2 =P3^5; void Ex_Int0(void); unsigned int n; void main() { unsigned int i; n = 0; P1 = 0xff; EA = 1; IT0 = 1; EX0 = 1; for(i=0;i 200
[单片机]
74HC595控制8位数码管 51单片机
74HC595是8位串行移位寄存器,亦能串行输出控制下一级级联芯片。关于级联、595芯片具体我就不多介绍,大家自己查吧!下面直接贴代码 此程序已成功移植到STM32平台,敬请关注! // 注意 此代码没有什么技术含量,也没有按规范些,旨在说明595怎么控制,大家不要模仿。 // 此代码刷新速度有点慢,注意想办法优化,time变量用定时器中断处理,主函数不断地刷新显示函数,这样就不会有闪屏,当然在STM32平台毫无压力 #include sbit SCK = P3^2; // 数据输入时钟线,脉冲 sbit SI = P3^3; // 数据线 sbit RCK = P3^4; // 锁存 unsig
[单片机]
8051单片机教程第二课:单片机的内部、外部结构(一)
一、单片机的外部结构 拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为89C51的芯片,下面我们就看一下如何给它连线。1、电源:这当然是必不可少的了。单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。2、振蒎电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。只要买来晶振,电容,连上就可以了,按图1接上即可。3、复位引脚:按图1中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。4、EA引脚:EA引脚接到正电源端。至此,一个单片机就接好,通上电,单片机就开始工作了。 我们的第一个任务是要用单片机点亮一只发光二极
[单片机]
8051单片机存储器地址分配
一、程序存储器空间 MCS-51单片机具有64kB程序存储器寻址空间,它是用于存放用户程序、数据和表格等信息。 1、对于内部无ROM的8031单片机,它的程序存储器必须外接,空间地址为64kB,此时单片机的使能端端必须接地。强制CPU从外部程序存储器读取程序。 2、对于内部有ROM的8051等单片机,正常运行时,则需接高电平,使CPU先从内部的程序存储中读取程序,当PC值超过内部ROM的容量时,才会转向外部的程序存储器读取程序。 8051片内有4kB的程序存储单元,其地址为0000H 0FFFH,单片机启动复位后,程序计数器的内容为0000H,所以系统将从0000H单元开始执行程序。但在程序存储中有些特殊的单元,这
[单片机]
51单片机——DS18B20
DS18B20——温度传感器,单片机可以通过 1-Wire 和 DS18B20 进行通 信,最终将温度读出。1-Wire 总线的硬件接口很简单,只需要把 18B20 的数据引脚和单片 机的一个 IO 口接上就可以通信。最高12为的温度存储值,补码形式存储。 2字节,LSB低字节,MSB高字节,-55~125 1、初始化 检测存在脉冲:总线上存在DS18B20,总线会根据时序要求返回一个低电平脉冲。单片机要拉低这个引脚,持续大概 480us到960us之间 的时间即可,我们的程序中持续了 500us。然后,单片机释放总线,就是给高电平,DS18B20 等待大概 15 到 60us 后,会主动拉低这个引脚大概是 60 到 240u
[单片机]