单片机交流
直播中

王越建

7年用户 1442经验值
私信 关注
[问答]

请教大神怎样去设计一种基于单片机的数字万年历系统?

基于单片机的数字万年历系统是由哪几个模块组成的?
怎样去设计一种基于单片机的数字万年历系统?

回帖(1)

彭望琼

2021-7-19 16:07:35
本设计由数据显示模块、温度采集模块、时间处理模块和调整设置模块四个模块组成。
系统的核心采用的是STC89C52单片机;数据显示模块采用的是LCD液晶显示;温度采集模块用的是DS18B20温度传感器,该传感器所采用的是单总线传输,内部带有A/D转换,用起来非常方便;时间处理模块用的是DS1302时钟芯片,可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能;调整设置模块共包括四个按键:模式选择键、功能选择键、调整加按键、调整减按键。
本课题的电子万年历是单片机控制技术的一个具体应用,主要研究内容包括以下几个方面:
1)选用电子万年历芯片时,应重点考虑使用方便、单片存储、低功耗、抗断电的器件。
2)根据选用的电子万年历芯片设计外围电路和单片机的接口电路。
3)在硬件设计时,结构要尽量简单实用、易于实现,使系统电路尽量简单。
4)根据电路图,在开发板上完成器件的焊接。
5)根据设计的硬件电路,编写控制STC89C52芯片的单片机程序。
6)通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。
7)在硬件电路和软件程序设计时,主要考虑提高人机界面的友好性,方便用户操作等因素。

单片机电子万年历的制作有多种方法,可供选择的器件和运用的技术也有很多种。所以,系统的总体设计方案应在满足系统功能的前提下,充分考虑系统使用的环境,所选的结构要简单使用、易于实现,器件的选用着眼于合适的参数、稳定的性能、较低的功耗以及低廉的成本。
按照系统设计的要求,初步确定系统由电源模块、时钟模块、显示模块、键盘接口模块、温度测量模块和闹钟模块共六个模块组成,电路系统构成框图如图1所示。
1 DS1302接口电路设计
时钟芯片DS1302的接口电路及工作原理:其中Vcc1为后备电源,Vcc2为主电源。
VCC1在单电源与电池供电的系统中提供低电源并提供低功率的电池备份。VCC2在双电源系统中提供主电源,在这种运用方式中VCC1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。

2 DS18B20接口电路设计
该系统中采用数字式温度传感器DS18B20,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,用P3.7与DS18B20的DQ口连接,Vcc接电源,GND接地。
DS18B20的工作电流约为1mA,VCC一般为5V,则电阻R=5V/1mA=5KΩ,目前用的电阻一般不是可调电阻,只是固定阻值,市场上有的就那么几个型号。
其中DS18B20接有电源,则需要一个上拉即可稳定的工作。这个电阻通常比较大,我们选择10K电阻的来起到上拉作用,使之为高电平,使后续电路保护。

3 LCD1602与MCU接口电路设计
LCD的D0~D7分别接单片机的的P0口,作为数据线,因为P0口内部没有上拉电阻,所以外部另外加上4.7K的上拉电阻;P2.5—P2.7分别接LCD的RS、RW、E三个控制管脚;RV1用来调节LCD的显示灰度;BLK、BLA为背光的阴极和阳极,接上相应电平即点亮背光灯。

其中1602的第3脚接10K与1.5K的串联电阻起到分压作用,能够调节第一行与第二行亮度对比。第16接个三极管的作用放大,是为了能够让液晶显示器的背光灯亮起,从而在夜间也能观看万年历。
4 按键模块电路设计
本系统用到了4个按键,其中一个用作系统手动复位,另外4个采用独立按键,该种接法查询简单,程序处理简单,可节省CPU资源,按键电路如图19所示,4个独立按键分别与STC89C52的P3.0、P3.1、P3.2、P3.3接口相连。

对以上4个按键作简要说明:K1——SET 键,K2——UP键,K3——DOWN键,K4——OUT/STOP键。
SET键:按下SET键进入时间校准状态,按一下进入秒调整,两下分调整,依此类推可进行各年月日,时分秒以及星期的校准;
UP键:当SET键按下时,UP进行SET选定项(如:小时)的加操作;
DOWN键:当SET键按下时,DOWN进行SET选定项(如:小时)的减操作;
OUT键:当OUT键按下时,此键功能为退出校准功能,进入下一模式,显示温度值和上下限的温度值。
5 主程序流程图的设计

6 DS1302读写程序设计
本系统的时间读取主要来源于单片机对DS1302的操作,在硬件上时钟芯片DS1302与单片机的连接需要三条线,即SCLK(7)、I/O(6)、RST(5),具体连接图见系统硬件设计原理图。
DS1302与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字节最高位MSB(D7)必须为逻辑 1,如果D7=0,则禁止写DS1302,即写保护;D6=0,指定时钟数据,D6=1,指定RAM数据;D5~D1指定输入或输出的特定寄存器;最低位LSB(D0)为逻辑0,指定写操作(输入),D0=1,指定读操作(输出) 。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分