基于单片机的测温万年历 毕业论文_第1页
基于单片机的测温万年历 毕业论文_第2页
基于单片机的测温万年历 毕业论文_第3页
基于单片机的测温万年历 毕业论文_第4页
基于单片机的测温万年历 毕业论文_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、目目 录录 1 绪论 .1 1.1 课题研究的背景.1 1.2 课题的研究目的与意义.1 1.3 课题研究的主要内容.1 2 系统功能要求与总体设计 .3 2.1 系统功能要求.3 2.2 系统方案选择.3 2.3 系统总体设计 .4 3 系统硬件设计 .6 3.1 单片机主控模块的设计 .6 3.1.1 at89s52 功能特性.6 3.1.2 at89s52 引脚结构介绍.6 3.1.3 单片机最小系统.9 3.2 时钟电路模块的设计 .10 3.2.1 ds1302 简介.10 3.2.2 ds1302 与单片机接口电路.11 3.3 温度采集模块的设计 .13 3.3.1 ds18b2

2、0 简介.13 3.3.2 ds18b20 与单片机接口电路.14 3.4 键盘显示模块的设计 .15 3.4.1 按键电路的设计.15 3.4.2 显示电路的设计.16 3.5 电源电路设计 .18 4 系统软件设计.20 4.1 主程序设计 .20 4.2 时钟子程序的设计 .21 4.3 测温子程序 .22 4.4 显示子程序 .23 5 系统仿真与测试.24 5.1 proteus isis 简介 .24 5.1.1 启动 proteus.24 5.1.2 proteus 运行界面.25 5.1.3 proteus 功能仿真.25 5.2 系统仿真结果 .26 5.3 系统测试 .28

3、 结束语.30 致 谢.31 参考文献.32 附 录.33 附录一:整机原理图.33 附录二:整机 pcb 图.34 附录三:部分源程序.35 电子万年历的设计与实现 摘 要 本文介绍一种基于 at89s52 单片机的带温度显示的数字万年历的实现方法,系 统包括单片机最小系统模块、时钟计时模块、温度采集模块、键盘显示模块。时钟 模块采用高性能时钟芯片 ds1302,温度采集模块采用 ds18b20 集成温度传感器, 显示模块以 lcd1602 液晶屏作为显示。能够实现年、月、日、时、分、秒、星期、 温度同时显示,而且能区分平年、闰年和月份的大小并带有掉电保护、整点报时及 闹钟等功能。该系统具有

4、电路设计新颖、功耗低、体积小、显示清晰等优点。 关键字: at89s52/万年历/ds1302/ds18b20 the design and implementation of the electronic calendar abstarct this paper introduces a at89s52 scm with temperature of based on the digital display calendar design, system including single chip minimize system module, clock module, temperatu

5、re acquisition module, keyboard display module. the clock module by high performance clock chip ds1302, temperature gathering module uses integrated temperature sensor ds18b20, display module to lcd1602 as display lcd screen. to realize the date and time, minutes and seconds, week, temperature shows

6、 at the same time, and can distinguish between ping nian, leap year and the size of the month with power lost protection, on the hour and the alarm clock time etc. function. the system has a circuit design novel, low power consumption, small volume, showed clear advantages. key word: at89s52, calend

7、ar, ds1302, ds18b20 1 绪论 1.1 课题研究的背景 二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟 表业界的第三次革命。第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源 使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟 或表。第二次革命是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表, 使钟表的工作时日差从分级缩小到秒级。第三次革命就是单片机数码计时技术的应 用(电子万年历) ,使计时产品的走时日差从分级缩小到 1/600 万秒,从原有传统指 针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了

8、 全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生 活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步1。 随着当今世界经济的快速发展和信息化时代的来临,各种各样的小型智能家电 产品陆续出现在我们的生活中。日历是人们不可或缺的日常用品。万年历目前已经 不再局限于以纸质形式出现。以电脑软件或者电子产品形式出现的万年历被称为电 子万年历。与传统纸质形式的万年历相比,电子万年历得到了越来越广泛的应用, 采用电子时钟作为时间显示已经成为一种时尚。目前市场上各式各样的电子时钟数 不胜数,但多数是只针对时间显示,功能单一,使用不便,寿命不长不能满足人们 日常生活需求。而电

9、子万年历采用智能电子控制和显示技术,改善了纸制日历的缺 陷。 1.2 课题的研究目的与意义 二十一世纪是数字化技术高速发展的时代,而单片机在数字化高速发展的时代 扮演着极为重要的角色。电子万年历的开发与研究在信息化时代的今天亦是当务之 急,因为它应用在学校、机关、企业、部队等单位礼堂、训练场地、教学室、公共 场地等场合,可以说遍及人们生活的每一个角落。所以说电子万年历的开发是国家 之所需,社会之所需,人民之所需。 由于社会对信息交换不断提高的要求及高新技术的逐步发展,数字万年历具有 读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器 仪表的发展趋势,促使电子万年历发展并且

