带温度计的万年历设计方案_第1页
带温度计的万年历设计方案_第2页
带温度计的万年历设计方案_第3页
带温度计的万年历设计方案_第4页
带温度计的万年历设计方案_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

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

文档简介

1、带温度计的万年历设计方案1 绪论随着电子技术的迅速发展, 特别是随大规模集成电路出现, 给人类生活带来 了根本性的改变。 由其是单片机技术的应用产品已经走进了千家万户。 其中电子 万年历就是一个典型的例子。而且在万年历的基础上还可以扩展其它的实用功 能,比如温度计。万年历是采用数字电路实现对 . 时,分,秒. 数字显示的计时装置, 广泛用于 个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需 品,由于数字集成电路的发展和石英晶体振荡器的广泛应用, 使得数字钟的精度, 远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便, 而且大扩 展了钟表原先的报时功能。 诸如定

2、时自动报警、 按时自动打铃、 时间程序自动控 制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电 气的自动启用等,但是所有这些,都是以钟表数字化为基础的。因此,研究万年 历及扩大其应用,有着非常现实的意义。市场上有许多电子钟的专用芯片如: LM8363、LM8365等,但它们功能单一, 电路连接复杂, 不便于调试制作。 但是考虑到用单片机配合时钟芯片, 可制成功 能任意的电子钟, 而且可以做到硬件简单、 成本低廉。 所以本系统采用了以广泛 使用的单片机 AT89S52技术为核心,配合时钟芯片 DS1302。软硬件结合,使硬 件部分大为简化,提高了系统稳定性,并采用 LCD显

3、示电路、键盘电路,使人机 交互简便易行, 此外结合音乐闹铃电路、 看门狗和供电电路。 本方案设计出的数 字钟可以显示时间、设置闹铃功能之外。本文首先描述系统硬件工作原理, 并附以系统结构框图加以说明, 着重介绍 了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程 , 其次,详 细阐述了程序的各个模块和实现过程。 本设计以数字集成电路技术为基础, 单片 机技术为核心。 本文编写的主导思想是软硬件相结合, 以硬件为基础, 来进行各 功能模块的编写。本设计中我重点研究实现了单片机 +时钟芯片这种模式的万年历,从原理上 对单片机和时钟芯片有了深一步的认识, 这些基本功能完成后, 在软件基础上

4、实 现时间显示。2 总体设计方案2.1 设计思路用 AT89S52 处理产生部时钟数据或者读取外部时钟数据和采集外部传感器 的信息进行处理, 并暂时寄存在其部的储存器中, 再通过单片机调用部 RAM的数 据并送到 LCD或者 LED数码管上显示出来。2.2 设计方案方案 1:单片机一般的工作频率在 12MHz左右,而且部还有定时、计数器, 可以产生精确的 1S 定时,由次可以用定时中断的方式产生精确的 1S时间,秒位 不断的加 1,再设计分、时、星期、日、月、年之间的进制,使产生进位。本方 案只需要单片机最小系统加上显示电路, 再设计简单的程序算法就可以实现。 对 于测温电路, 可以使用热敏电

5、阻之类的器件利用其感温效应, 在将随被测温度变 化的电压或电流采集过来,进行 A/D 转换后,就可以用单片机进行数据的处理。 在显示电路上,采用数码管就可以将年月日星期时分秒和室温度显示出来方案 2:万年历时钟采用单片机控制 DS1302实时时钟芯片,能达到走时准 确且掉电不丢失数据的。 DS1302 与单片机之间能简单地采用同步串行的方式进 行通信仅需用到三个口线 1 RES( 复位)2 I/O (数据线) 3 SCLK(串行时钟)。 温度计要灵敏反映室温的变化这样可采用单片机与数字式温度传感器 DS18B20 通讯,采集温度数字信号进行处理。 DS18B20通过一个单线接口发送或接受信息,

6、 因此在单片机与 DS18B20之间仅需一条连接(加上地线) 。在显示电路上,采用 16*2 的 LCD显示。2.3 方案比较论证对于方案 1,单片机虽然可以产生精确的秒信号,但是单片机在处理闰年上 会比较麻烦,加之一旦单片机断电后, 所有的时间都要重新调整。 对于测温电路, 采用热敏电阻的输出电压 -温度特性,要加上 A/D 转换,温度传感信息才能被单 片机所接受, 这种设计需要用到 A/D转换电路,感温电路比较麻烦。 在显示电路 上,采用 LED数码的话要用到单片机的许多 I/O 口,甚至 I/O 不够用, 还需要接 上其它芯片大量扩展 I/O 口,这是一个弊处。对于方案 2:单片机不用去

