




已阅读5页,还剩40页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
anyang institute of technology 专 科 毕 业 设 计 基于at89s52的电子万年历设计 design of calender based on at89s52 系(院)名称: 国际教育学院 专业班级: 07应用电子技术2班 学生姓名: 王俊 指导教师姓名: 吴欣慧 指导教师职称: 讲师 2010年5月毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得安阳工学院及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日 期: 使用授权说明本人完全了解安阳工学院关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 目录中文摘要、关键词英文摘要、关键词引言1第一章 系统方案设计21.1单片机芯片的选择方案和论证21.2显示模块选择方案和论证21.3时钟芯片的选择方案和论证31.4电路设计最终方案决定3第二章 系统的硬件设计与实现42.1电路设计框图42.2系统硬件概述42.3系统核心部分-闪电存储型器件at89s5242.4 时钟ds1302电路模块的设计72.5 液晶显示电路122.6 键盘电路12第三章系统的软件设计 133.1程序流程框图133.2 时间调整程序流程图14第四章测试与结果分析164.1硬件测试164.2软件测试164.3测试结果分析与结论16致谢18参考文献19附录a 整个系统的电路原理图20附录b 整体程序21附录c 实物图片38基于单片机的电子万年历毕业的设计摘要:以美国dallas推出的实时时钟电路ds1302为例,介绍了其系列芯片的各个组成部分及其功能,并以at89s52单片机作主处理机,阐述了与ds1302之间,实现了显示年月日时分秒及星期信息,使其具有可调整日期和时间和与即时时间同步的功能。此万年历具有读取方便、显示直观,电路简洁、成本低等诸多优点,符合电子仪器的发展趋势,具有很广阔的市场前景。关键词:时钟ds1302;按键扫描;单片机at89s52;显示ds1602 design of calender based on at89s52 abstract: with the rapid development of world economy and the forthcoming of information era, many kinds of mini-type intelligent domestic electric appliances appear in our life one after another. calendars are necessary daily goods in peoples life. but they are generally paper goods with inconvenient use and short life. electronic calendar adopts the technology of intelligent electronic control and display, and then improves the deficiency of paper calendars. the design adopts the core of at89s52 single chip microcomputer, which constitutes controlling circuit, and integrates ds1302 clock chip , which achieve self-adjusting of time and no power protecting. lcd displays all information. time and date adjusting is carried out by three keys, which can also set the alarm clock. the calendar can display solar and lunar year, month, day, week, hour, minute, second. when displaying lunar months, leap month is showed. keywords: electronic calendards1302; 52 series single chip microcomputerat89s52 , lcd1602 38引言在日新月异的21世纪里,家用电子产品得到了迅速发展。许多家电设备都趋于人性化、智能化,这些电器设备大部分都含有cpu控制器或者是单片机。单片机以其高可靠性、高性价比、低电压、低功耗等一系列优点,近几年得到迅猛发展和大范围推广,广泛应用于工业控制系统、通讯设备、日常消费类产品和玩具等。并且已经深入到工业生产的各个环节以及人民生活的各个方面,如车间流水线控制、自动化系统等、智能型家用电器(冰箱、空调、彩电)等。用单片机来控制的小型家电产品具有便携实用,操作简单的特点。本文设计的电子万年历属于小型智能家用电子产品。利用单片机进行控制,实时时钟芯片进行记时,外加掉电存储电路和显示电路,可实现时间的调整和显示。电子万年历既可广泛应用于家庭,也可应用于银行、邮电、宾馆、医院、学校、企业、商店等相关行业的大厅,以及单位会议室、门卫等场所。因而,此设计具有相当重要的现实意义和实用价值。 第一章 系统方案设计 1.1 单片机芯片的选择方案和论证方案一: 采用89c51芯片作为硬件核心,采用flash rom,内部具有4kb rom 存储空间,能于3v的超低压工作,而且与mcs-51系列单片机完全兼容,但是运用于电路设计中时由于不具备isp在线编程技术, 当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,对芯片的多次拔插会对芯片造成一定的损坏。方案二: 采用at89s52,片内rom兼容,全都采用flash rom;能以3v的超底压工作;同时也与mcs-51系列单片机完全兼容,该芯片内部存储器为8kb rom 存储空间,同样具有89c51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏,所以选择采用at89s52作为主控制系统。1.2 显示模块选择方案和论证采用lcd液晶显示,具有超精致影像画质、十足平面显示、节省空间、节省能源等优点,但按控制方式不同,lcd可分为被动矩阵式lcd及主动矩阵式lcd两种。可根据不同需要采用不同的方式。方案一 被动矩阵式lcd被动矩阵式lcd在亮度及可视角方面受到较大的限制,反应速度也较慢。由于画面质量方面的问题,使得这种显示设备不利于发展为桌面型显示器,但成本低廉。方案二 主动矩阵式lcd目前应用比较广泛的主动矩阵式lcd,也称tft-lcd(thin film transistor-lcd,薄膜晶体管lcd)。tft液晶显示器是在画面中的每个像素内建晶体管,可使亮度更明亮、色彩更丰富及更宽广的可视面积。与crt显示器相比,lcd显示器的平面显示技术体现为较少的零件、占据较少的桌面及耗电量较小,但crt技术较为稳定成熟。 相比之下,本设计当中选用方案二主动矩阵式lcd方式1.3 时钟芯片的选择方案和论证方案一: 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是,实现的时间误差较大,所以不采用此方案。方案二: 采用ds1302时钟芯片实现时钟,ds1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年进行计数,而且精度高,位的ram做为数据暂存区,工作电压2.5v5.5v范围内,2.5v时耗电小于300na。1.4 电路设计最终方案决定综上各方案所述,对此次作品的方案选定: 采用at89s52作为主控制系统; ds1302提供时钟;lcd液晶显示屏作为显示。第二章系统的硬件设计与实现2.1 电路设计框图lcd液晶显示屏显示模块at89s52主控制模 块键盘模块 ds1302时钟模块 图2-1系统原理图2.2 系统硬件概述本电路是由at89s52单片机为控制核心,具有在线编程功能,低功耗,能在3v超低压工作;时钟电路由ds1302提供,它是一种高性能、低功耗、带ram的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5v5.5v。采用三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或ram数据。ds1302内部有一个31*8的用于临时性存放数据的ram寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能;采集由;显示部份由lcd液晶显示屏显示。2.3 系统核心部分闪电存储型器件at89s522.3.1 at89s52具有下列主要性能: 8kb可改编程序flash存储器(可经受1000次的写入/擦除周期) 全静态工作:0hz24mhz三级程序存储器保密1288字节内部ram32条可编程i/o线2个16位定时器/计数器6个中断源可编程串行通道片内时钟振荡器2.3.2 at89s52的引脚及功能at89s52单片机的管脚说明如图2-2所示。图2-2 at89s52的管脚(1) 主要电源引脚 vcc 电源端 gnd 接地端(2) 外接晶体引脚xtal1和xtal2 xtal1 接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的反相放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,既把此信号直接接到内部时钟发生器的输入端。 xtal2 接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。(3) 控制或与其它电源复用引脚rst、ale/prog、/psen和/ea/vpp rst 复位输入端。 当振荡器运行时,在该引脚上出现两个机器周期的高电平将使单片机复位。 ale/prog 当访问外部存储器时,ale(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ale端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是:每当访问外部数据存储器时,将跳过一个ale脉冲。在对flash存储器编程期间,该引脚还用于输入编程脉冲(/prog)6。 /psen 程序存储允许(/psen)输出是外部程序存储器的读选通信号。当at89s52/lv52由外部程序存储器取指令(或常数)时,每个机器周期两次/psen有效(既输出2个脉冲)。但在此期间内,每当访问外部数据存储器时,这两次有效的/psen信号将不出现。/ea/vpp 外部访问允许端。要使cpu只访问外部程序存储器(地址为0000hffffh),则/ea端必须保持低电平(接到gnd端)。当/ea端保持高电平(接vss端)时,cpu则执行内部程序存储器中的程序。(4) 输入/输出引脚 p0.0 p0.7、p1.0p1.7、p2.0 p2.7 和p3.0p3.7p0端口(p0.0 p0.7) p0是一个8位漏极开路型双向i/o端口。作为输出口用时,每位能以吸收电流的方式驱动8个ttl输入,对端口写1时,又可作高阻抗输入端用。p1端口(p1.0 p1.7) p1是一个带有内部上拉电阻的8位双向i/o端口。p1的输出缓冲器可驱动(吸收或输出电流方式)4个ttl输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。作输入口时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。 p2端口 (p2.0p2.7) p2是一个带有内部上拉电阻的8位双向i/o端口。p2的输出缓冲器可驱动(吸收或输出电流方式)4个ttl输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。p2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。p3端口(p3.0p3.7) p3口管脚是8个带内部上拉电阻的双向i/o口,可接收输出4个ttl门电流。当p3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,p3口将输出电流,这是由于上拉的缘故。p3口也可作为at89s52的一些特殊功能,这些特殊功能见表2-1。表2-1 p3端口的特殊功能 端口引脚 兼 用 功 能 p3.0rxd (串行输入口) p3.1txd (串行输出口) p3.2/int0 (外部中断0) p3.3/int1 (外部中断1) p3.4t0 ( 定时器0的外部输入) p3.5t1 (定时器1的外部输入) p3.6/wr (外部数据存储器写选通) p3.7/rd (外部数据存储器读选通) at89s52单片机为40引脚双列直插芯片,有四个i/o口p0,p1,p2,p3, mcs-51单片机共有4个8位的i/o口(p0、p1、p2、p3),每一条i/o线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,xtal1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,xtal2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。第9引脚为复位输入端,接上电容,电阻及开关后够上电复位电路,20引脚为接地端,40引脚为电源端。如图2-3 所示:图2-3 单片机的最小系统 2.4 时钟ds1302电路模块的设计2.4.1 ds1302芯片介绍低功耗时钟芯片ds1302可以对年、月、日、时、分、秒进行计时,且具有闰年补偿等多种功能。ds1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录。这种记录对长时间的连续测控系统结果的分析以及对异常数据出现的原因的查找有重要意义8。采用ds1302作为记录测控系统中的数据记录,其软硬件设计简单,时间记录准确,既避免了连续记录的大工作量,又避免了定时记录的盲目性,给连续长时间的测量、控制系统的正常运行及检查都来了很大的方便,可广泛应用于长时间连续的测控系统中。在测量控制系统中,特别是长时间无人职守的测控系统中,经常需要记录某些具有特殊意义的数据及其出现的时间。记录及分析这些特殊意义的数据,对测控系统的性能分析及正常运行具有重要的意义。传统的数据记录方式是隔时采样或定时采样,没有具体的时间记录,因此只能记录数据而无法准确记录其出现的时间;若采用单片机计时,一方面需要采用计数器,占用硬件资源,另一方面需要设置中断、查询等,同样耗费单片机的资源,而且某些测控系统可能不允许。而在系统中采用ds1302则能很好地解决这个问题。(1) ds1302的性能特性实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数;用于高速数据暂存的318位ram;最少引脚的串行i/o;2.55.5v 电压工作范围;2.5v时耗电小于300na;用于时钟或ram数据读/写的单字节或多字节(脉冲方式)数据传送方式;简单的3线接口;可选的慢速充电(至vcc1)的能力。ds1302时钟芯片包括实时时钟/日历和31字节的静态ram。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24h或带am(上午)/pm(下午)的12h格式。采用三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或ram数据。ds1302有主电源/后备电源双电源引脚:vcc1 在单电源与电池供电的系统中提供低电源,并提供低功率的电池备份;vcc2在双电源系统中提供主电源,在这种运用方式中,vcc1 连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。ds1302由vcc1或vcc2中较大者供电。当vcc2大于vcc1+0.2v时, 图2-4 ds1302管脚图vcc2给ds1302供电;当vcc2小于vcc1时,ds1302由vcc1供电。 ds1302在任始化,何数据传送时必须先初把rst脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在sclk的上升沿被输入。无论是读周期还是写周期,开始8位指定40个寄存器中哪个被访问到。在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8加8,在多字节方式下为8加字节数,最大可达248字节数。 图2-4 ds1302的管脚图电源控制输入移位寄存器实时时钟命令与逻辑318ram振荡器与分频器如果在传送过程中置rst为低电平,则会终止本次数据传送,并且i/o引脚变为高阻态。上电运行时,在vcc =2.5v之前,rst脚必须保持低电平。只有在sclk为低电平时,才能将rst置为高电平。内部结构图如图2-5所示,表2-2为各引脚的功能。 图2-5 ds1302内部结构 表2-2 ds1302引脚功能表引脚号引脚名称功能1vcc2主电源2,3x1,x2振荡源,外接32768hz晶振4gnd地线5rst复位/片选线6i/o串行数据输入/输出端(双向)7sclk串行数据输入端8vcc1后备电源 (2)ds1302数据操作原理(1) 时钟芯片ds1302的工作原理: ds1302的控制字节如图2-4所示。控制字节的最高有效位(位7)必须是逻辑1;如果它为逻辑0,则不能把数据写入到ds1302中。位6如果为0,则表示存取日历时钟数据;为1表示存取ram数据。位51(a4a0)指示操作单元的地址。最低有效位(位0)如为0,表示要进行写操作;为1表示进行读操作。控制字节总是从最低位开始输入/输出1ram cka4a3a2a1a0ram k 图2-6控制字节的含义为了提高对32个地址的寻址能力(地址/命令位15逻辑1),可以把时钟/日历或ram寄存器规定为多字节(burst)方式。位6规定时钟或ram,而位0规定读或写。在时钟/日历寄存器中的地址931或ram寄存器中的地址31不能存储数据。在多字节方式中,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写ram时,为了传送数据不必写所有31字节。不管是否写了全部31字节,所写的每一字节都将传送至ram。数据读写程序如图2-7所示。图2-7数据读写程序 实时时钟芯片ds1302采用串行数据传输,可为掉电保护电源提供可编程的充电功能,也可以关闭充电功能,芯片采用32768hz晶振。要特别说明的是,备用电源bt1可以用电池或超级电容(10万f以上)。虽然ds1302在主电源掉电后耗电很小,但如果要长时间保证时钟正常,最好选用小型充电电池。如果断电时间较短(几小时或几天),可以用漏电较小的普通电解电容代替(100f就可以保证1小时的正常走时)。ds1302在第一次加电后,需进行初始化操作。 ds1302时钟电路图如图2-8所示:图2-8 ds1302时钟电路 2.5 显示模块的设计如图2-9为lcd显示模块,和最小系统上的连线一样,无需修改。 图2-9 lcd液晶显示屏显示模块2.6 按键模块的设计如图2-10为按键电路。图2-10 按键模块 第三章系统的软件设计 3.1 程序流程框图开始初始化 读日期、时间 写日期、时间 显示子程序 时间修改子程序 日期修改子程序显示结果返回 开关控制子程序 图2-8主程序流程图 流程图说明:程序开始后,单片机at89s52和时钟芯片ds1302初始化,然后ds1302读入日期和时间程序,再将日期时间程序写入单片机at89s52中。写入程序后单片机运行子程序,将写入内容在显示屏上显示,然后运行开关子程序扫描按键运行时间和日期子程序,对扫描按键的结果即时间和日期进行修改,最后讲修改后的结果显示到显示屏上,即程序运行结束,返回。3.2时间调整程序流程图控制键有效,进入年调整程序减键有效加键有效开始控制键有效,进入月调整程序 等待按键程序 等待按键程序减键有效加键有效月加1年减1年加1按键有效,跳出时间调整程序,进入主循环程序分钟减1分钟加1加键有效 等待按键程序控制键有效,进入分钟调整程序小时减1小时加1减键有效加键有效 等待按键程序控制键有效,进入小时调整程序星期加1减键有效加键有效 等待按键程序日减1日加1减键有效加键有效 等待按键程序控制键有效,进入日调整程序月减1控制键有效,进入星期整程序星期减1减键有效 流程图说明:程序开始后,扫描控制键,若控制键有效即指示灯会亮的时候即可进入时间调整程序,等待安检程序,若加键有效即加一,减键有效则减一。完成调整后扫描按键,若按键有效则跳出时间调整程序进入主循环程序。第四章 结果分析及优化4.1 硬件测试电子万年历的电路系统较大,对于焊接方面更是不可轻视,庞大的电路系统中只要出于一处的错误,则会对检测造成很大的不便,而且电路的交线较多,对于各种锋利的引脚要注意处理,否则会刺被带有包皮的导线,则会对电路造成短路现象。在本成电子万年历的设计调试中遇到了很多的问题。回想这些问题只要认真多思考都是可以避免的,以下为主要的问题:(1)lcd液晶显示屏显示部分已经连在最小系统上,节省了不少时间和精力。(2)对万年历修改时间或日期时,有时lcd液晶显示屏被屏蔽掉,造成不亮现象。解决:根据仪器的测试,发现电路的驱动能力不足,最后在ds1302时钟芯片的/cs、sclk、ret端接入5.1k的上拉电阻后,电路的驱动能力才能满足,即可解决不亮现象。4.2 软件测试电子成年历是多功能的数字型,可以看当前日期,时间。电子成年历功能很多,所以对于它的程序也较为复杂,所以在编写程序和调试时出现了相对较多的问题。最后经过多次的模块子程序的修改,一步一步的完成,最终解决了软件。在软件的调试过程中遇到的主要问题是: 烧入程序后,lcd液晶显示屏显示亮度不好。 解决:将vee端直接接地或者接10k欧的滑动变阻器,一边旋转变阻器,一边观看lcd显示屏,知道看到合适的亮度为止。4.3 测试结果分析与结论4.3.1 测试结果分析 1.在测试中遇到lcd液晶显示屏为不显示时,首先使用试测仪对电路进行测试,观察是否存在漏焊,虚焊,或者元件损坏,滑动变阻器器没有调好:查看烧写的程序是否正确无误,对程序进行认真修改。4.3.2 测试结论经过多次的反复测试与分析,可以对电路的原理及功能更加熟悉,同时提高了设计能力与及对电路的分析能力。同时在软件的编程方面得到更到的提高,对编程能力得到加强,同时对所学的知识得到很大的提高与巩固。致 谢本课题在选题及研究过程中得到吴老师的悉心指导。吴老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。在此我表示衷心感谢。同时我还要感谢在我学习期间给我极大关心和支持的各位同学和朋友。感谢我的爸爸妈妈,焉得谖草,言树之背,养育之恩,无以回报,你们永远健康快乐是我最大的心愿。 在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!参考文献1 吴金戌,沈庆阳8051单片机实践与应用,北京:清华大学出版社,2003.12,26382 何立民单片机应用文集,北京:北京航空航天大学出版社,1991,53723 公茂法单片机人机接口实例集,北京:北京航空航天大学出版社,1998.2,32594 何立明单片机高级教程应用与设计,北京:北京航天航空大学出版社,2000.4,1491735 杨子文 编 单片机原理及应用 西安电子科技大学出版社 20066 楼然苗,李光飞mcs51系列单片机设计实例,北京:北京航天航空大学出版社,2001.3,75837 李华单片机原理与接口技术,北京:清华大学出版社,33808 王伟高性能、低功耗带ram实时时钟芯片ds1302(上),电子世界:第一期,1995,26359 王伟高性能、低功耗带ram实时时钟芯片ds1302(下),电子世界:第四期,1995,324110 刘光潭中外集成电路简明速察手册,上海:电子工业出版社,199111 张毅刚. 单片机原理及应用,高等教育出版社,200312 刘利液晶显示原理,上海:电子工业出版社,2002.5,527013 李宏,张家田液晶显示器件应用技术,北京:机械工业出版社,2004,15618314王法能 编 单片机原理及应用 科学出版社 200415陈正振 编 电子电路设计与制作 广西交通职业技术学院信息工程系 2007附录a 整个系统的电路原理图 系统的电路原理图附录b整体程序 #include #include /#include lcd1602.h/#include ds1302.h#define uint unsigned int#define uchar unsigned charsbit ds1302_clk = p35; /实时时钟时钟线引脚 sbit ds1302_io = p34; /实时时钟数据线引脚 sbit ds1302_rst = p36; /实时时钟复位线引脚sbit acc0 = acc0;sbit acc7 = acc7;char hide_sec,hide_min,hide_hour,hide_day,hide_week,hide_month,hide_year; /秒,分,时到日,月,年位闪的计数sbit sete = p30; /模式切换键sbit up = p31; /加法按钮sbit down = p32; /减法按钮sbit out = p33; /立刻跳出调整模式按钮char done,count,temp,flag,up_flag,down_flag;uchar tempbuffer5,week_value2;void show_time(); /液晶显示程序/*1602液晶显示部分子程序*/port definitions*sbit lcdrs= p25;sbit lcdrw= p26;sbit lcden = p27;sfr dbport = 0x80;/p0=0x80,p1=0x90,p2=0xa0,p3=0xb0.数据端口/内部等待函数*unsigned char lcd_wait(void)lcdrs=0;lcdrw=1;_nop_();lcden=1;_nop_();lcden=0;return dbport;/向lcd写入命令或数据*#define lcd_command0 / command#define lcd_data1 / data#define lcd_clear_screen0x01 / 清屏#define lcd_homing 0x02 / 光标返回原点void lcd_write(bit style, unsigned char input)lcden=0;lcdrs=style;lcdrw=0;_nop_();dbport=input;_nop_();/注意顺序lcden=1;_nop_();/注意顺序lcden=0;_nop_();lcd_wait();/设置显示模式*#define lcd_show0x04 /显示开#define lcd_hide0x00 /显示关 #define lcd_cursor0x02 /显示光标#define lcd_no_cursor0x00 /无光标 #define lcd_flash0x01 /光标闪动#define lcd_no_flash0x00 /光标不闪动void lcd_setdisplay(unsigned char displaymode)lcd_write(lcd_command, 0x08|displaymode);/设置输入模式*#define lcd_ac_up0x02#define lcd_ac_down0x00 / default#define lcd_move0x01 / 画面可平移#define lcd_no_move0x00 /defaultvoid lcd_setinput(unsigned char inputmode)lcd_write(lcd_command, 0x04|inputmode);/初始化lcd*void lcd_initial()lcden=0;lcd_write(lcd_command,0x38); /8位数据端口,2行显示,5*7点阵lcd_write(lcd_command,0x38);lcd_setdisplay(lcd_show|lcd_no_cursor); /开启显示, 无光标lcd_write(lcd_command,lcd_clear_screen); /清屏lcd_setinput(lcd_ac_up|lcd_no_move); /ac递增, 画面不动/液晶字符输入的位置*void gotoxy(unsigned char x, unsigned char y)if(y=0)lcd_write(lcd_command,0x80|x);if(y=1)lcd_write(lcd_command,0x80|(x-0x40);/将字符输出到液晶显示void print(unsigned char *str)while(*str!=0)lcd_write(lcd_data,*str);str+;/*ds1302时钟部分子程序*/typedef struct _systemtime_unsigned char second;unsigned char minute;unsigned char hour;unsigned char week;unsigned char day;unsigned char month;unsigned char year;unsigned char datestring11;unsigned char timestring9;systemtime;/定义的时间类型systemtime currenttime;#define am(x)x#define pm(x)(x+12) / 转成24小时制#define ds1302_second0x80 /时钟芯片的寄存器位置,存放时间#define ds1302_minute0x82#define ds1302_hour0x84 #define ds1302_week0x8a#define ds1302_day0x86#define ds1302_month0x88#define ds1302_year0x8c void ds1302inputbyte(unsigned char d) /实时时钟写入一字节(内部函数) unsigned char i;acc = d; for(i=8; i0; i-) ds1302_io = acc0; /相当于汇编中的 rrc ds1302_clk = 1; ds1302_clk = 0; acc = acc 1; unsigned char ds1302outputbyte(void) /实时时钟读取一字节(内部函数) unsigned char i; for(i=8; i0; i-) acc = acc 1; /相当于汇编中的 rrc acc7 = ds1302_io; ds1302_clk = 1;ds1302_clk = 0; return(acc); void write1302(unsigned char ucaddr, unsigned char ucda)/ucaddr: ds1302地址, ucdata: 要写的数据 ds1302_rst = 0; ds1302_clk = 0; ds1302_rst = 1; ds1302inputbyte(ucaddr); / 地址,命令 ds1302inputbyte(ucda); / 写1byte数据 ds1302_clk = 1; ds1302_rst = 0; unsigned char read1302(unsigned char ucaddr)/读取ds1302某地址的数据 unsigned char ucdata; ds1302_rst = 0; ds1302_clk = 0; ds1302_rst = 1; ds1302inputbyte(ucaddr|0x01); / 地址,命令 ucdata = ds1302outputbyte(); / 读1byte数
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校现金员管理制度
- 学校规范化管理制度
- 学生代管班管理制度
- 学生课间跑管理制度
- 安保部奖罚管理制度
- 宋朝对地方管理制度
- 定制类订单管理制度
- 实训室开放管理制度
- 审核相关方管理制度
- 客运驻站办管理制度
- 电力咨询费合同协议
- 2025-2030海洋环境监测行业市场深度调研及发展前景与投资研究报告
- 2025年中学生离队入团活动实施方案
- 玻璃基板制备技术考核试卷
- 南极磷虾油与红曲、辅酶Q10联用降低血脂效果研究
- 2025年上海市安全员C3证(专职安全员-综合类)考试题库
- 钱大妈加盟合同协议
- 基本公共卫生服务2025版培训
- 《建筑工程识图》课件-梁平法施工图识读一
- 上海杨浦区社区工作者考试真题2024
- 汽车智能制造技术考核试卷
评论
0/150
提交评论