10、投入市场得到广泛应用,具有广阔的市 场前景。 1.3 课题研究的主要内容 本课题所研究的电子万年历是单片机控制技术的一个具体应用,主要研究内容 包括以下几个方面: (1) 选用电子万年历芯片时,应重点考虑功能实在、使用方便、单片存储、低 功耗、抗断电的器件。 (2) 根据选用的电子万年历芯片设计外围电路和单片机的接口电路。 (3) 在硬件设计时,结构要尽量简单实用、易于实现,使系统电路尽量简单。 (4) 根据设计的硬件电路,自制 pcb 电路板完成器件的焊接,并编写控制 at89s52 芯片的单片机程序。 (5) 通过编程、编译、调试,把程序下载到单片机上运行,并实现本设计的功能。 (6) 软

11、件设计时必须要有完善的思路,要做到程序简单,调试方便。 2 系统功能要求与总体设计 2.1 系统功能要求 设计一个能显示年、月、日、时、分、秒、星期和当前温度的数字万年历,采 用 lcd 显示并具备以下功能: 一、 基本功能 能够任意设定年、月、日、时、分、秒、星期。 二、 发挥功能 (1) 任意设定报时时间; (2) 带有温度显示; (3) 能够区分平年、闰年和月份的大小; (4) 带有掉电保护(停电后时钟正常运行,可以不显示) 。 (5) 有整点提示和闹钟。 2.2 系统方案选择 根据系统功能要求,初步确定系统由主控模块、时钟模块、显示模块、按键接 口模块、电源模块 5 部分模块组成,另外

12、再扩充一个温度检测模块,用于显示测的 实时的温度,具体可由以下两种方案实现。 方案一:单片机为主控制核心,时间和温度数据是通过时钟芯片 ds1302 和数 字温度传感器 ds18b20 来读取的,通过液晶显示器显示出来,并采用按键来完成对 当前时间的调整和定时时间的设定。 方案二:以单片机为住控制核心,时间通过软件编程来实现,通过单片机的定 时器,得出一秒的时间,再根据秒、分、时、日、星期、年之间的进制关系,完成 基本的时钟功能,再通过 led 显示模块显示出来。温度检测部分有热敏电阻将温度 转换成模拟量的电压信号,经 a/d 转换器,将其转换成对应的数字量,再通过单片 机把温度值传给 led

13、 显示模块显示出来,并用按键来完成对当前时间的调整和定时 时间的设定。 方案一和方案二的比较:时钟设计可以用软件编程或硬件实现,若用软件设计 误差相对于硬件设计略大,在软件设计中定时器如采用软件查询的方法占用大量的 cpu 资源,所以最好采用中断的方式以节约资源,但用软件编程的方法对晶振要求 很高。因为时间的误差主要来源于理想机器周期和实际周期之间的微小差距,此外 还有送定时器初值时产生的误差,况且用软件编程比较复杂,所以本设计采用日历 时钟芯片。时钟芯片时间精确度高,性价比高,相对于软件编程性能有很大提高, 且可二次开发,用于实时记录一些重要的数据。为了增加设计的实用性方案一和方 案二都增加

14、了温度显示模块,采用数字温度芯片具有体积小、抗干扰能力强、调试 方便或不用调试、易于实现群测等优点,而且直接输出数字量的温度值,简化了测 量电路的同时又保证了测温精度。采用热敏电阻检测温度,其原理是热敏电阻的阻 值随温度的变化而变化,从而改变电路电压或电流,这样就得出与温度有对应电压 或电流的信号,再经计算,就可得出被测温度。由于电压或电流量都是模拟量,易 于受外界干扰,并且热敏元件存在非线性误差,这都将影响温度的测量精度,还给 计算带来了麻烦。显示模块采用 lcd 能同时显示所有信息,显示直观,软件易于实 现。 综合上面比较论证,本设计采用方案一来实现。 2.3 系统总体设计 系统包括单片机

15、主控模块、时钟模块、温度采集模块、显示模块、按键接口模 块、电源模块。框图如图 2-1 所示。 单 片 机 lcd1602 时钟模块 数字温度模 块 按键 电源模块 蜂鸣器 系统主控模块由 at89s52 单片机组成,完成整个系统的信息采集和控制。时 钟模块采用的是 ds1302 数字时钟芯片,主要为万年历提供系统时钟,并 带有 掉电保护。外接电源为一个 3.6 伏的纽扣电池,以保证系统电源掉电后 时钟正常 图 2-1 系统框图 运行,可以不显示。按键有四个独立按键组成。显示模块选用的是 lcd1602 做显示, 完成系统时间和温度的显示。温度采集选用的是 ds18b20,主要完成实时温度的采

16、 集。蜂鸣器完成整点提示和闹钟功能。电源模块为经典的 7805 稳压模块,为整个系 统提供电源。 本系统由 ds1302 提供万年历系统时钟,ds18b20 采集实时温度,经单片机由 软件处理后显示实时时钟和实时温度。并且通过按键对时钟和闹钟的调整,有蜂鸣 器完成闹钟提示。 3 系统硬件设计 3.1 单片机主控模块的设计 3.1.1 at89s52 功能特性 at89s522是一种低功耗、高性能 cmos8 位微控制器,具有 8k 在系统可 编程 flash 存储器。使用 atmel 公司高密度非易失性存储器技术制造,与工业 80c51 产品指令和引脚完全兼容。片上 flash 允许程序存储器