7、产生时钟的数据,时钟的数据由 DS1302独立产 生,并寄存在其部的寄存器上, 单片机可以通过三总线与它通讯, 不仅可以对它 进行读取实时时钟数据, 还可以对它进行编程, 设置它的工作模式。 单片机只是 处理从 DS1302读出来的数据并送显示,大大减少了单片机的负担。而且 DS1302可以通过后备电池继续工作, 部的时钟还在走, 下次启动后不用去调整时钟, 方 便使用。基于同样的原理, DS18B20也是一个独立的传感器,只要单片机配置它 的工作状态后它就可以独立工作, 部已经把模拟信号转换成数字信号, 并把数字 信号储存在其部的寄存中。同样,单片机通过单总线与它通讯,可以处理912位的温度

8、数字数据。在显示电路上,采用 16*2 LCD 液晶显示器,能容纳年月日 星期时分秒温度等信息的显示。 LCD显示器只需占用 11个 I/O 口就可以工作了, 不用其它扩展芯片,总体上使电路简单化。2.4 总体设计方框图总体的方框图如图 2.1 所示,控制器采用单片机 AT89S52,温度传感器采用 DS18B20,用 16*2 的 LCD液晶显示屏实现年、月、日、星期、时、分、秒、温度 的显示。DS1302时钟芯片DS18B20温度传感复位按键图 2.1 总体设计方框图3 设计原理与分析3.1 硬件电路主要芯片的功能介绍 本次设计的万年历系统主要包括单片机主控制器、温度传感器芯片、时钟芯 片

9、 DS1302芯片、 16*2LCD显示芯片。3.1.1 单片机主控制器AT89S52是一种低功耗、高性能 CMOS8位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造, 与工业 80C51 产品指令和引脚完全兼容。 片上 Flash 允许程序存储器在系统可编程, 亦适于常 规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程 Flash ,使得 AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52具有以下标准功能: 8k字节 Flash ,256字节 RAM,32 位 I/O 口线, 看门狗定

10、时器, 2个数据指针,三个 16 位定时器/计数器,一个 6向量 2级中断 结构,全双工串行口,片晶振及时钟电路。另外, AT89S52 可降至 0Hz 静态逻 辑操作,支持 2 种软件可选择节电模式。空闲模式下, CPU停止工作,允许 RAM、 定时器/ 计数器、串口、中断继续工作。掉电保护方式下, RAM容被保存,振荡 器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。(1)AT89S52的简介AT89S52是一个低功耗 ,高性能CMOS 位8 单片机,片含8k Bytes ISP (In-system programmable) 的可反复擦写 1000次的Flash 只读程序存

11、储器 , 器件 采用ATME公L 司的高密度、非易失性存储技术制造 ,兼容标准MCS-51指令系统及 80C51引脚结构 , 芯片集成了通用 8位中央处理器和 ISP Flash 存储单元 , 功能强大 的微型计算机的 AT89S52可为许多嵌入式控制应用系统提供高性价比的解决方 案。AT89S52具有如下特点: 40个引脚 ,8k Bytes Flash 片程序存储器 ,256 bytes 的随机存取数据存储器( RAM),32个外部双向输入 / 输出(I/O )口,5个中断优先 级2层中断嵌套中断 ,2 个16位可编程定时计数器 ,2个全双工串行通信口 , 看门狗 (WD)T 电路 ,片时

12、钟振荡器。此外 ,AT89S52设计和配置了振荡频率可为 0Hz并可通过软件设置省电模 式。空闲模式下 ,CPU暂停工作 , 而RAM定时计数器 , 串行口, 外中断系统可继续工作 掉电模式冻结振荡器而保存 RAM的数据, 停止芯片其它功能直至外中断激活或硬 件复位。2)AT89S52的部结构图3.1.2 温度传感器芯片(1) 单线温度传感器 DS18B20介绍DS18B20温度传感器是美国 DALLAS半导体公司最新推出的一种改进型智能 温度传感器, 与传统的热敏电阻等测温元件相比, 它能直接读出被测温度, 并且 可根据实际要求通过简单的编程实现 912 位的数字值读数方式。 DS18B20

13、的性 能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个 DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压围为 3.0 5.5 ;零待机功耗;温度以 9 或 12 位数字;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件; 负电压特性, 电源极性接反时, 温度计不会因发热而烧毁, 但不能正常工 作;DSl8B20数字温度计提供 9位(二进制 )温度读数,指示器件的温度。信息经 过单线接口送入 DSl8B20 或从 DSl8B20送出,因此从主机 CPU到 DSl8B20仅需一 条线( 和地线 ) 。DSl8B2

