基于单片机的多功能数字钟系统设计与分析
扫描二维码
随时随地手机看文章
摘要:文章简述了系统各模块方案的论证与选择的相关内容。文中在对本系统的各个模块的方案进行论证与实际应用相比较的基础上,最终方案选用AT89C52作为主控制系统来控制时钟的准时运转,采用独立式按键控制本设计系统将要实现的全部功能,选用LCD液晶动态扫描来显示时间。并对系统的硬件设计与实现进行分析,同时,对系统的软件设计进行分析。
关键词:单片机;I/O口;多功能;数字钟;模块
0 引言
随着科技的发展,电子技术也在不断地向前飞速发展。本设计是制作一款多功能数字钟,其具有显示年、月、日,时、分、秒、星期及闹钟功能,而且秒、分、时、日、月、年可自动关联进位。秒具备清零功能,分、时、日、月、年可自动修改、手动设置等功能。它是以一块AT89S52芯片作为主控模块,采用DS1302作为定时来源的多功能数字钟。多功能数字钟结构较简单,因此便于操作使用。它具有高度的智能化和集成化,是现代人办公、生活、学习的好帮手,具有广阔的市场前景。同时,它具有闹铃和播放音乐等功能,由于这些完善的功能,它必将越来越受到社会各界人士的欢迎。
1 系统方案的论证与选择
1.1 各模块方案的论证与选择
1.1.1 主控模块的论证与选择
方案一:采用8031芯片。8031芯片内部无ROM,需要外扩程序存储器,由此造成电路焊接的困难,况且使用8031还需要另外购买其他的芯片,从而造成成本较高,性价比低。
方案二:采用89C51芯片。80C51芯片内部有ROM,且片内ROM全部采用Flash ROM,它能在3V的超低压工作,与MCS-51系列单片机完全兼容,但是其不具备ISP在线编程技术,需把程序编写好以后再放到编程器中烧写,才可以进行硬件电路的调试,倘若程序编写出现问题,调试电路就较麻烦,而且其芯片内存也只有4kB。
方案三:采用AT89S52芯片。该芯片内部既有Flash ROM,又与MCS-51兼容,而且ISP在线编程技术适用于AT89S52芯片,这样既降低了成本也无需反复插拔芯片,可避免损坏芯片;而且它的性能稳定,且内存达8kB。
经过三种方案的比较,方案三主要容量较大,具有成本低的优点。因此主模块采用AT89S52。
1.1.2 显示模块的论证与选择
方案一:点阵显示。是由八行八列的LED管集成在一块电路上组成,主要用来显示汉字,同时也能显示数字和少量图象,但它的焊接较麻烦,价格高,鉴于所设计的内容要求用它不切实际,所以排除此方案。
方案二:LED数码管静态显示。此方案电路容易理解且驱动的程序简单,但需多片七段译码器驱动显示,这不仅增加了成本,还占用单片机多个I/O口,也给电路的焊接带来一定的困难,因此不选用此方案。
方案三:采用LED数码管动态扫描显示。此方案价格低廉,不仅减少了对I/O口的浪费,而且能够同时驱动多个数码管。但其驱动程序不容易编写和理解。
方案四:采用LCD液晶显示。由ks0108驱动,能显示大量数据、文字、图形,显示的位数多,字体清晰多样、美观,而且外部接线较简单。
经过四种方案的比较,本设计主要显示字体较多,因此,最后选择了方案四。
1.1.3 控制按键的论证与选择
方案一:选取阵列式按键,减少了I/O口的使用,且扫描M×N个按键只需占用M+N个I/O口即可实现,但给编程带来了一定的困难,虽然节省了很多的口线,降低了成本,但在此设计中所用的按键要尽量少,因此排除此方案。
方案二:独立式按键,每个按键实现一个功能,易于控制且编写程序简单,容易理解,虽然会占用一定的单片机I/O口资源,但是题目中要求使用的按键要尽量少。
通过以上两种方案比较,采用方案二。
1.2 系统各模块的最终方案
经过以上对本系统各模块的方案进行论证与实际应用相比较,本设计电路最终选用AT89C52作为主控系统来控制时钟的准时运转,采用独立试按键控制本设计系统将要实现的全部功能,选用LCD动态扫描来显示时间。本设计选择最优的方案,并设计出如图1所示的系统框图。
如图1所示,系统的整个控制流程是:由单片机AT89C52的内部程序定时控制LCD使之显示出本文所要实现的效果,当计时到整点时单片机发出一条命令去控制喇叭进行整点报时,若出现特殊状况,比如突然断电则单片机将会停止工作,从而会造成时间的不准确,所以加一组键盘便于随时修正时间使时间能够准时计时。此外,为了使所设计的数字钟秒表更为准确,本系统电路又添加了时钟芯片DS1302,此芯片计时精度非常高,一个星期误差只有3s。添加了此芯片使本系统更具实用性。
2 系统的硬件设计与实现
本设计的多功能时钟主要由四个模块组成,其核心元件是一块单片机AT89C52,并采用了误差小的时钟芯片DS1302作时钟定时,它一星期的误差只有为3s。
系统主要通过单片机AT89C52对各个模块进行实时控制,其中P3.1\P3.1\P3.2用来接独矩阵式按键,此模块用于控制电路以便于实现预期要实现的各个功能:P1和P2口用来接LCD进行动态显示,利用AT89C52单片机直接控制LCD来实现对LCD的动态扫描显示,其中驱动LCD用芯片KS0108;P2.0\P2.1\P2.2还接了时钟芯片DS1302的第5、7、6脚作定时用;本系统还有一部分是闹铃,闹铃用普通蜂鸣器即可,外加三极管电阻对其声音进行放大。
2.1 主控制模块电路的设计
主控模块电路的电路如图2所示。
如图2所示,本次设计的多功能数字钟采用一块AT89C52作为主控模块,还用到了转换芯片DS1302,主要是对实现定时电路进行信号交换。在单片机工作之前,我们必须给它一个电源(5V)和连接一些需要连接的地方。比如第18、19引脚之间要给它接上一个12MHz的晶振和两个33pF的电容。第31引脚要接上电源,第9引脚要接上复位电路。第20引脚要接地,第40引脚要接上电源。DS1302芯片主要用于电路的转换。单片机剩下的P0口、P3口、和P2口分别用于其他功能。同时要指出的是在使用P0口时要给它接上上拉电阻,这样单片机的驱动能力就会大大增强。P3口是复用功能,可以用做数据的传输和地址线。特别要强调的是这里只能用高8位做数据线。P2口内部已经具备了上拉电阻,因此不用再加上拉电阻了。这些都是上电之前要做好的一些前提条件,如果忽视了哪一点,都可能使单片机不能正常工作,或者说容易烧坏单片机。
2.2 LCD显示模块电路的设计
显示电路图如图3所示。从图3中可以观察到,单片机P1口连接LCD的D0-D7, LCD的第1、2脚分别接电源和地,然后由单片机AT89C52载入程序用以控制LCD,由此来显示相应的文字。
为了线路的简便,本显示模块只用到一块LCD(128×64)的液晶显示器。另外,为了使程序更简单,还使用了一块液晶的控制器芯片KS0108来驱动LCD,这样当编写程序时就省去了编写LCD的驱动程序,大大减少了设计的时间段,这样既省时间又不会使电路变复杂。
2.3 闹铃与按键模块电路的设计
闹铃电路如图4所示。本电路比较简单,只用普通的蜂鸣器接至AT89C52由它进行控制,从图4可以看出单片机P3.0口接喇叭的正极,为了使蜂鸣器的声音大些,P3.0口信号输出端接上一个电阻和一个三极管用于放大声音信号,蜂鸣器的负极直接接地,按键模块用到了三个按钮和三个电阻。单片机的P3.1\P3.2\P3.3与三个按钮相连。按钮的另一端接喇叭的 负极。其中按钮的功能是随时调整时间以及调
整闹钟。
2.4 DS1302时钟模块的设计
2.4.1 引脚功能及结构
图5所示为DS1302的引脚图。其中Vcc1为后备电源,Vcc2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1正0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc大于或等于2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK始终是输入端。
2.4.2 DS1302与CPU的连接
DS1302与CPU的连接电路如图6所示。DS1302与CPU的连接需要三条线,即SCLK(7)、I/O(6)、RST(5)。时钟的显示用LCD。实际上,在调试程序时可以不加电容器,只加一个32.768kHz的晶振即可。只是选择晶振时,不同的晶振,误差也较大(还可以在上面的电路中加入DS18 B20,同时显示实时温度)。只要占用CPU一个口线即可。LCD还可以换成LED,因为LED无法显示较复杂的字符而本设计有用到字符显示,因此系统选用LCD,其特点是可显示任意字段笔划(比如星期)而且显示清晰。
为了初始化任何数据的传输,引脚信号应由低变高,并且应将具有地址和控制信息的8位数据(控制字节)装入芯片的移位寄存器内,数据的读写可以用单字节或多字节的突发模式方式进行。所有的数据应在时钟的下降沿变化,而在时钟的上升沿,芯片或与之相连的设备进行输入。
3 系统的软件设计
3.1 系统软件概述
3.1.1 DS1302的命令字节
命令字节的格式如图7所示,每次数据的传输都是由命令字节开始的,这里的最高有效位必须是1。D6是RAM(为1)或时钟/日历(为0)的标识位。D1~D5定义片内寄存器的地址。最低有效位(D0)定义了写操作(为0时)或读操作(为1时)。命令字节的传输始终从最低有效位开始。
3.1.2 DS1302的控制字节
DS1302的控制字节如图7所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
(1)数据的写入或读出。对芯片的所有写入或读出操作都是由命令字节为引导的。每次仅写入或读出1B数据的操作称为单字节操作。每次对时钟/日历的8B或31个RAM字节进行全体写入或读出称为多字节突发模式操作。包括命令字节在内,对于单字节操作,每次需要16个时钟;对于时钟/日历多字节突发模式操作,每次需要72个时钟;而对于RAM多字节突发模式操作,每次则需要多达256个时钟。单字节传送操作格式如图8所示。多字节突发模式操作格式如图9所示。
(2)时钟/日历寄存器数据格式及功能定义。访问DS1302片内各寄存器数据格式如表1所示。表中x表示任意,可为0或1。
3.2 流程图
3.2.1 主程序流程图
3.2.2 子程序的设计
4 结语
本多功能数字钟系统电路主要是由数字集成芯片DS1302和单片机AT89C52实现的,具有年、月、曰及星期的显示及设定功能,同时,具有时、分、秒的显示及进位功能。可设定中断按键,即设定闹铃按键和调整时间的按键以及其它功能的按键。能显示当前的时间、星期及年、月、日,同一时刻可以设置闹钟。当输入的时间与设定的时间一致时,蜂鸣器就会发出报警声,还可以播放音乐即为闹钟的铃声。它有很强的实用性和较广泛的推广应用前景。