17、在系统可编程, 亦适于常规编程器。在单芯片上,拥有灵巧的8 位 cpu 和在系统 可编程 flash,使得 at89s52 为众多嵌入式控制应用系统提供高灵活、 更有效的解决 方案。 at89s52 具有以下标准功能: 8k 字节 flash,256 字节 ram,32 位 i/o 口 线,看门狗定时器, 2 个数据指针,三个 16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外,at89s52 可降至 0hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下, cpu 停止工 作,允许 ram、定时器/计数器、串口、中断继续工作。掉电保护方式

18、下, ram 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬 件复位为止。 同时该芯片还具有 pdip、tqfp 和 plcc 等三 种封装形式,以适应 不同产品的需求。 3.1.2 at89s52 引脚结构介绍 at89s52 单片机引脚图如图 3-1 所示: p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 ret 9 p3.0 10 p3.1 11 p3.2 12 p3.3 13 p3.4 14 p3.5 15 p3.6 16 p3.7 17 xtal2 18 xtal1 19 gnd 20 p2.0 21

19、p2.1 22 p2.2 23 p2.3 24 p2.4 25 p2.5 26 p2.6 27 p2.7 28 psen 29 ale/prog 30 ea/vpp 31 p0.7 32 p0.6 33 p0.5 34 p0.4 35 p0.3 36 p0.2 37 p0.1 38 p0.0 39 vcc 40 u1 at89s52 图 3-1 at89s52 单片机引脚图 at89s52 单片机共有 40 个引脚,主电源引脚 vcc 和 gnd,外部晶振引脚 xatl1 和 xatl2,控制和复位引脚,输入/输出引脚。输入/输出有 4 个准双向并行 的 8 位 i/o 口 p0p3,p0 口

20、为三态双向口,可以驱动 8 个 ttl 电路,p1,p2,p3 口为准双向口(作为输入时,口线被拉成高电平故称为准双向口) ,其负载能力为 4 个 ttl 电路。 vcc(40 脚):电源端,接+5v。 gnd(20 脚):接电源地。 p0 口:p0 口是一个 8 位漏极开路的双向 i/o 口。作为输出口,每位能驱动 8 个 ttl 逻辑电平。对 p0 端口写“1”时,引脚用作高阻抗输入。当访问外部程序和 数据存储器时,p0 口也被作为低 8 位地址/数据复用。在这种模式下,p0 口具有内 部上拉电阻。在 flash 编程时,p0 口也用来接收指令字节;在程序校验时,输出指 令字节。程序校验时

21、,需要外部上拉电阻。 p1 口:p1 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p1 输出缓冲器能驱 动 4 个 ttl 逻辑电平。对 p1 端口写“1”时,内部上拉电阻把端口拉高,此时可 以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将 输出电流(iil)。此外,p1.0 和 p1.2 分别作定时器/计数器 2 的外部计数输入 (p1.0/t2)和时器/计数器 2 的触发输入(p1.1/t2ex),具体如下表所示。在 flash 编程和校验时,p1 口接收低 8 位地址字节。 p2 口:p2 口是一个具有内部上拉电阻的 8 位双向 i/o 口,p2 输出缓冲

22、器能驱 动 4 个 ttl 逻辑电平。对 p2 端口写“1”时,内部上拉电阻把端口拉高,此时可 以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将 输出电流(ttl)。在访问外部程序存储器或用 16 位地址读取外部数据存储器(例 如执行 movx dptr)时,p2 口送出高八位地址。在这种应用中,p2 口使用很 强的内部上拉发送“1”。在使用 8 位地址(如 movx ri)访问外部数据存储器 时,p2 口输出 p2 锁存器的内容。在 flash 编程和校验时,p2 口也接收高 8 位地址 字节和一些控制信号。 p3 口:p3 口是一个具有内部上拉电阻的 8 位双向 i

23、/o 口,p2 输出缓冲器能驱 动 4 个 ttl 逻辑电平。对 p3 端口写“1”时,内部上拉电阻把端口拉高,此时可 以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将 输出电流(iil)。p3 口亦作为 at89s52 特殊功能(第二功能)使用,如下表 3-1 所示。在 flash 编程和校验时,p3 口也接收一些控制信号。 引脚号引脚号第二功能第二功能 p3.0rxd(串行输入) p3.1txd(串行输出) p3.2int0(外部中断 0) p3.3int0(外部中断 0) p3.4t0(定时器 0 外部输入) p3.5t1(定时器 1 外部输入) p3.6wr(外

24、部数据存储器写选通) p3.7rd(外部数据存储器写选通) rst(9 引脚):复位输入。晶振工作时,rst 脚持续 2 个机器周期高电平将 使单片机复位。看门狗计时完成后,rst 脚输出 96 个晶振周期的高电平。特殊寄 存器 auxr(地址 8eh)上的 disrto 位可以使此功能无效。disrto 默认状态下, 复位高电平有效。 ale/prog(30 引脚):地址锁存控制信号(ale)是访问外部程序存储器时, 锁存低 8 位地址的输出脉冲。在 flash 编程时,此引脚(prog)也用作编程输入脉 冲。在一般情况下,ale 以晶振六分之一的固定频率输出脉冲,可用来作为外部定 时器或时