14、0的电源可以由数据线本身提供而不需要外部电源。因为 每一个 DSl8B20 在出厂时已经给定了唯一的序号, 因此任意多个 DSl8B20可以存图 3.2 DSl8B20 的引脚放在同一条单线总线上。这允许在许多不同的地方放置 温度敏感器件。 DSl8B20的测量围从 -55 摄式度到 +125 摄式度,增量值为 0.5 摄式度,可在 l s( 典型值 ) 把温 度变换成数字。每一个 DSl8B20包括一个唯一的 64 位长的序号, 该序号值存放在 DSl8B20部的 ROM只( 读存贮器 ) 中。开 始 8 位是产品类型编码 (DSl8B20 编码均为 10H) 。接着 的 48 位是每个器件

15、唯一的序号。 最后 8位是前面 56 位的 CRC循( 环冗余校验 ) 码DSl8B20中还有用于存储测得的温度值的两个 8 位存贮器 RAM,编号为 0 号和 1号。1号存贮器存放温度值的符号,如果温度为负 (摄式度),则 1号存贮器 8位 全为 1,否则全为 0。0号存贮器用于存放温度值的补码, LSB(最低位)的 1表示0.5 摄式度。将存贮器中的二进制数求补再转换成十进制数并除以 2 就得到被测温度值 (-55 摄式度 -125 摄式度 ) 。DSl8B20的引脚如图 3.2 所示。每只 DS18B20 都可以设置成两种供电方式, 即数据总线供电方式和外部供电方式。 采取数据总 线供电

16、方式可以节省一根导线, 但完成温度测量的时间较长: 采取外部供电方式 则多用一根导线,但测量速度较快 。(2)DS18B20 的测温原理器件中低温度系数晶振的振荡频率受温度的影响很小, 用于产生固定频率的 脉冲信号送给减法计数器 1;高温度系数晶振随温度变化其振荡频率明显改变, 所产生的信号作为减法计数器 2 的脉冲输入。器件中还有一个计数门, 当计数门 打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度 测量。计数门的开启时间由高温度系数振荡器来决定, 每次测量前,首先将 55 所对应的一个基数分别置入减法计数器 1、温度寄存器中,计数器 1 和温度寄存 器被预置在

17、 55所对应的一个基数值。减法计数器 1 对低温度系数晶振产生的脉冲信号进行减法计数, 当减法计数 器 1 的预置值减到 0 时,温度寄存器的值将加 1,减法计数器 1 的预置将重新被装入,减法计数器 1 重新开始对低温度系数晶振产生的脉冲信号进行计数, 如此 循环直到减法计数器计数到 0 时,停止温度寄存器的累加, 此时温度寄存器中的 数值就是所测温度值。 其输出用于修正减法计数器的预置值, 只要计数器门仍未 关闭就重复上述过程,直到温度寄存器值大致被测温度值。另外,由于 DS18B20单线通信功能是分时完成的, 它有严格的时隙概念, 因 此读写时序很重要。 系统对 DS18B20的各种操作

18、按协议进行。 操作协议为: 初使化 DS18B20(发复位脉冲)发 ROM功能命令发存储器操作命令处理数据。示。DS18B20采用 3脚 PR35封装或 8脚 SOIC封装,其部结构框图如图 3.3 所图 3.3 DS18B20 的部结构图64位 ROM的结构开始 8 位是产品类型的编号,接着是每个器件的惟一的序 号,共有 48位,最后 8位是前面 56位的 CRC检验码,这也是多个 DS18B20可以 采用一线进行通信的原因。 温度报警触发器和, 可通过软件写入户报警 上下限。(3)温度计算1、DS18B20用 9 位存贮温值度,最高位为符号位,如表 3.1 为 DS18B20的 温度存储方

19、式,负温度 S=1,正温度 S=0。如: 00AAH为+85摄式度,0032H 为 25 摄式度, FF92H为 55 摄式度表 3.1 18B20 用 9 位的温度存储方式2、DS18B20用 12位存贮温值度,最高位为符号位,如表 3.2 为 DS18B20的 温度存储方式,负温度 S=1,正温度 S=0。如:0550H为+85摄式度,0191H为 25.0625 摄式度 ,FC90H为-55 摄式度。表 3.2 18B20 用 12 位的温度存储方式DS18B20温度传感器的部存储器还包括一个高速暂存 RAM和一个非易失性的 可电擦除的 EERO。M高速暂存 RAM的结构为 8 字节的存

