单片机课程设计(论文)-电子万年历的设计.doc_第1页
单片机课程设计(论文)-电子万年历的设计.doc_第2页
单片机课程设计(论文)-电子万年历的设计.doc_第3页
单片机课程设计(论文)-电子万年历的设计.doc_第4页
单片机课程设计(论文)-电子万年历的设计.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

电子万年历的设计 第 1 页 共 14 页 目目 录录 1 设计要求 3 2 方案论证与对比 3 2.1 液晶显示器控制方式选择 3 2.2 并行接口动态显示电路选择 3 2.3 lcd 液晶显示器的接口方法选择.4 2.4 液晶显示器限流电阻选择 5 3 系统硬件电路的设计 6 3.1 主控模块 at89c52.6 3.2 显示模块电路设计 7 4 系统软件设计 8 4.1 系统软件概述 8 4.2 主要子程序设计 9 4.2.1 时钟中断服务子程序设计 9 4.2.2 时间调整子程序设计10 4.2.3 判断闰年子程序设计 .10 4.2.4 精度分析分析与计算 .11 4.2.5 第一次初值的设置 .11 4.2.6 重载初值的方法 .11 5 系统仿真与测试 .12 5.1 系统仿真 .12 5.2 功能测试 .12 6 总结 .13 参考文献.14 电子万年历的设计 第 2 页 共 14 页 1 设计要求设计要求 本课题以 at89c52 单片机为核心,设计并制作出智能 lcd 电子钟,具有以下 基本功能:能进行时间、年份、日期、星期显示;能区分是否闰年;能检测室温并 显示。扩展功能部分可以通过控制按键使时间暂停、可以调整校正时间并通过按键 切换轮流显示时间、年份、日期、星期。 2 方案论证与对比方案论证与对比 2.1 液晶显示器控制方式选择液晶显示器控制方式选择 采用 lcd 液晶显示,具有超精致影像画质、十足平面显示、节省空间、节省能 源等优点,但按控制方式不同,lcd 可分为被动矩阵式 lcd 及主动矩阵式 lcd 两 种。可根据不同需要采用不同的方式。 方案一 被动矩阵式 lcd 被动矩阵式 lcd 在亮度及可视角方面受到较大的限制,反应速度也较慢。由于 画面质量方面的问题,使得这种显示设备不利于发展为桌面型显示器,但成本低廉。 方案二 主动矩阵式 lcd 目前应用比较广泛的主动矩阵式 lcd,也称 tft-lcd(thin film transistor- lcd,薄膜晶体管 lcd)。tft 液晶显示器是在画面中的每个像素内建晶体管,可使 亮度更明亮、色彩更丰富及更宽广的可视面积。与 crt 显示器相比,lcd 显示器 的平面显示技术体现为较少的零件、占据较少的桌面及耗电量较小,但 crt 技术较 为稳定成熟。 相比之下,本设计当中选用方案二主动矩阵式 lcd 方式。 2.2 并行接口动态显示电路选择并行接口动态显示电路选择 可以采取串行接口动态显示电路或者并行接口动态显示电路,比较如下: 方案一 串行接口动态显示电路 利用 8051 系列单片机内部的串行接口,也可以实现动态显示及键盘处理。这样 不但可以节省 8051 的并行 i/o 接口,而且在大多数不用单行口的情况下,可免于扩 展接口。在这种方法中,串行口工作在方式 0 状态,相当于一个移位寄存器,其输 入/输出通过 rxd 引脚,移位脉冲则由 txd 输出。每次输入或输出 8 位数据(一个 字节)。每输出一个字节,8051 的硬件即自动使 scon 寄存器中的中断 ti 置位, 通过测试 ti 的状态,即可确定一个字节是否发送完毕。见图 2-1。 电子万年历的设计 第 3 页 共 14 页 图 2-1 串行接口动态显示电路框图 方案二 并行接口动态显示电路 直接用 p0 口作线选,p2 作位选连接数码显示管。见图 2-2 图 2-2 动态显示电路框图 方案一中的串行接口动态显示电路显示方法有个很大的缺点,一旦计算机不执 行显示程序,则显示立即停止。如要维持显示,则须花费计算机很多时间。而且在 本次课程设计中,我们也有足够的 i/o 口,因此,选择并行接口动态显示电路较好。 2.3 lcd 液晶显示器的接口方法选择液晶显示器的接口方法选择 方案一 以硬件为主的 lcd 显示接口电路 这种接口方法的电路图见图 2-3,可以看出,在数据总线和 lcd 之间,必须有 锁存器或 i/o 接口电路,此外,还应有专门的译码/限流电阻。通过译码器把 1 位十 六进制或 bcd 码译为相应的显示段码,然后由限流电阻限制电流防止显示器因电流 过大而烧坏。这种接口方法仅用一条输出指令,就可以进行 lcd 显示。但是所使用 的硬件电路较多,而硬件译码缺乏灵活性,只能显示十进制数或十六进制。 电子万年历的设计 第 4 页 共 14 页 图 2-3 硬件为主的 led 显示接口电路框图 方案二 以软件为主的 lcd 显示接口电路 这种接口方法的电路如图 2-4 ,它以软件查表代替硬件译码的方法,不但省去 了译码器,而且还能显示更多的字符,但是电阻限流是必不可少的。本次设计采用 这种接口电路。 图 2-4 以软件为主的 lcd 显示接口电路框图 2.4 液晶显示器限流电阻选择液晶显示器限流电阻选择 由于 lcd 的电流参数较小,为了防止因电流过大而被烧坏,能够帮助内存起到 稳压作用,让内存工作更稳定,因此必须加入限流电阻。限流电阻有两种实现方式, 比较如下: 方案一 直接用单个电阻限流 直接用单个电阻进行限流,散热快,但是既占空间又接线麻烦。 方案二 用排阻进行限流 用多个电阻排列而成的排阻能减少占用的空间,易于连线。 综上分析,本设计采用方案二排阻限流。 电子万年历的设计 第 5 页 共 14 页 3 系统硬件电路的设计系统硬件电路的设计 经上述比较,本次作品采用以 at89c52 为核心的单片机最小系统板,显示模块 采用数码管动态扫描显示。经过方案论证与比较,选择出最优方案的系统总体方案 框图如图 3-1 所示。 3.1 主控模块主控模块 at89c52 主控模块采用的是 at89c52 单片机芯片。at89c52 是一个低电压,高性能 cmos 8 位单片机,片内 8kb rom 全部采用 flash rom 技术,晶振时钟为 12mhz。器件采用 atmel 公司的高密度,肥易失性存储技术生产,兼容标准 mcs-51 指令系统,骗内置 通用 8 位中央处理器和 flash 存储单元。 at89c52 是标准的 40 引脚双列直插式集成电路芯片,有 4 个八位的并行双向 i/o 端口,分别记作 p0、p1、p2、p3。3 个 16 位可编程定时计数器,2 个全双工串 行通信口,2 个读写口线。 第 31 引脚需要接高电位使单片机选用内部程序存储器。p0-p3 为可编成通用输 入输出引脚,其功能用途由软件定义。第 9 引脚是复位引脚,要接一个上电手动复 位电路;第 40 脚为电源端 vcc,接+5v 电源,第 20 引脚为接地端 vss,通常在 vcc 和 vss 引脚之间接 0.1f 高频滤波电容。第 18、19 脚之间接上一个 12mhz 的晶振 为单片机提供时钟信号。主控模块电路图见图 3-2。 按键模块 电源 时间调整模块 显示模块 温度显示 星期显示 时间显示 年份显示 显示 主控模块 图 3-1 系统总体方 案框图 电子万年历的设计 第 6 页 共 14 页 图 3-2at89c52 单片机芯片 3.2 显示模块电路设计显示模块电路设计 p2 是一个带有内部上拉电阻的 8 位双向 i/o 口,p2 的输出缓冲级可驱动 (吸收或输出电流) 4 个 ttl 逻辑门电路。对端口 p2 写“1”,通过内部的上 拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上 拉电阻,某个引脚被外部信号拉低时会输出一个电流 (iil)。在访问外部程序存 储器或 16 位地址的外部数据存储器(例如执行 movx dptr 指令)时,p2 口 送出高 8 位地址数据。在访问 8 位地址的外部数据存储器(如执行 movx ri 指令)时,p2 口输出 p2 锁存器的内容 。flash 编程或校验时, p2 亦接收高位 地址和一些控制信号。 p0 口是一组 8 位漏极开路型双向 i/o 口, 也即地址/数据总线复用口。 作为输出口用时,每位能吸收电流的 方式驱动 8 个 ttl 逻辑门电路,对端口 p0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时, 这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上拉 电阻。 在 flash 编程时,p0 口接收指令字节,而在程序校验时,输出指令字 节,校验时,要求外接上拉电阻。 本设计中要对时间、温度进行显示。单片机 at89c52 的 p2 口分别接 lcd 控制 屏幕的显示。而 p0 口用来显示信息的输入,为了防止电流过大而烧坏 lcd,所以用 排阻 respack-8 来限流。液晶显示电路图见图 3-3。 电子万年历的设计 第 7 页 共 14 页 图 3-3 显示模块电路 4 系统软件设计系统软件设计 4.1 系统软件概述系统软件概述 在编程上,首先进行了初始化,定义程序的入口地址以及中断的入口地址,在主 程序的开始定义了一组固定单元用来存储计数的分、秒、年、月、日、星期的存储 单元。调用闰年判断程序后,进入主程序中循环。在主程序中,对不同的按键进行 扫描,实现秒表,时间调整、开关屏设置等扩展功能。时钟计时利用定时器 t0 中断 子程序实现,秒表和时间调整闪烁程序由定时器 t1 的中断服务子程序实现。考虑到 实用性,在该电子钟的时间调整时采用了闪烁,而开关屏设置采用了符号标志。在自 动开、关屏设置子程序中,另外开辟内存单元用来存放开、关屏设置时间,而在另 外的子程序中不断比较当前时间是否和设置时间相等并设置标志位,然后程序中检 测标志位,从而实现开、关屏操作。系统总体流程图见图 4-1。 电子万年历的设计 第 8 页 共 14 页 4.2 主要子程序设计主要子程序设计 显示完毕后,p2 口和 p1 口复位,准备下一轮的显示。在系统总体流程设计思 想的指导下,分模块对程序进行设计,主要模块设计有时钟中断服务子程序设计、 时间调整子程序设计、判断闰年子程序设计等。各子程序分析如下: 4.2.1 时钟中断服务子程序设计 首先设定定时器 t0 的初值,t0 的最大定时不足 1s,为便于计算,取定时 50ms。这样每 50ms 中断 1 次,中断 20 次为 1s。50ms 的定时初值的计算如下: 0.05/(1/12*106/12))=c350h ,补码为 3cb0h。启动定时器后,运行中断服务程 序。在中断服务程序中,由秒信号来计数,当达到 60 后向“分”进位;分计数,当 达到 60 后向“时”进位;时计数,当达到 24 后向“日”进位;日计数,日超出当 月上限后进位到“月”;月计数,当月计数到达 12 后向“年”进位,在日计数 图 4-1 系统总体流程图 电子万年历的设计 第 9 页 共 14 页 程序中,日每增加一天,都对星期进行调整,具体为:若上一天不是星期日,则直 接在星期上加一,若上一天是星期日,则当前星期变为星期一。 4.2.2 时间调整子程序设计 在主程序中通过按键进入时间调整界面,可实现年、月、日、星期及时间的调 整。每次调整时,调用闪烁程序,使相应的位闪烁,再通过按键进行加减调整。闪 烁程序也采用定时器 t1 中断实现,每次计时 50ms,中断 6 次也就是 0.3 秒过后, 闪烁标志位取反,显示熄灭。 在时间显示子程序中,单片机向 p0 口送段选信号,向 p2 口送位选信号,数码 管采用动态扫描方式,位选信号每次左移一位,每次点亮一个数码管,一轮 4.2.3 判断闰年子程序设计 程序中年每加一,则调用一次判断闰年子程序,再通过置标志平 20h.3,以便 于以后的程序识别(如在月加一程序中,就需要知道是否是闰年的 2 月还是平年的 2 月)。判断闰年子程序的设计思想是:不能被 4 整除的年份不是闰年;能被 100 整除但不能被 400 整除的年份不是闰年。闰年判断流程图见图 4-2。 图 4-2 显示子程序流程图 电子万年历的设计 第 10 页 共 14 页 4.2.4 精度分析分析与计算 在 mcs-51 单片机中,脉冲源是由系统的晶振经过 12 分频后获得的,故定时器 计数脉冲4周期为:t=12/fosc (1) 4.2.5 第一次初值的设置 根据(1)式可以分别算出定时器四种工作方式的最大计时时间。但实际应用中, 经常会有不同定时值的要求,可以采用预置数的方法来实现。例如,方式 1 的最大 计数为 65536,现在假设需要定时计数 100,那么我们可以设预置数为 65436,让定 时器经过 100 个脉冲周期后,就可达到 65536。我们称定时器中这种预置数为定时 器的第一次初值。下面推导第一次初值设置的公式。 设定时器在某种工作方式下计数的最大值为 m(见表 1),x0 为第一次初值,t 为(1)式的计数周期,t 为要求定时的溢出时间,则有: t=(m -x0)*t (2) 上式可化为: x0=m -t/t (3) 4.2.6 重载初值的方法 设置定时器第一次初值后并启动定时器,定时器开始计数。若定时器中断处于 开放状态,当定时器计满后,将会引发定时中断(t0 中断入口地址为 000bh),执行 相应的中断处理程序。定时器只有工作在方式 2 下方可自动重载前次初值,其余三 种方式都不能自动重载。因此,当希望定时器继续定时,需要在中断处理程序中重 新赋定时器初值。我们称这种在中断处理程序中重新赋定时器的初值为定时器的重 载初值。在定时精度要求不高的系统中,定时器的重载初值可以与第一次的初值相 同,即可按(3)式重载。但在定时精度要求较高的场合,就不能简单地按(3)式重载。 因为从定时器计满发出溢出中断请求到重载初值,存在一定的时间间隔,造成定时 的延迟。这个时间间隔包含两部分的延迟,第一是中断响应所需的延迟,包括执行 转向中断服务程序的跳转指令所需要的 2 个机器周期和等待正在执行的指令执行完 毕所需要 14 个机器周期;第二是重载初值所需的延迟,包括从中断服务程序第一 条指令到重载初值之间所有指令的执行机器周期数。综合以上两个延迟因素,考虑 到计数的方便性,我们可以在中断服务程序中加入一条定时器停止计数指令,待重 载初值后,再加入一条定时器启动计数指令,使定时器重新计数。通过这样的技术 处理后,以上的延迟时间等效于两个部分,即从定时器计数溢出后自动从 0 开始计 数到关闭定时器计数所消耗的时间和关闭定时器到打开定时器所消耗的时间。前部 分时间可从定时器读出,后部分时间为从关闭定时器到打开定时器之间所有指令的 执行时间。综上所述,设 z 定时器计数溢出后自动从 0 开始计数到关闭定时器计数 所需要的时间,y 关闭定时器到打开定时器所需要的时间,x1 为重载初值,则: 电子万年历的设计 第 11 页 共 14 页 (m -x1+y+z)*t=t (4) 上式可化为: x1=m-t/t+y+z (5) 5 系统仿真与测试系统仿真与测试 5.1 系统仿真系统仿真 在仿真过程中,软件运用到 wave 6000 和 proteus 7.12,先用 wave 6000 进行 编程测试再通过 proteus 7.12 进行硬件仿真。本单片机课程设计仿真效果如图 5- 1。 图 5-1 系统仿真效果图 5.2 功能测试功能测试 表 1 功能测试 计时功能 lcd 能显示当前的时、分、和秒,具体是时跟分一起 显示,分跟秒一起显示,通过按键来切换 星期显示功能 通过按键可以切换到星期显示的界面,按返回键则重 新回到主界面显示 时间调整功能 通过按键可以调整或设定年、月、日、星期、时、分, 且能实现秒的微调功能 电子万年历的设计 第 12 页 共 14 页 室温检测并显示功能 通过智能传感器 ds18b20 能够实现检测功能,并通过 lcd 能完成液晶显示功能 闰年功能 能计时到万年,且能自动判断闰年与平年,并实现正 确的计时操作 经过反复测试,本系统已能达到设计所要求的所有功能。 6 总结总结 通过十天的设计和调试,终于完成了设计任务,系统测试后,各项指标都达到 了规定要求。我的设计,在完成了预期功能的同时,另外我新增了时间暂停功能。 设计过程中也遇到过很多困难,特别是调试,花去了大量的时间,出不来预期 的效果。刚开始,在软件的编写与修改过程中也花费了大量的时间,主要是在平时 的学习过程中,对程序的编写不熟练,许多问题凸现出来,成了拦路虎。由此可知 自己的水平还是相当有限,在以后的专业学习当中应该更加认真,更加深入地学习, 在这次的设计中,经过自己的多次选材与调试,多参与实践,多通过实例来锻炼自己的 实际操作和解决问题的能力。后来出现问题时,我总是误以为是软件问题,查了好 久才查出是一个

温馨提示

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

最新文档

评论

0/150

提交评论