25、钟使用。然而,特别强调,在每次访问外部数据存储器时,ale 脉冲将会 跳过。如果需要,通过将地址为 8eh 的 sfr 的第 0 位置 “1”,ale 操作将无效。 这一位置 “1”,ale 仅在执行 movx 或 movc 指令时有效。否则,ale 将被 微弱拉高。这个 ale 使能标志位(地址为 8eh 的 sfr 的第 0 位)的设置对微控制 器处于外部执行模式下无效。 psen(29 引脚):外部程序存储器选通信号(psen)是外部程序存储器选通 信号。当 at89s52 从外部程序存储器执行外部代码时,psen 在每个机器周期被激 活两次,而在访问外部数据存储器时,psen 将不被激

26、活。 表 3-1 p3 口第二功能表 ea/vpp(31 引脚):访问外部程序存储器控制信号。为使能从 0000h 到 ffffh 的外部程序存储器读取指令,ea 必须接 gnd。为了执行内部程序指令,ea 应该接 vcc。在 flash 编程期间,ea 也接收 12 伏 vpp 电压。 xtal1(19 引脚):振荡器反相放大器和内部时钟发生电路的输入端。 xtal2(18 引脚):振荡器反相放大器的输出端。 3.1.3 单片机最小系统 单片机最小系统电路主要有晶体振荡电路和复位电路组成。 (1) 振荡电路 石英晶体振荡器也称石英晶体谐振器,它用来稳定频率和选择频率,是一种可 以取代lc谐振