20、储器,结构如图 3.4 所示 头 2 个字节包含测得的温度信息, 第 3 和第 4 字节和的拷贝, 是易失的, 每次上电复位时被刷新。 第5个字节,为配置寄存器, 它的容用于确定温度值的 数字转换分辨率。图 3.4 DS18B20 存储器结构DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。 该字节各位 的定义如图 3.2 所示。低 5 位一直为,是工作模式位,用于设置 DS18B20 在工作模式还是在测试模式, DS18B20出厂时该位被设置为 0,用户要去改动, R1和 R0决定温度转换的精度位数,来设置分辨率。由表 3.3 可见, DS18B20温度转换的时间比较长,而且分辨

21、率越高,所需要 的温度数据转换时间越长。 因此,在实际应用中要将分辨率和转换时间权衡考虑。表 3.3 DS18B20 温度转换时间表高速暂存 RAM的第 6、7、8字节保留未用,表现为全逻辑 1。第 9字节读出 前面所有 8字节的 CRC码,可用来检验数据,从而保证通信数据的正确性。当 DS18B20接收到温度转换命令后, 开始启动转换。 转换完成后的温度值就 以 16 位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2 字节。单片机可以通过单线接口读出该数据, 读数据时低位在先, 高位在后, 数据格式以 0.0625 LSB形式表示。当符号位 S0 时,表示测得的温度值为正值,可以直

22、接将二进制位转换为 十进制;当符号位 S1 时,表示测得的温度值为负值,要先将补码变成原码, 再计算十进制数值;表 3.4 为部分温度值对应的二进制温度数据:表 3.4 部分温度值对应的二进制温度数据温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1

23、111 0000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H3.1.3 时钟芯片 DS1302(1) 时钟芯片 DS1302的性能DS1302 是 DALLAS公 司推出的涓流充电时钟芯片含有一个实时时钟 / 日历 和 31 字节静态 RAM通 过简单的串行接口与单片机进行通信实时时钟 / 日历电路 提供秒分时日日期月年的信息每月的天数和闰年的天数可自动调整时钟操作可 通过 AM/PM指 示决定采用 24 或 12 小时格式 DS1302 与单片机之

24、间能简单地采 用同步串行的方式进行通信仅需用到三个口线 1 RES 复位 2 I/O 数据线 3 SCLK 串行时钟时钟 /RAM 的读/ 写数据以一个字节或多达 31 个字节的字符组方式通 信 DS1302 工作时功耗很低保持数据和时钟信息时功率小于 1mW。 实时时钟具有能计算 2100 年之前的秒、分、时、日、日期、星期、月、年的 能力还有闰年调整的能力 318 位暂存数据存储 RAM 串 行 I/O 口 方 式 使 得 管 脚 数 量 最少 宽围工作电压 2.0 5.5V 工作电流 2.0V 时, 小于 300nA 读/ 写时钟或 RAM数 据时有两种传送方式单字节传送和多字图 3.5

25、 DS1302 的封装及引脚功能节传送字符组方式 8 脚DIP 封装或可选的 8 脚SOIC 封装根据表面装配 ,如图 3.5 所示简单 3 线接口与 TTL 兼容 Vcc = 5V 可选工业级温度围 -40 +85 ( 2) 时钟芯片 DS1302的工作原理DS1302在每次进行读、写程序前都必须初始化,先把 SCLK端置 “ 0”,接 着把 RST端置“1”,最后才给予 SCLK脉冲;表 3.5 为 DS1302的控制字,此控制 字的位 7 必须置 1,若为 0 则不能把对 DS1302进行读写数据。 对于位 6,若对程 序进行读/写时 RAM=,1对时间进行读 /写时, CK=0。位 1

26、至位 5指操作单元的地 址。位 0 是读/写操作位,进行读操作时,该位为 1;该位为 0 则表示进行的是 写操作。控制字节总是从最低位开始输入 / 输出的。“CH”是时钟暂停标志位,当 该位为 1 时,时钟振荡器停止, DS1302处于低功耗状态;当该位为 0 时,时钟 开始运行。“WP”是写保护位,在任何的对时钟和 RAM的写操作之前, WP必须为 0。当“ WP”为 1时,写保护位防止对任一寄存器的写操作。a. DS1302的控制字节DS1302的控制字如表 3.5 所示。控制字节的高有效位 (位 7)必须是逻辑 1, 如果它为 0,则不能把数据写入 DS1302中,位 6 如果 0,则表

