毕业设计-基于STC89C52单片机的电子日程表设计.doc_第1页
毕业设计-基于STC89C52单片机的电子日程表设计.doc_第2页
毕业设计-基于STC89C52单片机的电子日程表设计.doc_第3页
毕业设计-基于STC89C52单片机的电子日程表设计.doc_第4页
毕业设计-基于STC89C52单片机的电子日程表设计.doc_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

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

文档简介

基于 stc89c52 单片机的电子日程表设计 摘摘 要要 本文借助电路仿真软件 protues 对基于 stc89c52 单片机的电子日程表的设计方法 及仿真进行了全面的阐述。在硬件方面,主要采用 stc89c52 单片机作为主控核心, 由 ds1302 时钟芯片提供时钟、12864lcm 点阵液晶显示屏显示;在软件方面,主要包 括日程事务提醒程序、万年历程序、时间调整程序、显示程序等。所有程序编写完成 后,在 keil 软件中进行调试,确定没有问题后,在 proteus 软件中嵌入单片机内进行仿 真。 论文主要研究了时钟芯片 ds1302 及液晶显示 lcm12864,温度传感器 ds18b20 与单片机之间的硬件互联及通信,对数种硬件连接方案进行了详尽的比较,另外,对 日历算法也进行了论述。 研究结果表明,由于日程表的应用相当普遍,所以其设计的核心在于硬件成本的 节约软件算法的优化,力求做到物美价廉,才能拥有更广阔的市场前景。 关键词:关键词:日程表日程表 单片机单片机 ds1302ds1302 液晶显示液晶显示 based on scm electronic schedule design abstract this article mainly discuss the design and simulation of electronic schedule based on stc89c52 with the assist of protues .on the hardware, the electronic schedule using stc89c52 microcontroller as the main control center, clocking provided by the ds1302 clock chip, display by dot matrix 12864lcm . on the software, including schedule program, time to adjust procedures, display procedures. all programming is complete, the keil software debugging, make sure there is no problem, in the proteus software embedded within the simulated scm. this article focus on liquid crystal screen lcm12864 and clock chip ds1302, ds18b20 the temperature sensor which use for connecting and communicating with microcontroller. several solutions will also be compared with each other. in addition,the algorithm of calendar will be discussed as well. the research result shows that it should be cheap and convenient so as to save more spending while electronic schedule are widely used in our daily life. keywords: schedule scm ds1302 lcm 目目 录录 绪论 1 第 1 章 日程表计时和显示方案 .3 1.1 日程表计时的方案选择 3 1.2 日程表显示的方案选择 4 第 2 章 系统的硬件设计 .5 2.1 系统硬件的整体设计 5 2.2 主控制模块的方案选择与设计 6 2.2.1 单片机 stc89c52 简介6 2.2.2 主控制模块电路.7 2.3 时钟模块的方案选择与设计 7 2.3.1 ds1302 原理及说明 时钟芯片简介 8 2.3.2 时钟模块电路.8 2.4 按键电路的设计 9 2.5 显示模块的方案设计 .10 2.5.1 图形点阵液晶显示器 12864 简介10 2.5.2 显示模块电路13 第 3 章 系统软件设计 14 3.1 编程语言选择 .14 3.2 系统主程序及流程图 .15 3.3 ds1302 时钟芯片的读操作流程图 .17 3.4 液晶模块的写操作流程图 .17 3.5 按键调整模块流程图 .19 第 4 章 实验与调试 20 4.1 硬件测试 .20 4.2 软件调试 .21 结 论 .23 致谢 .25 参考文献 .26 附录 a:电路原理图27 附录 b:元器件清单.28 附录 c:程序清单29 1 绪论绪论 一课题的背景与意义 近年来,随着电子产品的发展,数字日程表这项应用在人们工作和生活中起到越 来越重要的作用。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘 记当前的时间,忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。 但是,遇上重要事务,一时的耽误可能酿成大祸。 因此从人们的日常生活到公司办公,从台式电脑到便携式智能手机,都要求标配 上日程表的作用。人们要求随时随地都能快速准确的提醒当前事务,并且要求日程表 能够更直观、更可靠、更便宜。这种要求催生了新型日程表的产生。除此之外,由于 对社会责任的更多承担,人们要求所设计的产品能够产生尽量少的垃圾、能够消耗尽 量少的能量。因此人们对日程表的又有了体积小、功耗低的要求。 20 世纪末,电子技术获得了飞速的发展,在其推动下微机开始向社会各个领域渗 透同时大规模集成电路获得了高速发展,单片机的应用正在不断地走向深入,由于它 具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适 合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采 集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在 根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。 另外单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想 和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机 通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控 制技术的一次革命。 单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒 计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更 更长的使用寿命,因此得到了广泛的使用。传统的数字钟升级到日程表,将是最为可 行、廉价的方案。 这正符合了现代日程表的设计要求。另一方面,电子技术的告诉发展,有力地推 动了社会生产力的发展和社会信息化程度的提高,这些使时间显得更加宝贵,从时间 就是生命,时间就是效率这些名言警句中就能看出。 日程表是采用数字电路实现对时间显示的同时,能显示当前事务的计时装置,广泛 2 用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由 于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老 式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原 先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、 自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所 有这些,都是以钟表数字化为基础的。因此,研究数字日程表及扩大其应用,有着非 常现实的意义。 因此本论文所做的数字日程表采用了以单片机(stc89c52)为核心,结合相关的 外围元器件例如液晶显示、按键电路、复位电路、报警电路,再配以相应的软件,达 到制作简易数字钟的目的,能实现实时时钟显示的功能,能进行汉字事务、日历、时 间和实时温度的显示。其硬件部分难点在于元器件的选择、布局及焊接。 二课题任务与设计思路 时间是两时刻之间的时刻间隔 ,是一种最基本的环境参数,人门的生活与时间 息息相关,在工业生产过程中需要实时地观察事务,设定事务,因此研究时间的测量 方法和设计测量装置具有重要的意义。鉴于时间使用的普遍性和重要性,本课题选用 时间作为实时监测的参量。 本课题设计单片机与时钟芯片相结合的电路,实现实时显示事务和时间。按照课 题的要求,初步确定设计系统由主控模块、时钟模块、显示模块、键扫描电路模块共4 个模块组成。设计采tc89系列单片机,以汇编语言为程序设计的基础,设计出用液晶 显示事务、年、月、日、周、时、分、秒、温度的日程表。 3 第第 1 1 章章 日程表计时日程表计时和显示方案和显示方案 事务提醒时间的准确性是日程表首要考虑的问题。单片机的接口信号是数字信 号,要想用单片机获取时间这类非电信号的信息,必须使用时间芯片,将时间信息 转换为电流或电压输出。如果转换后的电流或电压输出是模拟信号,还必须进行 a/d 转换,以满足单片机接口的需要。如果是数字信号就可以直接送往单片机进行 数据处理。 1.1 日程表计时的方案选择日程表计时的方案选择 方案一:比较传统的基于单片机的时钟设计可以采用单片机内部的晶振来产生 脉冲,然后通过单片机内部的计时器经过分频产生秒脉冲,然后通过软件编程来实 现时钟的显示,这种设计方案的优点是外围器件少,电路简单清晰,电路焊接容易, 出问题的故障几率小。但是这种方案需由软件编程来实现秒脉冲的产生,编程相对 来说比较复杂,而且也不利于排故。另外由单片机内部时钟产生的秒脉冲由于受到 温漂的影响和程序执行时的延时的影响,而使的计时会产生不定的误差,即使设计 时间误差补偿程序也很难实现提供准确时间的功能。另外,这种电路设计方案的另 外一个设计要求就是晶振的选择要求晶振的振荡频率必须通过分频得到秒脉冲。这 种设计还有一个非常大的缺点就是如果单片机断电,时间计时就停止,再次上电时 又从初始设定重新计时,这样就需要在每次上电都调整时间,比较麻烦。 方案二:在传统的基于单片机的数字时钟设计的基础上经过一些改进,引入 ds1302 时间芯片,将电路的控制部分和计时部分分开,电路的控制部分为单片机, 计时部分为 ds1302 时间芯片。ds1302 芯片是独立计时,并且具有掉电保护功能, 内部自带锂电池,能够在断电的情况下继续计时,主电路恢复供电之后能够不必调 整时间,为时钟的日常操作省去了很大的麻烦,而且这种设计更节能,在需要观察 时间的时候比如白天就可以给主电路通电。而在夜晚不需要观察时钟的时候就可以 给主电路断电,这样可以节约大量能量。 时间芯片 ds1302 采用了内部集成晶振的电路,并且具有内部温漂补偿电路设计。 能够准确计时,提供精确的时间,这样就简化了电路的器件选择,另外也使程序的 设计更加简洁。在硬件设计方面,由于只增加了一个 ds1302 时间芯片,因此并不是 4 特别复杂,而且这种独立计时的设计使得产品排故更加方便。 比较上述两种方案可以看出,第二种方案计时更加准确而且电路硬件设计先对 来说并不复杂,软件设计更加简洁,因此采用第二种方案。 1.2 日程表显示的方案选择日程表显示的方案选择 方案一:时钟的显示可以用多位七段 led 数码管显示,七段 led 数码管显示耗 能多,而且显示位数有限,每增加一位都要在程序设计和硬件设计方面增加很多的 工作量,不利于电路的扩展,而且无法显示事务、年、月、日、星期这些汉字,使 得显示不够直观,灵活。但是这种设计方案在显示位数比较少时性价比比较高,价 格便宜, 方案二:采用点阵式数码管显示。点阵式数码管是由八行八列的发光二极管组 成,对于显示文字比较适合,而在本课题设计中的显示数字较多字符较少,而且此种 方案耗能多,不符合现代的节能理念,所以不用此种作为显示。 方案三:采用 lcd 液晶显示器显示。而 lcd 液晶显示则耗能少,能够显示事务、 年、月、日、星期等汉字,在显示方面更加灵活,而且改变显示时只要改变软件设 计就可以,不用改变硬件电路的设计,易于电路的功能扩展。电路的软件设计也很 简单。另外,这种设计硬件更加简洁。采用 lcd 液晶显示方案的缺点是在显示位数 比较少时,价格略显昂贵。 比较上述两种方案可以看出方案三耗能少,显示灵活,易于电路扩展而且不管 是软件设计还是硬件设计都比较简单,因此采用第三种设计方案。 综上所述,本设计采用独立计时,引入时钟日历芯片 ds1302 的设计方案,显示 使用 lcd 液晶显示。 5 第第 2 2 章章 系统的硬件设计系统的硬件设计 根据日程表实时提醒的功能要求,基于单片机的设计方案要运用集成时钟 芯片,实现实时数据记录,实现数据与出现该数据的时间同时记录。实时日程 表的要求: (1) 基本要求 a) 具有年、月、日、星期、时、分、秒等功能; b) 具备年、月、日、星期、时、分、秒校准功能; c) 具有事务文字提醒功能。 (2)创新要求 要求能够对时钟进行实时控制,并且可以测量和显示当前温度。 2.1 系统硬件的整体设计系统硬件的整体设计 主控芯片使用 51 系列 stc89c52 单片机,时钟芯片使用美国 dallas 公司推 出的一种高性能、低功耗、带 ram 和内置电池的实时时钟 ds1302。采用 ds1302 作为主要计时芯片,可以做到计时准确。更重要的是,ds1302 可以在外部电源 断电的情况下继续计时,在没有外部供电的情况下,ds1302 可以连续计时 10 年以上。系统由主控制器 stc89c52、时钟芯片 ds1302、lcd 液晶显示电路、键 扫描电路和通信系统模块电路组成。系统硬件设计框图如图 2-1 所示。 图 2-1 系统硬件设计框图 6 2.2 主控制模块的方案选择与设计主控制模块的方案选择与设计 系统的设计可采用数字电路实现,也可以采用单片机来完成。若用数字电 路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要 依赖数字电路的各功能模块的组合来实现4。若用单片机来设计完成,由于其 功能的实现主要通过软件编程来实现的,那么就降低了硬件电路的复杂性,所 以在该设计中采用单片机作为主控模块。另外这个课题设计的软件程序比较简 单,不需要很强大的单片机,只要用简单的单片机就可以满足要求,因此我选 用了性价比比较高的低端 stc89c52 单片机。 2.2.12.2.1 单片机单片机 stc89c52stc89c52 简介简介 stc89c52 是低电压,高性能 cmos 8 位单片机,片内含 8k bytes 的 可反复擦写的 flash 只读程序存储器和 256 bytes 的随机存取数据存储器 (ram) ,器件采用高密度、非易失性存储技术生产,与标准 mcs-51 指令系统 及 8052 产品引脚兼容,片内置通用 8 位中央处理器(cpu)和 flash 存储单元, 功能强大 stc89c52 单片机适合于许多较为复杂控制应用场合。stc89c52 单片 机为 40 引脚双列直插芯片,有四个 i/o 口 p0、p1、p2、p3,每一条 i/o 线都能 独立地作输出或输入。stc89c52 pdip 管脚封装,如图 2-2 所示。 图 2-2 stc89c52 pdip 管脚封装 7 2.2.22.2.2 主控制模块电路主控制模块电路 单片机 stc89c52 的 p0 口作为输入口。p0 与 ds1302 的 ad 相连,进行时间 数据的采集;p3.7(rd)与 ds1302 的 17 脚 ds 相连,p3.3 与 ds11302 的 19 脚 irq 相连,p2.7 与 ds1302 的 13 脚 cs 相连;30 脚 ale 与 ds1302 的 14 脚 as 相 连。单片机的第 18 引脚和 19 引脚接时钟电路,xtal1 接外部晶振和微调电容 的一端,xtal2 接外部晶振和微调电容的另一端。对外接电容的值虽然没有严 格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的 快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为 11.0592mhz, 电容应尽可能的选择陶瓷电容,电容值约为 22f。第 9 引脚为复位输入端, 接上电容,电阻后构成上电复位电路。20 引脚为接地端,40 引脚为电源端。 /ea 端(31 引脚)接+5v 电压。由此就构成了单片机主控模块的最小系统,如 图 2-4 所示。 p1.0/t2 1 p1.1/t2ex 2 p1.2/eci 3 p1.3/cex0 4 p1.4/cex1 5 p1.5/cex2 6 p1.6/cex3 7 p1.7/cex4 8 rst 9 p3.0/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.5/t1 15 p3.6/wr 16 p3.7/rd 17 xtal2 18 xtal1 19 vss 20 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 p2.7/a15 28 psen 29 ale/prog 30 ea/vpp 31 p0.7/ad7 32 p0.6/ad6 33 p0.5/ad5 34 p0.4/ad4 35 p0.3/ad3 36 p0.2/ad2 37 p0.1/ad1 38 p0.0/ad0 39 vcc 40 u1 stc89c52 vcc 24 ad5 9 ad4 8 ad3 7 ad2 6 ad1 5 ad0 4 ad7 11 mot 1 ad6 10 cs 13 as 14 r/w 15 ds 17 rst 18 sqw 23 gnd 12 irq 19 u2 ds12887 rd rd cs cs aleale rw rw int1 int1 vcc vcc s1 sw-pb s2 sw-pb s4 sw-pb s3 sw-pb 12 y111.0592mhz 10k r3 res2 10k r4 res2 10k r5 res2 10k r6 res2 10k r7 res2 10k r8 res2 10k r9 res2 10k r10 res2 d0 d1 d2 d3 d4 d5 d6 d7d0 d1 d2 d3 d4 d5 d6 d7 22pf c1 cap 22pf c2 cap 100pf c3 cap 1k r1 res2 vcc rst rst 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ths12864-12a u4 vcc vcc vcc 8 b 7 a 6 end 5 di 4 de 3 re 2 ro 1 u3 max485 vcc rd1 rd1 td1 td1 bell s5 sw-spst vss vdd v0 cs sib sclk db0 db1 db2 db3 db4 db5 db6 db7 psb nc rst nc ledk leda 一一一一 一一一一 一一一一一一 一一一一一一一一一一 一一一一 一一一一一一 一一一一 一一一一一一 一一一一一一 一一一一一一10k r11 10k r12 10k r? res2 10k r? res2 10k r? res2 vcc +5v 图 2-4 主控电路及其最小系统电路图 2.3 时钟模块的方案选择与设计时钟模块的方案选择与设计 方案一: 8 直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、 时、分、秒计数。采用此种方案虽然可以减少时钟芯片的使用,节约成本,但 是,实现的时间误差较大。所以不采用此方案。 方案二: 采用 ds1302 时钟芯片实现时钟,ds130 是美国 dallas 公司推出的一种高 性能、低功耗、带 ram 的实时时钟电路,它可以对年、月、日、周日、时、分、 秒进行计时,具有闰年补偿功能,工作电压为 2.5v5.5v。采用三线接口与 cpu 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 ram 数 据。ds1302 内部有一个 318 的用于临时性存放数据的 ram 寄存器。ds1302 是 ds1202 的升级产品,与 ds1202 兼容,但增加了主电源/后背电源双电源引脚, 同时提供了对后背电源进行涓细电流充电的能力。主要特点是采用串行数据传 输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。采用 普通 32.768khz 晶振4。因此,本设计中采用 ds1302 提供时钟。 2.3.12.3.1 ds1302ds1302 时钟芯片简介时钟芯片简介 ds1302 是 dallas 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历 和 31 字节静态 ram,可以通过串行接口与单片机进行通信。实时时钟/日历电 路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可 自动调整,时钟操作可通过 am/pm 标志位决定采用 24 或 12 小时时间格式。 ds1302 与单片机之间能简单地采用同步串行的方式进行通信,仅需三根 i/o 线: 复位(rst) 、i/o 数据线、串行时钟(sclk) 。时钟/ram 的读/写数据以一字节 或多达 31 字节的字符组方式通信。ds1302 工作时功耗很低,保持数据和时钟 信息时,功耗小于 1mw。 2.3.22.3.2 时钟模块电路时钟模块电路 时钟模块 ds1302 的 ad 口与单片机的 p0 口相连,进行时间、日历数据输出。 其它各功能端口的连接在主控电路中已有描述,不在赘述。另外 ds1302 的 12 脚与电源地相连,24 脚与电源相连。总线选择端口 mot 端与电源地相连。电路 图如图 2-8 所示。 9 p1.0/t2 1 p1.1/t2ex 2 p1.2/eci 3 p1.3/cex0 4 p1.4/cex1 5 p1.5/cex2 6 p1.6/cex3 7 p1.7/cex4 8 rst 9 p3.0/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.5/t1 15 p3.6/wr 16 p3.7/rd 17 xtal2 18 xtal1 19 vss 20 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 p2.7/a15 28 psen 29 ale/prog 30 ea/vpp 31 p0.7/ad7 32 p0.6/ad6 33 p0.5/ad5 34 p0.4/ad4 35 p0.3/ad3 36 p0.2/ad2 37 p0.1/ad1 38 p0.0/ad0 39 vcc 40 u1 p89c51rc2bn/01 vcc 24 ad5 9 ad4 8 ad3 7 ad2 6 ad1 5 ad0 4 ad7 11 mot 1 ad6 10 cs 13 as 14 r/w 15 ds 17 rst 18 sqw 23 gnd 12 irq 19 u2 ds12887 ls1 bell rd rd cs cs aleale rw rw int1 int1 vcc vcc s1 sw-pb s2 sw-pb s4 sw-pb s3 sw-pb 12 y1 6.000mhz 10k r3 res2 10k r4 res2 10k r5 res2 10k r6 res2 10k r7 res2 10k r8 res2 10k r9 res2 10k r10 res2 d0 d1 d2 d3 d4 d5 d6 d7d0 d1 d2 d3 d4 d5 d6 d7 22pf c1 cap 22pf c2 cap 100pf c3 cap 1k r1 res2 vcc rst rst 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ths12864-12a u4 vcc vcc vcc 8 b 7 a 6 end 5 di 4 de 3 re 2 ro 1 u3 max485 vcc rd rd td td -5v q1 2n3904 1k r2 res2 bell bell s5 sw-spst vss vdd v0 cs sib sclk db0 db1 db2 db3 db4 db5 db6 db7 psb nc rst nc ledk leda 图 2-8 时钟模块电路 2.4 按键电路的设计按键电路的设计 根据设计要求,系统的按键电路用 4 个按键和一个拨码开关就可以进行对 时间的调整,按键就采用最简单的点动式按钮,由单片机的 i/o 进行扫描,来 实现扫描按键功能。其中,时间调整按钮与单片机 stc89c52 的 p3.5 相连,其 功能是当按下此键时,开始选择事务,并可以调整年、月、日、星期、时、分、 秒,没按一次就改变一个相应的要改变的位;闹钟调整按钮与单片机 stc89c52 的 p3.4 相连,其功能是当按下此键时开始进行闹钟调整,并且每按一次就改变 一次要调整的位;加法按钮与单片机 stc89c52 的 p2.5 连,其功能是每按一次 此键就将相应的要改变的位的数值加一;减法按钮与单片机 stc89c52 的 p2.6 连,其功能是每按下一次此键就将要改变的位的数值减一;近远程选择按钮与 stc89c52 的 p2.4 相连。电路图如图 2-9 所示。 p1.0/t2 1 p1.1/t2ex 2 p1.2/eci 3 p1.3/cex0 4 p1.4/cex1 5 p1.5/cex2 6 p1.6/cex3 7 p1.7/cex4 8 rst 9 p3.0/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.5/t1 15 p3.6/wr 16 p3.7/rd 17 xtal2 18 xtal1 19 vss 20 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 p2.7/a15 28 psen 29 ale/prog 30 ea/vpp 31 p0.7/ad7 32 p0.6/ad6 33 p0.5/ad5 34 p0.4/ad4 35 p0.3/ad3 36 p0.2/ad2 37 p0.1/ad1 38 p0.0/ad0 39 vcc 40 u1 stc89c52 rd cs ale rw int1 s1 sw-pb s2 sw-pb s4 sw-pb s3 sw-pb rd1 td1 bell s5 sw-spst 一一一一一一 一一一一一一一一一一 一一一一 一一一一一一 10k r11 10k r12 10k r? res2 10k r? res2 10k r? res2 vcc +5v 图 2-9 按键电路 10 2.5 显示模块的方案设计显示模块的方案设计 此设计方案采用了 lcd 液晶显示,由于此设计不需要显示太多内容,因此 选用了 12232f 图形点阵液晶显示器。 2.5.12.5.1 图形点阵液晶显示器图形点阵液晶显示器 1286412864 简介简介 12864 是一种图形点阵液晶显示器,它主要由驱动器/列驱动器及 128*64 全点阵液晶显示器组成,可完成图形显示,也可以显示 8*4 个(16*16 点阵) 汉字。 12864lcd 的引脚说明如表 2-2 所示。 表 2-2 液晶模块 12864 的管脚说明 管脚号管脚名称 lever 管脚功能描述 1vss0 电源地 2vdd+5.0v 电源电压 3v0- 液晶显示器驱动电压 4d/i(rs)h/l d/i=“h”,表示 db7db0 为显示数据 d/i=“l”,表示 db7db0 为显示指令数据 5r/wh/l r/w=“h”,e=“h”数据被读到 db7db0 r/w=“l”,e=“hl”数据被写到 ir 或 dr 6eh/l r/w=“l”,e 信号下降沿锁存 db7db0 r/w=“h”,e=“h”ddram 数据读到 db7db0 7db0h/l 数据线 8db1h/l 数据线 9db2h/l 数据线 10db3h/l 数据线 11db4h/l 数据线 12db5h/l 数据线 13db6h/l 数据线 14db7h/l 数据线 11 15cs1h/l h:选择芯片(右半屏)信号 16cs2h/l h:选择芯片(左半屏)信号 17reth/l 复位信号,低电平复位 18vout-10v lcd 驱动负电压 19led+- led 背光板电源 20led- led 背光板电源 液晶显示模块的特殊寄存器说明: 在使用 12864lcd 前先必须了解以下功能器件才能进行编程。12864 内部功 能器件及相关功能如下: 1. 指令寄存器(ir) ir 是用于寄存指令码,与数据寄存器数据相对应。当 d/i=0 时,在 e 信 号下降沿的作用下,指令码写入 ir。 2数据寄存器(dr) dr 是用于寄存数据的,与指令寄存器寄存指令相对应。当 d/i=1 时,在下 降沿作用下,图形显示数据写入 dr,或在 e 信号高电平作用下由 dr 读到 db7db0 数据总线。dr 和 ddram 之间的数据传输是模块内部自动执行的。 3忙标志:bf bf 标志提供内部工作情况。bf=1 表示模块在内部操作,此时模块不接受外 部指令和数据。bf=0 时,模块为准备状态,随时可接受外部指令和数据。 利用 status read 指令,可以将 bf 读到 db7 总线,从检验模块之工作状态。 4显示控制触发器 dff 此触发器是用于模块屏幕显示开和关的控制。dff=1 为开显示(display off) ,ddram 的内容就显示在屏幕上,dff=0 为关显示(display off) 。 ddf 的状态是指令 display on/off 和 rst 信号控制的。 5xy 地址计数器 12 xy 地址计数器是一个 9 位计数器。高 3 位是 x 地址计数器,低 6 位为 y 地 址计数器,xy 地址计数器实际上是作为 ddram 的地址指针,x 地址计数器为 ddram 的页指针,y 地址计数器为 ddram 的 y 地址指针。 x 地址计数器是没有记数功能的,只能用指令设置。 y 地址计数器具有循环记数功能,各显示数据写入后,y 地址自动加 1,y 地址指针从 0 到 63。 6显示数据 ram(ddram) ddram 是存储图形显示数据的。数据为 1 表示显示选择,数据为 0 表示显 示非选择。ddram 与地址和显示位置的关系见 ddram 地址表。 7z 地址计数器 z 地址计数器是一个 6 位计数器,此计数器具备循环记数功能,它是用于 显示行扫描同步。当一行扫描完成,此地址计数器自动加 1,指向下一行扫描 数据,rst 复位后 z 地址计数器为 0。 z 地址计数器可以用指令 display start line 预置。因此,显示屏幕的起 始行就由此指令控制,即 ddram 的数据从哪一行开始显示在屏幕的第一行。此 模块的 ddram 共 64 行,屏幕可以循环滚动显示 64 行。 8. 字符显示 fyd12864-0402b 每屏可显示 4 行 8 列共 32 个 1616 点阵的汉字,每个显 示 ram 可显示 1 个中文字符或 2 个 168 点阵全高 ascii 码字符,即每屏最多 可实现 32 个中文字符或 64 个 ascii 码字符的显示。fyd12864-0402b 内部提供 1282 字节的字符显示 ram 缓冲区(ddram) 。字符显示是通过将字符显示编码 写入该字符显示 ram 实现的。根据写入内容的不同,可分别在液晶屏上显示 cgrom(中文字库) 、hcgrom(ascii 码字库)及 cgram(自定义字形)的内容。 三种不同字符/字型的选择编码范围为:00000006h(其代码分别是 0000、0002、0004、0006 共 4 个)显示自定义字型,02h7fh 显示半宽 ascii 码字符,a1a0hf7ffh 显示 8192 种 gb2312 中文字库字形。字符显示 ram 在液 晶模块中的地址 80h9fh。字符显示的 ram 的地址与 32 个字符显示区域有着 一一对应的关系,其对应关系如表 2-3 所示。 表 2-3 字符显示 ram 在液晶模块中的地址表 13 80h81h82h83h84h85h86h87h 90h91h92h93h94h95h96h97h 88h89h8ah8bh8ch8dh8eh8fh 98h99h9ah9bh9ch9dh9eh9fh 2.5.22.5.2 显示模块电路显示模块电路 显示模块电路如图 2-10 所示,液晶模块的 1 管脚接电源地,15 管脚用于 接电源地,19 管脚用于接电源地。2 管脚接电源给液晶显示器供电,3 管脚接 电源用于提供液晶显示器显示驱动电压,17 管脚接电源,20 管脚接电源用与提 供背景光。4 管脚接单片机的 p1.3 用于接收数据或者指令,5 管脚接单片机的 p1.4 选择数据被读写到什么位置,6 管脚接单片机的 p1.5 用于提供锁存信号。 p1.0/t2 1 p1.1/t2ex 2 p1.2/eci 3 p1.3/cex0 4 p1.4/cex1 5 p1.5/cex2 6 p1.6/cex3 7 p1.7/cex4 8 rst 9 p3.0/rxd 10 p3.1/txd 11 p3.2/int0 12 p3.3/int1 13 p3.4/t0 14 p3.5/t1 15 p3.6/wr 16 p3.7/rd 17 xtal2 18 xtal1 19 vss 20 p2.0/a8 21 p2.1/a9 22 p2.2/a10 23 p2.3/a11 24 p2.4/a12 25 p2.5/a13 26 p2.6/a14 27 p2.7/a15 28 psen 29 ale/prog 30 ea/vpp 31 p0.7/ad7 32 p0.6/ad6 33 p0.5/ad5 34 p0.4/ad4 35 p0.3/ad3 36 p0.2/ad2 37 p0.1/ad1 38 p0.0/ad0 39 vcc 40 u1 p89c51rc2bn/01 vcc 24 ad5 9 ad4 8 ad3 7 ad2 6 ad1 5 ad0 4 ad7 11 mot 1 ad6 10 cs 13 as 14 r/w 15 ds 17 rst 18 sqw 23 gnd 12 irq 19 u2 ds12887 ls1 bell rd rd cs cs aleale rw rw int1 int1 vcc vcc s1 sw-pb s2 sw-pb s4 sw-pb s3 sw-pb 12 y1 6.000mhz 10k r3 res2 10k r4 res2 10k r5 res2 10k r6 res2 10k r7 res2 10k r8 res2 10k r9 res2 10k r10 res2 d0 d1 d2 d3 d4 d5 d6 d7d0 d1 d2 d3 d4 d5 d6 d7 22pf c1 cap 22pf c2 cap 100pf c3 cap 1k r1 res2 vcc rst rst 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ths12864-12a u4 vcc vcc vcc 8 b 7 a 6 end 5 di 4 de 3 re 2 ro 1 u3 max485 vcc rd rd td td -5v q1 2n3904 1k r2 res2 bell bell s5 sw-spst vss vdd v0 cs sib sclk db0 db1 db2 db3 db4 db5 db6 db7 psb nc rst nc ledk leda 图 2-10 显示模块 14 第第 3 3 章章 系统软件设计系统软件设计 软件是系统的主要组成部分,也是整个调试的重点和难点工作。本设计采 用了汇编语言,因为汇编语言更接近机器语言,可以直接存取寄存器和 i/o, 编写的代码可以非常精确的被执行,可以编写出比一般编译系统高效的代码, 可以作为不同语言或不同标准的接口。因此,依据课题设计的要求,采用汇编 语言进行软件编程,用模块化程序设计思想,将软件划分成若干模块单元;包 括:ds1302 时钟显示模块、延时等模块,键盘扫描子程序,按键处理子程序模 块,通信中断子程序, 3.1 编程语言选择编程语言选择 汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令 采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具 体的操作用命令的形式写出来。汇编程序通常由三部分组成:指令、伪指令和 宏指令。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作, 例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用 汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见 的,用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经 汇编生成的可执行文件不仅比较小,而且执行速度很快16。 汇编语言程序归纳起来大概有以下几个主要特性。 1、与机器相关性 2、执行的高效率 3、编写程序的复杂性 4、调试的复杂性 下面简单列举几个领域以示说明,但不能把它们绝对化: 1、 适用的领域 要求执行效率高、反应快的领域,如:操作系统内核,工业控制,实时系 统等; 系统性能的瓶颈,或频繁被使用子程序或程序段; 15 与硬件资源密切相关的软件开发,如:设备驱动程序等; 受存储容量限制的应用领域,如:家用电器的计算机控制功能等; 没有适当的高级语言开发环境。 2、不宜使用的领域 大型软件的整体开发; 没有特殊要求的一般应用系统的开发等。 综上所说,汇编语言的特点明显,其诱人的优点直接导致其严重的缺点, 其“与机器相关”和“执行的高效率”导致其可移植性差和调试难。所以,我 们在选用汇编语言时要根据实际的应用环境,尽可能避免其缺点对整个应用系 统的影响。 3.2 系统主程序及流程图系统主程序及流程图 主程序的主要功能是显示最近需要备忘的事务和日期时间信息。在主程序 中,系统上电自动复位以后首先进行系统的液晶显示、时钟芯片 ds1302 初始化, 然后选择事务和读写日期、时间等信息,待数据读写结束后显示时钟。主程序 及流程图如下 3-1 所示: main() 图3-1 主程序流程图 tmod=0x11;/定时器0c初始化 th0=(65535-50000)/256; tl0=(65535-50000)%256; th1=(65535-50000)/256; tl1=(65535-50000)%256; ea=1; et0=1; et1=1; tr1=0; e=0; em=0; key_1 = 1;key_2 = 1;key_3 = 1;key_4 = 1;/初始键盘 16 yy=0xff;mo=0xff;dd=0xff;xq=0xff;hh=0xff;mm=0xff;ss=0xff; /刷新 beep = 0; delaym(900); beep = 1; lcm_init();/初始化液晶显示器 lcm_clr();/清屏 lcm_clr();/清屏 init_1302(); while(1) keydone();/键盘扫描 if(read1302(0xc4)=read1302(0x84) tr1=1; beep=0; led=0; else g_todolist_enable = 0; if(count=5) tr1=0; count=0; beep=1; led=1; 主程序说明,当主程序运行时,先将液晶显示器清屏,然后将单片机和时 钟日历芯片 ds1302 初始化,即将时钟的初始时间设定为 2012 年 5 月 24 日。 17 3.3 ds1302 时钟芯片的读操作流程图时钟芯片的读操作流程图 首先对时钟芯片 ds1302 初始化,经过对状态寄存器判断之后,对 ds1302 进行读操作,读操作时利用时钟日历地址相邻的特点,直接使地址增加,随后 判断数据是否读完了。若读完了,则返回主程序;若没有读完,则继续增加地 址,直到读数据完成为止。如图 3-2 所示。 图 3-2 ds1302 时钟芯片的读操作流程图 3.4 液晶模块的写操作流程图液晶模块的写操作流程图 本设计用的液晶模块是 12864 液晶模块,这个模块可以进行串口通信也可 以进行并口通信,由于单片机口线限制,在这里采用了串口设计思路。本设计 采用了分屏显示的原理,在时间显示时显示屏一,在时间调整时显示屏二,其 流程图分别如图 3-3、3-4 所示。 18 图 3-3 时间显示,屏一显示流程图 在屏一显示流程图中,显示设置液晶显示设置为全屏显示,显示界面没有 光标显示,年月日的显示从第二行第一个字符开始,时分秒的显示从第三行第 一个字符开始。 图 3-4 事务、时间调整显示,屏二显示流程图 19 在显示屏二时应先判断是否有调整时间的请求,如果有时间调整的要求即 有按键按下则显示此屏,显示此屏时先进行显示设置,因为要调整时间因此要 用光标表示出要调整的位,因此显示设置中要调整出光标,调整时间时先调出 当前时间,从当前时间开始调整,然后判断按键,根据按键来调整时间,调整 完成之后再返回时间显示即显示屏一。 3.5 按键调整模块流程图按键调整模块流程图 按键调整程序模块是用来选择事务和调整时间的,当 p3.4 按键按下时进入 时间调整界面,再按 p3.4 就会依次改变要调整的参量,依次调整的参量为年、 月、日、时、分、秒。当选择好了要调整的位后再按 p3.5 就会实现相应位的加 一操作,按 p2.6 就会实现相应位的减一操作。当调整完毕之后,再按 p3.4 键 就会返回时间显示界面,从刚才调整好的时间开始显示、计时。其流程图如图 3-5 所示 图 3-5 按键调整模块流程图 20 第第 4 4 章章 实验与调试实验与调试 验证理论的最好的方法是实践,因此本设计通过实验,用实物的调试来验 证之上设计的可行性。虽然现在很多设计采用仿真来模拟结果,但是放着和实 际还是有一定差距的,而且有些实际问题是仿真所不能显示的,为了更好的验 证本设计方案,因此本设计采用实物来验证。 4.1 硬

温馨提示

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

评论

0/150

提交评论