27、回路的晶体谐振元件。 本设计所用的晶体振荡电路如图3-2所示。 12 y1 11.0592m 30p c1 cap 30p c2 cap xtal1 xtal2 图 3-2 晶体振荡电路 此晶振电路所选用的石英晶振频率为11.0592mhz。时钟周期就是单片机外接晶 振的倒数,它的时间周期就是(1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,cpu仅完成一个最基本的动作。对于某种单片机来说,若 采用了1mhz的时钟频率,则时钟周期为1us;若采用4mhz的时钟频率,则时钟周期 为250s。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使 计算机的每一步

28、都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频 率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不 完全相同,所以其所需要的时钟周频率范围也不一定相同。一般的设计中使用到的 单片机的时钟范围是12mhz或11.0592mhz。 (2) 复位电路 单片机复位是使cpu和系统中的其他功能部件都处在一个确定的初始状态,并 从这个状态开始工作,例如复位后pc0000h,使单片机从第一个单元取指令。无 论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位,所以必须 弄清楚at89s52型单片机复位的条件、复位电路和复位后状态。 单片机复位的条件是:必须使rst

29、/vpd或rst引脚(9)加上持续两个机器周期(即 24个振荡周期)的高电平。例如,若时钟频率为12mhz,每机器周期为1us,则只需 2us以上时间的高电平,在rst引脚出现高电平后的第二个机器周期执行复位。单片 机常用的复位电路如图3-3所示。 r1 200 r2 10k c3 10u s1 位位 vcc ret 图3-3 复位电路 图3-3为复位电路也是本次设计所用的复位电路,其复位方法为只要单片机一上 电rest为高电平单片机即复位。除此之外我们所学的电路还有手动复位电路和自动 复位电路。 3.2 时钟电路模块的设计 3.2.1 ds1302 简介 ds130234是美国 dallas

30、 公司推出的一种高性能、低功耗、带 ram 的实时 时钟芯片,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能, 工作电压为 2.5v5.5v。采用三线接口与 cpu 进行同步通信,并可采用突发方式 一次传送多个字节的时钟信号或 ram 数据。ds1302 内部有一个 318 的用于临时 性存放数据的 ram 寄存器。ds1302 是 ds1202 的升级产品,与 ds1202 兼容,但 增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓泳电流充电的能 力。 ds1302 的引脚排列如图 3-4,其中 vcc1 为后备电源,vcc2 为主电源。在主电 源关闭的情况下,也能

31、保持时钟的连续运行。ds1302 由 vcc1 或 vcc2 两者中的较 大者供电。当 vcc2 大于 vcc1+0.2v 时,vcc2 给 ds1302 供电。当 vcc2 小于 vcc1 时,ds1302 由 vcc1 供电。x1 和 x2 是振荡源,外接 32.768khz 晶振。rst 是复位 /片选线,通过把 rst 输入驱动置高电平来启动所有的数据传送。rst 输入有两种 功能:首先,rst 接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,rst 提供终止单字节或多字节数据的传送手段。当 rst 为高电平时,所有的数据传送被 初始化,允许对 ds1302 进行操作。如果在传送

32、过程中 rsts 置为低电平,则会终 止此次数据传送,i/o 引脚变为高阻态。上电动行时,在 vcc 大于等于 2.5v 之前, rst 必须保持低电平。中有在 sclk 为低电平时,才能将 rst 置为高电平,i/o 为 串行数据输入端(双向) 。sclk 始终是输入端。 3.2.2 ds1302 与单片机接口电路 ds1302 与单片机接口电路如图 3-5 所示。电路原理图如图,ds1302 与单片机 的连接也仅需要 3 条线:ce 引脚、sclk 串行时钟引脚、i/o 串行数据引脚,vcc2 为备用电源,外接 32.768khz 晶振,为芯片提供计时脉冲。 ds1302 在任何数据传送时

33、必须先初始化,把 rst 脚置为高电平,然后把 8 位 地址和命令字装入移位寄存器,数据在 sclk 的上升沿被访问到。在开始 8 个时钟 周期,把命令字节装入移位寄存器后,另外的时钟周期在读操作时输出数据,在写 操作时写入数据。时钟脉冲的个数在单字节方式下为 8+8,在多字节方式下为 8+字 节数,最大可达 248 字节数。如果在传送过程中置 rst 脚为低电平,则会终止本次 数据传送,并且 i/o 引脚变为高阻态。上电运行时,在 vcc2.5v 之前,rst 脚必须 保持低电平。只有在 sclk 为低电平时,才能将 rst 置为高电平。 ds1302 的控制字如表 3-2 所示。控制字节的

34、最高有效位(位 7)必须是逻辑 1,如果它为 0,则不能把数据写入到 ds1302 中。位 6 如果为 0,则表示存取日历 时钟数据;为 1 则表示存取 ram 数据。位 51(a4a0)指示操作单元的地址。最 低有效位(位 0)如果为 0,则表示药进行写操作;为 1 表示进行读操作。控制字节 总是从最低位开始输入/输出。 图 3-4 ds1302 引脚图 x1 2 x2 3 vcc2 1 gnd 4 rst 5 i/o 6 sclk 7 vcc1 8 u2 ds1302 12 y2 32.768k 30p c4 30p c5 vcc r9 10k r10 10k r11 10k p10 p1

35、1 p12 bt1 3.6v 为了提高对 32 个地址寻址能力(地址/命令位 15=逻辑 1) ,可以把时钟/日历 或 ram 寄存器规定为多字节(burst)方式。位 6 规定时钟或 ram,而位 0 规定读 或写。在时钟/日历寄存器中的地址 931 或 ram 寄存器中的地址 31 不能存储数据。 在多字节方式下,读或写从地址 0 的位 0 开始。必须按数据传送的次序写最先的 8 个寄存器。但是,当以多字节方式写 ram 时,为了传送数据不必写所有的 31 字节, 不管是否谢了全部 31 字节,所写的每一字节都将传送至 ram。 ds1302 共有 12 个寄存器,其中有 7 个寄存器与日

36、历、时钟相关,存放的数据 位为 bcd 码形式。其日历、时间寄存器及其控制字如下表所示,其中奇数为读操作, 偶数为写操作。 时钟暂停:秒寄存器的位 7 定义位时钟暂停位。当它为 1 时,ds1302 停止振 荡,进入低功耗的备份方式,通常在对 ds1302 进行写操作时(如进入时钟调整程 序) ,停止振荡。当它为 0 时,时钟将开始启动。 am-pm/12-24 小时方式:小时寄存器的位 7 定义为 12 或 24 小时方式选择位。 图 3-5 ds1302 接口电路 表 3-2 ds1302 控制字 它为高电平时,选择 12 小时方式。在此方式下,位 5 为第二个 10 小时位 (2023h

37、) 。 ds1302 有主电源/后备电源双电源引脚:vcc1 在单电源与电池供电的系统中提 供低电源,并提供低功率的电磁备份;vcc1 在双电池系统中提供主电源。在这种运 行方式中,vcc1 里连接到后备电源,以便在没有主电源的情况下能保存时间信息以 及数据。ds1302 由 vcc1 或 vcc2 中较打大者供电。当 vcc2(vcc1+0.2v)时, vcc2 给 ds1302 供电;当 vcc2vcc1 时,ds1302 由 vcc1 供电。vcc1 为后备电源, vcc2 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。实现停电后时 钟正常运行,可以不显示,实现掉电保护5。 3

38、.3 温度采集模块的设计 3.3.1 ds18b20 简介 系统采用数字式温度传感器 ds18b206,它是数字式温度传感器,具有测量精 度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,ds18b20 引脚功能如表 3-6 所示。独特的一线接口,只需要一条口线通信多点能力,简化了 分布式温度传感应用无需外部元件可用数据总线供电7,电压范围为 3.0v 至 5.5v 无需备用电源测量温度范围为-55 度至+125 度。-10 度至+85 度范围内精度为0.5 度 温度传感器可编程的分辨率为 912 位89。 ds18b20的主要特征: (1) 全数字温度转换及输出。 (2) 先进

39、的单总线数据通信。 (3) 最高12位分辨率,精度可达土0.5摄氏度。 (4) 12位分辨率时的最大工作周期为750毫秒。 (5) 可选择寄生工作方式。 (6) 检测温度范围为55c +125c (67f +257f) (7) 内置eeprom,限温报警功能。 (8) 64位光刻rom,内置产品序列号,方便多机挂接。 (9) 多样封装形式,适应不同硬件系统。 ds18b20芯片封装结构如图3-6: 图3-6 ds18b20芯片封装 ds18b20引脚功能: (1) gnd 电压地; (2) dq 单数据总线;(3) vdd 电源电 压 3.3.2 ds18b20 与单片机接口电路 如图3-7所

40、示,ds18b20只需要接到控制器(单片机)的一个i/o口上10,由于 单总线为开漏所以需要外接一个4.7k的上拉电阻。如要采用寄生工作方式,只要将 vdd电源引脚与单总线并联即可。但在程序设计中,寄生工作方式将会对总线的状 态有一些特殊的要求。 ds18b20的温度检测与数字数据输出全集成于一个芯片之上,从而抗干扰力更 强。一个工作周期可分为两个部分,即温度检测和数据处理11。在讲解其工作流程 之前我们有必要了解ds18b20的内部存储器资源。ds18b20共有三种形态的存储器 资源,它们分别是: rom 只读存储器:用于存放ds18b20id编码,其前8位是单线系列编码 (ds18b20的

41、编码是19h) ,后面48位是芯片唯一的序列号,最后8位是以上56的位 的crc码(冗余校验) 。数据在出产时设置不由用户更改。ds18b20共64位rom。 vcc 1 i/o 2 gnd 3 q0 ds18b20 r13 10k vcc p24 ram 数据暂存器:用于内部计算和数据存取,数据在掉电后丢失,ds18b20 共 9 个字节 ram,每个字节为 8 位。第 1、2 个字节是温度转换后的数据值信息, 图 3-7 ds18b20 温度采集原理图 第 3、4 个字节是用户 eeprom(常用于温度报警值储存)的镜像。在上电复位时 其值将被刷新。第 5 个字节则是用户第 3 个 eep

42、rom 的镜像。第 6、7、8 个字节为 计数寄存器,是为了让用户得到更高的温度分辨率而设计的,同样也是内部温度转 换、计算的暂存单元。第 9 个字节为前 8 个字节的 crc 码。eeprom 非易失性记 忆体,用于存放长期需要保存的数据,上下限温度报警值和校验数据,ds18b20 共 3 位 eeprom,并在 ram 都存在镜像,以方便用户操作。 3.4 键盘显示模块的设计 3.4.1 按键电路的设计 本系统按键采用独立按键设计,具有电路简单,软件实现简单等有点。按键电 路设计如图 3-8 所示。 系统共有四个独立按键,分别为“闹钟停止键”、“设置键”、“增加键”、 “减小键”,当闹钟响

43、起后只能手动关闭,即按下“闹钟停止键”闹钟停止;当调 整时间或者调整闹钟时间时按“设置键”选择要设置的选项,本系统“设置键”采 用循环选择被调对象的模式,选中要调整的对象后按“增加键”或“减小键”调整 完成后按“设置键”确认。 r5 10k r6 10k r7 10k r8 10k s2位位位 s3位位 s4位 s5位 vcc p23 p22 p21 p20 图 3-8 按键电路 3.4.2 显示电路的设计 一、lcd1602 简介 液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在各 类仪表和低功耗系统中得到广泛的应用12。根据显示内容可以分为字符型液晶,图 形液晶。根据显示

44、容量又可以分为单行 16 字,2 行 16 字13,两行 20 字等等。这里 介绍常用的字 16 字 x2 行的字符型液晶模块的使用方法。这是一种通用模块。与数 码管相比该模块有如下优点: (1) 位数多,可显示 32 位,32 个数码管体积相当庞大了。 (2) 显示内容丰富,可显示所有数字和大、小写字母。 (3) 程序简单,如果用数码管动态显示,会占用很多时间来刷新显示,而 1602 自动完成此功能。 1602 采用标准的 16 脚接口,其外观图如图 3-9 所示,其中引脚如图 3-10 所示 (模块背面有标注)。 第 1 脚:vss 为地电源 第 2 脚:vdd 接 5v 正电源 第 3

45、脚:v0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时 对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个 10k 的电位器调整 对比度(建议接地,弄不好有的模块会不显示) 第 4 脚:rs 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存 器。 第 5 脚:rw 为读写信号线,高电平时进行读操作,低电平时进行写操作。 第 6 脚:e 端为使能端,当 e 端由高电平跳变成低电平时,液晶模块执行命令。 第 714 脚:d0d7 为 8 位双向数据线。 第 1516 脚:空脚(有的用来接背光) 二、lcd1602 与单片机接口电路 图 3-9 lcd1602 液晶外

46、观图 图 3-10 lcd1602 液晶引脚 图 1602 液晶模块内部的控制器共有 11 条控制指令,如表 3-3 所示: 1602 液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。 (说明:1 为高电平、0 为低电平) 序号指令rsr/wd7d6d5d4d3d2d1d0 1清显示0000000001 2光标返回000000001* 3置输入模式00000001i/ds 4显示开/关控制0000001dcb 5光标或字符移位000001s/cr/l* 6置功能00001dlnf* 7置字符发生存贮器地址0001字符发生存贮器地址 8置数据存贮器地址001显示数据存贮器地址 9读

47、忙标志或地址01bf 计数器地址 10 写数到 cgram 或 ddram) 10 要写的数据内容 11 从 cgram 或 ddram 读 数 11 读出的数据内容 指令 1:清显示,指令码 01h,光标复位到地址 00h 位置。 指令 2:光标复位,光标返回到地址 00h。 指令 3:光标和显示模式设置 i/d:光标移动方向,高电平右移,低电平左移 s:屏 幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。 指令 4:显示开关控制。 d:控制整体显示的开与关,高电平表示开显示,低 电平表示关显示 c:控制光标的开与关,高电平表示有光标,低电平表示无光标 b:控制光标是否闪烁,高电