27、示存取日历时钟数 据,为 1 表示存取 RAM数据;位 5 至位 1 指示操作单元的地址;最低有效位(位 0)如为 0 表示要进行写操作,为 1 表示进行读操作,控制字节总是从最低位开 始输出表 3.5 DS1302 的控制字b. 数据输入输出 (I/O)在控制指令字输入后的下一个 SCLK时钟的上升沿时,数据被写入 DS1302, 数据输入从低位即位 0 开始。同样,在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读出 DS1302的数据,读出数据时从低位 0 位到高位 7。如下图 3.6 所示:图 3.6 DS1302 读/ 写时序图c. DS1302 的数据读写DS1302单

28、字节读写的波形如图 3.6 所示。由波形可以看出, 无论是从 DS1302 中读一个数据,还是写一个字节数据到 DS1302中,都要先写一个命令字到 DS1302 中。即通过 SCLK引脚(7 号引脚)向 DS1302输入 8个脉冲,把I/O 引脚(6 号引脚) 上的命令字写入 DS1302。为了启动数据传输, 引脚(5 号引脚)应为高电平。 在将 由 0 置 1 的过程中, SCLK引脚必须为逻辑 0 。然后才能进行读写操作。 I/O 引脚 上的数据在 SCLK的上升沿串行输入 ( 写数据到 DS1302),在 SCLK的下降沿串行 输出( 读数据 )。d. DS1302的寄存器DS1302

29、有 12个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据 位为 BCD码形式 ,其日历、时间寄存器及其控制字见表 3.6 所示:表 3.6 DS1302 的日历、时间寄存器写寄 存器读寄 存器Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit080H81HCH10秒秒82H83H10分分84H85H12/ 24010时时AM /PM86H87H0010日日88H89H00010月月8AH8BH00000星期8CH8DH10 年年8EH8FHWP0000000此外, DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存 器及与 RAM相关的寄存器等。 时钟突发

30、寄存器可一次性顺序读写除充电寄存器外 的所有寄存器容。 DS1302 与 RAM相关的寄存器分为两类: 一类是单个 RAM单元, 共 31 个,每个单元组态为一个 8 位的字节,其命令控制字为 C0H FDH,其中奇 数为读操作,偶数为写操作; 另一类为突发方式下的 RAM寄存器,此方式下可一 次性读写所有的 RAM的 31 个字节,命令控制字为 FEH(写)、FFH(读)。3.1.4 16*2LCD 液晶显示 1602(1)1602采用标准的 16 脚接口,其中 :第 1 脚: VSS为地电源。第 2 脚: VDD接 5V正电源。第 3 脚: V0为液晶显示器对比度调整端,接正电源时对比度最

31、弱,接地电源时 对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个 10K 的电位器调整对比度。第 4 脚: RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存 器。第 5 脚: RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和 RW共同为低电平时可以写入指令或者显示地址,当 RS为低电平 RW 为高电平时可以读忙信号, 当 RS为高电平 RW为低电平时可以写入数据。第 6 脚: E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。第 714 脚:D0D7为 8 位双向数据线。第 1516 脚:空脚。(2)1602液晶模块部的控制器共有 1

32、1条控制指令 ,如表 3.7 所示:表 3.7 控制指令指令RSR/WD7D6D5D4D3D2D1D0清显示0000000001光标返回000000001*置输入模式000000011/DS显示开 / 关控制0000001DCB光标或字符移位000001S/CR/L*置功能00001DLNF*置字符发生存贮器地址0001字符发生存贮器地址( AGG)置数据存贮器地址001显示数据存贮器地址( ADD)读忙标志或地址01BF计数器地址( AC)写数到 CGRAM或 DDRAM10要写的数从 CGRAM或 DDRAM读数11读出的数据它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:

33、 1 为高电平、 0 为低电平)指令 1:清显示,指令码 01H,光标复位到地址 00H位置。指令 2:光标复位,光标返回到地址 00H。指令 3:光标和显示模式设置 I/D :光标移动方向, 高电平右移, 低电平左移 S: 屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令 4:显示开关控制。 D :控制整体显示的开与关,高电平表示开显示,低电 平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示 无光标 B :控制光标是否闪烁,高电平闪烁,低电平不闪烁。指令 5:光标或显示移位 S/C :高电平时移动显示的文字,低电平时移动光标。指令 6:功能设置命令 DL:高

34、电平时为 4 位总线,低电平时为 8 位总线 N:低 电平时为单行显示,高电平时双行显示 F: 低电平时显示 5*7 的点阵字 符,高电平时显示 5*10 的点阵字符。指令 7:字符发生器 RAM地址设置。指令 8:DDRAM地址设置。指令 9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能 接收命令或者数据,如果为低电平表示不忙。指令 10:写数据。指令 11:读数据。(3) DM-162 液晶显示模块可以和单片机 AT89C52直接接口 ,电路如图 3.7 所示:图 3.7 接口电路液晶显示模块是一个慢显示器件, 所以在执行每条指令之前一定要确认模块 的忙标志为低电平,

