课程设计论文基于51系列单片机温度报警器课程设计

上传人:沈*** 文档编号:136511128 上传时间:2022-08-16 格式:DOC 页数:19 大小:152KB
收藏 版权申诉 举报 下载
课程设计论文基于51系列单片机温度报警器课程设计_第1页
第1页 / 共19页
课程设计论文基于51系列单片机温度报警器课程设计_第2页
第2页 / 共19页
课程设计论文基于51系列单片机温度报警器课程设计_第3页
第3页 / 共19页
资源描述:

《课程设计论文基于51系列单片机温度报警器课程设计》由会员分享,可在线阅读,更多相关《课程设计论文基于51系列单片机温度报警器课程设计(19页珍藏版)》请在装配图网上搜索。

1、一 概述1.1 课程设计的目的和意义 通过这次课程设计,我进一步熟悉了单片机的内部结构和工作原理,掌握了单片机应用系统设计的基本方法和步骤;通过利用MCS-51单片机,理解单片机在自动化装置中的作用以及掌握单片机的编程调试方法;通过设计一个简单的实际应用输入控制及显示系统,掌握protues和keil以及各种仿真软件的使用。目前温度计的发展很快,从原始的玻璃管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计、电子温度计等等,温度计中传感器是它的重要组成部分,它的精度、灵敏度基本决定了温度计的精度、测量范围、控制范围和用途等。传感器应用极其广泛,目前已经研制出多种新型传感器。但是,作为

2、应用系统设计人员需要根据系统要求选用适宜的传感器,并与自己设计的系统连接起来,从而构成性能优良的监控系统。1.2 任务及要求设计内容:所设计数字电压表应具有以下功能:(1)可以测量-50到110摄氏度内的温度。(2)在4位LED数码管上显示温度,分别为百位、十位、个位和小数点后一位。(3)测量精度误差在0.5摄氏度以内。设计要求:1、根据题目要求进行系统总体设计。 2.完成系统硬件电路的设计。(1)硬件电路图。(2)硬件电路说明。3.系统程序的设计。(1)程序流程图。(2)完整源程序。4完成的控制系统能达到题目的要求。 5书写设计说明书。二 总体设计方案1 功能简介LCD液晶显示器直接显示DS

3、18B20所测量的温度,超出-50110范围时喇叭报警并且数码管开始闪烁,在温度范围内时喇叭停止报警并且数码管停止闪烁,运行期间可以随时进行复位操作。2 设计思路AT89C51作为温度测试系统设计的核心器件,具有低电压供电和体积小等特点。该器件是INTEL公司生产的MCS-5l系列单片机中的基础产品,采用了可靠的CMOS工艺制造技术,具有高性能的8位单片机,属于标准的MCS-51的CMOS产品。芯片中集成了CPU、RAM、ROM、定时/计数器和多功能I/O接口等计算机所需的基本功能部件。程序存储在单片机的程序存储器中,运行过程由程序控制。时钟信号用来控制单片机内各种微操作的时间基准,通常有两种

4、形式得到,即内部震荡方式和外部震荡方式。内部震荡方式所得的信号比较稳定,故设计数字温度计的时钟信号选用内部震荡方式,晶振选用12MHZ。复位电路使片内单片机的片内寄存器初始化,使单片机从一种确定的状态开始运行。复位电路有两种基本形式,即上电复位和开关复位。为了保证温度计的正常工作,采用上电且开关复位,也就是CR复位。温度传感器选用达拉斯公司的单线数字温度传感芯片DS18B20。它将地址线、数据线和控制线合为一根双向串行传输数据的信号线,允许在这根信号线上挂接多个DS18B20。每个芯片内有一个64位的ROM,其中存有各个器件自身的序列号,作为器件独有的ID号码。其测温范围是-55128,测温分

5、辨率在12位时精度为0.0625。DS18B20简化了温度器件与计算机的接口电路,使得电路简单,使用更加方便。显示部分使用LM016L来作为温度的直接输出,当温度超出-50110时,喇叭报警和数码管闪烁来提示。采用单片机汇编程序语言设计温度计的程序,对DS18B20进行初始化、读、写,读取温度,数据的转换,温度显示和报警处理等等。3 芯片器材主机:单片机AT89C51一片;温度传感器:DS18B20一片,显示电路:LM0 16L液晶显示器;时钟电路:电容两个,晶振片一个;复位电路:电容一个,开关按钮一个;导线若干,+5V电源等等。三 硬件设计1 89C51如图1图1 AT89C51引脚图本次设

