多功能液晶显示数字时钟的设计与实现毕业论文.doc_第1页
多功能液晶显示数字时钟的设计与实现毕业论文.doc_第2页
多功能液晶显示数字时钟的设计与实现毕业论文.doc_第3页
多功能液晶显示数字时钟的设计与实现毕业论文.doc_第4页
多功能液晶显示数字时钟的设计与实现毕业论文.doc_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

多功能液晶显示数字时钟的设计与实现毕业论文目 录1引 言12基于单片机的数字时钟设计22.1主要芯片选择22.1.1 STC89C52RC单片机简介22.1.2 STC89C52RC引脚简介32.2时钟芯片DS130242.2.1 DS1302简介52.2.2 DS1302引脚说明52.2.3 DS1302的片内寄存器72.3 LCD液晶显示器82.3.1液晶显示器LCD1602简介82.3.2 LCD的基本指令93数字时钟硬件电路设计113.1时钟电路设计113.2显示电路113.3按键电路设计123.4闹铃电路设计133.5复位电路设计143.6电源的设计143.6.1单相桥式整流电路介绍143.6.2变压器和整流二极管的选择153.6.3滤波电路153.6.4滤波电容的选择163.6.5稳压电路164系统的软件设计174.1 DS1302时钟模块174.1.1宏定义DS1302中寄存器地址174.1.2时钟芯片的单字节传送方式174.1.3是否写保护寄存器操作184.1.4时钟芯片的初始化184.1.5时钟停止/启动走时184.1.6数据信息的显示194.2 LCD显示模块部分194.2.1基本操作程序194.2.2 RAM地址映射图194.2.3状态字说明204.2.4数据指针设置204.2.5显示模式设置204.2.6初始化设置214.2.7其他设置214.3主程序模块214.3.1星期采用的算法214.3.2中断声明214.3.3校准时间函数224.3.4设置闹钟函数224.3.5 LCD显示程序设计224.3.6主函数225系统调试265.1软件调试265.1.1 Proteus 简介265.1.2 Keil 简介265.1.3 Proteus与Keil连接调试275.2硬件调试295.2.1焊接的注意事项295.2.2单片机电路调试295.2.3显示电路的调试295.2.4 DS1302电路调试305.2.5按键电路调试306结论31谢辞32参考文献33附录一34附录二35附录三36外文资料56唐 山 学 院 毕 业 设 计1引 言随着半导体技术的飞速发展,以及移动通信、网络技术、多媒体技术在嵌入式系统设计中的应用,单片机从4位、8位、16位到32位,其发展历程一直受到广大电子爱好者的极大关注。单片机功能越来越强大,价格却不断下降的优势无疑成为嵌入式系统方案设计的首选,同时单片机应用领域的扩大也使得更多人加入到基于单片机系统的开发行列中,推动着单片机技术的创新进步。而数字钟正是一种用数字电路技术与单片机技术实现计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用1。数字时钟是指以微处理器为核心,充分利用数字技术和软件技术,与各类脉冲信号的传感器配合,记录时间等的智能仪表。数字时钟是日常生活、工业生产中常用的一种工具,社会拥有量和需求量都很大。功能上要求能够完成准确走时、调时,性能上要求抗干扰能力强,稳定可靠,同时在价格上具备竞争力2。结合以上几点,设计了一款数字时钟,达到了可靠和经济的双重要求,同时易于与其它产品结合使用,是非常必要的。本设计主要着眼于数字钟的可靠性与实用性,把工业用单片机技术、与微型机技术应该在数字时钟设计中,开辟了单片机技术与现代计时方法相结合的一条新路。该数字时钟设计工作原理为:单片机上电后,从芯片DS1302上讲读取时间数据,计时开始。通过按钮进行调时,上电复位进行校正时间,通过LCD显示其值。日常生活中对单片机数字钟的问题要求越来越高,本设计仅针对简单的数字钟进行研究,能够实现数字时钟的正确走时。2基于单片机的数字时钟设计本系统由控制时钟芯片DS1302、STC89C52RC单片机和字符点阵型LCD1602液晶显示器等器件构成。用DS1302产生时钟信号,再由单片机负责接收并且对其进行控制,然后通过编写程序实现具体的功能,如年、月、日、星期、时、分、秒,以及时间的校准、闹钟的设置等。再通过编写液晶器件的驱动程序,使其信息显示在LCD1602液晶显示器上, 最后测试电路完成所有功能后制成样机,系统方框图如图2-1所示。图2-1系统方框图单片机时钟芯片 电源 键盘LCD显示键盘是为了完成时钟、日历的校对和日历的显示功能。由于此电子时钟要求具有闹铃功能,所以设计有闹铃电路,进行声音响铃。整个电路使用了两种电源,+5V电源将为整个电路供电。而+3V电源仅作为DS1302的备用电源。当+5V电源被切断后,DS1302启用+3V电源,可以保持DS1302继续工作。当+5V电源恢复供电,LCD依旧显示当前时间,而不会因为断电使系统复位到初始化时间,避免了重新校时的麻烦。2.1主要芯片选择2.1.1 STC89C52RC单片机简介STC系列单片机是由STMicroelectronics 公司生产,并有宏晶公司做大陆代理的。STMicroelectronics即意法半导体公司是1987年6月在意大利的SGS微电子公司和法国的汤姆逊微电子公司合并后产生的。1998年5月,公司由原来的SGS汤姆逊(SGSTHOMSON)微电子公司改名为意法半导体公司(STMicroelectronics),简称ST公司3。2.1.2 STC89C52RC引脚简介STC89C52RC可以代替AT89C51,功能更强,速度更快,寿命更长,价格更低。将AT89C51中的程序直接烧录到STC89C52RC中后,STC89C52RC就可以代替AT89C51直接工作(一般都不需要做任何改动即可正常工作)。STC89C52RC的内核和AT51系列单片机一样,故引脚相同,外形及引脚排列也相同。管脚说明:VCC供电电压。GND接地。P0口8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口带内部上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口带内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。在编程/校验时,P3口可接收某些控制信号。具体的P3口功能,如表2-1所示。表2-1 P3口的特殊功能引脚 替代功能 说明P3.0 RXD 串行数据接收P3.1 TXD 串行数据发送P3.2 INT0 外部中断0申请P3.3 INT1 外部中断1申请 P3.4 T0 定时器0外部事件计数输入 P3.5 T1 定时器1外部事件计数输入 P3.6 WR 外部RAM写选通 P3.7 RD 外部RAM读选通RST复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。/PSEN外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。/EA/VPP当/EA保持低电平时,则在此期间外部程序存储器(0000HFFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)5。XTAL1反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2来自反向振荡器的输出。2.2时钟芯片DS1302在数字时钟设计中,常用的实时时钟芯片有DS12887、DS1216、DS1643、DS1302。每种芯片的主要时钟功能基本相同,只是在引脚数量、备用电池的安装方式、计时精度和扩展功能等方面略有不同。DS12887与DS1216芯片都有内嵌式锂电池作为备用电池; X1203引脚少,没有嵌入式锂电池,跟DS1302芯片功能相似,只是相比较之下,X1203与AT89S51搭配使用时占用I/O口较多。DS1643为带有全功能实时时钟的8K8非易失性SRAM,集成了非易失性SRAM、实时时钟、晶振、电源掉电控制电路和锂电池电源,BCD码表示的年、月、日、星期、时、分、秒,带闰年补偿。同样,DS1643拥有28只管脚,硬件连接起来占用微处理器I/O口较多,不方便系统功能拓展和维护。故而从性价比和货源上考虑,本设计采用时钟芯片DS1302。2.2.1 DS1302简介DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟日历芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小于31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后备电源进行涓细电流充电的能力。有主电源和备份电源双引脚,而且备份电源可由大容量电容(1F)来替代。需要强调的是,DS1302需要使用32.768KHz的晶振6。2.2.2 DS1302引脚说明DS1302引脚图参照图2-2。图2-2 DS1302芯片引脚图 其的引脚功能参照表2-2。表2-2 DS1302管脚的功能描述 管脚名功能说明X1,X232.768KHz 晶振管脚GND地RST复位脚I/O数据输入/输出引脚SCLK串行时钟Vcc1,Vcc2电源供电管脚在编程过程中要注意DS1302的读写时序。DS1302是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。要想与DS1302通信,首要先了解DS1302的控制字。DS1302的控制字如表2-3。表2-3 DS1302控制字(即地址及命令字节) BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT01RAMA4A3A2A1A0RD控制字的作用是设定DS1302的工作方式、传送字节数等。每次数据的传输都是由控制字开始。控制字各位的含义和作用如下:BIT7:控制字的最高有效位,必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。BIT 6:如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;BIT 5至BIT 1(A4A0):用A4A0表示,定义片内寄存器和RAM的地址。定义如下:当BIT 6位=0时,定义时钟和其他寄存器的地址。A4A0=06,顺序为秒、分、时、日、月、星期、年的寄存器。当A4A0=7,为芯片写保护寄存器地址。当A4A0=8,为慢速充电参数选择寄存器。当A4A0=31,为时钟多字节方式选择寄存器。当BIT 6=1时,定义RAM的地址,A4A0=030,对应各子地址的RAM,地址31对应的是RAM多字节方式选择寄存器。BIT 0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。DS1302的数据读写方式有两种,一种是单字节操作方式,一种是多字节操作方式。每次仅写入或读出一个字节数据称为单字节操作,每次对时钟/日历的8字节或31字节RAM进行全体写入或读出的操作,称其为多字节操作方式。当以多字节方式写时钟寄存器时,必须按数据传送的次序依次写入8个寄存器。但是,当以多字节方式写RAM时,不必写所有31字节。不管是否写了全部31字节,所写的每一个字节都将传送至RAM。为了启动数据的传输,RST引脚信号应由低变高,当把RST驱动至逻辑1的状态时,SCLK必须为逻辑0,数据在SCLK的上升沿串行输入。无论是读周期还是写周期,也无论送方式是单字节传送还是多字节传送,都要通过控制字指定40字节中的哪个将被访问。在开始8个时钟周期把命令字(具有地址和控制信息的8位数据)装入移位寄存器之后,另外的时钟在读操作时输出数据,在写操作时输入数据,所有的数据在时钟的下降沿变化。所有写入或读出操作都是先向芯片发送一个命令字节。对于单字节操作,包括命令字节在内,每次为2个字节,需要16个时钟;对于时钟/日历多字节模式操作,每次为7个字节,需要72个时钟;而对于RAM多字节模式操作,每次则为32字节,需要多达256个时钟。这里仅给出单字节读写时序。多字节操作方式与其类似,只是后面跟的字节数不止一个。2.2.3 DS1302的片内寄存器表2-4 日历、时间寄存器及其控制字 寄存器名称写操作读操作取值范围76 5 43 2 1秒寄存器80H81H0059CH10SECSEC分寄存器82H83H0059010MINMIN时寄存器84H85H002312/2410HRHR日寄存器86H87H0131010DATEDATE月寄存器88H89H011200 10MMONTH周寄存器8AH8BH010700 0 0DAY年寄存器8CH8DH009910YEARYEAR通过控制字对DS1302片内寄存器进行寻址之后,即可就所选中寄存器的各位进行操作。片内各寄存器及各位的功能定义如表2-4所示。DS1302有关日历、时间的寄存器共有10个,时钟/日历包含在其中的7个写/读寄存器内,这7个寄存器分别是秒、分、小时、日、月、星期和年。小时寄存器(85H、84H)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为12小时制式时,位5为“0”表示AM;为“1”表示PM。在24小时制式下,位5是第二个10小时位(2023时)。 秒寄存器(81H、80H)的位7定义为时钟暂停标志(CH)。当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。一般在设置时钟时,可以停止其工作,设定完之后,再启动其工作。控制寄存器(8FH、8EH)的位7是写保护位(WP),其它7位均置为0。在任何片内时钟/日历寄存器和RAM,在写操作之前,WP位必须为0,否则将不可写入。当WP位为1时,写保护位防止对任一寄存器的写操作。因此,通过置写保护位,可以提高数据的安全性。另外,还有慢速充电控制寄存器和RAM寄存器。 慢速充电寄存器控制着DS1302的慢速充电特性。寄存器的BIT4BIT7(TCS)决定是否具备充电性能:仅在编码为1010的条件下才具备充电性能,其他编码组合不允许充电。2.3 LCD液晶显示器2.3.1液晶显示器LCD1602简介液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。本系统使用是是LCD1602液晶显示器,它可以显示两行,每行16个字符,采用单+5V电源电,外围电路配置简单,价格便宜,具有很高的性价比7。LCD1602封装图如图2-3所示。图2-3 LCD1602封装图LCD1602采用标准的16脚接口,其中VSS为地电源,VDD接5V正电源,VEE为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。D0D7为8位双向数据线。BLA背光源正极,BLK背光源负极。2.3.2 LCD的基本指令LCD1602液晶模块内部的控制器共有11条控制指令,具体的命令见表2-5所示。表2-5 LCD1602控制指令 指 令RSR/WD7D6D5D4D3D2D1D01清屏00000000012光标复位000000001*3光标和显示模式设置00000001I/DS4显示开关控制0000001DCB5光标或字符移位000001S/CR/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址(AGG)8置数据存贮器地址001显示数据存贮器地址(ADD)9读忙标志或地址01BF计数器地址(AC)10写入CGRAM/DDRAM10要写的数11读CGRAM/ DDRAM数11读出的数据1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。1.清屏指令功能:(1) 清除液晶显示器,即将DDRAM的内容全部填入“空白”的ASCII码20H;(2) 光标归位,即将光标撤回液晶显示屏的左上方;(3) 将地址计数器(AC)的值设为0。2.光标复位指令 功能:(1) 把光标撤回到显示器的左上方;(2) 把地址计数器(AC)的值设置为0;(3) 保持DDRAM的内容不变。3.光标和显示模式设置指令 功能:设定每次定入1位数据后光标的移位方向,并且设定每次写入的一个字符是否移动。4.显示开关控制指令功能:控制显示器开/关、光标显示/关闭以及光标是否闪烁。5.设定显示屏或光标移动方向指令功能:使光标移位或使整个显示屏幕移位。6.功能设定指令功能:设定数据总线位数、显示的行数及字型。7.设定CGRAM地址指令功能:设定下一个要存入数据的CGRAM的地址。8.设定DDRAM地址指令功能:设定下一个要存入数据的DDRAM的地址。9.读取忙信号或AC地址指令功能:(1) 读取忙碌信号BF的内容,BF=1表示液晶显示器忙,暂时无法接收单片机送来的数据或指令;当BF=0时,液晶显示器可以接收单片机送来的数据或指令;(2) 读取地址计数器(AC)的内容。10.数据写入DDRAM或CGRAM指令一览功能:(1) 将字符码写入DDRAM,以使液晶显示屏显示出相对应的字符;(2) 将使用者自己设计的图形存入CGRAM。11. 从CGRAM或DDRAM读出数据的指令一览功能:读取DDRAM或CGRAM中的内容。3数字时钟硬件电路设计3.1时钟电路设计系统时钟应用了时钟芯片DS1302,其连接如图3-1所示。该硬件电路设计简单,抗干扰能力强。STC89C52RC单片机P1.2直接接DS1302的RST端,上电后,STC89C52RC的P1.2脚自动输出高电平。P1.3作为串行时钟接口,P1.4作为时钟数据的I/O。DS1302采用双电源供电,平时由+5V电源供电,当+5V掉电之后,由图中BT1(+3V备用电池)供电。特别需要注意X1和X2两端连接的晶振,该晶振频率为32.768KHz。图 3-1系统时钟电路 3.2显示电路系统的显示电路采用的是液晶显示方式。采用1602字符点阵型液晶模块,上一行显示日期,星期,下一行显示时间或是闹钟。使用起来比较灵活,操作简单,易控制,能够带来很大的方便。在LCD1602液晶显示模块和单片机STC89C52RC相连接时的,具体的接法为:将VSS接地,VDD接高电平,VEE接入一个电位器来调整LCD1602的对比度。将RS接到P2.0口,R/W接到P2.1口,E接到P2.2口。D0D7接到P0口来控制命令,输入及数据的输入/输出。具体的连接电路如图3-2所示。图3-2 LCD1602液晶和单片机STC89C52RC接口电路3.3按键电路设计根据功能需要,本时钟需要设置以下功能键:时间校准键,加1操作键,减1操作键,闹铃校准键。按照键盘与CPU的连接方式可分为独立式键盘和矩阵式键盘。独立式键盘是各个按键相互独立,每个按键占用一个I/O口线,每根I/O口线上的按键不会影响其他I/O口上按键工作状态。独立式键盘电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口,在按键数量较多时,I/O口线浪费较大,且电路结构复杂。矩阵式键盘适合按键较多时使用。由于本设计的电子钟最多需要4个按键,若采用矩阵式键盘时会有按键浪费,故采用的是独立式键盘。对于内置了上拉电阻的I/O引脚来说,外接上拉电阻没有意义,如图3-3所示。图 3-3键盘电路K1、K2、K3、K4键为自动复位按键,每次按下后,会自动弹出。单片机管脚只有在按键按下时为低电平,按键弹出后重新恢复高电平。按键操作说明如下:K1键:该键为自动复位键,在校对状态下,每次按动该键,都会使相应校对位进行减1操作。例如:校对小时状态,每按一下,小时位减1,当加至小时最高值23时,再按K1键,小时位回0。调分、秒、年、月、日与皆之相同,只是各位最高值不同。K2键:该键为自动复位键,与K1键类似,不同之处是该键每次按下将使相应校对位进行加1操作。K3键:该键为自动复位键,在正常显示时间状态下,第一次按下后,开始校对小时,以后每次按下都会分别进入对分、秒、年、月、日的校对状态。K4键:该键为自动复位键,在正常显示时间状态下,第一次按下后,开始校对闹钟时、闹钟分的校对状态。3.4闹铃电路设计闹铃音乐可以直接采用蜂鸣器闹铃,如当前时刻与闹铃时间相同,单片机向蜂鸣器送出低电平,蜂鸣器发声。采用蜂鸣器闹铃结构简单,控制方便,但是发出的闹铃声音单一。也可以在编程的时候编写一段音乐程序,待闹铃时间到时,调用该音乐程序给扬声器,便响起音乐。不过该方法只能做一些简单音乐,并且音乐程序会占用很多单片机存储资源。还有一种方法是采用录音放音芯片1420做闹铃,先对录放音设备录入一段音乐,当到设定时间时,单片机控制录放音设备放音。采用录放音电路,铃声可以是预先设定的一段自己喜欢的音乐,符合电器设备人性化的要求。且1420芯片可以分段录音,还具有语音报时功能。另外,也可以购置一块音乐集成电路,加置在单片机和蜂鸣器之间,当单片机连接闹铃电路的管脚送出低电平时,音乐集成电路会给蜂鸣器特定脉冲,使蜂鸣器发声。此类集成电路体积较小,使用方便,不足的是音乐简单、单一。闹铃的音乐不是本设计中的重点,故采用最简单的方法,占用单片机一根I/O口P2.3, 中间用PNP型三极管连接P2.3和蜂鸣器。当P2.3引脚为低电平时,三极管的发射极和集电极导通,使蜂鸣器发声。当响铃标志位为“1”时,P2.3送一定频率脉冲,使蜂鸣器发出声音,如图3-4所示。图 3-4闹铃电路3.5复位电路设计复位是单片机的初始化操作,以便使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。除了进入系统的正常初始化之外,当单片机系统在运行出错或操作错误使系统处于死锁状态时,也可按复位键重新启动。如图3-5所示8。图 3-5复位电路3.6电源的设计电子设备都需要稳定的直流电源。功率较小的直流电源大多数都是将50Hz的图 3-6 电源电路交流电经过变压、整流、滤波和稳压后获得。本设计所用电源电路如图3-6所示。3.6.1单相桥式整流电路介绍单相桥式整流电路的工作原理可分析如下。为简单起见,二极管用理想模型来处理,即正向导通电阻为零,反向电阻为无穷大。在此规定右上侧二极管为D1,顺时针依次为D2、D3、D4。在变压器二次侧电压的负半周,电流从变压器副边线圈的下端流出,只能经过二极管D1 流向负载,再由二极管 D3流回变压器,所以D1、D3正向导通,D2、D4反向截止。在负载上产生一个极性为上正下负的输出电压。在变压器二次侧电压的正半周,其极性与以上过程相反,电流从变压器副边线圈的上端流出,只能经过二极管D4流向负载,再由二极管D2流回变压器,所以D1、D3反向截止,D2、D4正向导通。电流流过负载时产生的电压极性仍是上正下负,与正半周时相同9。 综上所述,桥式整流电路巧妙地利用了二极管的单向导电性,将四个二极管分为两组,根据变压器副边电压的极性变化,将变压器副边电压的正极性端与负载电阻的上端相连,负极性端与负载电阻的下端相连,使负载上始终可以得到一个单方向的脉动电压。桥式整流电路的优点是输出电压高,纹波电压较小,管子所承受的最大反向电压较低,同时因电源变压器在正、负半周内都有电流供给负载,电源变压器得到了充分的利用,效率较高。3.6.2变压器和整流二极管的选择1.变压器的选择根据需要,因后续电路要用到+5V直流电压,而稳压块7805要求其输入的带有波动的电压要比输出的直流电压高35V,所以变压器选择初级电压为220V交流电,次级电压为8V10V的变压器,在这里选用的是次级电压为12V的变压器。2.整流二极管的选择由于所选变压器为220V/12V的变压器,所以变压器的次级电压的峰值为12V16.9V。而桥式整流电路中的整流二极管所承受的最大反向电压为次级电压的峰值,流过整流二极管的电流的最大值约为0.2A,查电子工程师手册,选用2CZ11型整流二极管。3.6.3滤波电路滤波电路用来滤除整流后单向脉冲电压中的交流成分,变成平滑的直流电压。整流电路将交流电变为脉动直流电,但其中含有大量的交流成分(称为纹波电压)。为了获得平滑的直流电压,应在整流电路的后面加接滤波电路,以滤去交流部分。 此电路采用的是电容滤波电路,即在桥式整流电路输出端与负载之间并联一个大电容。滤波电容容量较大,因此一般采用电解电容,电容滤波电路利用电容的充、放电作用,使输出电压趋于平滑,最后加一个0.1F小电容滤除电源中的高频分量。3.6.4滤波电容的选择1.电容的选择:由于采用电解电容,考虑到电网电压的波动范围为,电容的耐压值应大于U2,其中U2为12V,所以选择电解电容的耐压值为大于14伏的。2.电容容量:为了获得较好的滤波效果,在实际电路中,应选择滤波电容的容量满足,其中,由于后续电路大概需要200mA的电流,输出电压平均值,经计算可知,所以查电子工程师手册可以选用铝电解电容CD22宽温限型,容量选择1000F。所以电容的参数是:耐压值为17 V,电容值为1000F的铝电解电容。 3.6.5稳压电路稳压电路的作用是当输入交流电压波动、负载和温度变化时,维持输出直流电压的稳定。稳压器采用7805系列即输出电压值5 V,它属于三端固定输出集成稳压,两边为输入、输出,中间接地。它的最大输入电压为35V,7805最适合的输入电压为8V,输出电流分为1.5A、0.5A、0.1A三个档次。而这里变压器的次级电压有效值为12V,在7805稳压的范围内。在单相桥式整流电路中已经知道,后续电路的稳压电路的负载电流大概为0.2A左右,所以在这里所选择的稳压块的最大输出电流为0.5A10,11。7805参数如表3-1所示。表3-1 7805的参数 参数名称符号典型值单位输出电压Vo5V静态电流Io4.2mA最大压差|Vr-Vo|min2.0V经过一系列的变压、整流、滤波、稳压后,VCC处得到+5V直流稳压电源。4系统的软件设计4.1 DS1302时钟模块DS1302中的年、月、日、时、分、秒以及星期的信息存入到一个结构体中。该结构体中还包括两个数组DateString9和TimeString9分别用来暂时存放年、月、日和时、分、秒的信息。4.1.1宏定义DS1302中寄存器地址DS1302芯片中的相关寄存器的读操作对应的地址,将它们定义成宏定义,以有利于程序的可读性,具体见表4-1所示。4.1.2时钟芯片的单字节传送方式1.向DS1302中写入一字节数据通过单字节传送,可以向DS1302时钟芯片中写入秒、分、时、年、月、日等字节数据,只是命令字不同。其中传送的数据可以是秒、分、时、年、月、日、星期等字节数据,也可以是其相应的寄存器的地址。要想往DS1302中输入数据,必须让DS1302的SCLK为上升沿的时候才能输入数据,数据从0位开始。该部分是通过void write_byte(uchar d)函数实现的,其中d为要写入的数据12。表4-1 宏定义DS1302中寄存器地址 寄存器宏定义读地址秒寄存器分寄存器时寄存器星期寄存器日寄存器月寄存器年寄存器DS1302_SECONDDS1302_MINUTEDS1302_HOURDS1302_WEEKDS1302_DAYDS1302_MONTHDS1302_YEAR0x800x820x840x8A0x860x880x8C2.从DS1302中读出一字节数据通过单字节传送,可以从DS1302时钟芯片的相应寄存器中读取秒、分、时、年、月、日等字节数据。从DS1302中读出一字节数据是一位一位的读出的。当DS1302的SCLK为下降沿时才能读出一位数据,该部分通过uchar read_byte(void)函数实现的。3.向DS1302中某个地址写入数据通过单字节传送,可以向DS1302的相应寄存器中写入秒、分、时、年、月、日等字节数据。首先,将DS1302的RST置为高电平来启动所有的数据传送。然后,在CLK的上升沿时输入要写入的目标寄存器地址以及要存入该寄存器的数据,数据从0位开始。最后当单数据写入结束时,将DS1302的RST置为低电平,终止数据的传送。该部分通过void Write_ds1302(unsigned char ucAddr,unsigned char ucDa)函数实现的。其中ucAddr为DS1302的某个寄存器的地址,ucData为向寄存器要写的数据。4.读取DS1302某地址的数据通过单字节传送,可以从DS1302寄存器中读出秒、分、时、年、月、日等字节数据。首先,将DS1302的RST置为高电平来启动所有的数据传送。然后,在CLK的下降沿时输出要读取的目标寄存器地址,数据从0位开始。接着,从该寄存器中读取数据。最后当单数据输出结束时,将DS1302的RST置为低电平,防止有额外的SCLK周期,重新发送数据信息。该部分通过unsigned char read_ds1302(unsigned char ucAddr)函数实现的12。4.1.3是否写保护寄存器操作当写保护寄存器的最高位为0时,允许数据写入寄存器。当写保护寄存器的最高位为1时,禁止数据写入寄存器。写保护寄存器可以通过命令字节8E来规定禁止写入/读出,写保护位不能在多字节传送模式下写入。void DS1302_SetProtect(bit flag)函数通过一个flag位来控制是否写入还是读出。当flag为1时,数据禁止写入时钟芯片的寄存器;当flag为0时,数据允许写入时钟芯片的寄存器。4.1.4时钟芯片的初始化要想使时钟走时,每次上电必须把秒寄存器最高位(第7位)设置为0。如果需要写入数据和时钟日历信息,必须将“写保护”寄存器设置成为0。该部分通过void init_ds1302(void)函数实现。4.1.5时钟停止/启动走时时钟停止/走时是由函数void DS1302_TimeStop(bit flag)来实现的。具体流程如图4-1所示。返回开始读取DS1302的秒寄存器中的数据电子日历停止走时电子日历开始走时允许写数据是否Flag=0?图 4-1 时钟停止/启动走时流程图4.1.6数据信息的显示时钟日历用BCD码存储,获得的时钟日历的信息存储在结构体的unsigned char DateString9和unsigned char TimeString9数组中,然后将其送到液晶显示器件中进行显示12。4.2 LCD显示模块部分4.2.1基本操作程序读状态:输入:RS=L,RW=H,E=H 输出:D0D7=状态字读数据:输入:RS=H,RW=H,E=H 输出:无写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲 输出:D0D7=数据写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲 输出:无4.2.2 RAM地址映射图控制器内部带有80字节的RAM缓冲区,对应关系如表4-2所示。表4-2 对应关系 000102030405060708090A0B0C0D0E27404142434445464748494A4B4C4D4E674.2.3状态字说明1602的状态字说明如下表4-3所示。其中,STA0STA6为当前地址指针的数值,STA7读写操作使能,1是禁止,0是允许,每次对控制器进行读写操作之前,必须进行读写检测,确保STA7为0。STA7STA6STA5STA4STA3STA2STA1STA0D7D6D5D4D3D2D1D0表4-3 1602状态字说明4.2.4数据指针设置控制器内部设有一个数据地址指针,用户可以通过它们访问内部的全部80字节的RAM。数据指针的设置见下表4-4所示。指令码功能80H+地址码(027H,4067H)设置数据地址指针表4-4 数据指针的设置4.2.5显示模式设置 各显示模式设置如下表4-5所示。指令码功能0000000010D1CNBSD=1开显示;D=0关显示C=1显示光标;C=0不显示光标B=1光标闪烁;B=0光标不显示N=1当读或写一个字符后地址指针加1,且光标加1N=0当读或写一个字符后的地址指针减1,且光标减1S=1 当写一个字符,整屏显示左移(N=1)或右移(N=0),以得到光标不移动而屏幕移动的效果S=0当写一个字符,整屏显示不移动-表4-5 显示模式设置对应的指令码4.2.6初始化设置初始化的设置见下表4-6所示。指令码功能00111000设置162显示,57点阵,8位数据接口表4-6 1602的初始化设置4.2.7其他设置除了上述各设置之外,还有其他一些功能的设置,如下表4-7所示。表4-7 其他功能设置指令码功能01H显示清屏:1.数据指针清0 2.所有显示清002H显示回车:数据指针清04.3主程序模块在主程序中实现星期的计算,时间日期星期的显示,校准时间,设置闹钟的功能。校准时间和设置闹钟的功能都是通过中断来调用的。4.3.1星期采用的算法1.先判断该年是闰年还是平年。能被4整除且不能被100整除;或者能被400整除的年份为闰年,闰年年份的天数为366天。其他的年份就是平年了,平年的天数是365天;2.要计算的该月的前几个月的总天数。若是闰年,二月是29天;若是平年,二月是28天。一,三,五,七,八,十,十二月是三十一天;其他的月是三十天;3.计算总天数。前几个月的天数加上该月的日期;4.星期就等于总天数除以七后所得的余数。4.3.2中断声明在设计电子日历时调用的中断,简单介绍一下中断声明方法void 中断函数名称 ( ) interrupt 中断号 using n中断服务子程序其中,n用来选择通用寄存器。在主程序和中断中都可调用的函数,容易产生问题。因为51和PC不同,PC使用堆栈传递参数,且静态变量以外的内部变量都在堆栈中;而51一般使用寄存器传递参数,内部变量一般在RAM中,函数重入时会破坏上次调用的数据。可以用以下两种方法解决函数重入:1.在相应的函数前使用前述“#pragma disable”声明,即只允许主程序或中断之一调用该函数;2.将该函数说明为可重入的。如下:void func(param.) reentrant;Keil C51编译后将生成一个可重入变量堆栈,然后就可以模拟通过堆栈传递变量的方法。由于一般可重入函数由主程序和中断调用,所以通常中断使用与主程序不同的R寄存器组。4.3.3校准时间函数在该函数中,通过按键来校准时间。当K3按键按下时,电子日历停止走时,此时可以进行年的校准,年调好之后,再按一下校准时间便可以调整月,同理可以对日、小时、分、秒进行设置。对应有K1、K2键,可以进行加与减的操作。都调整好之后将按照新时间开始走时。具体见图4-2。4.3.4设置闹钟函数在该函数中,可以设置闹钟。当按下K4时,数字时钟的第二行显示闹钟时间,这时可以进行调整,首先是年,其次是月,其他依次可调,按下K1、K2可以对所调位进行加和减的操作。按下K4键,数字时钟的第二行又将切换为时间正常走时状态。设置闹钟时,数字时钟不停止走时。见图4-3。4.3.5 LCD显示程序设计液晶显示时,BUSY=1表示正在处理计算机发来的指令或数据,此时电路被封锁,不能接受除读状态字以外的任何操作。BUSY=0表示已“准备好”,等待计算机的访问。具体流程图见图4-4。4.3.6主函数在主程序中,通过检测校准时间按键是否按下实现校准时间的功能;通过检测设置闹钟按键是否按下实现设置闹钟的功能。主程序具体的流程如图4-5所示。图4-2 校准时间流程图是返回修改日期和时间开始加键是否按下时钟开始工作设置键是否按下加键是否按下是否减键是否按下否是选中要修改的否开始时间切换为闹钟闹钟设置完成键是否按下设置闹钟键是否按下将闹钟的时间存储到数组中电子日历继续

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论