已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理论文学年:_专业:_姓名:_学号:_指导老师:_ 年 月 日基于51单片机的数字温度计摘要:本文首先描述系统硬件工作原理,并附以系统结构框图加以说明,着重介绍了本系统所应用的各硬件接口技术和各个接口模块的功能及工作过程,其次,详细阐述了程序的各个模块和实现过程。本设计以数字集成电路技术为基础,单片机技术为核心。本文编写的主导思想是软硬件相结合,以硬件为基础,来进行各功能模块的编写。关键词:AT89S52 DS18B20 LCD1602 蜂鸣器 目前温度计主要有水银温度计,酒精温度计,红外温度计等等。本文利用单片机实现数字温度计功能的主要内容是利用DS18B20采集温度,其中AT89S52是核心元件同时采用点阵式液晶显示数据。系统的温度测量范围为-55+125,精度0.5,另外具有温度校准功能。本系统以单片机的C语言进行软件设计,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。系统通过点阵式液晶为载体显示数据,所以具有较直观的效果。可以显示当前温度值、报警温度,具有过温报警报警和在线温度校准功能。1. 设计功能要求数字温度计功能要求是用51单片机(AT89S52)和温度传感器(DS18B20)通过程序控制来实现在液晶屏LCD1602上显示当前温度值、报警温度值,并可以通过蜂鸣器模块在过温时报警。2. 设计思路 设计思路是根据普通温度计的功能,在单纯测量温度的基础上增加蜂鸣器模块实现温度报警功能,并可以设定报警温度值。3.系统的硬件构成系统以AT89S52单片机作为核心控制器件,外围主要有液晶显示LCD1602、DS18B20和蜂鸣器,均为串行通信器件,使得系统线路简单可靠性高。系统结构框图1所示。键盘输入温度传感器单 片 机 主 控液晶显示屏蜂鸣器图1系统结构框图3.1单片机主控模块 AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业 80C51 产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的 8 位 CPU 和在系统可编程Flash,使得 AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。它主要负责各个模块的初始化工作;设置定时器、寄存器的初值;读取并处理来自温度传感器的信号;处理按键响应;控制液晶实时显示等。AT89S52的管脚排布如图2所示:图2.AT89S52管脚排布VCC : 电源 GND: 地 P0 口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0口写“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)和时器/计数器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”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(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) 。 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:振荡器反相放大器的输出端。在本设计中所用到的引脚有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 单片机主控电路3.2液晶显示模块系统中采用LCD1602作为显示器件输出信息。与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。LCD1602可以显示2行16个字符,具有8位数据总线D0-D7,和RS、R/W、E三个控制端口,工作电压为5V,并且带有字符对比度调节和背光设置。管脚功能简介:VL:LCD对比度调节端,电压调节范围为05V。接正电源时对比度最弱,接地电源时对比度最高,可以用一个5K的电位器来调整对比度;RS:数据或者指令选择端。处理器写入指令时,RS为低电平,写入数据时,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。现场温度直接以“一线总线”的数字方式进行传输,大大提高系统的可靠性,温度数字量转换时间为200ms(典型值)。DS18B20的管脚功能排布如图5所示:图5.温度传感器3.5报警模块系统采用蜂鸣器作为报警的输出,蜂鸣器的电路连接图如图6所示:图6.蜂鸣器电路图电路中采用PNP管8550来做为信号功率放大来驱动喇叭闹铃,由图可以看出PNP管8550的集电极接电源正5伏。过温时从AT89S52的P3.7脚输出频率约为低频的方波信号使蜂鸣器报警。4.系统的软件设计根据设计任务的要求确定系统程序的完整结构,尽可能采用模块化程序设计方法,将任务划分为相对独立的功能模块,明确各模块的功能、时间顺序和相互关系,系统的软件设计可以分为几个部分,首先是各个模块的底层驱动程序编写,而后是系统联机调试,编写上层系统程序。本系统软件程序主要包括:液晶LCD1602的底层驱动模块、DS18B20的低层驱动模块、定时器0定时温度检测模块、按键扫描模块、蜂鸣器报警模块等。4.1 主程序开始端口初始化设置变量寄存器LCD忙检测,LCD格式设置LCD赋初始显示数据定时器2初始化定时器2计时,中断使能按键?按键扫描模块()有标志?LCD送入新显示数据,标志0中断响应停计时,在线?进行温度转换读寄存器寄存器数据转换温度有变化?标志位置1报警返回开始计时图7.主程序MAIN流程框图图8.温度采集子程序 主程序如图7所示。程序开始进行标识位初始化、端口初始化,对液晶显示进行初始化,等待中断响应,(扫描键盘,读取键值)。进入温度采集子程序关闭中断。等待温度子程序返回温度值,开始中断,进入液晶显示子程序,送入数据液晶显示模块显示。(由于采用的芯片不具eeprom,这里取消了温度报警和校准功能)4.2 LCD1602的底层驱动图9. 液晶显示子程序(初始化用)显示子程序端口赋初始化忙检测?显示开,关光标,移动光标清除LCD的显示内容忙检测?第一行显示第二行显示结束蜂鸣器子程序i180?延时80ms端口取反,i+;结束图10.蜂鸣器子程序显示子程序2第一行显示发送完成?发送字符串一个字节,a+1返回液晶显示子程序(显示温度数据用) 液晶显示分两个子程序,一个是初始化时候使用,如图9.所示。另一个接受来自温度采集子程序的数据,送入液晶显示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; delayNOP(); 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_string(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是否正常,不正常进行温度报警,激活报警程序。发送转换信号,等待转换完成,读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) /读一字节 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; /给低脉冲信号 Delay(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 = 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,不显示 display5= ; if (!display4) /次高位为0,不显示 display4= ; else display32=(numberdisplay4); else display31=(numberdisplay5); if (minus) display30=-; else display30= ; display33=(numberdisplay3); display34=.; display35=(numberdisplay2); 4.4 按键扫描程序按键扫描子程序主要是去抖动方法。发现有按键按下时,进入扫描程序延时30ms
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年储能系统在新能源发电场站中的应用与挑战报告
- 我的动物朋友们写物并写人作文6篇
- 写景抒情的西湖漫步写物的作文8篇
- 《初中历史主题探究活动设计》
- 规范经营与服务保障承诺书(6篇)
- 企业风险管理标准化模板
- 标准化售后服务流程模板客户满意版
- 产品设计与开发过程模板化指南
- 健康饮食观念实践承诺函3篇范文
- 生产计划调度工具箱
- 2025年(完整版)全国高考一卷数学试题及答案
- 数据库版本管理手册
- 读书分享成品-绿色卡通风假如给我三天光明好书分享模板课件
- 2025年交管12123版学法减分全部试题及答案解析
- 建设工程造价鉴定申请书
- 安全监控设备方案
- 2025版静脉输液治疗实践指南
- 经颅磁刺激技术研究进展与临床应用
- 中药材种植技术 课件 10.前胡
- 种植小芦荟的课件
- 提升工程检测质量方案(3篇)
评论
0/150
提交评论