基于液晶显示的万年历_毕业论文(编辑修改稿)内容摘要:

仅访问外部程序存储器(地址为0000HFFFFH), EA 端必须保持低电平(接地)。 需注意的是:如果加密位 LB1被编程,复位时内部会锁存 EA 端状态。 如 EA 端为高电平(接 Vcc 端), CPU则执行内部程序存储器的指令。 FLASH 存储器编程时,该引脚加上 +12V 的编程允许电源 Vpp,当然这必须是该器件是使用 12V 编程电压 Vpp。 XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。 于市面上大部分的字符型液晶。 管脚功能 图 22: LCD1602 引脚图 1602 采用标准的 16 脚接口,其中: 第 1 脚: VSS 为电源地 第 2 脚: VCC 接 5V 电源正极 第 3 脚: V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地 电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度)。 第 4 脚: RS 为寄存器选择,高电平 1 时选择数据寄存器、低电平 0 时选择无锡科技职业学 院毕业设计(论文) 基于液晶显示的万年历 11 指令寄存器。 第 5 脚: RW 为读写信号线,高电平 (1)时进行读操作,低电平 (0)时进行写操作。 第 6 脚: E(或 EN)端为使能 (enable)端 ,高电平( 1)时读取信息,负跳变时执行指令。 第 7~ 14 脚: D0~ D7 为 8 位双向数据端。 第 15~ 16 脚:空脚或背灯电源。 15 脚背光正极, 16 脚背光负极。 芯片 DS1302 DS1302 是 DALLAS 公司推出的涓流充电时钟芯片内含有一个实时时钟 /日历和 31 字节静态 RAM 通过简单的串行接口与单片机进行通信实时时钟 /日历电路提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可通过 AM/PM 指示决定采用 24 或 12 小时格式。 工作原理 DS1302 与单片机之间能简单地采用同步串行的方式进行通信仅需用到三个口线 1 RES 复位 2 I/O 数据线 3 SCLK串行时钟时钟 /RAM 的读 /写数据以一个字节或多达 31 个字节的字符组方式通信 DS1302 工作时功耗很低保持数据和时钟信息时功率小于 1mW。 DS1302 的管脚描述如表 21 所示。 表 21 DS1302 管脚 X1 X2 晶振管脚 GND 地 RST 复位 I/O 数据输入 /输出引脚 SCLK 串行时钟 Vcc1 Vcc2 电源供电管脚 无锡科技职业学 院毕业设计(论文) 基于液晶显示的万年历 12 引脚功能及结构 DS1302的引脚排列 ,其中 Vcc1为后备电源, VCC2为主电源。 在主电源关闭的情况下,也能保持时钟的连续运行。 DS1302由 Vcc1或 Vcc2两者中的较大 者供电。 当 Vcc2大于 Vcc1+, Vcc2给 DS1302供电。 当 Vcc2小于 Vcc1时, DS1302由 Vcc1供电。 X1和 X2是振荡源,外接 晶振。 RST 是复位 /片选线,通过把 RST输入驱动置高电平来启动所有的数据传送。 RST 输入有两种功能:首先, RST接通控制逻辑,允许地址 /命令序列送入移位寄存器;其次, RST 提供终止单字节或多字节数据的传送手段。 当 RST 为高电平时,所有的数据传送被初始化,允许对 DS1302进行操作。 如果在传送过程中 RST 置为低电平,则会终止此次数据传送, I/O 引脚变为高阻态。 上电运行时,在 Vcc≥ 之前, RST 必须保持低电平。 只有在 SCLK 为低电平时,才能将 RST 置为高电平。 I/O 为串行数据输入输出端 (双向 )。 SCLK 为时钟输入端。 数字温度传感器 DS18B20 工作原理 DS18B20的读写时序和测温原理与 DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由 2s 减为 750ms。 DS18B20测温原理如图 3所示。 图中低温度系数晶振的振荡 频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器 1。 高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器 2的脉冲输入。 计数器 1和温度寄存器被预置在-55℃所对应的一个基数值。 计数器 1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器 1的预置值减到 0时,温度寄存器的值将加 1,计数器 1的预置将重新被装入,计数器 1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器 2计数到 0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。 图 3中的斜率累加器用于补偿和修正测温过程 中的非线性,其输出用于修正计数器 1的预置值。 无锡科技职业学 院毕业设计(论文) 基于液晶显示的万年历 13 引脚定义 (1)DQ 为数字信号输入 /输出端; (2)GND 为电源地; (3)VDD 为外接供电电源输入端(在寄生电源接线方式时接地)。 图 23DS18B20内部结构图 无锡科技职业学 院毕业设计(论文) 基于液晶显示的万年历 14 第三章 硬件设计与实现 电子时钟至少包括秒信号发生器、时间显示电路、按键电路、供电电路等 四部分,另外,本设计要求该电子钟能够采集温度,所以还需要温度采集 电路 ,硬件电路框图如 图 31。 图 31 硬件电路框图 该系统使用 AT89C52 单片机为核心 微控制器 ,通过读取时钟日历芯片DS1302 和温度传感器 DS18B20 的数据,完成电子时钟的主要功能 ——时钟 /日历和环境温度采集,使用 比较 直观的 LCD1602 显示,同时显示年月日,星期,时分秒 以及环境温度值。 键盘是为了完成时钟 /日历的校准。 整个电路使用了 +5V电源供电。 单片机最小系统的设计 AT89S52 单片机为 40引脚双列直插芯片 ,有四个 I/O 口 P0,P1,P2,P3, MCS51单 片机共有 4 个 8 位的 I/O 口( P0、 P P P3),每一条 I/O 线都能独立地作输出或输入。 单片机的最小系统如图 31 所示 ,18 引脚和 19 引脚接时钟电路 ,XTAL1 接外部晶振和微调电容的一端 ,在片内它是振荡器倒相放大器的输入 ,XTAL2 接外部晶振和微调电容的另一端 ,在片内它是振荡器倒相放大器的输出。 第 9 引脚为复位输入端 ,接上电容 ,电阻及开关后够上电复位电路 ,20 引脚为接地端 ,40 引脚为电 AT89S52 LCD1602显示器 DS1302 时钟 温 度 传感 器DS18B20 键盘 +5V电源 无锡科技职业学 院毕业设计(论文) 基于液晶显示的万年历 15 源端。 图 32 单片机最小系统 时钟电路 的设计 本系统采用有 DS1302 串行时钟芯片作为主时钟电路,该电路使用单独的 的晶振和单独的电源供电,减小主控的负担。 电路图如图 33 所示。 图 33 时钟电路 温度采集模块的设计 采用数字式温度传感器 DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P 与 DS18B20 的 I/O 口连接加一个上拉电阻 ,Vcc 接电源 ,Vss 接地。 电路图如图 34所示。 无锡科技职业学 院毕业设计(论文) 基于液晶显示的万年历 16 图 34 温度采集电路 LCDM1602 显示模块设计 图 35 LCD显示电路 无锡科技职业学 院毕业设计(论文) 基于液晶显示的万年历 17 第四章 系统软件设计与实现 C51单片机可以应用汇编语言和 C语言进行编程。 汇编语言与机器语言指令一一对应 ,所以用汇编语言编写的程序在单片机里运行起来效率较高。 C语言程序可读性高 ,更便于理解 , 本设计采用 C语言编程 [11]。 主程序设计 第一次上电 ,系统先进行初始化 ,LCD显示初始时间 “ 03:25:00” ,并开始走时 ,初始日期为 “ 2020430”。 单片机依次开始调用 DS1302子程 序, DS18B20子程序,键盘子程序返回开头循环运行 [3]。 主序流程图如图 41。 图 41主序流程图 实时时钟日历子程序设计 该程序主要实现对 DS1302写保护、充电,对年、月、日、星期、时、分、秒等寄存的读写操作。 在读写操作子程序中都执行了关中断指令,因为在串行通开始 初始化 显示子程序 DS1302子程序 DS18B20子程序 延时程序 无锡科技职业学 院毕业设计(论文) 基于液晶显示的万年历 18 信时对时序要求比较高,而且在此是用 单片机内部 软件模拟串行时钟脉冲, 并由I/O口 输出, 所以在通信过程中最好保证传输的连续性,不要允许中断,其流程图如图 42。 DS1302每次上电 后 会 自动处于暂停状态,必须把秒寄存器的位 7置位 0,时钟才开始计时。 如果 DS1302一直没有掉电则不会存在此问题。 在进行写操作时,需要先解除写保护寄存器的 “禁止 ”状态。 当用多字节模式进行操作时,必须写够 8个字节。 图 42 对 DS1302操作流程图 环境温度采集子程序设计 DS18B20是 1wire单线器件,它在一根数据线上实现数据的双向传输,这就需要一定的协议来对读写数据提出严格的时序要求, AT89C51单片机并不支持单线传输。 因此,必须采用软件 的方法来模拟单线的协议时序 [6]。 主机操作单线器件 DS18B20必须遵循下面的顺序。 ; ROM操作命令 ; ;。 开始 初始化 写入时钟初值 开始计时 读出数据 返回 无锡科技职业学 院毕业设计(论文) 基于液晶显示的万年历 19 实现环境温度采集转换并读取数据的程序流程图 如图 43。 图 43 对环境温度采集转换并读取数据的程序流程图 开始 初始化DS18B20 发起 Skip Rom 命令 发起 Convert命令 延时 1s等待温度转换完成 初始化DS18B20 应答脉冲否。 发起 Read Scrarcpad命令 读低 8位字节 TL数据 读高 8位字节 TH数据 发出报警信号 是否超出设置温度范围 应答脉冲否。 无锡科技职业学 院毕业设计(论文) 基于液晶显示的万年历 20 按键子程序设计 单片机对键盘扫描的方法有随机扫描方式、定时扫描方式和中断扫描方式。 在随机扫描方式中, CPU完成某特定任务后,即执行键盘程序,以确定键盘有无按键输入,然后根 据按键功能转去执行相应的操作,在执行键盘按键规定的功能中不理踩键盘输入。 定时扫描方式与随机扫描方式基本相同,只是利用 CPU内的定时中断,每隔一定时间扫描有无按键按下,键盘反应速度快,在处理按键功能过程中,可以通过键盘命令进行干预,如取消、暂停等操作。 前两种扫描方式均会占用 CPU大量时间,不管有没有键入操作, CPU总要在一定的时间内进行扫描,这对于单片机控制系统是很不利的。 由于本设计中 AT89C51 单片机在系统中的主要任务是接收 DS1302 和 DS18B20 的数据并送出显示,完成时钟 /日历和日期 /温度的控 制, 89C51 单片机完全有能力完成以上工作,所以采用随机扫描方式,系统也能够正常运行。 无锡科技职业学 院毕业设计(论文) 基于液晶显示的万年历 21 第五章 测试结果分析与结果 测试结果分析 ( 1) 在测试中遇到 LEDLCD1602 不显示 分析 :首先使用试测仪对电路进行测试 ,观察是否存在漏焊 ,虚焊 ,或者元件损坏。 再接着研究程序的时序图是否正确。 最后发现程序时序方面出了点小错。 修改后就把问题解决了 ( 2) 测试中遇到调时间调到 2057 年后跳到 2020 年 分析 :认真研究时钟芯片的 Datasheet发现 ,对年的读取 ,读出后是。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。