6、计需要注意的几个端口:P0口(3932):是一组8位漏极开路行双向I/O口,也既地址/数据总线复用口。可作为输出口使用时,每位可吸收电流的方式驱动8个TTL逻辑电路,对端口写“1”可作为高阻抗输入输入端用。在访问外部数据存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,PO口接收指令字节,而在程序校验时,输出指令字节,校验时,要求接上拉电阻。P3口(1017):是一组带有内部上拉电阻的8位双向I/O口,P1的输入缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上拉电阻拉高并可作为输出端口。作输出端口时,被

7、外部拉低的P3口将用上拉电阻输出电流。P3口除可作为一般的I/O口线外,更重要的用途是它的第二功能,如图2所示:图2 端口引脚P3/Vpp(31):内部和外部程序存储器选择线。=0时访问外部ROM 0000HFFFFH;=1时,地址0000H0FFFH空间访问内部ROM,地址1000HFFFFH空间访问外部ROM。本次设计接高电平。XTAL1(19)和XTAL2(18):使用内部振荡电路时,用来接石英晶体和电容;使用外部时钟时,用来输入时钟脉冲。RST/VPD(9):复位信号输入端。AT89S51接能电源后,在时钟电路作用下,该脚上出现两个机器周期以上的高电平,使内部复位。第二功能是VPD,即

8、备用电源输入端。当主电源Vcc发生故障,降低到低电平规定值时,VPD将为RAM提供备用电源,发保证存储在RAM中的信号不丢失。2 温度获取使用美国Dallas半导体公司的数字化温度传感器DS1820,支持 “一线总线”接口的温度传感器,在其内部使用了在板(ON-B0ARD)专利技术。全部传感元件及转换电路集成在形如一只三极管的集成电路内。“一线总线”独特而且经济的特点,使用户可轻松地组建传感器网络,为测量系统的构建引入全新概念。现在,新一代的DS18B20体积更小、更经济、更灵活。使你可以充分发挥“一线总线”的优点。 同DS1820一样,DS18B20也支持“一线总线”接口,测量温度范围为-5

9、5C+125C,在-10+85C范围内,精度为0.5C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持3V5.5V的电压范围,使系统设计更灵活、方便。而且新一代产品更便宜,体积更小DS18B20产品的特点 :(1)、只要求一个端口即可实现通信。 (2)、在DS18B20中的每个器件上都有独一无二的序列号。 (3)、实际应用中不需要外部任何元器件即可实现测温。 (4)、测量温度范围在55。C到125。C之间。 (5)、数字温度计的分辨率用户可以从9位到12位选择。

10、 (6)、内部有温度上、下限告警设置。DS18B20内部结构2如图3所示:存储和控制逻辑高速暂存器温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC生成器64位ROM和一线端口供电方式图3 DS18B20内部结构DS18B20功能命令2如表1所示:表1 DS18B20功能命令表命令功能描述代码CONVERT启动温度转换44HREAD SCRATCHPAD读取温度寄存器BEHREAD ROM读DS18B20的序列号33HWRITE SCRATPAD将数据写入暂存器的第2、3字节中4EHMATCH ROM匹配ROM55HSEARCH ROM搜索ROMF0HALARM SEARCH报警搜索E

11、CHSKIP ROM跳过读序列号的操作CCHREAD POWER SUPPLY读电源供给方式,0寄生,1外部电源B4H其连线使用如图4所示(2接P3.6):图4 DS18B20连线图由于DS18B20单线通信功能是分时完成的,所以有严格的时隙概念,读写时序很重要。系统对DS18B20的各种操作必须按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。3 复位电路复位操作是为了完成单片机内部电路的初始化,使单片机从一种确定的状态开始运行。当AT89C51单片机的复位引脚RST出现2个机器周期以上,单片机就完成了复位操作。如果RST持续为高电平,单片机

12、就处于循环复位状态1。复位通常有2种基本形式:上电复位和开关复位。上电复位要求要求接通电源后,自动实现复位操作。开关复位要求在电源接通的条件下,在单片机运行期间,用按钮开关操作使单片机复位。本次采用的是常用的上电且开关复位电路,如图5所示:图5 复位电路上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。通常选择C=1030F,R=101000。复位操作使单片机进入初始化过程,其中包括使程序计数器PC=0000H,P0P3=FFH,SP=07H,其它寄存器处于零。4 时钟电路单片机的时钟信号使用内部