35、表示不忙, 否则此指令失效。 要显示字符时要先输入显示字 符地址,也就是告诉模块在哪里显示字符,表 3.8 是 DM-162的部显示地址。表 3.8 DM-16 的部显示地址比如第二行第一个字符的地址是 40H,那么是否直接写入 40H就可以将光标定位 在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位 D7 恒定为高电平 1 所以实际写入的数据应该是 01000000B (40H)+10000000B(80H)=11000000B(C0H)(4) 基本操作时序如图 3.8 所示 :读状态输入:RS=L,RW=,HE=H输出:DB0DB7=状态字写 指 令输 入 : RS=L,

36、 RW=L, E=下 降 沿 脉 冲 , DB0 DB7=指 令码读数据输入:RS=H,RW=,HE=H输出:DB0DB7=数据写 数 据输 入 : RS=H, RW=L, E=下 降 沿 脉 冲 , DB0 DB7=数据图 3.8 LCD 的读写时序4 硬件电路4.1 单片机主控制模块的设计AT89S52单片机为 40引脚双列直插芯片 , MCS-51单片机共有 4个8位的 I/O 口( P0、P1、P2、P3),每一条 I/O 线都能独立地作输出或输入。单片机的最小系统如下图所示 ,18 引脚和 19 引脚接时钟电路 ,XTAL1 接外部 晶振和微调电容的一端 ,在片它是振荡器倒相放大器的

37、输入 ,XTAL2 接外部晶振 和微调电容的另一端 , 在片它是振荡器倒相放大器的输出 .第 9 引脚为复位输入 端,接上电容 ,电阻及开关后够上电复位电路 ,20 引脚为接地端 ,40 引脚为电源端 .如图 4.1 所示:图 4.1 单片机最小系统4.2 时钟电路模块的设计图 4.2 是 DS1302与单片机的连接, 其中 Vcc1 为后备电源, Vcc2为主电源。 在主电源关闭的情况下,也能保持时钟的连续运行。 DS1302由 Vcc1 或 Vcc2 两 者中的较大者供电。当 Vcc2大于 Vcc1+0.2V时, Vcc2给 DS1302供电。当 Vcc2 小于 Vcc1时, DS1302

38、由 Vcc1供电。 X1和 X2是振荡源,外接 32.768KHz晶振。RST是复位/ 片选线,通过把 RST输入驱动置高电平来启动所有的数据传送。 RST 输入有两种功能:首先, RST接通控制逻辑,允许地址 / 命令序列送入移位寄存 器;其次, RST提供终止单字节或多字节数据的传送手段。当 RST为高电平时, 所有的数据传送被初始化,允许对 DS1302 进行操作。如果在传送过程中 RSTS 置为低电平,则会终止此次数据传送, I/O 引脚变为高阻态。上电动行时,在 Vcc 大于等于 2.5V 之前, RST必须保持低电平。中有在 SCLK 为低电平时,才能将 RST置为高电平, I/O

39、 为串行数据输入端(双向) 。SCLK始终是输入端。图 4.3 温度传感器与单片机的连接图 4.2 时钟芯片与单片机的连接4.3 温度采集模块设计如图 4.3 所示, 采用数字式温度传感器 DS18B20,它是数字式温度传感器, 具有测量精度高, 电路连接简单特点, 此类传感器仅需要一条数据线进行数据传 输,使用 2.4 与DS18B20的I/O 口连接加一个上拉电阻 ,Vcc 接电源,Vss 接地。4.4 功能按钮设计当按钮被按下时 , 该按钮对应的 I/O 口被拉为低电平 , 松开时按钮对应的 I/O 口由部的上拉电阻将该 I/O 拉为高电平 , 如图 4.4 所示:图 4.4 功能按键电

40、路4.5 16*2 LCD1602 液晶显示电路设计根据其读写的时序模拟总线的方式与单片机进行数据的通讯, 首先将数据从 I/O 口读入或送出,再选择 R/W 和 RS的电平进行不同的操作,在使能端 E下降 沿时触发数据的读入或送出。注意 P0 口要接上拉电阻,如图 4.5 所示:图 4.5 LCD 液晶显示屏与单片机的连接4.6 总体电路图本设计的具在温度指示的数字万年历的总体电路图如图 4.6 所示:图 4.6 总体电路图5 系统软件设计5.1 系统模块的功能分划分万年历程序设计总体上分为四个大模块,分别是DS1302 时钟程序模块、DS18B20测温模块、 LCD显示模块、键盘功能模块。

