




已阅读5页,还剩42页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南工程学院课 程 设 计课程名称 单片机原理与应用 课题名称 电子表设计 专 业 班 级 学 号 姓 名 指导教师 2012年 5月 25日湖南工程学院课 程 设 计 任 务 书课程名称 单片机原理与应用 课 题 电子表设计 专业班级 学生姓名 学 号 指导老师 审 批 任务书下达日期 2012 年 5月 14日任务完成日期 2012年 5月 25日设计内容与设计要求设计内容:本课题要求以单片机为核心设计一个多功能电子表,具有电子时钟和跑表功能。做时钟时在6位LED 显示器上显示时、分、秒,做跑表时显示范围000.0秒999.9秒并具有跑表启动和跑表复位功能键。设计要求:1)确定系统设计方案; 2)进行系统的硬件设计;3)完成必要的参数计算与元器件选择;4)完成应用程序设计;5)进行部分单元电路及应用程序的调试;主 要 设 计 条 件电子时钟的计时范围00时00分00秒24时-59分-59秒,并在6位LED 显示器上显示;做跑表时显示范围000.0秒-999.9秒,当按下启动按钮跑表开始计时,按下停止按钮停止计时,当按下复位按钮跑表回零。说 明 书 格 式封面课程设计任务书目录第1章 设计的要求及目的第2章 系统总体方案选择与说明第3章 系统方框图与工作原理,第4章 各单元硬件设计及说明第5章 器件说明第6章 软件设计与说明(包括流程图)第7章 调试步骤、结果、使用说明第8章 设计总结第9章 参考文献附录:系统电路原理图(用PROTEL99制作)、系统程序清单。电气信息学院课程设计评分表进 度 安 排设计时间为两周第一周星期一、上午:布置课题任务,讲课及课题介绍 下午:借阅有关资料,总体方案讨论星期二、确定总体设计方案星期三、硬件模块方案设计星期四、软件模块方案设计星期五、各硬件模块设计第二周星期一、各硬件模块设计星期二、各软件模块设计星期三、各软件模块设计星期四、写说明书星期五、上午:写说明书,整理资料下午:交设计资料,答辩参 考 文 献参考文献1、 单片机应用系统设计 何立民 编 北航出版社2、 单片机原理及应用 王迎旭 主编 机械工业出版社3、 51系列单片机设计实例 楼然苗 等编 北航出版社4、51单片机应用系统开发典型实例戴家 等编 中国电力出版社5、单片微型计算机原理及接口技术陈光东 等编 华中科技大学出版社6、单片机实用系统设计技术房小翠 编 国防工业出版社目录第一章 设计任务及要求1.1设计任务设计一个具有特定功能的电子表。该电子表的时钟显示范围为00时00分00秒至23时59分59秒。该电子表做跑秒时显示范围为000.0秒至999.9秒,当按下启动按钮时跑秒开始计时,再次按下该按键时暂停计时,当按下复位键时跑秒回零。1.2设计要求1)确定系统设计方案;2)进行系统的硬件设计;3)完成必要的参数计算与元器件选择;4)完成应用程序设计;5)进行部分单元电路及应用程序的调试;第二章 系统总体方案选择与说明2.1方案选择及方案说明方案一:采用数字逻辑电路 由555构成多谐振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,在经分频器输出标准秒脉冲,由两个74LS90级联构成两个60进制计数器和一个24进制计数器,满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。计数器的输出经译码器送显示器。这种方案是由纯硬件电路实现了设计,优点是省略了软件部分的设计,但是这种方案因为是纯硬件实现的,成本较高,误差较大,不灵活,因此在本次设计中不予以采用。方案二:采用单片机软件控制利用MCS-51内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。配合软件监控实现运行,停止,调时,调分,调秒。该方案节省硬件成本,且能够使人在定时/计数器的使用、中断及程序设计方面得到锻炼与提高,但是使用单片机内部定时器来设计的电子表不能显示实时时间,且时间调节逻辑比较复杂,程序容易出错,所以在本次设计中不予以采用。方案三:采用时钟芯片针对计算机系统对实时时钟功能的普遍需求,各大芯片生产厂家陆续推出了一系列的实时时钟集成电路,如DS1302、DS12887等。这些实时时钟芯片具备年、月、日、时、分、秒计时功能和多点定时功能,计时数据的更新每秒自动进行一次,不需程序干预。计算机间,程序简单。此外,实时时钟芯片多数带有锂电池做后备电源,具备永不停止的计时功能;具有可编程方波输出功能,可用做实时测控系统的采样信号等;有的实时时钟芯片内部还带有非易失性RAM,可用来存放需长期保存但有时也需变更的数据。采用这种方案虽然简单而经济,采用此方案很有挑战性,且在学习的过程中可以学到很多的知识,虽然难度比其它方案要大一些,但是只要我们认真做还是可以完成任务的,一旦做出来后还会觉得很有成就感,因此本课题将采用这种方案。第三章 系统方框图与工作原理3.1系统方框图 3.2工作原理本系统是基于AT89S52单片机的一个实时时钟系统。它是通过程序控制,由单片机向时钟芯片读取实时时钟,然后在液晶屏上显示出来。它还包含跑秒的功能,可从000.0秒计时到999.9秒。当按下启动按钮时跑秒开始计时,再次按下该按键时暂停计时,当按下复位键时跑秒回零。第四章 硬件设计4.1电源电路设计MCS-51单片机正常工作的电压为+5V,因此要制作一个能产生+5V的直流稳压电源,其原理框图如图4-1所示:图4-1.电源电路原理框图根据电源电路的原理框图,选择相应的器件,得到+5V直流稳压电源的电路图如图4-2所示,220V的交流电源通过一个输出为612V的交流变压器,这里取9V,然后再通过1N4007进行整流,将交流电变成脉动直流电然后再通过一个2200的滤波电容,使电压变得平滑,纹波减小。然后再通过7805集成稳压器,得到+5V的直流电压。C3用以抵消输入端较长的电感效应,以防止自激振荡,还可以抑制电源的高频脉冲干扰,一般取0.11,这里取0.1。输出电容C4、C3用以改善负载的瞬态响应,消除电路的高频噪声,同时也具有消磁的作用,这里分别取470、0.1。D3是保护二极管,用来防止在输入短路时输出电容C3所存储电荷通过稳压器放电而损坏器件。图4-2.电源电路原理图4.2单片机控制电路设计单片机本身是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格的按时序进行工作。因此就要用一个时钟电路产生单片机工作所需要的时钟信号。其原理框图如图4-3所示: 图4-3.单片机的时钟电路框图 在MCS-51芯片内部有一个高增益反向放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2,在芯片外部通过这两个引脚跨接晶体振荡器和微调电容,形成反馈电路,就构成一个稳定的自激振荡器,如图4-4所示:图4-4.单片机振荡电路电路中的电容C1和C2一般取30PF左右,而晶体的振荡频率通常是1.2MHZ12MHZ,这里取12MHZ。在单片机控制电路中,复位是单片机的初始化操作,其主要是把PC初始化为0000H,使单片机从0000H单元开始执行程序。除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键以重新启动。RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间应持续24个振荡周期以上,这里使用12MHZ的晶振,则复位信号持续的时间应超过4才能完成复位操作。复位操作有上电复位和按键手动复位两种方式。上电自动复位是通过外部复位的电容来实现的,其电路如图4-5所示。只要电源的上升时间不超过1ms,就可以实现自动上复位,即接通电源就完成了系统的复位操作,在此系统中,我们只需要进行上电复位即可。 图4-5.上电复位 图4-6.按键电平复位 图4-7按键脉冲复位4.3时钟芯片电路设计在本系统中,我们所采用的时钟芯片是DS1302,我们通过单片机对DS1302特定寄存器数据的读取,就可以读出实时时间。当单片机工作时,有外部给时钟芯片供电;当单片机不工作时,由时钟芯片电路里的纽扣电池给时钟芯片供电。具体电路如下图所示:图4-8. DS1302电路4.4显示电路设计按照显示方式,有LED数码管显示与LCD液晶显示之分。而数码管显示又有动态显示与静态显示之分。如果采用静态显示,则6位数码管就需要42个I/O口控制,所以不能采用。如果采用动态显示,6位数码管也需要14个I/O口,且显示有很大的局限性,并且取字模,写动态扫描程序都比较麻烦,所以在此也没有采用。在此系统中显示部分是由LCD1602液晶显示屏来显示时钟和跑秒的数据的。LCD1602具有可显示字符多、外观漂亮、易操作等优点。具体电路图如下图所示:图4-9. LCD1602显示电路4.5按键控制电路设计 按照与主机连接方式不同,有独立键盘与矩阵键盘之分。独立键盘的特点是一键一线,如图4-10所示,即每个按键单独占用一根检测线与主机相连,所以有多少个按键就需要多少个I/O口与之匹配,其缺点就是当按键较多时占用的I/O口比较多。矩阵式键盘的特点是把检测线分成两组,一组为行线,按键放在行线和列线的交叉点上。图4-11就是一个44的矩阵式键盘。图中每一个按键都通过不同的行线和列线与主机相连。44的矩阵共安置了16只键,但只需8条测试线。不难看出,MN矩阵键盘与主机连接需要MN条线,显然,按键规模越大,矩阵式键盘的优点越显著。当需要的按键数目大于8时,一般采用矩阵式键盘。采用矩阵键盘的缺点是按键扫描程序的编写比较麻烦。图4-10.独立式键盘 图4-11.矩阵式键盘在此系统中,我们只需要两个按键控制跑秒的开始/暂停、复位等功能,所以采用独立式键盘。其电路图如下:第五章 主要器件介绍5.1 AT89S52的介绍AT89S52单片机兼容标准MCS-51指令系统。AT89S52单片机是一个低电压,高性能CMOS 8位单片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,片内置通用8位中央处理器和Flash存储单元,功能强大的AT89S52单片机可为您提供许多高性低比的系统控制应用领域。AT89S52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89S52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。1.AT89S52的封状形式及管脚AT89S52的封状形式及管脚如图5-1所示: 图5-1 AT89S52的封状形式及管脚2.信号引脚介绍: 输入输出口线P00P07 P0口8位双向口线P10P17 P0口8位双向口线P20P27 P0口8位双向口线P30P37 P0口8位双向口线 ALE地址锁存控制信号在系统扩展时,ALE用于控制把P0口输出低8位地址送锁存器锁存起来,以实现低位地址和数据的隔离。此外由于ALE是以晶振六分之一的固定频率输出的正脉冲,因此可作为外部时钟或外部定时脉冲作用。外部程序储器读选取通信号在读外部ROM时/PSEN有效(低电平),以实现外部ROM单元的读操作。 访问程序存储器控制信号当/EA信号为低电平时,对ROM的读操作限定在外部程序存储器;而当/EA信号为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。 RST 复位信号当输入的复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作。 XTAL1和XTAL2外接晶体引线端当使用芯片内部时钟时,此二引线端用于外接石英晶体和调空;当使用外部时钟时,用于拉外部的时钟脉冲信号。 GND:地线 VCC:+5V电源3.总线结构:AT89S52的管脚除了电源、复位、时钟接入、用户I/O口部分P3外,其余管脚都是为实现系统扩展而设置的。这些管脚构成了三总线形式,即:地址总线(AB):地址总线宽度为16位,因此,其外部存储器直接地址外围为64K字节。16位地址总线由P0经地址锁存器提供低8位地址(A0A7);P2口直接提供高8位地址(A8A15)。数据总线(DB):数据总线宽度为8位,由P0口提供。控制总线(CB):由部分P3口的第二功能状态和4根独立控制线RESET、/EA、ALE、/PSEN组成。5.2 DS1302的介绍DS1302是美国 DALLAS 公司推出的一种高性能、低功耗的实时 时钟芯片,附加31字节静态 RAM,采用 SPI 三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和 RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电 方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部引脚分配如图5-2所示及内部结构如图5-3所示。图5-2 DS1302的外部引脚 图5-3DS1302的内部结构各引脚的功能为:Vcc1:主电源;Vcc2:备份电源。当 Vcc2Vcc1+0.2V 时, 由 Vcc2向 DS1302供电,当 Vcc2 Vcc1时,由 Vcc1向 DS1302供电。SCLK:串行时钟,输入,控制数据的输入与输出;I/O:三线接口时的双向数据线;CE:输入信号,在读、写数据期间,必须为高。该引脚有两 个功能:第一,CE 开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。DS1302有下列几组寄存器: DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h8Dh,写时80h8Ch),存放的数据格式为 BCD 码形式, 如图5-4所示。图5-4DS1302有关日历、时间的寄存器 小时寄存器(85h、84h)的位7用于定义 DS1302是运行于12小时 模式还是24小时模式。当为高时,选择12小时模式。在12小时模式时,位5是 ,当为1时,表示 PM。在24小时模式时,位5是第二个10小时位。秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。当该 位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。 控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在任何的对时钟和 RAM 的写操作之前,WP 位必须为0。当WP 位为1时,写保护位防止对任一寄存器的写操作。DS1302有关 RAM 的地址:DS1302中附加31字节静态 RAM 的地址如图5-5所示。图5-5 DS1302的工作模式寄存器所谓突发模式是指一次传送多个字节的时钟信号和 RAM 数据。 突发模式寄存器如图5-6所示。图5-6此外,DS1302还有充电寄存器等。5.3 LCD1602的介绍LCD1602是工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)。1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中:引脚符号功能说明1VSS一般接地2VDD接电源(+5V)3V0液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。4RSRS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。5R/WR/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。6EE(或EN)端为使能(enable)端,下降沿使能。7DB0底4位三态、 双向数据总线 0位(最低位)8DB1底4位三态、 双向数据总线 1位9DB2底4位三态、 双向数据总线 2位10DB3底4位三态、 双向数据总线 3位11DB4高4位三态、 双向数据总线 4位12DB5高4位三态、 双向数据总线 5位13DB6高4位三态、 双向数据总线 6位14DB7高4位三态、 双向数据总线 7位(最高位)(也是busy flang)15BLA背光电源正极16BLK背光 电源负极寄存器选择控制表:RSR/W操作说明00写入指令寄存器(清除屏等)01都busy flag(DB7),以及读取位址计数器(DB0DB6)值10写入数据寄存器(显示各字型等)11从数据寄存器读取数据注:关于E=H脉冲开始时初始化E为0,然后置E为1,再清0. busy flag(DB7):在此位为被清除为0时,LCD将无法再处理其他的指令要求。 第六章 软件设计6.1 主程序流程图6.2 电子时钟流程图6.3 跑秒流程图6.4 参考程序系统参考程序见附录三。第七章 系统调试完成了硬件的设计、制作和软件编程之后,要使系统能够按设计意图正常运行,必须进行系统调试。系统调试包括硬件调试和软件调试两个部分。不过,作为一个计算机系统,其运行是软硬件相结合的,因此,软硬件的调试也是不可能绝对分开的,硬件的调试常常需要利用调试软件,软件的调试也可能需要通过对硬件的测试和控制来进行。7.1 硬件调试硬件调试的主要任务是排除硬件故障,其中包括设计错误和工艺性故障。用万用表逐步按照电路原理图检查印制电路板中所有器件的各引脚,尤其是电源的连接是否正确;检查数据总线、地址总线和控制总线是否有短路等故障,顺序是否正确;检查各开关按键是否能正常开关,是否连接正确;各限流电阻是否短路等。为了保护芯片,应先对各IC座(尤其是电源端)电位进行检查,确定其无误后再插入芯片。7.2 软件调试软件调试的任务是利用开发工具进行在线仿真调试,发现和纠正程序错误,同时也能发现硬件故障。程序的调试应逐个模块地进行,首先单独调试各功能子程序,检验程序是否能够实现预期的功能,最后逐步将各子程序连接起来总调。联调需要注意的是,各程序模块间能否正确传递参数,寄存器组是否有冲突,特别要注意各子程序的现场保护与恢复。7.3. 脱机运行软硬件调试成功之后,可以将程序下载到89S52的FLASH ROM中,接上电源脱机运行。既然软硬件都已调试成功,脱机运行似乎肯定成功,然而事实往往并非如此,仍有可能出现以下故障:(1) 系统不工作。其原因主要有晶振不起振(晶振损坏、晶振电路不正常导致晶振信号太弱等),或脚没有接高电平(接地或悬空)等。(2) 系统工作时好时坏。这主要是由干扰引起的。由于本系统没有传感输入通道和控制输出通道,干扰源相对较少且简单,因此,在电源、总线处对地接滤波电容一般可以解决问题。第八章 设计总结经过调试,和多次改进,本设计达到了预期的效果。本系统可以正常的实验数字时钟和跑秒的功能,并且数字钟在系统掉电的情况下系统时间还不会停,也就是说本系统能够显示实时时间,不管系统什么时候开启,它所显示的时间都是正确的北京时间。在此之外,本系统的跑秒功能是与电子时钟相独立的,时间显示在液晶屏的第一行,跑秒显示在液晶屏的第二行,互不影响。通过这次对电子时钟的设计,让我明白了如何设计程序,并且对各种硬件及软件有了进一步的掌握,尤其让我了解了AT89S52单片机和DS1302时钟芯片的工作原理。但是对于写一篇好的设计报告仍然很难,自己对于在设计中所遇到的那些问题总结不了那么多经验教训。做本课程设计之前以为自己什么都了解了,掌握了,弄懂了,一旦做起来,漏洞百出,不显眼的错误却造成了失败。这次课程设计真的让我懂得了一个道理:“坐而言不如立而行”,做事情要全力以赴,做学问要严谨治学。附录一:系统电路图附录二:元件清单元件数量AT89S521DS13021LCD1602112M晶振132.768K晶振13.0V纽扣电池1按键2电阻9瓷片电容2电解电容1附录三:参考程序(1) 主程序#include #include#includelcd1602.h#includeDS1302.hunsigned int sec_value=0; /定义秒表示值寄存器sbit key1=P20; /秒表开始/暂停键sbit key2=P21; /秒表复位键unsigned char i;static unsigned char key1_r=0,key1_rr=0,key1_rrr=0,key2_r=0,key2_rr=0,key2_rrr=0;unsigned char key1_set_flag=0,key2_set_flag=0;unsigned char Sec_flag=0;void Time0_Init() /定时器0初始化,计时10msEA=1;ET0=1;TMOD=0X01;TH0=0XD8;TL0=0XF0;TR0=0;void key_jc()/按键扫描检测/*key1检测*/if(key1=0) key1_rrr=key1_rr;key1_rr=key1_r;key1_r=1;elsekey1_rrr=key1_rr;key1_rr=key1_r;key1_r=0;if(key1_r&key1_rr)&(key1_rrr&0x01) key1_set_flag=1;/*key2检测*/if(key2=0) key2_rrr=key2_rr;key2_rr=key2_r;key2_r=1;elsekey2_rrr=key2_rr;key2_rr=key2_r;key2_r=0;if(key2_r&key2_rr)&(key2_rrr&0x01) key2_set_flag=1;/*- 主函数-*/ void main(void) Time0_Init(); /定时器0初始化LCD_Init(); /液晶显示初始化LCD_Clear(); /清屏LCD_Write_String(0,0,Time : : ); LCD_Write_String(0,1,Sec_Watch 000.0);Ds1302_Init(); /时钟芯片DS1302初始化while (1) ds1302_read_time(); /时钟读取Disp_time(); /时钟显示LCD_Write_Char(15,1,(sec_value%10+0);/秒表百位显示LCD_Write_Char(13,1,(sec_value/10)%10+0);/秒表十位显示LCD_Write_Char(12,1,(sec_value/100)%10+0);/秒表个位显示LCD_Write_Char(11,1,(sec_value/1000+0);/秒表十分位显示key_jc(); /按键扫描检测if(key1_set_flag=1) /秒表开始/暂停键被按下key1_set_flag=0;Sec_flag=Sec_flag;if(Sec_flag!=0) TR0=1;else TR0=0; if(key2_set_flag=1)/秒表复位键被按下key2_set_flag=0;Sec_flag=0;TR0=0;sec_value=0; void timer0 () interrupt 1 /定时器0中断程序,定时10msTH0=0XD8;TL0=0XF0; i+;if(i=10)i=0;sec_value+;if(sec_value=10001) sec_value=0; (2) LCD1602显示程序#include /包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#includesbit RS = P24; /定义端口 sbit RW = P25;sbit EN = P26;#define RS_CLR RS=0 #define RS_SET RS=1#define RW_CLR RW=0 #define RW_SET RW=1 #define EN_CLR EN=0#define EN_SET EN=1#define DataPort P0/*- uS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编,大致延时 长度如下 T=tx2+5 uS -*/void DelayUs2x(unsigned char t) while(-t);/*- mS延时函数,含有输入参数 unsigned char t,无返回值 unsigned char 是定义无符号字符变量,其值的范围是 0255 这里使用晶振12M,精确延时请使用汇编-*/void DelayMs(unsigned char t) while(t-) /大致延时1mS DelayUs2x(245); DelayUs2x(245); /*- 判忙函数-*/ bit LCD_Check_Busy(void) DataPort= 0xFF; RS_CLR; RW_SET; EN_CLR; _nop_(); EN_SET; return (bit)(DataPort & 0x80); /*- 写入命令函数-*/ void LCD_Write_Com(unsigned char com) while(LCD_Check_Busy(); /忙则等待 RS_CLR; RW_CLR; EN_SET; DataPort= com; _nop_(); EN_CLR; /*- 写入数据函数-*/ void LCD_Write_Data(unsigned char Data) while(LCD_Check_Busy(); /忙则等待 RS_SET; RW_CLR; EN_SET; DataPort= Data; _nop_(); EN_CLR; /*- 清屏函数-*/ void LCD_Clear(void) LCD_Write_Com(0x01); DelayMs(5); /*- 写入字符串函数-*/ void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s) if (y = 0) LCD_Write_Com(0x80 + x); /表示第一行 else LCD_Write_Com(0xC0 + x); /表示第二行 while (*s) LCD_Write_Data( *s); s +; /*- 写入字符函数-*/ void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data) if (y = 0) LCD_Write_Com(0x80 + x); else LCD_Write_Com(0xC0 + x); LCD_Write_Data( Data); /*- 初始化函数-*/ void LCD_Init(void) LCD_Write_Com(0x38); /*显示模式设置*/ DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); DelayMs(5); LCD_Write_Com(0x38); LCD_Write_Com(0x08); /*显示关闭*/ LCD_Write_Com(0x01); /*显示清屏*/ LCD_Write_Com(0x06); /*显示光标移动设置*/ DelayMs(5); LCD_Write_Com(0x0C); /*显示开及光标设置*/ (3) DS1302程序#include #include#includelcd1602.hsbit SCK=P11;sbit SDA=P10;sbit RST=P12;/复位脚#define RST_CLRRST=0/电平置低#define RST_SETRST=1/电平置高/双向数据#define IO_CLRSDA=0/电平置低#define IO_SETSDA=1/电平置高#define IO_RSDA /电平读取/时钟信号#define SCK_CLRSCK=0/时钟信号#define SCK_SETSCK=1/电平置高#define ds1302_sec_add0x80/秒数据地址#define ds1302_min_add0x82/分数据地址#define ds1302_hr_add0x84/时数据地址#define ds1302_date_add0x86/日数据地址#define ds1302_month_add0x88/月数据地址#define ds1302_day_add0x8a/星期数据地址#define ds1302_year_add0x8c/年数据地址#define ds1302_control_add0x8e/控制数据地址#define ds1302_charger_add0x90 #define ds1302_clkburst_add0xbeunsigned char time_buf6 = 0x12,0x05,0x14,0x15,0x42;unsigned char year_1,year_2,month_1,month_2,date_1,date_2,hr_1,hr_2,min_1,min_2,sec_1,sec_2;/*- 向DS1302写入一字节数据-*/void ds1302_write_byte(unsigned char addr, unsigned char d)unsigned char i;RST_SET;/写入目标地址:addraddr = addr & 0xFE; /最低位置零for (i = 0; i 1;/写入数据:dfor (i = 0; i 1;RST_CLR;/停止DS1302总线/*- 从DS1302读出一字节数据-*/unsigned char ds1302_read_byte(unsigned char addr) unsigned char i;unsigned char temp;RST_SET;/写入目标地址:addraddr = addr | 0x01;/最低位置高for (i = 0; i 1;/输出数据:tempfor (i = 0; i 1;if (IO_R) temp |= 0x80;else temp &= 0x7F;SCK_SET;SCK_CLR;RST_CLR;/停止DS1302总线return temp;/*向DS302写入时钟数据*/void ds1302_write_time(void) ds1302_write_byte(ds1302_control_add,0x00);/关闭写保护 ds1302_write_byte(ds1302_sec_add,0x80);/暂停 ds1302_write_byte(ds1302_year_add,time_buf0);/年 ds1302_write_byte(ds1302_month_add,time_buf1);/月 ds1302_write_byte(ds
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 外墙保温板施工方案
- 2025年成都市中考物理真题(含答案)
- 小儿暴发性心肌炎课件
- 农村农具展览馆合同范本
- 三方车辆过户协议书模板
- 婚介介绍人合同协议书范本
- 买农村房子地基合同范本
- 怎样打印委托协议合同模板
- BT合作协议属于性质合同
- 香港银行开户购销合同范本
- 锅炉安全技术规程标准(TSG 11-2020)
- 加油站安全教育培训计划表及全套记录表模板
- 员工薪资调整审批表
- 除锈剂MSDS参考资料
- (完整word版)中医病证诊断疗效标准
- 新人教版八年级物理(下册)期末综合能力测试卷及答案
- 低压配电箱安装施工方案
- 蓄水池检验批质量验收记录(海绵城市质检表格)
- 单梁起重机安全操作培训课件
- 脑出血诊治指南
- 2022年重庆市汽车运输(集团)有限责任公司招聘考试真题
评论
0/150
提交评论