13、震荡方式产生,其电路图如图6所示:图6 内部震荡电路电容器C、C1起稳定震荡频率、快速起振的作用,电容值一般为5-30pF,晶振通常选用6MHZ、12MHZ、24MHZ。内部震荡方式所得的时钟信号比较稳定。五 温度显示电路 四位共阴极数码管,能够显示带一位小数的正负温度。零下时:1显示负号,2显示十位,3显示个位,4显示小数位。零上时:1显示百位,2显示十位,3显示个位,4显示小数位。当温度超过109.5或低于49.5时,四个数码闪烁。 其如图8图8 总体电路 四 软件设计1 程序流程图程序流程图如图9所示:N跳过读序列号的操作YNY读温度命令将温度高、低位读出处理数据到百、十、个、小数位,并

14、在数码管上显示超出限制?报警器报警和数码管闪烁初始化DS18B20开始初始化DS18B20应答脉冲?跳过读序列号的操作发出温度转换的命令等待温度转换完成图9 程序流程图2 初始化子程序使用DS18B20时,单片机先向DS18B20送出复位信号,单片机将数据拉低并保持480960s;再释放数据线,由上拉电阻拉高1560s;然后再由DS18B20发出低电平60240s,就完成了复位操作3。3 读子程序读数据之前,单片机先将数据线拉低,再释放。DS18B20在数据线从高电平跳低后15s内将数据送到数据线上。单片机在15s后读数据线。4 写子程序在单片机对DS18B20写数据时,应先将数据线拉低1s以

15、上,再写入数据(写1为高,写0为低)。待单片机写入的数据变化1560s后,DS18B20将对数据线采样。单片机写入数据到DS18B20的保持时间为60120s。5 数据处理子程序先判断温度高8位的CY,如果CY为1,则将高、低8八位求补;对高、低8位的数据按权整合称一个整数,判断是否在-50110之间,超出范围则置报警灯为亮;将该数按百、十、个位分别存入相应的存储单元。流程图如图10所示: YYN符号为正?求补码N高、低8位整合成为一个整数存入A中-50110之间?报警分别存入百、十、个、小数位取温度值图10 数据处理流程图6 显示子程序将百、十、个、小数位的数据查表,送到对应的数码管显示,程

16、序流程图如11所示:YNYYN温度为负?显示百位,延时显示负号,延时显示十位,延时显示个位,延时显示1000遍?取温度返回显示小数位,延时延时N超过范围?图11 显示程序流程图五 试验仿真1 总线路图六 课程设计体会这两个礼拜的单片机课程设计已接近尾声,回顾这个过程,收获颇多!单片机课程是我们上个学期学的内容,经过两个月的寒假,遗忘了很多东西!再加上初次认识和使用系统仿真软件protues和编译软件keil,自己动手设计电路,所以在刚开始的课程设计遇到了很大困难!说到这确实深感惭愧,但这也给自己创造了一个学习的机会!重新回顾上个学期学过的内容,并且在图书馆和网上查阅了很多资料,通过和同学之间的

17、交流,还有老师的辅导,自己开始熟悉并掌握有关单片机的设计!经过两个礼拜的努力,看到了自己的成果!同时对单片机有了一个新的认识,产生了很大的兴趣!我认识到:我们要认真对待每一门课程,并且要从中有所收获!我们要不断温习以前学过的知识,而不能学过去了就把它扔在一边!这样自己才能有进步!课程设计检验的是综合能力,自己不仅要掌握课本上的东西,还有自己的动手能力,组织能力等等,要认真对待课程设计,学以致用,理论联系实际,尽自己的最大努力把它做好!这个经历会磨练袭击的意志,我相信对自己以后的学习和工作有很大的帮助。七 参考文献1、何立民主编,单片机中级教程,北京航空航天大学出版社2、丁元杰主编,单片机原理与

18、应用,机械工业出版社3、彭伟编,单片机C语言程序设计实训,电子工业出版社附录程序清单:#include #include #define uchar unsigned char #define uint unsigned int #define delayNOP() _nop_();_nop_();_nop_();_nop_(); sbit DQ =P33;sbit LCD_RS = P20; sbit LCD_RW = P21; sbit LCD_EN = P22;uchar code Temp_Disp_Title = current temp:;uchar Current_Temp_Di