41、a. DS1302 时钟程序模块包括设置 DS1302初始时间、从 DS1302 读时间子程序、写 1302 一字节子程序、读 1302 一字节、关闭写保护、开启写保护、关闭时钟、延时子 100MS程序。b. DS18B20 测温模块包括 DS18B20的初始化子程序、 DS18B20数据处理子程序、读出温度值的子 程序、 DS18B20复位子程序、写 DS18B20的 1位字节子程序、读 DS18B20的 1个 字节子程序。c. LCD 显示模块包括 LCD初始化子程序、写入控制命令的子程序、 判断 LCD显示器是否忙的 子程序、向 LCD中的 DDRAM中写数据、查询 LCD字符表、调整模

42、式的显示子程序、 正常模式 LCD显示子程序。d. 键盘功能模块包括模式选择按键 SET子程序、调整模式选择子程序、 OUT键扫描子程序、 UP按键扫描子程序、 DOWN按键扫描子程序。5.2 总体程序流程框图本设计中,实现功能的总体程序流程框图如下图 5.1 所示:清时钟停止、调整模式标志图 5.1 总体程序流程框图5.3 时钟调整时间的流程图时钟调整时间的流程图 5.2 所示:NO图 5.2 时钟调整时间的流程5.4 修改键“ UP”的功能流程图修改键“ UP”的功能流程图如图 5.3 所示:开始图 5.3 修改键“ UP”的功能流程图单片机实现对温度传感器 DS18B20的温度转换读取温

43、度数值流程图如下图 5.4 所示:图 5.4 温度转换读取温度数值流程图6 系统仿真测试首先把各个模块的程序编好, 在伟福 W6000中调试没有错误后, 再到 Protues 7.1 中画好并连接电路图进行程序仿真。 各个部分的功能后再把它们综合到一个 主程序中去, 在伟福 W6000中调试通过后再把它用 Keil uVision2 软件把程序生 成 hex 格式最后到 Protues 7.1 中仿真。在综合到一起的时候,出现了 RAM分配 错误的问题,因为原先是一个模块子程序在运行, RAM的分配只要不要跟子程序 中的分配不冲突就可以了, 但是在综合各个模块子程序的时候就会出现 RAM分配

44、冲突的问题。最好是在设计程序之前先把 RAM的空间分配好。6.1 KEIL 的使用Keil uVision2 是目前使用广泛的单片机开发软件,它集成了源程序编辑 和程序调试于一体,支持汇编、 C、 PL/M语言。keil C51 v6.12 的使用:点击桌面快捷图标,如图 6.1 所示,可以直接进入主画面: 在 Keil 系统中,每做个独立的程序,都视为工程(或者叫项目)。首先从菜但 的“工程”中“新建工程 . ”,建立我们 图 6.1 快捷图标 将要做的工程项目如图 6.2 所示:图 6.2 新建建工程 新建的工程要起个与工程项目意义一致的名字, 可以是中文名; 我们这里的 程序是实验测试程

45、序,所以起的名字为 Test ,并将 Test 工程“保存”到 D:Keil 下如图 6.3 所示:图 6.3 新建名工程窗口接下来, Keil 环境要求我们为 Test 工程选择一个单片机型号;我们选择Atmel 公司的 89C52(虽然我们使用的是 89S52,但由于 89S52与 89C52、外部 结构完全一样,所以这里依然选择“ 89C52”),如图 6.4 所示:图 6.4 选择工程项目确定”后工程项目就算建立了。 立了工程项目, 肯定要实施这个工程, 现在就为工程添加程序;点击“文件”中的“新建”,新建一个空白文档,如图6.5 所示;这个空白文档就是让我们编写单片机程序的场所。在这

46、里你可以进行 编辑、修改等操作。图 6.5 新建文件写完后再检查一下, 并保存文件, 保存文件时, 其文件名最好与前面建立的工程名相同(当然这里为 Test 了),其扩展名必须为 .Asm !“文件名”中一 定要写全,如: Test.Asm ;保存后的文档彩色语法会起作用,将关键字实行彩 色显示,如图6.6 所示:图 6.6 保存文档保存了 Asm文件后,还要将其添加到工程中。具体做法如下: (如下图 6.7 所示)鼠标右键点击 “Source Group 1 ”,在弹出的菜单中选“增加文件到组Source Group 1图 6.7 添加文件在接下来出现的窗口中, 选择“文件类型”为“ Asm

