欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    单片机的数字温度计.docx

    • 资源ID:6959211       资源大小:222.18KB        全文页数:17页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    单片机的数字温度计.docx

    1、单片机的数字温度计单片机论文题 目:数字温度计 专 业:应用电子技术 班 级: 学 号: 姓 名: 指导老师: 绪论单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。 单片机也被称为微控制器(Microcontroler),是因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将

    2、大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。 早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。随着INTEL i960系列特别是后来

    3、的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。 单片机比专用处理器最适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数

    4、量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!51单片机的数字温度计摘要:本文首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程。本设计以数字集成电路技术为基础,单片机技术为核心。本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功

    5、能模块的编写。关键词:AT89S52 DS18B20 LCD1602 蜂鸣器 目前温度计主要有水银温度计,酒精温度计,红外温度计等等。本文利用单片机实现数字温度计功能的主要内容是利用DS18B20采集温度,其中AT89S52是核心元件同时采用点阵式液晶显示数据。系统的温度测量范围为-55+125,精度0.5,另外具有温度校准功能。本系统以单片机的C语言进行软件设计,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。系统通过点阵式液晶为载体显示数据,所以具有较直观的效果。可以显示当前温度值、报警温度,具有过温报警报警和在线温度校准功能。1. 设计功能要求数字温度计功能要求是用51单片机

    6、(AT89S52)和温度传感器(DS18B20)通过程序控制来实现在液晶屏LCD1602上显示当前温度值、报警温度值,并可以通过蜂鸣器模块在过温时报警。2. 设计思路 设计思路是根据普通温度计的功能,在单纯测量温度的基础上增加蜂鸣器模块实现温度报警功能,并可以设定报警温度值。3.系统的硬件构成系统以AT89S52单片机作为核心控制器件,外围主要有液晶显示LCD1602、DS18B20和蜂鸣器,均为串行通信器件,使得系统线路简单可靠性高。系统结构框图1所示。3.1单片机主控模块 AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程 Flash 存储器。使用 Atmel

    7、公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程Flash,使得 AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。它主要负责各个模块的初始化工作;设置定时器、寄存器的初值;读取并处理来自温度传感器的信号;处理按键响应;控制液晶实时显示等。AT89S52的管脚排布如图2所示:图2.AT89S52管脚排布VCC : 电源 GND: 地 P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0口写

    8、“1”时,引脚用作高阻抗输入。 当访问外部程序和数据存储器时, P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。 在 flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。 P1 口:P1 口是一个具有内部上拉电阻的 8 位双向 I/O 口,p1 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL) 。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计

    9、数器2的触发输入(P1.1/T2EX) ,具体如下表所示。 在flash编程和校验时,P1口接收低8位地址字节。引脚号第二功能P1.0T2(定时器/计数器T2的外部计数输入) ,时钟输出P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)P1.5MOSI(在系统编程用)P1.6MISO(在系统编程用)P1.7SCK(在系统编程用)P2 口:P2 口是一个具有内部上拉电阻的 8 位双向 I/O 口,P2 输出缓冲器能驱动 4 个TTL 逻辑电平。对 P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流

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

    11、P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。 在flash编程和校验时,P3口也接收一些控制信号。引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断 0)P3.3INT1(外部中断 1)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器写选通) RST: 复位输入。ALE/PROG:地址锁存控制信号。PSEN:外部程序存储器选通信号。EA/VPP:访问外部程序存储器控制信号。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大

    12、器的输出端。在本设计中所用到的引脚有VCC,GND,RST,EA/VPP,XTAL1,XTAL2,P0口,P2口,P3口。 硬件电路连接如图3所示。系统采用12M晶振;P0口为单片机与液晶显示器通信的数据端口,其中P0口有8个1K的上拉电阻;AT89S52单片机的复位靠外部电路来实现,信号由RESET(RST)引脚输入,高电平有效,在振荡器工作时,只要保持RESET(RST)引脚高电平两个机器周期,单片机即可以复位,系统既有上电复位电路又可以手动复位S4;P2.0P2.2为液晶显示器的控制信号端口:P3.7为蜂鸣器的控制端口;P1.4P1.5为按键模块的接口;P3.3为温度传感器通信端口。图3

    13、 单片机主控电路3.2液晶显示模块系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个字符,具有8位数据总线D0-D7,和RS、R/W、E三个控制端口,工作电压为5V,并且带有字符对比度调节和背光设置。管脚功能简介:VL:LCD对比度调节端,电压调节范围为05V。接正电源时对比度最弱,接地电源时对比度最高,可以用一个5K的电位器来调整对比度;RS:数据或者指令选择端。处理器写入指令时,RS为低电平,写入

    14、数据时,RS为高电平R/W:读写控制端。R/W为高电平时,读取数据;R/W为低电平时,写入数据E:LCD模块使能信号控制端。写数据时,需要下降沿触发模块D0D7:8位数据总线,三态双向BL+: LED背光正极。需要背光时,BLA串接一个限流电阻接VCCBL-: LED背光负极LCD1602的管脚功能排布如图4所示:图4. LCD1602的管脚功能排布3.3温度传感器模块系统采用DS18B20作为温度信息采集模块。DS18B20支持“一线总线”,温度测量范围为-55 +125,在-10+85精度为5。现场温度直接以“一线总线”的数字方式进行传输,大大提高系统的可靠性,温度数字量转换时间为200m

    15、s(典型值)。DS18B20的管脚功能排布如图5所示:图5.温度传感器3.5报警模块系统采用蜂鸣器作为报警的输出,蜂鸣器的电路连接图如图6所示:图6.蜂鸣器电路图电路中采用PNP管8550来做为信号功率放大来驱动喇叭闹铃,由图可以看出PNP管8550的集电极接电源正5伏。过温时从AT89S52的P3.7脚输出频率约为低频的方波信号使蜂鸣器报警。4.系统的软件设计根据设计任务的要求确定系统程序的完整结构,尽可能采用模块化程序设计方法,将任务划分为相对独立的功能模块,明确各模块的功能、时间顺序和相互关系,系统的软件设计可以分为几个部分,首先是各个模块的底层驱动程序编写,而后是系统联机调试,编写上层

    16、系统程序。本系统软件程序主要包括:液晶LCD1602的底层驱动模块、DS18B20的低层驱动模块、定时器0定时温度检测模块、按键扫描模块、蜂鸣器报警模块等。4.1 主程序 主程序如图7所示。程序开始进行标识位初始化、端口初始化,对液晶显示进行初始化,等待中断响应,(扫描键盘,读取键值)。进入温度采集子程序关闭中断。等待温度子程序返回温度值,开始中断,进入液晶显示子程序,送入数据液晶显示模块显示。(由于采用的芯片不具eeprom,这里取消了温度报警和校准功能)4.2 LCD1602的底层驱动 液晶显示分两个子程序,一个是初始化时候使用,如图9.所示。另一个接受来自温度采集子程序的数据,送入液晶显

    17、示LCD1602显示。以下是LCD1602包括的底层驱动源程序:void lcd_busy() /LCD模块忙检测 bit busy; busy = 1; while (busy) LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; busy = (bit)(P0 &0x80); delayNOP(); LCD_EN = 0;void lcd_wcmd(unsigned char cmd, bit Check) /写指令到LCD if (Check) lcd_busy(); LCD_RS = 0; LCD_RW = 0; LCD_EN = 1; P0 = cmd; dela

    18、yNOP(); LCD_EN = 0;void lcd_wdat(unsigned char dat) /写数据到LCD lcd_busy(); LCD_RS = 1; LCD_RW = 0; LCD_EN = 1; P0 = dat; delayNOP(); LCD_EN = 0;void lcd_pos(unsigned char xpos, unsigned char ypos) /显示位置设置 if (ypos = 0x01) lcd_wcmd(xpos | 0x80), 1); if (ypos = 0x02) lcd_wcmd(xpos | 0xc0), 1);void wr_st

    19、ring(unsigned char str) /写数显示据到LCD unsigned char num = 0; while (strnum) lcd_wdat(strnum+); delayms(150); void delayms(unsigned int ms) /延时函数 ms unsigned char k; while (ms-) for (k = 0; k 114; k+) ; 4.3 DS18B20的低层驱动 温度采集子程序程序框图如图8所示。程序在定时器2中断产生时候响应,进入采集。首先检测DS18B20是否正常,不正常进行温度报警,激活报警程序。发送转换信号,等待转换完成

    20、,读DS18B20寄存器。把接受的数据转换为10进制。返回一个表示温度的整形数据。以下是温度采集子程序的底层驱动源程序:void Delay(unsigned int num) /延时函数us while (-num) ;void delayms(unsigned int ms) /延时函数 ms unsigned char k; while (ms-) for (k = 0; k 114; k+) ; void delayNOP() /延时4.34us _nop_(); _nop_(); _nop_(); _nop_();unsigned char ReadOneChar(void) /读一

    21、字节 unsigned char i = 0; unsigned char dat = 0; DQ = 1; for (i = 0; i = 1; DQ = 1; /释放总线 _nop_(); _nop_(); if (DQ) /读总线电平状态 dat |= 0x80; /最高位置1 Delay(6); /延时45us DQ = 1; /释放总线,表示此次读操作完成 return (dat); /返回所读得数据void WriteOneChar(int dat) /写一字节 unsigned char i = 0; for (i = 0; i 8; i+) DQ = 0; /给低脉冲信号 De

    22、lay(1); /延时= 1; /数据右移一位,最低位移入CY DQ = CY; /写1bit数据 Delay(6); /延时45us DQ = 1; /释放总线,表示此次写操作完成 void Temperature_conver() /温度数据格式转换子程序 unsigned char minus = 0; if (temp_data1 127) /温度为负值 temp_data0 = (temp_data0) + 1; /取反加一,将补码变成原码 if (temp_data0) = 0xff) temp_data1 = (temp_data1) + 1; else temp_data1 =

    23、 temp_data1; minus = 1; /温度为负值标志 display6 = temp_data0 &0x0f; /取小数位数据 display2 = (display6 *10) / 16; /保留一位小数 display6 = (temp_data0 &0xf0) 4) | (temp_data1 &0x0f) 4); /取整数 display5 = display6 / 100; /百位 display4 = (display6 % 100) / 10; /十位 display3 = display6 % 10; /个位 if (!display5) /高位为0,不显示 dis

    24、play5= ; if (!display4) /次高位为0,不显示 display4= ; else display32=(numberdisplay4); else display31=(numberdisplay5); if (minus) display30=-; else display30= ; display33=(numberdisplay3); display34=.; display35=(numberdisplay2); 4.4 按键扫描程序按键扫描子程序主要是去抖动方法。发现有按键按下时,进入扫描程序延时30ms,再次检测是否有按键按下,有则检测哪个键按下,否则跳出程序

    25、。返回按键值,进入循环直到按键松开。以下是按键扫描程序的驱动程序源码:char key() /按键扫描程序P2=0xFF;char z=0; if(P2!=0xFF) delayms(20); if(P2!=0xFF) if(!k1)z=1; else if(!k2)z=2; else z=3; while(P2!=0xFF) ; return (z);4.5 蜂鸣器驱动蜂鸣器子程序程序框图如图10所示。以下是驱动程序源码:void beep() /蜂鸣器子程序 unsigned char i; for (i = 0; i 180; i+) Delay(80); BEEP = !BEEP; /

    26、BEEP取反 BEEP = 1; /关闭蜂鸣器 delayms(100); 设计总结 单片机的设计至今为止已经进入了令人鼓舞的阶段,在进行了长达两个多月的时间的摸索与实验,使我不仅仅是对于单片机入门软件与硬件的常用设计与功能,还使我对于一项设计研究的制作过程所需要的详细步骤和具体的实现方法的力度的掌握。基于此作品作为毕业设计的创作成果,在当其中机器的功能等方面并非处于一个成熟的阶段,而且仅仅是因为向延元老师的要求以及我们的初步尝试,当中的缺点是无可非议地存在着。 当然在这次宝贵的毕业设计活动中,经验才是对于我们最大的收获,而且还增强了自身对未知问题以及对知识的深化认识的能力,用受益匪浅这个词语来概括这次难忘的活动我觉得再合适不过了。但是,光是完成了作品还是不可以自我满足的,在从一开始的时候就怀着将作品制作得更加人性化,更加令人满意,更加地使功能完美又方便地被应用领域这个最终目的下,随着对单片机这门学科的认识加深,到达了拓展的程度,我想这个目的将在不远的时期内被实现。 总之,这次设计从软件编写、调试到软硬件联机调试,我倾注了大量的时间和心血。真是曾经为程序的编写而冥思查找过,曾经为无法找出错误而郁闷苦恼过,也曾经为某一功能不能实现而犹豫彷徨过,但最终我成功了。 因为我不仅品味到了结果的喜悦,更明白了过程的弥足珍贵。


    注意事项

    本文(单片机的数字温度计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开