毕业论文---数字温度计abpp.docx_第1页
毕业论文---数字温度计abpp.docx_第2页
毕业论文---数字温度计abpp.docx_第3页
毕业论文---数字温度计abpp.docx_第4页
毕业论文---数字温度计abpp.docx_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

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

文档简介

河南理工大学毕业设计(论文)说明书摘 要日常生活中,实时地掌握温度和时间信息对于人们来说必不可少。本设计是基于单片机的多功能温度计,实现时间显示和温度显示两种功能。整个硬件系统采用at89s52单片机作为主芯片,协调整机工作并进行数据处理。温度测量模块以ds18b20数字温度传感器作为核心,单线接口即可实现与处理器的双向通讯;时钟模块则采用实时时钟电路ds1302,提供秒、分、时、日期的信息;1602字符液晶提供的32个字符的显示容量足以显示时间和温度;电源方面,直接使用usb接口供电;由四个按键组成的键盘电路用以设置日期时间。本设计采用proteus作为仿真软件,根据硬件设计思想,将系统所需要的元件在isis中连接好后,在at89s52单片机中加载编译好的hex文件,即可进行仿真。仿真运行正常后,进入实物制作阶段,最终实物实现了设想功能。关键字:at89s52; ds18b20; ds1302; 1602字符液晶; proteusabstractits necessary to get the information about the real-time and temperature in our daily life。this design is expect to display the real-time and temperature by a multifunctional thermometer which is based on one type of singlechip .the hardware system uses at89s52 micro-chip controller unit as a core to coordinate the whole systems work and process the datas.in the temperature measure module ,temperature sensor ds18b20 is a good choice since it can achieve a two-way communication with the singlechip by only one interface.the real-time module is based on the real-timer ds1302 which can provide the the information about the present year,date and time.as a monitor,character mode lcd(liquid crystal display)1602 has a big enough display capacity of 32 characters to show the real-time and temperature information.a usb(universe serial bus) interface was used to take charge of power supply.this design uses proteus as the simulation software, connect the required components according to the hardware system design in the isis , and load the compiled hex files to the at89s52 microcontroller.then can run into the physical production stage, the ultimate achievement can realise expected function.keywords: at89s52; ds18b20; ds1302; character mode lcd 1602;proteus目 录摘 要iabstractii1前 言11.1选题背景11.2选题意义22 多功能温度计的硬件设计32.1 系统分析32.1.1 处理器分析32.1.2 时钟模块分析32.1.3 温度测量模块分析42.1.4 显示模块分析42.2 硬件系统总体方案设计42.2.1 硬件系统总体结构42.2.2 硬件系统原理图52.3 各部分硬件电路设计52.3.1 at89s52单片机最小系统52.3.2 ds18b20温度传感器电路92.3.3 ds1302实时时钟电路132.3.4 多功能温度计显示终端字符型lcd液晶182.3.5 键盘输入电路203 多功能温度计的软件设计213.1 系统主程序流程图213.2 时钟模块程序流程图223.3 温度模块程序流程图233.4 显示模块程序流程图233.5 键盘输入程序流程图244 系统仿真及实物制作264.1仿真软件介绍264.2 仿真结果274.3 实物制作275 总结与展望295.1 总结295.2 展望29致 谢30参考文献31附录 多功能温度计部分程序清单321河南理工大学毕业设计(论文)说明书1前 言1.1 选题背景单片机具有体积小、功能强、可靠性高、价格低廉等一系列优点,不但已成为工业测控领域广泛采用的智能化控制工具,而且已渗入到人们工作和和生活的各个方面,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。温度是我们日常生产和生活中时刻在接触到的物理量,但是它不能直观看到的,仅凭感觉只能猜测到大概的温度值,传统的指针式的温度计虽然能指示温度,但是精度低,使用不够方便,显示不够直观,温度计的出现改变了这一状况。最早的温度计由意大利科学家伽利略(15641642)于1593年发明的。他设计温度计是一根一端敞口的玻璃管,另一端带有乒乓球大的玻璃泡。使用时需先加热玻璃泡,然后将玻璃管插入水中。伴随温度的变化,玻璃管中的水面会上下移动,根据移动的量就可以判定温度的高低和变化。由于温度计受热胀冷缩的作用,所以这种温度计受大气压强等外界环境因素的影响较大,测量误差也就较大。 之后伽利略的学生和其他科学家,在伽利略的设计基础上反复改进,如把玻璃管翻转,将液体放在管内,将玻璃管封闭等。其中法国人布里奥在1659年设计的温度计较为突出,他将玻璃泡的体积缩小,并选择水银作为测温物质,这样的温度计已具备了现代温度计的雏形。荷兰人华伦海特在1709年使用酒精,在1714年又使用水银作为测温物质,制造了更精确的温度计。他观察了水的沸点、水和冰混合时的温度、盐水和冰混合时的温度;经过反复试验与修正,最终将一定浓度的盐水凝固时的温度规定为0,把纯水凝固时的温度定为32,把标准大气压下水沸腾的温度定为212,表示华氏温度,这就是华氏温度计。 在华氏温度计问世的同时,法国人列缪尔(16831757)也设计制造了一种温度计。他认为水银的膨胀系数太小,不适合做测温物质。他反复试验发现,含有20%水的酒精,在水的冰点和沸点之间,其体积从1000个体积单位增大到1080个体积单位。因此他将冰点和沸点之间分为80份,定为自己温度计的温度分度,也就是列氏温度计。华氏温度计制成后又经过30多年,瑞典人摄尔休斯于1742年改进了华伦海特温度计的刻度,他把水的沸点定为0度,把水的冰点定为100度。之后他的同事施勒默尔将两个温度点的数值又倒过来,就成了现在的摄氏温度,用表示。华氏温度与摄氏温度的关系为9/5+32,或59(-32)。 现在英、美国家多采用华氏温度,德国多用列氏温度,而世界科技界和工农业生产中,以及我国、法国等大多数国家则多用摄氏温度。1.2 选题意义数字温度计可以准确的测量温度,并以数字形式显示出来。数字温度计的出现可以让人们直观的了解自己想知道的温度到底是多少度。而时间更是人们尤为关注的物理量,无论安排日程或是记录数据都必不可少,因此,集成显示温度和时间的工具就显得非常实用。本设计提供了一个实现温度和时间测量与显示的方案,字符液晶的采用能清晰直观地显示这两种常用物理量,对于老人尤其便利。 2 多功能温度计的硬件设计2.1 系统分析2.1.1 处理器分析多功能温度计采用的处理器要负责整个硬件系统的计算处理及各个模块的工作协调。可选择的一个方案为采用凌阳16位单片机spce061a,它具有dsp功能,内置有十六位硬件乘法器和加法器,并配有dsp特有的指令,大大加快了各种算法的实现速度。并且,spce061a可使用内部ad(模数转换)单元实现输入温度电压信号的转化,不但转换速度快,精度也有较高保证;由于ad等模块单元集成在芯片内部,其可靠性和抗干扰能力相对提高,而且由于spce061a具备语音功能,可以实现温度的语音播报功能。但是,这种单片机价格相对昂贵。另一个可行的方案是采用at89s52单片机,它是一种低功耗、高性能的cmos 8位单片机,具有8k在系统可编程flash存储器,与我们所学习的mcs-51单片机产品兼容,而且与c系列单片机相比,at89s52具备的isp在线编程功能不需要把芯片从工作环境中剥离就能够改写单片机存储器内的程序,易于调试和修改。考虑到成本因素以及对单片机的熟悉程度,本设计采用这一方案。2.1.2 时钟模块分析多功能温度计中时间显示功能的实现可以直接利用单片机内置的定时器,完成时钟、日期程序,这种方法不需使用外围芯片,成本较低,但软件编写复杂,可靠性较低,通常达不到需要的精度且断电后时钟无法继续运行。更好的选择是采用实时时钟芯片,例如ds1302。这种方案时间精度较高,耗电少,在无主电源情况下有备用电池供电,确保时钟再断电后能继续运行。虽然成本增加,但考虑到断电情况,采用实时时钟芯片更符合多功能温度计的设计要求。 2.1.3 温度测量模块分析温度测量是多功能温度计的核心功能,可采用应用普遍,技术成熟度高的热敏电阻器,但其可靠性不高,电路复杂精度却低。而采用数字温度传感器 ds18b20不但外围电路简单,而且精度高,虽然由于要求延时精确,其编程较为复杂但考虑到精度要求,ds18b20是更好的选择。2.1.4 显示模块分析显示模块作为多功能温度计的终端是人们直观看到的部分,若采用led(light emitting diode)数码管,虽然其有价格低廉,编程简单,显示内容醒目等诸多优势,但同时占用较多单片机i/o端口,电路复杂,特别是需显示内容较多时不易排列。若采用字符液晶显示,其显示内容丰富且电路简单,占用i/o 端口少。虽然其价格相对较高,显示内容也不够醒目但考虑到需要显示的内容较多,本设计采用字符液晶显示。2.2 硬件系统总体方案设计2.2.1 硬件系统总体结构at89s52单片机最小系统4个按键输入1602字符液晶ds18b20数字温度传感器实时时钟电路ds1302图2-1 硬件系统总体结构框图如图2-1所示,硬件系统的核心处理器为at89s52的最小系统,负责硬件系统的计算处理及协调工作。由于时钟需要进行校对和调整,因此需要在系统中设置4个输入按键以对时钟进行设置;而ds18b20是直接数字输出的温度传感器,不需要在at89s52系统中扩展a/d转换器。2.2.2 硬件系统原理图图2-2 硬件系统原理图 图2-2 即为多功能温度计的硬件系统原理图,各个模块会在下文中做详细的介绍。 2.3 各部分硬件电路设计2.3.1 at89s52单片机最小系统at89s52 单片机最小系统担当整个硬件系统的核心,它既是协调整机工作的控制器,又负责整个系统的数据处理。如图2-4所示,最小系统主要由主芯片、时钟电路、复位电路组成。(1)at89s52单片机介绍本设计采用的主芯片为at89s52单片机:一种低功耗、高性能且具有8k 在系统可编程flash 存储器的cmos 8位微控制器。at89s52具有以下标准功能: 8k字节flash,256字节ram,32 位i/o口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,at89s52 可降至0hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,cpu停止工作,允许ram、定时器/计数器、串口、中断继续工作。掉电保护方式下,ram内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。如图2-3所示为at89s52单片机的引脚分布图:图2-3 at89s52引脚分布图下面对at89s52各引脚功能进行简要的介绍:p0口:po口是一个8位漏极开路的双向i/o口。作为输出口,每位可以驱动8个ttl逻辑电平。对p0端口写高电平时,引脚当作高阻抗输入。当访问外部程序和数据存储器时,p0口也被作为低8位a/d(地址/数据)复用,在这种模式下,p0具有内部上拉电阻。在使用flash编程时,p0口也用来接收指令字节;在程序校验时,输出指令字,此时,需要外部上拉电阻。 p1 口:p1 口是一个具有内部上拉电阻的8位双向i/o 口,p1 输出缓冲器可以驱动4个ttl逻辑电平。对p1 端口写高电平时,内部上拉电阻把端口拉高,此时可以用作输入口。作为输入口使用时,被外部拉低的引脚将由于内部电阻的原因而输出电流。 此外,p1.0和p1.2分别用作定时器/计数器2的外部计数输入(p1.0/t2)和定时器/计数器2的触发输入(p1.1/t2ex)。在flash编程和校验时,p1口接收低8位地址字节。 p2 口:p2 口是一个具有内部上拉电阻的8 位双向i/o口,p2 输出缓冲器可以驱动4个ttl逻辑电平。对p2 端口写高电平时,内部上拉电阻把端口拉高,此时可以用作输入口。作为输入口使用时,被外部拉低的引脚将由于内部电阻的原因而输出电流。在访问外部程序存储器或用16位地址读取外部数据存储器时,p2 口送出高8位地址。在这种应用中,p2 口使用很强的内部上拉发送高电平。在使用8位地址访问外部数据存储器时,p2口输出p2锁存器的内容。在flash编程和校验时,p2口也接收高8位地址字节和一些控制信号。 p3口:p3口是一个具有内部上拉电阻的8位双向i/o 口,p3 输出缓冲器能驱动4个ttl逻辑电平。对p3 端口写高电平时,内部上拉电阻把端口拉高,此时可用作为输入口。作为输入使用时,被外部拉低的引脚将由于内部电阻的原因而输出电流。 p3口也作为at89s52特殊功能(第二功能)使用,其中p3.0第二功能为串行输入口(rxd),p3.1第二功能为串行输出口(txd),p3.2第二功能为外部中断0(int0),p3.3第二功能为外部中断1(int1),p3.4第二功能为用作定时/计数器0(t0),p3.5第二功能为用作定时/计数器1(t1),p3.6第二功能为外部数据存储器写选通口(wr),p3.7第二功能为外部数据存储器度选通口。此外,p3口还接收一些用于flash闪存编程和程序校验的控制信号。 rst:复位输入端,当晶振工作时,rst引脚出现持续两个机器周期以上的高电平将使单片机复位。 ale/prog:当访问外部程序存储器或数据存储器时,ale(地址锁存控制信号)输出脉冲用于锁存地址的低8位字节。在一般情况下,ale以时钟振荡频率的六分之一输出固定的脉冲信号,因此它可用来作为外部定时器或时钟使用,然而,值得特别强调的是,每此访问外部数据存储器时将跳过一个ale脉冲。 如果需要,可通过对特殊功能寄存器(sfr)区中的8eh单元的d0位置高电平,从而禁止ale操作。该位置位后,仅在执行movx和movc指令才能将ale激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ale禁止位无效。对flash存储器编程期间,该引脚还用于输入编程脉冲(prog)psen:外部程序存储器选通信号。当at89s52由外部程序存储器取指令(或数据)时,每个机器周期psen被激活两次,当访问外部数据存储器时将不被激活。ea/vpp:访问外部程序存储器控制信号。欲使cpu仅访问外部程序存储器(地址为0000h-ffffh),ea端必须保持低电平(接地)。如ea端为高电平,cpu则执行内部程序存储器的指令。 在flash编程期间,该引脚加上+12v的编程允许电源。xtal1:振荡器反相放大器和内部时钟发生电路的输入端。xtal2:振荡器反相放大器的输出端。(2)时钟电路时钟电路方面,时钟信号通常用两种电路形式得到:内部振荡和外部振荡。由于采用内部振荡方式时,电路简单,所得的时钟信号也相对稳定,实际使用中这种方式更为普遍。at89s52单片机有一个用于构成内部振荡器的反向放大器,引脚xtal1(x1)和xtal(x2)分别是此放大器的输入端和输出端,在其外接晶体振荡器(简称晶振)和陶瓷谐振器都可以用来一起构成自激振荡器。如图2-4所示,外接晶振连同两个值为30pf的电容构成并联谐振电路,它们起快速起振、稳定振荡频率的作用,晶振频率为 12mhz。图2-4 at89s52最小系统主要部分示意图(3)复位电路复位可以初始化单片机内部的某些特殊功能寄存器,单片机的复位是靠外电路来实现的。在正常运行情况下,只要rst引脚上出现连续两个机器周期高电平,即可引起单片机复位,但如果rst引脚上持续出现高电平,单片机就将处于循环复位状态,因此需要单片机复位后能脱离复位状态。根据实际应用的需求,复位操作通常有上电复位和开关复位两种基本形式。上电复位要求单片机通电后,自动实现复位操作;而开关复位要求在电源接通的情况下,若单片机在运行期间发生死机,通过按扭开关操作实现单片机复位。本设计采用上电复位且开关复位电路,如图2-4所示,当接通电源后,电容充电,使rst引脚出现持续一段时间的高电平,从而实现上电且开关复位操作。通常电容值在1030uf范围内选择,电阻值为10k。复位后,输入/输出(i/o)端口 p0p3置为ffh, 堆栈指针sp 置为07h, sbuf内置为不定值,其它的寄存器全部被清零,内部ram的状态则不受复位的影响。2.3.2 ds18b20温度传感器电路ds18b20是dallas公司生产的一款支持“一线总线”接口的数字化温度传感器,现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。下面详细介绍ds18b20温度传感器的使用。(1)ds18b20的性能指标ds18b20温度传感器的主要性能指标如下:工作电压:3.0v5.5v;测量温度范围及精度:-55+125,以0.5递增;温度数字量转换时间:200ms接口:单线接口;用户可设定的非易失性温度报警设置;测量结果以912位数字量方式串行传送;可通过数据线供电,零待机功耗。(2)ds18b20的引脚定义ds18b20具有8-pin的soic封装和3引脚的to-92封装,其引脚分布如图2-5所示。图2-5 ds18b20的引脚分布ds18b20的各引脚的功能说明如下:gnd:电源供给地dq:数据i/o:外接供电输入nc:空脚ds18b20的内部结构如图2-6所示:图2-6 ds18b20的内部结构(3)ds18b20的温度格式ds18b20采用12位记录温度值,最高5位为符号位,表2-1为ds18b20的温度数据存储格式,当温度为负值时s=1,温度为正值时s=0,如:0550h为+85,fc90h为-55。表2-1 ds18b20温度数据格式ls byte bit7 bit0232221202-12-22-32-4ms byte bit15 bit8sssss262524(4)ds18b20时序初始化时序如图2-7(a)所示ds18b20的所有通信都由由复位脉冲组成的初始化序列开始,该初始化序列由主机发出,后跟由ds18b20发出的应答复位脉冲的存在脉冲。主机将总线拉低至少480来释放复位脉冲,之后释放总线,由于5k的上拉电阻的作用,总线恢复到高电平,ds18b20检测到上升沿后等待15到60,然后以拉低总线60到240的方式发出存在脉冲。 图2-7 ds18b20时序示意图写时序如图2-7(b)所示,主机在写时隙向ds18b20写入数据,并在读时隙从ds18b20读出数据,在单总线上每个时隙只传送一位数据。所有的写时隙必须至少保持60的持续时间,且相邻两个写时隙必须要有至少1的恢复时间,而所有的写时隙,无论写0还是写1,都由拉低总线产生。为产生写1时隙,主机必须在拉低总线后15内释放总线,且拉低的电平至少要持续1,由于上来电阻的作用,总线电平恢复为高电平,直至完成写时隙。为产生0时隙,拉低总线后主机持续拉低总线即可,直至写时隙完成后释放总线,持续60到120。ds18b20会在写时隙产生后的15到60内采样总线,由此来确定是写0还是写1。读时序如图2-7(c)所示,ds18b20只有在主机发出读时隙后才会向主机发送数据,因此主机在放出读暂存器命令或读电源命令后必须即刻产生读时隙以使ds18b20提供相应的数据。所有的读时隙必须至少持续60,且相邻两个读时隙要有至少1的恢复时间。所有读时隙都由拉低总线至少1后释放总线产生。由于ds18b20输出的数据在下降沿产生15后有效,释放总线和主机采样总线等动作要在15内完成。(5)ds18b20的单片机接口电路当使用at89s52控制ds18b20进行温度信息采集时,只需要使用at89s52的一个引脚和ds18b20的dq引脚按照通信协议进行通信即可, 其电路如图2-8所示。图2-8 ds18b20的单片机接口电路2.3.3 ds1302实时时钟电路ds1302是由dallas公司生产的涓流充电时钟芯片,其内置有一个实时时钟/日历和31字节静态ram,经由简单的串行接口与单片机进行通讯。实时时钟/日历电路可以日工年、月、日、时、分、秒的信息,不同月的天数和闰年的天数能够自动调整,而时钟操作可通过am/pm指示决定采用24小时格式还是12小时格式。(1)ds1302的性能指标ds1302的主要性能指标如下:实时时钟具有能计算2100年之前的年、月、日、时、分、秒的能力,并能够完成闰年自动调整;318位暂存数据存储ram;工作电压:2.0v5.5v;工作电流:2.0v时,小于300na;串行i/o口方式使得管脚数量最少;简单三线接口;读/写时钟或ram数据时,有两种传送方式:单字节传送和字符组传送;工作时功耗极低;对有可选的涓流充电能力;(2)ds1302的引脚定义图2-9 ds1302的引脚分布如图2-9所示,ds1302具有8引脚dip封装或可选的8引脚soic封装。ds1302的各引脚定义如下:x1,x2:32.768晶振引脚;gnd:地;rst:复位脚;i/o:数据输入/输出引脚;sclk:串行时钟;,:电源供电引脚。(3)ds1302内部寄存器ds1302共有十二个内部寄存器,其中有7个寄存器与时钟、日历相关,以bcd码的形式存放数据位。表2-2为ds1302内部的七个与时间、日期有关的寄存器及一个写保护寄存器的控制字示意表,设计中实时时钟就是通过将初始设置的日期、时间数据写入这些寄存器,然后再不断地从这些寄存器中获取实时时间和日期。表2-2 ds1302内部寄存器控制字示意表读寄存器写寄存器位7位6位5位4位3位2位1位0范围81h80hch10秒秒00-5983h82h10分分00-5985h84h12/240am/pm时时1-12/0-2387h86h0010日日1-3189h88h00010月月1-128bh8ah00000周日1-78dh8ch10年年00-998fh8ehwp0000000下面是表2-2中一些特殊的控制位的定义:ch:时钟停止位,当ch=0时,振荡器工作允许,当ch=1时,振荡器停止;wp:写保护位,当wp=0时,寄存器数据能够写入,当wp=1时,寄存器数据不能写入;时寄存器的第7位:12/24小时标志位,bit7=0时为24小时模式,bit7=1时则为12小时模式,;时寄存器的第5位:am/pm定义位,ap=0时为上午模式,ap=1时则为下午模式。(3)ds1302的读写操作说明 除了电源和接地,ds1302只有sclk、i/o、rst(即ce)三个引脚与单片机连接,其数据读写是通过i/o串行进行的。ds1302进行一次读写操作时至少读两个字,第一个字为控制字,即一个命令;第二个字极为要读或写的数据,表2-3为ds1302控制字示意表。表2-3 ds1302控制字示意表7 6 5 4 3 2 1 01ram cka4a3a2a1a0ram k如表2-3所示,控制字总是从最低位开始输出,其最高有效位(位7)必须为1,若为0,则不能向ds1302中写入数据;位6为1时表示ram,即寻址内部存储器地址,为0时寻址内部寄存器;位5至位1指示操作单元的地址;位0为1时表示下一步进行读操作,为0时表示下一步操作将要“写”。图2-10为ds1302进行单字节读写操作时的时序图,如图2-10所示,ds1302在进行单字节写操作之前须先将ce(即rst)置为高电平,然后单片机将控制字的最低位放到i/0上,i/o的数据稳定后,sclk被置为高电平,ds1302检测到sclk的上升沿后将读取i/o上的数据,此后sclk被置为低电平,再将控制字的位1放到i/o上,如此反复将一个字节控制字的八位传送给ds1302,接着将字节中要写的数据的字传送给ds1302,传送结束后,单片机将ce置为低电平。图2-10 ds1302单字节读写时序图单字节读操写控制字的过程同写操作基本相同,但在写控制字的最后一个位,即最高位时,sclk还处于高电平时ds1302就将数据放到i/o上,单片机将sclk置为低电平后锁存数据,接着单片机就可以读取i/o上的数据。如此反复就将字节中要读的数据读入单片机。由以上内容就可总结出对ds1302进行操作的步骤:首先要通过写保护寄存器wp位取消写保护以将日期、时间的初值写入各对应寄存器,写入初值的同时通过将秒寄存器ch位的值置为0,ds1302开始走时运行,为防止误改写寄存器的值需将写保护寄存器wp位再次置1,然后不断读取各日期、时间寄存器的值,将它们显示到字符液晶上。(4)ds1302的单片机接口电路如图2-11所示,除了电源与接地,ds1302仅有sclk、i/o、rst三个引脚分别与at89s52单片机的p3.5、p3.6、p3.7连接,接系统电源,在系统上电后,ds1302即可运行,在接口外接电源可保证系统掉电后时钟继续运行。图2-11 ds1302的单片机接口电路2.3.4 多功能温度计显示终端字符型lcd液晶at89s52接收到采集的时间和温度信息并处理后,需要显示给最终用户,相比于led数码管,lcd具有功耗低、接口灵活、显示质量高等优点。本设计采用了1602字符型lcd。(1)lcd1602主要技术参数显示容量:162个字符;字符尺寸:2.954.35(wh)mm;芯片工作电压:4.55.5v;模块最佳工作电压:5.0v;工作电流:2.0ma(5.0v)。(2) lcd1602的单片机接口电路与引脚定义图2-12为14脚(无背光)lcd1602的单片机接口电路,其中,d0d7数据输入输出接口连接到的单片机接口需要在软件中定义。图2-12 lcd1602单片机接口电路各引脚说明如下:gnd:电源地;vdd:电源;vee:液晶显示偏压信号,可接到一电位器上调节液晶显示的亮度;rs:数据/指令选择端,高电平时输入数据,低电平时输入指令;rw:读/写选择端,高电平时从lcd读取信息,低电平时向lcd写入数据或指令;e:使能信号,高电平时读取信息,下降沿执行指令;d0d7:8位双向数据线,其中d0为最低位,d7为最高位;bgvcc:lcd背光电源正极(见于16脚lcd1602接口);bggnd:lcd背光电源负极(见于16脚lcd1602接口)(3) lcd1602指令说明及时序 基本操作时序读状态:输入位rs=0,rw=1,e=1,输出位dod7为状态字;写指令:输入位rs=0,rw=1,d0d7为指令码,e为高脉冲;读数据:输入位rs=1,rw=1,e=1,输出位d0d7为数据;写数据:输入位rs=1,rw=0,dod7为数据,e为高脉冲,无输出。状态字说明如表2-4所示,sta06存储当前数据地址指针的数值,sta7为读写操作使能位,当该位为0时允许读写操作,反之,则禁止读写操作。对控制器每次进行读写操作之前,都要确保sta7为0。表2-4 状态字说明表sta7 d7sta7 d7sta7 d7sta7 d7sta7 d7sta7 d7sta7 d7sta7 d7 ram地址映射要显示字符时要先输入显示字符地址,即lcd显示字符的位置信息,图2-13为lcd1602ram地址映射图。lcd16字2行000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f图2-13 ram地址映射图2.3.5 键盘输入电路由于多功能温度计具备时钟的功能,因此需要具有设置时钟的按键输入设备,本设计采用了4个按键作为输入设备,与at89s52的p2.3p2.6相连。图2-14即为键盘输入电路示意图。图2-14 键盘输入电路3 多功能温度计的软件设计3.1 系统主程序流程图图3-1为多功能温度计系统主程序流程图,系统上电后,对各个芯片进行初始化,此后,若有按键操作,将进入时钟调整模式,lcd1602将对应按键操作显示;若无按键操作,lcd1602将维持初始显示。源代码详见附录主函数部分。上电开始lcd1602初始化开始ds18b20初始化开始ds1302初始化开始扫描按键开始按键操作?n时钟调整开始ylcd1602显示开始图3-1 系统主程序流程图3.2 时钟模块程序流程图图3-2为多功能温度计系统时钟模块程序流程图,系统上电后,对ds1302进行读操作,读取的数据经转换后送交lcd1602显示,若有按键操作,则进入时钟调整模式,调整后的数据写入ds1302寄存器,再由单片机读取,lcd1602更新显示;若无按键操作,则继续读取ds1302数据,lcd更新显示。源代码详见附录ds1302子程序部分。上电初始化读取日期时间数据数据转换lcd1602显示有无按键操作?ny时钟调整写入ds1302寄存器图3-2 时钟模块程序流程图3.3 温度模块程序流程图图3-3为多功能温度计系统温度模块程序流程图,系统上电后,对ds18b20写入命令以启动温度测量,单片机读取温度数据并将数据转换为十进制后送交lcd1602显示。源代码详见附录ds18b20子程序部分。读取温度数据上电初始化温度数据转换为十进制制写入命令lcd1602显示启动温度测量图3-3 温度模块程序流程图3.4 显示模块程序流程图图3-4为多功能温度计系统显示模块程序流程图:上电初始化默认显示是否有按键操作?ny时钟调整lcd1602显示图3-4 显示模块程序流程图如图所示,系统上电后,若无按键操作,lcd1602将显示程序中设定的默认内容,若有按键操作,将进入时钟调整模式,lcd1602将根据调整更新显示内容。具体源代码详见附录液晶显示程序部分。3.5 键盘输入程序流程图图3-5为多功能温度计系统键盘输入程序流程图:上电i/o口初始化扫描按键有键按下?ny读取按键,执行不同功能模式切换数值加一数值减一退出调整模式时钟调整lcd1602显示图3-5 键盘输入程序流程图如图所示,系统上电后,对按键连接的端口进行初始化,之后,若有按键操作,则进入时钟调整模式,四个按键分别执行模式切换、数值加一、数值减一、退出调整模式功能,lcd1602将根据按键操作更新显示内容;若无按键操作,将进入等待状态,直至扫描到按键操作。源代码详见附录按键功能程序部分。4 系统仿真及实物制作4.1仿真软件介绍通过软件对系统进行仿真,是进行实物制作前的必要步骤,通过软件仿真,可以观察到系统模拟运行的结果,对于软件调试和实物焊接具有重要的指导意义。本设计采用proteus作为仿真软件,版本为7.4sp3。proteus是英国labcenter公司开发的电路分析与实物仿真及印制电路板设计软件,它可以仿真、分析各种模拟电路与集成电路,软件提供了大量模拟与数字元器件及外部设备,各种虚拟仪器,特别是它具有对单片机及其外围电路组成的综合系统的交互仿真功能。proteus主要由isis和ares两部分组成,isis的主要功能是原理图设计及与电路原理图的交互仿真,ares主要用于印制电路板的设计。proteus的isis是一款labcenter出品的电路分析实物仿真系统,可仿真各种电路和ic,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。图4-1为proteus isis的运行界面。图4-1 proteus isis运行界面4.2 仿真结果根据硬件设计思想,将系统所需要的元件在isis中连接好后,在at89s52单片机中加载编译好的hex文件,即可进行仿真。图4-2为多功能温度计的仿真结果。图4-2 多功能温度计仿真运行结果4.3 实物制作 仿真运行正常后,就可以着手购买器件进行实物制作。本次设计所用器件主要由网上购买,由于ds1302和ds18b20的单片机接口电路并不复杂,实物制作过程比较顺利。图4-3为多功能温度计实物实拍图片。图4-3 多功能温度计实物实拍图5 总结与展望5.1 总结基于单片机的多功能温度计并不是一个硬件设计难度较大的题目,难点主要还是集中在软件设计上。最初采用的程序在proteus中仿真运行正常,但在实物中烧入程序后,lcd显示发生异常,参考同学资料对连接引脚进行修改后,实物运行正常,可见,自己对at89s52单片机的引脚功能了解还不够透彻。实物焊接中,许多引脚的焊点较为粗糙,焊功有待提高,还须多加练习。5.2 展望虽然预想的功能在实物中都能实现,但还有许多地方可以改进。首先,由于采用的lcd1602的字符位数较少,显示内容的布局还不甚理想,需要多加揣摩,且因为不支持中文显示,显示的内容还不够丰富,可改用lcd12864以实现更丰富的显示。其次,多功能温度计虽稍显低端,却贴近人们的日常生活,为了使用的方便,可将本设计采用的usb供电方式改为更加灵活的电池供电,此外,也可加装外壳,使多功能温度计整体显得更加美观。致 谢这毕业设计较以往的课程设计要求更高,经过长时间的准备和不断的修改完善,终于顺利实现了设想功能。首先要感谢我的指导老师胡松华老师,他从毕业设计开始到完成都给了我很多的指导和帮助,提出我在论文中的一些不足之处,并给予了修正建议。周围的同学在资料收集,程序修改,实物制作等方面给我提供了很大帮助,感谢他们。同时,也要感谢网上那些无私分享资料的朋友,整个设计中硬件设计和软件设计部分都参考了大量从网上得来的资料。 最后,在即将结束四年大学生活之际,要感谢各位老师的谆谆教导,感谢学校为我们提供如此丰富的学习资源和如此美丽的校园。参考文献1余发山,王福忠等.单片机原理及应用技术.徐州:中国矿业大学出版社,2008:7-632张靖武,周灵彬.单片机原理、应用与proteus仿真.北京:电子工业出版社,2008:18-683张天凡等.51单片机c语言开发详解.北京:电子工业出版社,2008:14-3614谭浩强.c程序设计.北京:清华大学出版社,2005:37-665徐爱均. 单片机原理实用教程 基于proteus虚拟仿真。北京:电子工业出版社,2009:185-2126林立.单片机原理及应用 基于proteus和keil c.北京:电子工业出版社,2009:196-2187江世明.基于proteus的单片机应用技术.北京:电子工业出版社,2009:73-1268孙育才,王荣兴,孙华芳等.atmel新型at89s52系列单片机及其应用.北京:清华大学出版社,2005:3-789郭观七.基于 c 语言的 mcs-51 系列单片机软件开发系统.武汉:华中理工大学出版社,1997:17-9710刘文涛.单片机语言c51典型应用设计.北京:人民邮电出版社,2005:170-243附录 多功能温度计部分程序清单主函数部分:main()flag=1;/时钟停止标志lcd_initial();/液晶初始化init_ds18b20( ) ;/ds18b20 初始化initial_ds1302(); /时钟芯片初始化up_flag=0;down_flag=0;done=0;/进入默认液晶显示while(1)while(done=1)keydone();/进入调整模式while(done=0)show_time();/液晶显示数据flag=0;setkey();/扫描各功能键ds1302子程序部分:typedef struct _systemtime_ unsigned char second; unsigned char minute; unsigned char hour; unsigned char week; unsigned char day;

温馨提示

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

评论

0/150

提交评论