47、源文件(*.a*,*.src )” (由于我们使用的是汇编语言,所以选择 Asm 源文件),选中刚才保存的 Test.Asm,按“ Add”,再按“关闭”,文件就添加到了工程中,如图 6.8 所示:图 6.8 添加到工程中向工程添加了源文件后,鼠标右键点击TarGet 1” ,在弹出的菜单中选目标 Target 1 属性”:在打开的话框中,选择“输出”选项卡,在这个选项卡中,“E 生成 HEX文件”选项前要打勾,按“确定”退出,如图 6.9 所示图 6.9 目标 TarGet 1 属性最后,从菜单的“工程”中执行“R 重新构造所有目标”(或者按下图红圈 中的按钮),汇编、连接、创建 Hex 文

48、件一气呵成;在工程文件的目录下就会生 成与工程名相同的一些文件,其部分文件我们并不必关心,而生成的 Hex 文件 是我们需要的! 它是要烧写到单片机中的最终代码, 也就是单片机可以执行的程 序。这里生成的是 Test.HEX ,稍后就写入。 若在下面的状态窗中有错误提示, 就需要再次编辑、修改源程序(如语法、字符有错等)、保存、构造所有。直至 没有错误,如图 6.10 所示:图 6.10 生成 hex 格式接下来,我们启动 Protues 软件仿真,将刚刚生成的 Test.Hex 烧写到单片机 芯片,在 实验板上实际验证一下。6.2 Protues 软件仿真Proteus ISIS 是英国 L

49、abcenter 公司开发的电路分析与实物仿真软件。它 运行于 Windows操作系统上,可以仿真、分析(SPICE) 各种模拟器件和集成电路, 该软件的特点是: 实现了单片机仿真和 SPICE电路仿真相结合。 具有模拟电路 仿真、数字电路仿真、 单片机及其外围电路组成的系统的仿真、 RS232动态仿真、 I2C 调试器、 SPI 调试器、键盘和 LCD系统仿真的功能;有各种虚拟仪器,如示 波器、逻辑分析仪、信号发生器等。支持主流单片机系统的仿真。目前支持的 单片机类型有: 68000系列、 8051系列、 AVR系列、 PIC12系列、 PIC16系列、 PIC18系列、 Z80系列、 HC

50、11系列以及各种外围芯片。提供软件调试功能。在 硬件仿真系统中具有全速、 单步、设置断点等调试功能, 同时可以观察各个变量、 寄存器等的当前状态, 因此在该软件仿真系统中, 也必须具有这些功能; 同时支 持第三方的软件编译和调试环境,如 Keil C51 uVision2 等软件。具有强大的 原理图绘制功能。总之,该软件是一款集单片机和 SPICE分析于一身的仿真软件, 功能极其强大。( 1) 进入 Proteus ISIS双击桌面上的 ISIS 6 Professional 图标或者单击屏幕左下方的“开始”“程序”“ Proteus 6 Professional ” “ ISIS 6 Pro

51、fessional ”,出现如图6.11 所示屏幕,表明进入 Proteus ISIS 集成环境。图 6.11 启动屏幕(2) 工作界面Proteus ISIS 的工作界面是一种标准的 Windows界面,如图 4-2 所示。包 括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览 对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑 窗口,如图 6.12 所示:图 6.12 工作界面根据设计原理画出仿真原理图(如附录二),检查电路连接无误后,双击单 片机芯片 AT89S52,如图 6.13 所示:图 6.13 烧写程序把生成的 Test.Hex 烧写到单片

52、机芯片, 点击仿真进程控制按钮, 点击运行, 观 看 LCD液晶显示效果, 若在实验板上实际验证的并不是我们预期的效果,那么, 就需要再次返回到编辑、 修改源程序那一步, 修改后再构造所有, 再次将生成的 Hex文件在 51ISP 中烧写、实验,直至成功!如下图 6.14 是本设计测试的效果 显示。图 6.14 测试结果显示本次设计是我们遇到过的较大的设计, 所以遇到的问题也比较的多, 尤其是 以前没有接触过如此复杂的硬件电路以及软件编程, 在软、硬件设计和调试中遇 到了不少的困难, 在建军老师的耐心指导下和同学的帮助才逐一克服了难题, 学 习到了不少的专业知识。在整个设计过程之前,我已经在网上找了相关方面的资料,万事开始难,一 开始不知道从哪里下手。 后来慢慢学会分析系统, 将系统模块化, 各个模块可以 在软件或者硬件上实现。 在确保各个模块的硬件电路和与之相搭配的程序能够正 常工作后在把它们组成一个系统。 由于我的理论知识水平有限, 实践能力和设计 经验不足, 在设计的过程中难免还存在一些问题甚至是错误。 恳请各位老

温馨提示

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

评论

0/150

提交评论