48、平闪烁,低电平不闪烁。 指令 5:光标或显示移位 s/c:高电平时移动显示的文字,低电平时移动光标。 指令 6:功能设置命令 dl:高电平时为 4 位总线,低电平时为 8 位总线 n: 低电平时为单行显示,高电平时双行显示 f: 低电平时显示 5x7 的点阵字符,高电 平时显示 5x10 的点阵字符。 表 3-3 1602 液晶模块控制指令 指令 7:字符发生器 ram 地址设置。 指令 8:ddram 地址设置。 指令 9:读忙信号和光标地址 bf:为忙标志位,高电平表示忙,此时模块不能 接收命令或者数据,如果为低电平表示不忙。 指令 10:写数据。 指令 11:读数据。 单片机与 lcd

49、的接口电路如图 3-11 所示。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1602 vcc rw 10k rs en d0 d1 d2 d3 d4 d5 d6 d7 rw 图 3-11 lcd1602 接口电路 3.5 电源电路设计 c8 104 2 1 3 4 d4 c7 100u 1 2 3 u3 vcc c6 100u 1 2 j3 c9 vcc1 图 3-12 电源电路原理图 电源电路采用经典稳压电源电路。采用市电 220v 经变压器变为 9v 交流电压, 经过桥式整流,电容滤波,通过三端稳压芯片 7805 稳压后再通过电容滤波后输出 +5v 的系

