基于51单片机电子万年历设计有proteus仿真内容摘要:

②可以人为校正年、月、日、时、分。 ③地一次开机显示: 2020 01 01。 ④掉电信息不丢失。 系统基本方案选择和论证 系统方案包括单片机的选型、时钟芯片的选择和显示模块的确定等。 单片机芯片的选择方案和论证 方案一 :采用 89C51 芯片作为硬件核心,采用 Flash ROM,内部具有 4KB ROM 存储空间 ,能于 3V 的超低压工作 ,而且与 MCS51系列单片机完全兼容 ,但是运用于电路设计中时由于不具备 ISP 在线编程技术 , 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的 损坏。 方案二 : 采用 AT89C52,片内 ROM 全都采用 Flash ROM;能以 3V 的超底压工作;同时也与 MCS51系列单片机完全该芯片内部存储器为 8KB ROM 存储空间,同样具有 89C51 的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。 所以选择采用 AT89C52 作为主控制系统控制整个系统的正常工作。 显示模块选择方案和论证 方案一:采用数码管显示,数码管是由八个发光二极管组成, 对于显示数字字符比较适合 ,但对于电子万年历需要的数码管位数多,编程麻烦,且不稳定, 5 存在抖动现象,需要通过软件延时进行消抖。 方案二:采用 LCD1602 液晶显示屏 ,液晶显示屏的显示功能强大 ,可显示大量文字 ,图形 ,显示多样 ,清晰可见,易于编程,稳定可靠。 通过对比,本课程设计采用 LCD1602 作为显示模块。 : 方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、时、分计数。 采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大。 所以不 采用此方案。 方案二:采用 DS1302 时钟芯片实现时钟, DS1302 芯片是一种高性能的时钟芯片,可自动对分、时、日、月、年以及闰年补偿的年进行计数,而且精度高 ,位的 RAM作为数据暂存区,工作电压 ~ , 300nA。 同时在外加电源和外加晶振电路下,掉电后走时准确。 本课程设计采用 DS1302 作为时钟的芯片。 电路设计最终方案决定 综上各方案所述 ,对此次设计的方案选定 : 采用 AT89C52 作为主控制系统。 DS1302 提供时钟。 LCD1602 作为显示。 2 系统的硬件设 计与实现 电路设计框图 6 系统硬件概述 本电路是由 AT89C52 单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由 DS1302 提供,它是一种高性能、低功耗、带 RAM 的实时时钟电路,它可以对年、月、 日、时、分和秒进行计时,具有闰年补偿功能,工作电压为 ~。 采用三线接口( SPI 总线)与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM数据。 DS1302内部有一个 31*8的用于临时性存放数据的 RAM 寄存器。 可产生年、月、日、时、分,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;显示部分由 LCD1602显示,精度高,显示稳定。 主要单元电路的设计 单元电路的设计包括主控制系统、时钟电路模块、显示模块、串口下载模块、复位电路和稳压电路的设计。 AT89C52单片机为 40引脚双列直插芯片 ,有四个 I/O口 P0,P1,P2,P3, MCS51单片机共有 4个 8 位的 I/O 口( P0、 P P P3),每一条 I/O 线都能独立地作输出或输入。 单片机的最小系统如下图所示 ,18 引脚和 19 引脚接时钟电路 ,XTAL1 接外部晶振和 30PF 电容的一端 ,在片内它是振荡器倒相放大器的输入 ,XTAL2 接外部晶振和 30PF 电容的另一端 ,在片内它是振荡器倒相放大器的输出 .第 9 引脚为复位输入端 ,接上电容 ,电阻及开关后够上电复位电路 ,20 引脚为接地端 ,40 引脚为电源端 . 如图 21 所示 7 图 21 主 控制系统 图 22 示出 DS1302 的引脚排列,其中 Vcc1 为后备电源, Vcc2 为主电源。 在主电源关闭的情况下,也能保持时钟的连续运行。 DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。 当 Vcc2 大于 Vcc1+ 时, Vcc2 给 DS1302 供电。 当 Vcc2小于 Vcc1 时, DS1302 由 Vcc1 供电。 X1 和 X2 是振荡源,外接 、68 KHz晶振。 RST 是复位 /片选线,通过把 RST 输 入驱动置高电平来启动所有的数据传送。 I/O 为串行数据输入端(双向)。 SCLK 始终是输入端。 如图 22 所示。 8 图 22 DS1302 的引脚图 如图 2- 3 所示,采用液晶 1602 数据端由 P0 提供实现 8位并行通信,其数据交换的速率比较快 VL 是调整液晶显示的亮度, E是使能端口, RW 是读写控制端口,高电平读信号,低电平写信号; RS 是读写命令与数据控制端口,高电平写数据,低电平写命令。 图 23 LCD 1062 的电路图 9 经过 KEIL C51 编译的汇编程序必须下载到单片机内部运行,才能实现所需要的功能。 然而单片机得 0 是用 5V、和 0V 表示的,而电脑中的 0用的电压并不是 5V、和 0V,因此,必须用 MAX232 进行电压转化,于是设计的串口下载电路。 如图 24 所示。 图 24 串口下载电路 电路 10 在单片机中运行程序时,如果程序跑飞,即程序运行的地址出现混乱时,可以用复位电路,在低电平时程序从零地址从新开始运行。 同时也可以使用看门狗,定时的喂狗,使程序每次从零地址开始运行。 防止程序跑飞。 如图 25 所示。 图 25 复位电路 当输入的电压高于或者低于 51v 时,可以用 L7805CV 稳压到 5V,保证单片机稳定的性能和可靠的稳定性,其中的二极管是利用了单片机的单向导电性,导致单片机被烧毁或者系统不能正 常工作。 如图 26所示。 图 26 稳压电路 3 系统的软件设计 11 程序流程框图 4 软件 proteus测试及分析 分离日期 \时间显示值 读日期、时间 初始化 开始 显示子程序 返回 12 通过调节四个按键设定时间为 2020 年 1月 1 日 12 点整。 软件测试 电子万年历是多功能的数字显示仪器。 由于功能很多,所以对于它的程序也较为复杂 ,因此本次设计采用简化模型,即只显示年月日,时分秒。 但在程序调试时出现了相对较多的错误。 最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。 在软件的调试过程中主要遇到的问题如下: 分析 与结论 调试分析 ( 1)显示的数据秒并没有变化,原因是没有启动定时器,我有不断的读取DS1302 时钟芯片寄存器中的数据,并显示才能实现所需要的功能,实时显示年、月、日、星期、分钟、小时、秒等基本功能来满足系统的需求。 ( 2)调整时间后应该先去掉写保护,如果存在写保护,那么在初始化写入初始时间时,是写不进去初始化的时间的。 因而会看见显示的时间并不随着设置 13 的初始化的值变化而变化,甚至我们看见的时间并不按着一秒一秒的增加。 ( 3)液晶显示的时候,由于采用的并行总线,显然传输速度快,但是数据端口必须接 1K 的排阻,以实现驱动,实践证明,没有排阻的时候,液晶显示就会不稳定,甚至出现乱码。 因此,排阻的作用很大。 写程序时要严格按照时序就行,否则,也不会显示。 经过多次反复修改程序 ,对电路各模块的原理及功能更加熟悉 ,同时提高了设计能力与及对电路的分析能力 .同时在软件的编程方面得到更到的提高 ,对所学的知识得到很大的提高与巩固 . 5 总结 通过这次制作使我了解了整个万年历的工作过程和各个部分的工作原理。 使我认识到利用单片机设计的万年历便于操作。 经过认真的仿真观察,本次设计的万年历能够正确的显示年、 月、日等,总体来说算是比较成功的。 本次单片机课程设计是使用 Protues 设计工具、协同使用 Keil 编程。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。