19、splay_Buffer = C;uchar code Temperature_Char8 = 0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00;uchar code df_Table = 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9 ;uchar CurrentT = 0;uchar Temp_Value = 0x00,0x00 ;uchar Display_Digit = 0,0,0,0;bit DS18B20_IS_OK = 1; void DelayX(int x)uchar i;while(x-) for(i=0;i120;i+);bi

20、t LCD_Busy_Check()bit result;LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result =(bit)(P0 & 0x80); LCD_EN=0;return result;void Write_LCD_Command(uchar cmd)while(LCD_Busy_Check();LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();P0=cmd;delayNOP();LCD_EN=1;delayNOP();LCD_EN=0;void Write_LCD_Date(uc

21、har dat) while(LCD_Busy_Check();LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0=dat;delayNOP();LCD_EN=1;delayNOP();LCD_EN = 0;void LCD_Initialise()Write_LCD_Command(0x01); DelayX(5);Write_LCD_Command (0x38); DelayX(5);Write_LCD_Command(0x0C); DelayX(5);Write_LCD_Command(0x06); DelayX(5);void Set_LCD_POS(uchar p

22、os)Write_LCD_Command(pos | 0x80);void Delay(uint x)while (-x);uchar Init_DS18B20()uchar status;DQ = 1;Delay(8);DQ = 0;Delay(90);DQ = 1;Delay(8);status =DQ;Delay(100);DQ = 1;return status;uchar ReadOneByte() uchar i,dat = 0;DQ = 1;_nop_();for(i=0;i=1;DQ=1;_nop_();_nop_();if(DQ) dat |= 0x80;Delay(30);

23、DQ=1;return dat;void WriteOneByte(uchar dat)uchar i;for (i=0;i=1;void Read_Temperature()if(Init_DS18B20() = 1)DS18B20_IS_OK=0;elseWriteOneByte(0xCC); WriteOneByte(0x44);Init_DS18B20();WriteOneByte(0xCC);WriteOneByte(0xBE);Temp_Value0 = ReadOneByte();Temp_Value1 = ReadOneByte();DS18B20_IS_OK=1;void D

24、isplay_Temperature()uchar i;uchar t = 150,ng = 0;if (Temp_Value1 & 0xF8) = 0xF8)Temp_Value1 = Temp_Value1;Temp_Value0 = Temp_Value0 + 1;if (Temp_Value0 =0x00 ) Temp_Value1+;ng=1;Display_Digit0=df_Table Temp_Value0 & 0x0F;CurrentT = (Temp_Value0 & 0xF0 )4) | (Temp_Value1 & 0x07)4);Display_Digit3=Curr

25、entT / 100;Display_Digit2=CurrentT % 100 / 10;Display_Digit1=CurrentT % 10;Current_Temp_Display_Buffer11 = Display_Digit0+0;Current_Temp_Display_Buffer10 = .;Current_Temp_Display_Buffer9 = Display_Digit1+0;Current_Temp_Display_Buffer8 = Display_Digit2+0;Current_Temp_Display_Buffer7 = Display_Digit3+

26、0;if (Display_Digit3 = 0) Current_Temp_Display_Buffer7= ;if (Display_Digit2=0 & Display_Digit3 = 0)Current_Temp_Display_Buffer8= ;if (ng)if(Current_Temp_Display_Buffer8= )Current_Temp_Display_Buffer8=-;elseif(Current_Temp_Display_Buffer7= )Current_Temp_Display_Buffer7=-; else Current_Temp_Display_Bu

27、ffer6=-;Set_LCD_POS(0x00);for (i=0;i16;i+)Write_LCD_Date(Temp_Disp_Titlei );Set_LCD_POS(0x40);for(i=0;i16;i+) Write_LCD_Date(Current_Temp_Display_Bufferi);Set_LCD_POS(0x4D);Write_LCD_Date(0x00);Set_LCD_POS(0x4E);Write_LCD_Date(C);void main() LCD_Initialise();Read_Temperature();Delay(50000);Delay(50000);while(1)Read_Temperature();if( DS18B20_IS_OK ) Display_Temperature();

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!