50、统电路所用电源。7805 是三端集成稳压电路器件,其内具有过流和过热保 护功能,即使过负载时稳压器也不会遭到损坏,一方面限制输出电流,使其不会过 大,过热时切断输出,使内部电流不致过大。7805 的三端分别为输入 vin、输出端 vo 和公共端 com,使用时公共端 com 通常接地。内部等效电路由调整管、控制 电路、误差放大器、保护电路等组成。原理图如图 3-12 所示。 4 4系统软件设计系统软件设计 软件的设计是设计控制系统的应用程序。其任务是在整体设计和硬件设计的基 础上,确定程序结构,分配内 ram 资源,划分功能模块,然后进行主程序和各模 块程序的设计,最后连接起来成为一个完整应用

51、程序,与硬件相结合完成相应功能。 系统软件主要有主程序、ds1302 时钟子程序、ds18b20 测温子程序、显示按 键子程序。 4.14.1 主程序设计主程序设计 主程序的组成是通过分别调用各子程序组成总体系统功能,能很直观的看出主 程序所要完成的功能,首先是初始化各模块,之后调用键盘完成时间的调整,调用 日历子程序完成日历时钟的初始化和时间数据的读写,调用温度子程序完成温度芯 片的初始化和读写,调用闹钟子程序当时间达到定时时间时闹铃打开,一分钟后自 动关闭,调用显示子程序显示数据,最后又转到键盘程序来回循环。 初始化部分主要有初始化定时器部分和和一些寄存器、标志位、初始化时间等 对定时器

52、t0 初始化时,首先置初值,cpu 开中断,定时器 t0 开中断,并且开始计 数,而对定时器 t1 初始化时,首先置初值, ,定时器 t1 关中断,并且停止计数, 只有收到命令时才能产生中断。主程序采用模块化设计,流程图如图 4-1 所示。 开始 初始化t0并开中断 初始化t1并关中断 寄存器初始化 标志位初始化 初始化时间 调按键子程序 调时钟子程序 调温度子程序 调显示子程序 调闹钟子程序 结束 图 4-1 主程序流程图 寄存器的初始化主要是初始化执行程序时用到的部分 ram 空间,防止程序执 行时带来混乱。 标志位初始化是对时间调整时判断是调分还是调时等而专设的位标志,初始化 过程中标志

