单片机课程设计报告--多功能温度巡检仪程序设计.doc_第1页
单片机课程设计报告--多功能温度巡检仪程序设计.doc_第2页
单片机课程设计报告--多功能温度巡检仪程序设计.doc_第3页
单片机课程设计报告--多功能温度巡检仪程序设计.doc_第4页
单片机课程设计报告--多功能温度巡检仪程序设计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

沈阳工程学院课程设计任务书课程设计题目: 多功能温度巡检仪程序设计 系 别 班级 学生姓名 学号 指导教师 职称 教授 课程设计进行地点: 任 务 下 达 时 间: 15年 1月12日起止日期: 15年1月12日起至15年1月23日止 系主任 年 月 日批准1.设计主要内容及要求;编写多功能温度巡检仪程序。要求:1)多路温度测量和显示。 2)可以设置正常温度范围,越限报警。2.对设计论文撰写内容、格式、字数的要求;(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。(2).学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计论文的结构及各部分内容要求可参照沈阳工程学院毕业设计(论文)撰写规范执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。(3).论文要求打印,打印时按沈阳工程学院毕业设计(论文)撰写规范的要求进行打印。(4). 课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。3.时间进度安排;顺序阶段日期计 划 完 成 内 容备注11月12日教师讲解题目,学生查阅相关资料21月13日查阅相关资料、进行方案论证31月14日参数计算、确定温度超限设置方法41月15、16、19日编写程序51月20、21日调试程序61月22日撰写论文71月23日验收作品、答辩中文摘要随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度测量就是一个典型的例子。温度测量系统广泛应用于社会生活的各个领域,如家电、汽车、材料、电力电子等。但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本设计以C8051F020芯片为核心,辅以必要的外围电路,设计了一个简易的多路温度巡检仪。在硬件方面,除了CPU外,系统采用DS18B20数字温度传感器测量温度,采用1602液晶显示屏显示当前温度。然后通过三个独立按键来设置一个正常温度的范围的最小值和最大值,当温度不在设置的正常温度范围内,用于报警的蜂鸣器就会发出响声。在软件反面,采用语言设计,系统能够准确测量三路温度并且显示,并且具有调整温度范围和报警的功能。 此系统严格按照要求设计,最终达到预期的效果,能够测量和显示多路温度,并且可以设置正常的温度范围,超过范围具有报警功能。是一次比较成功的设计。关键字: 单片机 测温 显示 报警 1课程设计要求1.1设计主要内容及要求编写多功能时钟程序要求:1)多路温度测量和显示。 2)可以设置正常温度范围,越限报警。1.2 对设计论文撰写内容、格式及字数的要求(1).课程设计论文是体现和总结课程设计成果的载体,一般不应少于3000字。(2).学生应撰写的内容为:中文摘要和关键词、目录、正文、参考文献等。课程设计论文的结构及各部分内容要求可参照沈阳工程学院毕业设计(论文)撰写规范执行。应做到文理通顺,内容正确完整,书写工整,装订整齐。(3).论文要求打印,打印时按沈阳工程学院毕业设计(论文)撰写规范的要求进行打印。(4). 课程设计论文装订顺序为:封面、任务书、成绩评审意见表、中文摘要和关键词、目录、正文、参考文献。1.3 时间进度安排3.时间进度安排;顺序阶段日期计 划 完 成 内 容备注11月12日教师讲解题目,学生查阅相关资料21月13日查阅相关资料、进行方案论证31月14日参数计算、确定温度超限设置方法41月15、16、19日编写程序51月20、21日调试程序61月22日撰写论文71月23日验收作品、答辩2 课程设计思路 本设计主要介绍单片机编程来实现系统功能,本设计由C8051F020芯片为主要核心,采用DS18B20数字温度传感器测量当前温度,采用1602液晶显示屏显示当前温度。正常温度的设置采用三个按键,其中一个功能按键,用来选择设置后温度最小值和温度最大值,另外两个按键分别是设置温度时用来加减温度。2.1 测温和显示数字温度传感器DS18B20,因其内部集成了A/D转换器,使得电路结构更加简单,而且减少了温度测量转换时的精度损失,使得测量温度更加精确。数字温度传感器DS18B20只用一个引脚即可与单片机进行通信,大大减少了接线的麻烦,使得单片机更加具有扩展性。DS18B20采用单总线的方式和单片机进行通信,通过编程,单片机可以直接从DS18B20内部读取温度值。本次设计使用的1602液晶显示器为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字,内置128个字符的ASCII字符集字库。2.2 设置正常温度范围系统采用三个按键,KEY1,KEY2,KE3设置正常的温度范围,其中,KEY1是功能选择按键,按KEY1可以在显示温度,设置正常温度最小值,设置正常温度最大值三个模式中切换。当选择设置正常温度最小值或设置正常温度最大值模式时,液晶显示正常温度范围的最小值或者最大值,然后通过按键KEY2和KEY3可以选择让这个值增加或者减小。2.3报警功能报警功能的电路采用一个三极管驱动的蜂鸣器作为报警电路,在显示温度时,当测得三路温度中有任何一路的温度不在正常温度的范围内时,报警电路就开始工作,发出响声。主程序按键1选择设置最小值设置最大值测温显示按键加或减按键加或减设置完成设置完成报警返回主程序超过正常范围4 各模块程序设计4.1 测温部分DS18B20采用单总线方式与单片机之间经行通信,所以在程序中,单片机只要操作一个IO口就可以对DS18B20经行操作,完成测温的功能。DQ0DQ2分别对应三个DS18B20。程序主要包括四个函数,分别说传感器初始化操作,读字节操作,写字节操作和读取温度操作。代码如下:/*初始化ds1820 */*/uchar Init_DS18B20(void) DQ0 = 1 ;DQ1 = 1 ;DQ2 = 1 ; /DQ复位 Delay(10) ; /稍做延时 DQ0 = 0 ;DQ1 = 0 ;DQ2 = 0 ; /单片机将DQ拉低 Delay(100) ; /精确延时 大于 480us DQ0 = 1 ;DQ1 = 1 ;DQ2 = 1 ; /拉高总线 Delay(8) ; presence =DQ; Delay(100) ; DQ0 = 1 ;DQ1 = 1 ;DQ2 = 1 ; /拉高总线 return(presence) ; /返回信号,表示初始化成功,否则表示初始化失败/* 读一个字节 */*/ void ReadOneChar(void)unsigned char i = 0 ;dat0 = 0 ;dat1 = 0 ;dat2 = 0 ;for (i = 8 ; i 0 ; i-) DQ0 = 0;DQ1 = 0;DQ2 = 0; / 给脉冲信号 dat0= 1;dat1= 1;dat2=1; /用于存放数据的字节右移一位 DQ0 = 1;DQ1 = 1;DQ2 = 1; / 给脉冲信号 Delay(1); /稍做延时 if(DQ0) /如果总线为高,说明返回的数据时1 dat0 |= 0x80 ; /将1写入变量中,如果是0则不写,因为前面已经清零了? if(DQ1) dat1 |= 0x80 ; if(DQ2) dat2 |= 0x80 ; Delay(6) ; /* 写一个字节 */*/ void WriteOneChar(unsigned char dat) unsigned char i = 0 ; for (i = 8 ; i 0 ; i-) DQ0 = 0 ;DQ1 = 0 ;DQ2 = 0 ; /单片机将DQ拉低 DQ0 = dat&0x01 ; /如果写的数据位是1,则拉高总线,否则总线保持低电平即可DQ1 = dat&0x01 ;DQ2 = dat&0x01 ; Delay(6) ; DQ0 = 1 ;DQ1 = 1 ;DQ2 = 1 ; /拉高总线 dat=1 ; /要写的数据右移一位 /* 读取温度 */*/ void Read_Temperature(void) Init_DS18B20() ; WriteOneChar(0xCC) ; / 跳过读序号列号的操作 WriteOneChar(0x44) ; / 启动温度转换 Init_DS18B20() ; /初始化DS18B20 WriteOneChar(0xCC) ; /跳过读序号列号的操作 WriteOneChar(0xBE) ; /读取温度寄存器 ReadOneChar() ; /温度低8位 wd0=dat0; /先将温度低8位存到16位的变量中 wd1=dat1; wd2=dat2; ReadOneChar() ; /温度高8位 wd0=wd0+256*dat0; /将温度的高8位也存到16位的变量中 wd1=wd1+256*dat1; wd2=wd2+256*dat2; wd0=wd0*0.625; /转化成实际温度,保留一位小数 wd1=wd1*0.625; wd2=wd2*0.625;4.2 显示部分1602液晶显示屏采用并口方式与单片机进行通信,单片机的P0口与液晶的数据口链接,P2.0,P2.1,P2.2分别与液晶的RS,RW,EN三个命令端相连。通过正确的时序,单片机就可以控制1602液晶显示我们需要的字符。程序主要包括三个函数,液晶初始化函数,写命令函数,写数据函数。代码如下:/*/*检查LCD忙状态 */*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据。 */*/ bit lcd_busy() bit result ; LCD_RS = 0 ; LCD_RW = 1 ; LCD_EN = 1 ; delayNOP() ; result = (bit)(P0&0x80) ; LCD_EN = 0 ; return(result) ; /*写指令数据到LCD */*RS=L,RW=L,E=高脉冲,D0-D7=指令码。 */*/void lcd_wcmd(uchar cmd) while(lcd_busy() ; LCD_RS = 0 ; LCD_RW = 0 ; LCD_EN = 0 ; _nop_() ; _nop_() ; P0 = cmd ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ; /*/*写显示数据到LCD */*RS=H,RW=L,E=高脉冲,D0-D7=数据。 */*/void lcd_wdat(uchar dat) while(lcd_busy() ; LCD_RS = 1 ; LCD_RW = 0 ; LCD_EN = 0 ; P0 = dat ; delayNOP() ; LCD_EN = 1 ; delayNOP() ; LCD_EN = 0 ;delay1(1); /* LCD初始化设定 */*/void lcd_init() delay1(15) ; lcd_wcmd(0x01) ; /清除LCD的显示内容 lcd_wcmd(0x38) ; /16*2显示,5*7点阵,8位数据 delay1(5) ; lcd_wcmd(0x0c) ; /显示开,关光标 delay1(5) ; lcd_wcmd(0x06) ; /移动光标 delay1(5) ; lcd_wcmd(0x01) ; /清除LCD的显示内容 delay1(5) ;4.3 设置正常温度首先通过按键KEY1选择模式,程序中一共具有三个模式,分别是测温显示模式,设置正常温度最小值模式,设置正常温度最大值模式。在测温模式下,系统可以自动判断当前几路传感器测到的温度是否在正常温度之内,如果超过正常温度就出发报警装置报警。设置正常温度最小值模式,设置正常温度最大值模式下,可以用个KEY2和KEY3两个按键分别对最大值和最小值经行增加和减小。程序主要包括一个设置函数,代码如下:/* 设置函数,用于设置正常温度范围的最大值或者最小值 */*/uchar set_tem(uchar dat) while(1) lcd_wcmd(0xc8); /写地址(要显示字符的地址) lcd_wdat(dat/10+48) ; /显示最大值(最小值)的十位 lcd_wdat(dat%10+48) ; /显示最大值(最小值)的个位 if(key2=0) /如果KEY2键按下 delay1(10); /稍作延时,消抖 if(key2=0) /再次判断KEY2按下 while(key2=0); /等待按键释放 dat+; /最大值(最小值)加一 if(key3=0) /如果KEY3键按下 delay1(10); /稍作延时,消抖 if(key3=0) /再次判断KEY3按下 while(key3=0); /等待按键释放 dat-; /最大值(最小值)减一 if(key1=0) /如果KEY1按下 delay1(5); /稍作延时,消抖 if(key1=0) /如果KEY1按下,退出循环,设置完成,切换模式 lcd_wcmd(0x01) ; /清屏 break; return dat;/* 主函数 */*/void main() uchar flage=0; lcd_init() ; /液晶初始化 while(1) /大循环 if(key1=0) /如果KEY1按下 delay1(5); /稍作延时,消抖 if(key1=0) /再次判断到KEY1按下 flage+; /标志位加1 if(flage=3) /标志位到3清零,保证标志位只能在0 1 2 三个状态中循环,对应三个模式 flage=0; Read_Temperature() ; /读传感器的温度 switch(flage) /判断标志位,进入相应的模式 case 0:display_tem();break; /正常测温显示模式 case 1: /设置正常温度范围最小值模式lcd_init();dis_string(0x80,set min tem);dis_string(0xc0,min tem:);writetab() ; /自定义字符写入CGRAM lcd_wcmd(0xca); lcd_wdat(0x00) ; /显示自定义字符min=set_tem(min) ;break; case 2: /设置正常温度范围最小值模式lcd_init();dis_string(0x80,set max tem);dis_string(0xc0,max tem:);writetab() ; /自定义字符写入CGRAM lcd_wcmd(0xca); lcd_wdat(0x00) ; /显示自定义字符max=set_tem(max) ;break; default: display_tem();break; /默认进入正常显示模式 4.3 温度显示和报警温度显示和报警的功能放在同一个函数中,在显示温度的同时,会判断每一路DS18B20是否正常工作,如果没有,则提示,ERROR,如果传感器正常工作,就显示采集的温度,并且判断是否在正常范围之内,如果不在,就触发报警功能,蜂鸣器发出响声。程序主要有一个函数,代码如下:/* 在1602上显示温度,并且判断温度是否超过正常设定范围 */*/void display_tem() BEEP=1; if(presence&0x01)/presence最低位为1说明0号测温度传感器没有正常工作。 dis_string(0x80,T0 ERROR); else dis_string(0x80,T0:); lcd_wdat(wd0%1000/100+48) ; lcd_wdat(wd0%100/10+48) ; lcd_wdat(.) ; lcd_wdat(wd0%10+48) ; writetab() ; /自定义字符写入CGRAM lcd_wcmd(0x87); lcd_wdat(0x00) ; /显示自定义字符 if(wd0max*10)|(wd0max*10)|(wd1max*10)|(wd2min*10) BEEP=0; 5 主要元器件介绍5.1 C8051F系列单片机C8051F020/1/2/3 器件是完全集成的混合信号系统级MCU 芯片,具有64 个数字I/O 引脚(C8051F020/2)或32 个数字I/O 引脚(C8051F021/3)。下面列出了一些主要特性;(1) 高速、流水线结构的8051 兼容的CIP-51 内核(可达25MIPS)(2) 全速、非侵入式的在系统调试接口(片内)(3) 真正12 位(C8051F020/1)或10 位(C8051F022/3)、100 ksps 的8 通道ADC,带PGA和模拟多路开关(4) 真正8 位500 ksps 的ADC,带PGA 和8 通道模拟多路开关(5) 两个12 位DAC,具有可编程数据更新方式(6) 64K 字节可在系统编程的FLASH 存储器(7) 4352(4096+256)字节的片内RAM(8) 可寻址64K 字节地址空间的外部数据存储器接口(9) 硬件实现的SPI、SMBus/ I2C 和两个UART 串行接口(10) 5 个通用的16 位定时器(11) 具有5 个捕捉/比较模块的可编程计数器/定时器阵列(12) 片内看门狗定时器、VDD 监视器和温度传感器具有片内VDD 监视器、看门狗定时器和时钟振荡器的C8051F020/1/2/3 是真正能独立工作的片上系统。所有模拟和数字外设均可由用户固件使能/禁止和配置。FLASH 存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051 固件。片内JTAG 调试电路允许使用安装在最终应用系统上的产品MCU 进行非侵入式(不占用片内资源)、全速、在系统调试。该调试系统支持观察和修改存储器和寄存器,支持断点、观察点、单步及运行和停机命令。在使用JTAG 调试时,所有的模拟和数字外设都可全功能运行。每个MCU 都可在工业温度范围(-45到+85)内用2.7V-3.6V 的电压工作。端口I/O、/RST 和JTAG 引脚都容许5V 的输入信号电压。C8051F020 系列MCU 对CIP-51 内核和外设有几项关键性的改进,提高了整体性能,更易于在最终应用中使用。扩展的中断系统向CIP-51 提供22 个中断源(标准8051 只有7 个中断源),允许大量的模拟和数字外设中断微控制器。一个中断驱动的系统需要较少的MCU 干预,因而有更高的执行效率。在设计一个多任务实时系统时,这些增加的中断源是非常有用的。MCU 可有多达7 个复位源:一个片内VDD 监视器、一个看门狗定时器、一个时钟丢失检测器、一个由比较器0 提供的电压检测器、一个软件强制复位、CNVSTR 引脚及/RST 引脚。/RST 引脚是双向的,可接受外部复位或将内部产生的上电复位信号输出到/RST 引脚。除了VDD 监视器和复位输入引脚以外,每个复位源都可以由用户用软件禁止;使用MONEN 引脚使能/禁止VDD 监视器。在一次上电复位之后的MCU 初始化期间,WDT 可以被永久性使能。MCU 内部有一个独立运行的时钟发生器,在复位后被默认为系统时钟。如果需要,时钟源可以在运行时切换到外部振荡器,外部振荡器可以使用晶体、陶瓷谐振器、电容、RC 或外部时钟源产生系统时钟。时钟切换功能在低功耗系统中是非常有用的,它允许MCU 从一个低频率(节电)外部晶体源运行,当需要时再周期性地切换到高速(可达16MHz)的内部振荡器。其原理图如下图所示:图5.15.2 液晶显示屏(LCD)用于数字型钟表和许多便携式计算机的一种显示器类型。液晶显示器(LCD)目前科技信息产品都朝着轻、薄、短、小的目标发展,在计算机周边中拥有悠久历史的显示器产品当然也不例外。在便于携带与搬运为前题之下,传统的显示方式如CRT映像管显示器及LED显示板等等,皆受制于体积过大或耗电量甚巨等因素,无法达成使用者的实际需求。而液晶显示技术的发展正好切合目前信息产品的潮流,无论是直角显示、低耗电量、体积小、还是零辐射等优点,都能让使用者享受最佳的视觉环境。以下是对本设计中所用到的LCD的说明,LCD接口实验电路图如图5.2所示。液晶显示屏是以5X8或5X11点阵组成的字符组。其主控制驱动电路为HD44780或其他公司的兼容电路,如SED1278,KD0066和NJU6408,都是将液晶显示点阵和驱动电路结合为一体的液晶显示模块。对照液晶显示模块LCM与单片机的硬件接口电路图,液晶显示模块电路可直接与单片机C8051F020的I/O口P7和P6连接。P7作数据口(D0D7),P6.0,P6.1和P6.2用作LCD模块的3条信号线RS,R/W和E控制LCD的读/写操作。单片机可对LCD进行读/写。LCD没款编程要点如下:(1) 用LCD模块的3条信号线RS,R/W和E控制LCD的读/写操作。(2) RS为寄存器的选择位,RS=1,选择数据寄存器;RS=0,选择指令寄存器。(3) E为使能信号,下降沿触发。(4)R/W为读/写信号,R/W=1,读;R/W=0,写;(5)D0D7是8位数据总线。(6)VDD接+5V电源,VSS接地。LCD模块的第16脚为背光控制线。短接 J1的1,2脚就能加上背光。(7)将P6.0线与E端相连,P6.1线与R/W端连接,P6.2线与RS端相连,可利用I/O线P6.2,P6.1和P6.0代替RS,R/W和E实现读/写操作。(8)编

温馨提示

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

评论

0/150

提交评论