已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
河南科技大学课 程 设 计 说 明 书课程名称 单片机原理 题 目 电子日历时钟 院 系 电子信息工程学院 班 级 学生姓名 指导教师 叶宇程 日 期 20120611 课程设计任务书(指导教师填写)课程设计名称 单片机原理 学生姓名 专业班级 电气091 设计题目 电子日历时钟 一、 课程设计目的1. 培养学生文献检索的能力,如何利用Internet检索需要的文献资料。2. 培养学生综合分析问题、发现问题和解决问题的能力。3. 培养学生综合运用知识的能力和工程设计的能力。4. 培养学生理论联系实际的能力。5. 提高学生课程设计报告撰写水平。二、 设计内容、技术条件和要求1设计内容电子日历时钟系统主要功能为实时时间的显示,以AT89S51单片机为核心芯片,通过DS1302时钟芯片的功能扩展;在共阴极LED数码管上或LM1602液晶显示屏上显示出来。(1)时钟芯片选用DS1302;(2)数码管选用4位共阴极动态显示的数码管;(3)能实时显示年、月、日和时、分、秒,用数码管显示时,要求年、月、日与时、分、秒交替显示,间隔1秒;(4)可通过按键调节、设置当前时间。2 设计要求 设计单片机最小系统(包括复位按钮、晶振电路等); DS1302时钟芯片的控制设计。 时间调节按键的电路设计。 绘制实现本设计内容的硬件电路(原理图),系统的组成框图。 相应的控制状态表; 编写本课程设计内容的软件设计(包含程序流程图和对程序注释)。 硬件实验部分可选用实验箱测试或Proteus仿真软件实现。3 总体设计思想(供参考) 正常情况下运行主程序,定时读取时钟芯片的实时时间,先读年、月、日,再读时、分、秒; 时间调节可用1按键依次切换选择年、月、日、时、分、秒,相应位闪烁,另1按键每次加1 调节当前的时间设置。 按键控制建议采用外部中断执行中断服务子程序,设置相应的时间调节子程序。4 设计参考基于AT89S51单片机的电子日历时钟有电源电路、单片机主控电路、按键控制电路和显示电路组成,DS1302的寄存器、控制命令及参考电路如图1和表1、表2所示:图1 基于AT89S51单片机的交通信号灯控制系统框图表1 DS1302日历、时钟寄存器与控制字对照表寄存器名称765432101RAM/CKA4A3A2A1A0RD/W秒寄存器1000000分寄存器1000001小时寄存器1000010日寄存器1000011月寄存器1000100星期寄存器1000101年寄存器1000110写保护寄存器1000111慢充电寄存器1001000时钟突发寄存器1011111表2 DS14302内部主要寄存器分布表寄存器名称命令字取值范围各位内容写读76543210秒寄存器80H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN小时寄存器84H85H01-12或00-2312/240AHRHR日期寄存器86H87H01-28,29,30,310010DATEDATE月份寄存器88H89H01-1200010MMONTH周寄存器8AH8BH01-0700000DAY年份寄存器8CH8DH00-9910YEARYEAR5 知识点准备: +5V电源原理及设计; 单片机复位电路工作原理及设计(元件选择的依据); 单片机晶振电路工作原理及设计(元件选择的依据); 按键电路设计(了解常用按键设计方法)。 DS1302芯片特性、驱动设计及应用; LM1602液晶显示屏特性、驱动设计及应用; AT89S51单片机引脚资源、引脚分配等; 单片机汇编语言及程序设计(中断、延时子程序的设计)。三 时间进度安排按教学计划规定,单片机原理课程设计总学时为1周,其进度安排和时间大致分配如下:1. 十三周周一至周二 查阅资料、进行软、硬件初步设计;2. 十三周周三至周四 上机调试,发现问题,解决问题,完善课程设计;3. 十三周周五、周六总结设计过程,编写课程设计报告书。四 主要参考文献1、何立民. 单片机高级教程 第1版北京:北京航空航天大学出版社,20012、MCS51单片机应用设计 张毅刚 修林成 胡振江 编3、MCS51单片微型计算机原理与开发 王树勋 王朝玉 张新发 编4、徐爱钧 KEIL Cx V7.0单片机高级语言编程与uVision2应用实践,北京,电子工业出版社,20045、李全利、仲伟峰、徐军,单片机原理及应用,北京:清华大学出版社,2006五、设计分组及选题安排电气091、092,三个题目中每人任选一题。指导教师签字: 2012年05月20日目 录摘 要6关键词6第一章 设计要求与硬件选择61.2.1 单片机芯片的选择和介绍71.2.2 显示模块的选择和介绍81.2.3 时钟芯片的选择和介绍91.3 电路设计最终方案决定12第二章 系统的硬件设计与实现122.1 电路设计框图122.2 系统硬件概述132.3 主要单元电路的设计132.3.1 单片机主控模块的设计132.3.2 时钟电路模块的设计142.3.3 显示模块的设计152.3.4 按键模块的设计16第三章 系统的软件设计173.1 主函数设计173.1.1主程序流程图173.1.2主程序的具体实现183.2时钟DS1302子函数183.3液晶显示模块程序设计193.3.1液晶初始化子程序193.4按键扫描子程序21第四章 软件测试与硬件仿真234.1软件测试234.2硬件仿真23附 录23附录一:23附录二:24摘 要随着现代科技的快速发展,时间的不断流逝,从观太阳、摆钟到现在的电子时钟,人类凭借非凡的智慧不断研究,又创造出新的纪录。美国Dallas公司推出了一种具有涓细电流充电能能力的低功耗实时时钟时钟芯片DS1302。它可以对年、月、日、时、分、秒进行计时,还具有闰年补偿等多种功能,而且DS1302的使用寿命长,误差小。对于可调电子日历采用直观的数字显示,可以同时显示年、月、日、星期、时、分、秒信息,还具有时间校准等功能。该电路采用AT89S51单片机作为核心,功耗小,能在3V的低压工作,电压可选用3-5V电压供电。用LCD1602液晶显示,较直观。综上所述此可调电子日历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。关键词时钟电路DS1302LCD1602单片机AT89C51第1章 设计要求与硬件选择1.1 设计要求 具有年、月、日、时、分、秒等显示功能; 具备年、月、日、时、分、秒等校准功能;1.2 系统的硬件选择和介绍1.2.1 单片机芯片的选择和介绍AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统级引脚。它集Flash只读程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中,AMEL公司的功能强大、低价位AT89S51单片机可提供许多高性价比的应用场合,可灵活应用于控制领域。图1 AT89S51管脚图中央微处理器AT89S51主要性能参数:l 低功耗,能以3V的超低压工作l 与MCS51产品指令系统完全兼容l 芯片内集成了通用8位中央处理器和ISP Flash存储单元l 4k Bytes ISP(In-system programmable)的Flash只读程序存储器l Flash只读程序存储器可反复擦写1000次l 全静态工作模式:0Hz33MHzl 2个16位可编程定时计数器l 32个外部双向输入/输出(I/O)口l 2个全双工串行通信口l 看门狗(WDT)电路及双数据指针l 5个中断优先级2层中断嵌套中断l 片内时钟振荡器l 掉电模式冻结振荡器而保存RAM的数据l 三级程序加密锁l 具有在线编程可擦除技术AT89S51单片机综合了微型处理器的基本功能,按照实际需要,同时也考虑到设计成本与整个系统的精巧性,所以在本系统中就选用价格较低、工作稳定的AT89S51单片机作为整个系统的控制器。并且AT89S51具有在线编程可擦除技术,对所下载的程序能够加密,比较安全。当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。所以选择采用AT89S51作为主控制系统。1.2.2 显示模块的选择和介绍采用LCD液晶显示屏,液晶显示屏的显示功能强大,可显示大量文字,图形,显示多样,清晰可见,与普通数码管相比功耗较小,硬件连接简单。所以显示部分采用LCD1602液晶显示。1. LCD1602介绍字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。本系统选用LCD1602字符型液晶显示器,下图是其结构图介绍,如图2。图2 LCD1602结构图2. LCD1602的基本参数及引脚功能LCD1602分为背光和不带背光两种,基控制大部分为HD44780,带背光的比不带背光的厚,是否带背光在应用中并无差别, 1)LCD1602主要技术参数: 显示容量:162个字符 芯片工作电压:4.55.5V 工作电流:2.0mA(5.0V) 模块最佳工作电压:5.0V 字符尺寸:2.954.35(WH)mm2)引脚功能说明LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,各引脚接口说明如表1所示:表1:引脚接口说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:背光源正极。第16脚:背光源负极。1.2.3 时钟芯片的选择和介绍采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、月、年以及闰年补偿的年进行计数,而且精度高,RAM作为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA。1.DS1302 简介: DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部引脚分配如图5所示。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。2DS1302引脚排列:如下图3图3 DS1302的外部引脚分配引脚说明:1)Vcc1:后备电源,VCC2:主电源在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc10.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。2)X1、X2:振荡源,外接32.768kHz晶振。3)RST:复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc2.0V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。4)I/O为串行数据输入输出端(双向)。5)SCLK为时钟输入端。3.DS1302的控制字节 DS1302 的控制字如下图4所示。图4 DS1302控制字控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。4.数据输入输出(I/O) 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。 5.DS1302的寄存器 DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器与控制字对照表见表2,内部主要寄存器分布表见表3。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。 表2 DS1302日历、时钟寄存器与控制字对照表寄存器名称765432101RAM/CKA4A3A2A1A0RD/W秒寄存器1000000分寄存器1000001小时寄存器1000010日寄存器1000011月寄存器1000100星期寄存器1000101年寄存器1000110写保护寄存器1000111慢充电寄存器1001000时钟突发寄存器1011111表3 DS14302内部主要寄存器分布表寄存器名称命令字取值范围各位内容写读76543210秒寄存器80H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN小时寄存器84H85H01-12或00-2312/240AHRHR日期寄存器86H87H01-28,29,30,310010DATEDATE月份寄存器88H89H01-1200010MMONTH周寄存器8AH8BH01-0700000DAY年份寄存器8CH8DH00-9910YEARYEAR1.3 电路设计最终方案决定综上硬件的介绍所述,对此次作品的方案选定:采用AT89S51作为主控制系统;DS1302提供时钟;LCD1602液晶作为显示。第2章 系统的硬件设计与实现2.1 电路设计框图电路结构概述:本电路系统共分为五部分构成,分别为主控模块、振荡器、以及时钟电路、显示模块、键盘扫描电路。其中,振荡器为主控模块提供工作的时序信号,时钟电路提供时钟信号,并有时间显示模块显示出来,键盘扫描模块则提供时间的校正与修改。电路系统设计框图如图5。图5电路设计框图2.2 系统硬件概述本电路是由AT89S51单片机为控制核心,具有在线编程功能,低功耗,能在3V超低压工作;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31*8的用于临时性存放数据的RAM寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能,本电路采用DS1302单字节传送方式实现与主控机之间数据的传送;显示部分由液晶LCD1602构成。2.3 主要单元电路的设计2.3.1 单片机主控模块的设计1.单片机最小系统设计AT89S51单片机为40引脚双列直插芯片,有四个I/O口P0,P1,P2,P3, MCS-51单片机共有4个8位的I/O口(P0、P1、P2、P3),每一条I/O线都能独立地作输出或输入。单片机的最小系统如下图所示,18引脚和19引脚接时钟电路,XTAL1接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL2接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出,如图6。图6 单片机最小控制系统2单片机按键复位电路设计单片机复位系统如下图7所示,第9引脚为复位输入端,接上电容、电阻及开关后构成按键电平复位电路。图7 单片机按键复位系统2.3.2 时钟电路模块的设计1. DS1302的性能特性图8示出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始终是输入端。图8 时钟电路DS1302接线图2. DS1302数据操作原理DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置“0”,接着把RST端置“1”,最后才给予SCLK脉冲。DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,“WP”必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。2.3.3 显示模块的设计1.LCD1602液晶显示显示模块由主控模块和LCD1602构成,其硬件连接调试电路如图9所示:图9 LCD1602液晶显示模块电路2. LCD1602的一般初始化(复位)过程延时15mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)延时5mS写指令38H(不检测忙信号)以后每次写指令、读/写数据操作均需要检测忙信号写指令38H:显示模式设置写指令08H:显示关闭写指令01H:显示清屏写指令06H:显示光标移动设置写指令0CH:显示开及光标设置2.3.4 按键模块的设计根据设计要求需要选择三个独立按键分别为设置、加、减,按键模块如图10所示。图10 按键模块设计按键介绍:K1:功能键(设置键),本按键共有秒、分、时、日、月、年、返回共7个功能循环,设置按键按动一次,秒位置显示光标,每多按一次依次向下循环,到按动7次时返回。K2:加键,当光标处于相应位置时,此按键按动一次,该光标处的数值将增一,并且在相应的数据范围内循环。K3:减键,功能类似加键,只是当光标处于相应位置时,此按键按动一次,该光标处的数值将减一。 第3章 系统的软件设计3.1 主函数设计3.1.1主程序流程图在程序中,液晶写入有关函数会在DS1302的函数中调用,所以液晶程序要放在前面;当时间显示后方可设置,则键盘扫描子函数凡在DS1302的函数后面,具体流程图如下图11所示。 图11 主程序流程图3.1.2主程序的具体实现主程序:/*主函数*/void main()lcd_init(); /调用液晶屏初始化子函数ds1302_init(); /调用DS1302时钟的初始化子函数init(); /调用定时计数器的设置子函数/led=0; /打开LCD的背光电源 delay(80);while(1) /无限循环下面的语句:keyscan(); /调用键盘扫描子函数 3.2时钟DS1302子函数DS1302初始化子函数:void ds1302_init() /1302芯片初始化子函数(2012-06-12,09:45:05)RST=0;SCLK=0;write_1302(0x8e,0x00); /允许写,禁止写保护 /write_1302(0x80,0x05); /向DS1302内写秒寄存器80H写入初始秒数据05/write_1302(0x82,0x45); /向DS1302内写分寄存器82H写入初始分数据43/write_1302(0x84,0x09);/向DS1302内写小时寄存器84H写入初始小时数据09/write_1302(0x86,0x012); /向DS1302内写日期寄存器86H写入初始日期数据12/write_1302(0x88,0x06); /向DS1302内写月份寄存器88H写入初始月份数据06write_1302(0x8c,0x12); /向DS1302内写年份寄存器8cH写入初始年份数据12write_1302(0x8e,0x80); /打开写保护3.3液晶显示模块程序设计3.3.1液晶初始化子程序1.液晶初始化程序流程图在液晶显示子函数中,首先应对LCD1602进行初始化设置,然后再对显示数据的位置进行设置;在需要对时间进行校准时,还要设置光标的显示位置,其流程图如下图,图12 液晶初始化程序流程图2.液晶初始化具体函数如下:/*液晶初始化函数*/lcd_init()write_1602com(0x38);/设置液晶工作模式write_1602com(0x0c);/开显示不显示光标write_1602com(0x06);/整屏不移动,光标自动右移write_1602com(0x01);/清显示write_1602com(yh+1);/日历显示固定符号从第一行第1个位置之后开始显示for(a=0;a10;a+)write_1602dat(tab1a);/向液晶屏写日历显示的固定符号部分delay(3);write_1602com(er+2);/时间显示固定符号写入位置,从第2个位置后开始显示for(a=0;a8;a+)write_1602dat(tab2a);/写显示时间固定符号,两个冒号/delay(3);3.3.2液晶写入子程序1液晶写入子函数流程图,如图13所示。图13 液晶写入子函数流程图2.具体程序实现/*液晶写入指令函数与写入数据函数,以后可调用*/write_1602com(uchar com)/*液晶写入指令函数*rs=0;/数据/指令选择置为指令rw=0; /读写选择置为写P1=com;/送入数据delay(1);en=1;/拉高使能端,为制造有效的下降沿做准备delay(1);en=0;/en由高变低,产生下降沿,液晶执行命令write_1602dat(uchar dat)/*液晶写入数据函数*rs=1;/数据/指令选择置为数据rw=0; /读写选择置为写P1=dat;/送入数据delay(1);en=1; /en置高电平,为制造下降沿做准备delay(1);en=0; /en由高变低,产生下降沿,液晶执行命令3.4按键扫描子程序调整时间用3个调整按钮,1个作为功能控制用,另外2个分别作为加调整,减调整。时间调整程序流程图如图-B所示:图-B 时间调整程序流程图第4章 软件测试与硬件仿真4.1软件测试在开发软件Keil中,建立新工程,根据设计的相应模块电路接线图编写调用子函数,并且编写主程序,编译、运行,根据编译结果进行相应修改,最终得到符合系统要求的程序代码,并产生“HEX文件”。系统源程序代码见附录三。4.2硬件仿真在Proteus 软件中将设计的各个模块电路连接好,检查接线无误后,将软件测试产生的“HEX文件”烧录到AT89S51中,进行仿真测试,根据结果修改相应电路。系统电路图见附录一,Proteus仿真图见附录二。附 录附录一:系统电路图:附录二:Proteus仿真图附录三:电子日历时钟源程序:#include#define uint unsigned int#define uchar unsigned charuchar a,miao,shi,fen,ri,yue,nian,flag,key1n,temp;#define yh 0x80 /LCD第一行的初始位置,因为LCD1602字符地址首位D7恒定为1(100000000=80)#define er 0x80+0x40 /LCD第二行初始位置(因为第二行第一个字符位置地址是0x40)/液晶屏的与C51之间的引脚连接定义(显示数据线接C51的P0口)sbit rs=P35;sbit en=P37;sbit rw=P36; /如果硬件上rw接地,就不用写这句和后面的rw=0了 /DS1302时钟芯片与C51之间的引脚连接定义sbit IO=P22;sbit SCLK=P21;sbit RST=P20;sbit ACC0=ACC0;sbit ACC7=ACC7;/校时按键与C51的引脚连接定义sbit key1=P25; /设置键sbit key2=P26; /加键sbit key3=P27; /减键/*/uchar code tab1=20 - - ; /年显示的固定字符uchar code tab2= : : ;/时间显示的固定字符void delay(uint xms)/延时函数,有参函数uint x,y;for(x=xms;x0;x-) for(y=110;y0;y-);/*液晶写入指令函数与写入数据函数,以后可调用*/*液晶写入有关函数会在DS1302的函数中调用,所以液晶程序要放在前面*/write_1602com(uchar com)/*液晶写入指令函数*rs=0;/数据/指令选择置为指令rw=0; /读写选择置为写P1=com;/送入数据delay(1);en=1;/拉高使能端,为制造有效的下降沿做准备delay(1);en=0;/en由高变低,产生下降沿,液晶执行命令write_1602dat(uchar dat)/*液晶写入数据函数*rs=1;/数据/指令选择置为数据rw=0; /读写选择置为写P1=dat;/送入数据delay(1);en=1; /en置高电平,为制造下降沿做准备delay(1);en=0; /en由高变低,产生下降沿,液晶执行命令lcd_init()/*液晶初始化函数*write_1602com(0x38);/设置液晶工作模式,意思:16*2行显示,5*7点阵,8位数据write_1602com(0x0c);/开显示不显示光标write_1602com(0x06);/整屏不移动,光标自动右移write_1602com(0x01);/清显示write_1602com(yh+1);/日历显示固定符号从第一行第1个位置之后开始显示for(a=0;a10;a+)write_1602dat(tab1a);/向液晶屏写日历显示的固定符号部分delay(3);write_1602com(er+2);/时间显示固定符号写入位置,从第2个位置后开始显示for(a=0;a0;a-)IO=ACC0;SCLK=0;SCLK=1;ACC=ACC1;uchar read_byte()/读一个字节RST=1;for(a=8;a0;a-)ACC7=IO;SCLK=1;SCLK=0;ACC=ACC1;return (ACC);void write_1302(uchar add,uchar dat)/向1302芯片写函数,指定写入地址,数据RST=0;SCLK=0;RST=1;write_byte(add);write_byte(dat);SCLK=1;RST=0;uchar read_1302(uchar add)/从1302读数据函数,指定读取数据来源地址uchar temp;RST=0;SCLK=0;RST=1;write_byte(add);temp=read_byte();SCLK=1;RST=0;return(temp);uchar BCD_Decimal(uchar bcd)/BCD码转十进制函数,输入BCD,返回十进制 uchar Decimal; Decimal=bcd4; return(Decimal=Decimal*10+(bcd&=0x0F);void ds1302_init() /1302芯片初始化子函数(2012-06-12,09:45:05)RST=0;SCLK=0;write_1302(0x8e,0x00); /允许写,禁止写保护 /write_1302(0x80,0x05); /向DS1302内写秒寄存器80H写入初始秒数据05/write_1302(0x82,0x45); /向DS1302内写分寄存器82H写入初始分数据43/write_1302(0x84,0x09); /向DS1302内写小时寄存器84H写入初始小时数据09/write_1302(0x86,0x012); /向DS1302内写日期寄存器86H写入初始日期数据12/write_1302(0x88,0x06); /向DS1302内写月份寄存器88H写入初始月份数据06write_1302(0x8c,0x12); /向DS1302内写年份寄存器8cH写入初始年份数据12write_1302(0x8e,0x80); /打开写保护/时分秒显示子函数void write_sfm(uchar add,uchar dat)/向LCD写时分秒,有显示位置加、显示数据,两个参数uchar gw,sw;gw=dat%10;/取得个位数字sw=dat/10;/取得十位数字write_1602com(er+add);/er是头文件规定的值0x80+0x40write_1602dat(0x30+sw);/数字+30得到该数字的LCD1602显示码write_1602dat(0x30+gw);/数字+30得到该数字的LCD1602显示码/-/年月日显示子函数void write_nyr(uchar add,uchar dat)/向LCD写年月日,有显示位置数、显示数据,两个参数uchar gw,sw;gw=dat%10;/取得个位数字sw=dat/10;/取得十位数字write_1602com(yh+add);/设定显示位置为第一个位置+addwrite_1602dat(0x30+sw);/数字+30得到该数字的LCD1602显示码write_1602dat(0x30+gw);/数字+30得到该数字的LCD1602显示码/*键盘扫描有关函数*void keyscan()if(key1=0)/-key1为功能键(设置键)-delay(9);/延时,用于消抖动if(key1=0)/延时后再次确认按键按下 delay(20);while(!key1);key1n+;if(key1n=9)key1n=1;/设置按键共有秒、分、时、日、月、年、返回,7个功能循环switch(key1n)case 1: TR0=0;/关闭定时器/TR1=0;write_1602com(er+0x09);/设置按键按动一次,秒位置显示光标 write_1602com(0x0f);/设置光标为闪烁 temp=(miao)/10*16+(miao)%10;/秒数据写入DS1302 write_1302(0x8e,0x00); write_1302(0x80,0x80|temp);/miao write_1302(0x8e,0x80); break;case 2: write_1602com(er+6);/按2次fen位置显示光标 write_1602com(0x0f);break;case 3: write_1602com(er+3);/按动3次,shi write_1602com(0x0f);break;case 4: write_1602com(yh+0x0a);/按动4次,ribreak;case 5: write_1602com(yh+0x07);/按动5次,yuebreak;case 6: write_1602com(yh+0x04);/按动6次,nianbreak;case 7: write_1602com(0x0c);/按动到第7次,设置光标不闪烁TR0=1;/打开定时器 temp=(miao)/10*16+(miao)%10; write_1302(0x8e,0x00); write_1302(0x80,0x00|temp);/miao数据写入DS1302 write_1302(0x8e,0x80); break;/-加键key2-if(key1n!=0)/当key1按下以下。再按以下键才有效(按键次数不等于零)if(key2=0) /上调键delay(10);if(key2=0) delay(20);while(!key2);switch(key1n)case 1:miao+;/设置键按动1次,调秒if(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 故宫模板课件教学课件
- 街心广场课件教学课件
- 2024年度批量货物搬运与运输合同
- 2024年度某大型工程建设项目施工合同
- 2024年人工智能研究员全职合同
- 2024国际许可合同的格式国际许可合同的种类
- 2024年广告牌更新改造施工合同
- 2024规范的办公室装修合同范本
- 2024店面租房合同范本下载
- 2024年店面租赁升级协议
- 旅游景区公共信息导向系统规范与设计(旅游)
- 过程流程图,控制计划,PFMEA培训
- 六年级语文 六年级班家长会
- 内科学(肾脏-内分泌-血液)知到章节答案智慧树2023年温州医科大学
- 地理教育测量与评价
- 2023上海车展展前报告
- 事业单位奖励审批表主要事迹
- 六年级劳动与技术上册教案
- 马王堆导引术独立彩图版
- GB/T 26572-2011电子电气产品中限用物质的限量要求
- 公安警察局工作总结汇报ppt模板
评论
0/150
提交评论