53、位全部置“0” ,即开始时是处于显示状态,而不是调整状态,这一点在 程序中相当明了。 初始化时间是开机时显示的时间,并通过调用日历时钟的写程序来完成时间的 置初值。 4.24.2 时钟子程序的设计时钟子程序的设计 ds1302 与 cpu 的连接需要三条线14,即 sclk(7)、i/o(6)、rst(5)。 开始 rst置1 发送1位命令码 8位送完 写一位数据 数据写完 rst置0 结束 y n n 开始 rst置1 发送1位命令码 8位送完 读一位数据 数据读完 rst置0 结束 y n n (a) 时钟写(b) 时钟读 图 4-2 日历时钟的写和读 日历时钟 ds1302 的读写和温度

54、芯片 ds18b20 一样,都需要初始化时序、读时 序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次 命令和数据的传输都是从主机启动写时序开始,如果要求单总线器件回送是低位在 先。读写都是 16 位数据高 8 位是地址低 8 位是数据,在读写时要严格遵从其读写时 序,否则读写将会失效。流程图如图 4-2 所示。 当 rst 为高电平时,所有的数据传送被初始化,允许对 ds1302 进行操作。如 果在传送过程中 rst 置为低电平,则会终止此次数据传送,i/o 引脚变为高阻态。 上电运行时,在 vcc2.5v 之前,rst 必须保持低电平。只有在 sclk 为低电平时,

55、才能将 rst 置为高电平,这一点我们要一定注意。 当 rst 置为高电平时,在串行时钟的 sclk 的上升沿,ds1302 从 i/o 端口读 入一位数据,8 个串行时钟脉冲就可以读入一个字节的数据。在串行时钟的下降沿, ds1302 向 i/o 端口输出一位数据,8 个串行时钟脉冲就可以输出一个字节的数据。 4.3 测温子程序 初始化ds18b20 发送度温度指令 计算温度实际值 启动下次温度转换 显示温度 结束 由于 ds18b20 采用的是单总线协议方式,即在一根数据线上实现数据的双向传 输,而对 at89s51 单片机来说,硬件上并不支持单总线协议,因此,我们必须采用 软件的方法来模

56、拟单总线的协议时序来完成对 ds18b20 芯片的访问。由于 ds18b20 是在一根 i/o 线上读写数据,因此,对读写的数据位有着严格的时序要求。 图 4-3 ds1820 温度子程序流程图 ds18b20 有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了 几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备, 单总线器件作为从设备。而每一次命令和数据的传输都是从主机启动写时序开始, 如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。 数据和命令的传输都是低位在先。读温度子程序如图 4-3 所示。 4.4 显示子程序 首先对 16

57、02 显示屏进行初始化(初始化大约持续 10ms 左右) ,然后检查盲信 号,若 bf=0,则获得显示 ram 的地址,写入相应的数据显示;如 bf=1,则代表 模块正在进行内部操作,不接受任何外部指令和数据,直到 bf=0 为止。显示流程 如图 4-4 所示。 开始 对1602初始化 延时5ms 检查盲信号 获得显示ram地址 延时5ms 写入数据 数据显示完毕 结束 n n 图 4-4 1602 显示子程序流程图 5 系统仿真与测试 5.1 proteus isis 简介 proteus isis 是英国 labcenter 公司开发的电路分析与实物仿真软件。它运行于 windows 操作

58、系统上,可以仿真、分析(spice)各种模拟器件和集成电路1516。 该软件的特点是: (1) 全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明 显的优势。 (2) 具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿 真、rs232 动态仿真、i2c 调试器、spi 调试器、键盘和 lcd 系统仿真的功能; 有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 (3)目前支持的单片机类型有:arm7 系列、68000 系列、8051 系列、avr 系列、 pic12 系列、pic16 系列、pic18 系列、z80 系列、hc11 系列以及各种外围芯片。 (4)支

59、持大量的存储器和外围芯片。 总之,该软件是一款集单片机和 spice 分析于一身的仿真软件,功能极其强大, 可仿真 arm、51、avr、pic。 5.1.1 启动 proteus 双击桌面上的 isis 7 professional 图标或者单击屏幕左下方的“开始”“程序” 图 5-1 proteus 启动画面 图 5-1 proteus 启动界面 “proteus 7 professional” “isis 7 professional” ,出现如图 5.1 所示屏幕,表明 进入 proteus isis 集成环境。 proteus 启动画面如图 5-1 所示。 5.1.2 proteus

60、 运行界面 proteus isis 的工作界面是一种标准的 windows 界面,如图 5-2 所示。 包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览 对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗 口。运行 proteus 程序后,进入软件的主界面。通过左侧工具栏中的 p(从库中选择 元件命令)命令,在 pick devices 左侧窗口中选择所需元件的关键字,然后放置元件 并调整方向和位置以及参数设置,最后进行连线。 5.1.3 proteus 功能仿真 按照原理图画好连接线后,最后载入 hex 文件后按 proteus 运行按钮可以进

温馨提示

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

评论

0/150

提交评论