版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、理工大学计算机学院课程设计单片机系统设计班级计科1104姓名学号指导教师业德韩慧二一四年十一月日.课程设计任务书及成绩评定课题名称_温度测试系统设计_I、题目的目的和要求:利用温度传感器和MSP430单片机设计一个温度测试系统,将测试结果(十进制)在LED上显示出来,并定义一个保持按键,当按下该键时,将目前测试值保持不变(按键不动作时为正常丈量显示)。温度显示格式为:XXX。、设计进度及达成状况日期容11.10选用题目,进行资料收集和系统剖析工作11.14进行独自程序设计以及达成独自接口电路11.16将所有程序综归并进行整体程序调试和连结整体接口电路11.18书写课程设计报告并写下有关问题总结
2、11.20进行课程设计辩论,并打印上交.、主要参照文件及资料MSP430系列16位低功耗单片机原理及应用DS18B20温度传感器的使用智能仪器原理及应用学科部主任业德、成绩评定:设计成绩:(教师填写)指导老师:(署名)二年代日.目录I、题目的目的和要求:2II、设计进度及达成状况2III、主要参照文件及资料3、成绩评定:3目录.4本次课程设计的目的和意义5设计题目.6系统的主要功能、作用以及主要技术性能指标7整体设计方案、工作和构成原理8系统设计.11设计总结.22作品的使用或操作说明23设计图纸或图表.24.本次课程设计的目的和意义课程设计是让我娴熟掌握了课本上的一些理论知识,课程设计也是一
3、个学习新知识、稳固加深所学课本理论知识的过程,它培育了我们综合运用知识的能力,独立思虑和解决问题的能力。加深我们对单片机原理与应用课程的理解.设计题目温度测试系统设计:利用温度传感器DS18B20和MSP430单片机设计一个温度测试系统,将测试结果(十进制)在LED上显示出来,并定义一个保持按键,当按下该键时,将目前测试值保持不变(按键不动作时为正常丈量显示)。温度显示格式为:XXX。.系统的主要功能、作用以及主要技术性能指标系统的主要功能是单片机及时从温度传感器读取温度数据信息,并在数码管显示,同时扫描能否有保持按键按下,假如按下则不再持续从温度传感器读取温度数据信息,保持温度值不变。作用是
4、能够及时读取环境中的温度信息,供用户查察,同时当用户需要察看某温度时,能够按下按键保持温度不变。主要技术指标:基本围0-99精度偏差小于0.5LED数码直读显示扫描按键保持数值.整体设计方案、工作和构成原理数字温度计设计方案论证方案一因为本设计是测温电路,能够使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流收集过来,进行A/D变换后,就能够用单片机进行数据的办理,在显示电路上,就能够将被测温度显示出来,这类设计需要用到A/D变换电路,感温电路比较麻烦。方案二从而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,因此这是特别简单想到,因此能够采纳一只温度传感器DS1
5、8B20,此传感器,能够很简单直接读取被测温度值,进行变换,就能够知足设计要求。从以上两种方案,很简单看出,采纳方案二,电路比较简单,软件设计也比较简单,故采纳了方案二。主控制器单片机采纳MSP430单片机,办理能力强,功耗低,实现该功能仅需一个按键,8位数码管显示,以及DS18B20温度传感器。显示电路:显示电路采纳8位共阴LED数码管,从P4口输出段码。图一整体设计框图温度传感器:DS18B20温度传感器是美国DALLAS半导体企业最新推出的一种改良型智能温度传感器,与传统的热敏电阻等测温元件对比,它能直接读出被测温度,而且可依据实质要求经过简单的编程实现912位的数字值读数方式。DS18
6、B20的性能特色以下:独到的单线接口仅需要一个端口引脚进行通讯;多个DS18B20能够并联在唯一的三线上,实现多点组网功能;不必外面器件;可经过数据线供电,电压围为3.05.5;零待机功耗;温度以9或12位数字;.用户可定义报警设置;报警搜寻命令辨别并标记超出程序限制温度(温度报警条件)的器件;负电压特征,电源极性接反时,温度计不会因发热而烧毁,但不可以正常工作;DS18B20部构造框图如图2所示。64位ROM的构造开始8位是产品种类的编号,接着是每个器件的唯一的序号,共有48位,最后8位是前面56位的CRC查验码,这也是多个DS18B20能够采纳一线进行通讯的原由。温度报警触发器和,可经过软
7、件写入户报警上下限。DS18B20温度传感器的部储存器还包含一个高速暂存和一个非易失性的可电擦除的EERAM。高速暂存RAM的构造为8字节的储存器,构造如图3所示。头2个字节包含测得的温度信息,第3和第4字节和的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置存放器,它的容用于确立温度值的数字变换分辨率。DS18B20工作时存放器中的分辨率变换为相应精度的温度数值。该字节各位的定义如图3所示。低5位向来为1,是工作模式位,用于设置DS18B20在工作模式仍是在测试模式,DS18B20出厂时该位被设置为0,用户要去变动,R1和R0决定温度变换的精度位数,来设置分辨率。温度传感器连结以下列
8、图所示,DQ引脚与单片机的P5.3相连:.系统设计接口电路设计,程序设计(程序框图和程序清单及说明)其余有关的理论剖析和计算接口电路设计:主控制器MSP430温度传感器.保持按键数码管电路.程序框图:整体设计流程图读取温度传感器数据流程图.数码管温度显示程序设计:/*定义引脚*#defineLED8PORTP2OUT/P2接8个LED灯#defineLED8SELP2SEL/P2接8个LED灯#defineLED8DIRP2DIR/P2接8个LED灯#defineDATAPORTP4OUT/数据口所在端口P4#defineDATASELP4SEL/数据口功能存放器,控制功能模式#defineD
9、ATADIRP4DIR/数据口方向存放器#defineCTRPORTP6OUT/控制线所在的端口P6#defineCTRSELP6SEL/控制口功能存放器,控制功能模式#defineCTRDIRP6DIR/控制口方向存放器#defineDCTR0P6OUT&=BIT4/数码管段控制位信号置低#defineDCTR1P6OUT|=BIT4/数码管段控制位信号置高#defineWCTR0P6OUT&=BIT3/数码管位控制位信号置低#defineWCTR1P6OUT|=BIT3/数码管位控制位信号置高#defineKEYPORTP1OUT/按键所在的端口P1#defineKEYSELP1SEL/控
10、制口功能存放器,控制功能模式#defineKEYDIRP1DIR/控制口方向存放器#defineKEYINP1IN/键盘扫描判断需要读取IO口状态值ucharkey=0 xFF;/键值变量uinttemp_value;floattruetemp;.uinttemp,A1,A2,A3;/定义的变量,显示数据办理/*共阴数码管显示的断码表*uchartable=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71;/*系统时钟初始化*voidClock_Init
11、()uchari;BCSCTL1&=XT2OFF;/翻开XT2振荡器BCSCTL2|=SELM1+SELS;/MCLK为8MHZ,SMCLK为8MHZdoIFG1&=OFIFG;/清楚振荡器错误标记for(i=0;i100;i+)_NOP();while(IFG1&OFIFG)!=0);/假如标记位1,则持续循环等候IFG1&=OFIFG;/*MSP430部看门狗初始化*voidWDT_Init()WDTCTL=WDTPW+WDTHOLD;/封闭看门狗/*MSP430IO口初始化*voidPort_Init()LED8SEL=0 x00;/设置IO口为一般I/O模式,此句可省LED8DIR=0
12、 xFF;/设置IO口方向为输出LED8PORT=0 xFF;/P2口初始设置为FFDATASEL=0 x00;/设置IO口为一般I/O模式,此句可省DATADIR=0 xFF;/设置IO口方向为输出DATAPORT=0 xFF;/P4口初始设置为FFCTRSEL=0 x00;/设置IO口为一般I/O模式,此句可省CTRDIR|=BIT3+BIT4+BIT2;/设置IO口方向为输出,控制口在P63,P64CTRPORT=0 xFF;/P6口初始设置为FFKEYSEL=0 x00;/设置IO口为一般I/O模式,此句可省KEYDIR=0 x0F;/高四位输入模式,低四位输出模式,外面上拉电阻KEY
13、PORT=0 xF0;/初始值0 xF0/*74HC573控制数码管动向扫描键值显示函数*voidDisplay_Key(ucharnum)uchari,j;j=0 x01;/此数据用来控制位选for(i=0;i8;i+)/8个数码管挨次显示DCTR1;/控制数码管段数据的74HC573的LE管脚置高WCTR1;/控制数码管位的74HC573的LE管脚置高.DATAPORT=j;/设置要显示的位,也就是哪一个数码管亮WCTR0;/锁存位数据,下边奉上段数据此后,就显示出来了DATAPORT=tablenum;/送要显示的数据,这里是键值DCTR0;/锁存段数据,数码管亮一个时间片晌j=j1;/
14、移位,准备进行下一位的显示delay_us(500);/显示一个时间片晌,会影响亮度和闪耀性Close_LED();/显示完8个数码管后封闭数码管显示,不然可能致使各个数码管亮度不一致/*键盘扫描子程序,采纳逐键扫描的方式*ucharKey_Scan(void)ucharkey_check;ucharkey_checkin;key_checkin=KEYIN;/读取IO口状态,判断能否有键按下key_checkin&=0 xF0;/障蔽掉低四位的不确立值if(key_checkin!=0 xF0)/IO口值发生变化则表示有键按下delay_ms(20);/键盘消抖,延时20MSkey_chec
15、kin=KEYIN;/再次读取IO口状态if(key_checkin!=0 xF0)/确立能否真实的有键按下key_check=KEYIN;/有键按下,读取端口值switch(key_check&0 xF0)/判断是哪个键按下case0 xE0:key=1;break;case0 xD0:key=2;break;case0 xB0:key=3;break;case0 x70:key=4;break;elsekey=0 xFF;/无键按下,返回FFreturnkey;/*74HC573控制数码管动向扫描显示函数,显示收集到的温度*voidDisplay_DS18B20(uintdata_b,ui
16、ntdata_s,uintdata_g)uchari,j;j=0 x01;/此数据用来控制位选for(i=0;i3;i+)/用后3位数码管来显示DCTR1;WCTR1;DATAPORT=j;WCTR0;.j=(j1);DATAPORT=0 x00;/前5位都不显示,送数据00即可DCTR0;delay_ms(2);DCTR1;/开始显示第6位,即十位WCTR1;DATAPORT=j;WCTR0;j=(j1);/DATAPORT=tableA1;DATAPORT=tabledata_b;DCTR0;delay_ms(1);DCTR1;/开始显示个位WCTR1;DATAPORT=j;WCTR0;j
17、=(j1);/DATAPORT=tableA2|0 x80;/显示小数点DATAPORT=tabledata_s|0 x80;/显示小数点DCTR0;delay_ms(1);DCTR1;/开始显示小数点后边的数据WCTR1;DATAPORT=j;WCTR0;j=(j1);/DATAPORT=tableA3;DATAPORT=tabledata_g;DCTR0;delay_ms(1);DCTR1;/开始显示温度单位WCTR1;DATAPORT=j;WCTR0;j=(j1);/DATAPORT=tableA3;DATAPORT=0 x63;DCTR0;delay_ms(1);DCTR1;/开始显示
18、温度单位WCTR1;DATAPORT=j;WCTR0;j=(j480uS)if(i)return0 x00;elsereturn0 x01;/*DS18B20读一个字节函数*unsignedchards1820_read_byte(void)unsignedchari;unsignedcharvalue=0;for(i=8;i!=0;i-)value=1;DQ_OUT;DQ_CLR;delay_us(4);/*延时4uSDQ_SET;DQ_IN;delay_us(10);/*延时10uSif(DQ_R)value|=0 x80;delay_us(60);/*延时60uSreturn(value
19、);./*向18B20写一个字节函数*/*DS18B20字节写入函数*/voidds1820_write_byte(unsignedcharvalue)unsignedchari;for(i=8;i!=0;i-)DQ_OUT;DQ_CLR;delay_us(4);/延时4uSif(value&0 x01)DQ_SET;delay_us(80);/延时80uSDQ_SET;/位结束value=1;/*发送温度变换命令*/*启动ds1820变换*/voidds1820_start(void)DS18B20_Reset();ds1820_write_byte(0 xCC);/勿略地点ds1820_w
20、rite_byte(0 x44);/启动变换/*DS8B20读取温度信息*unsignedintds1820_read_temp(void)unsignedinti;unsignedcharbuf9;DS18B20_Reset();ds1820_write_byte(0 xCC);/勿略地点ds1820_write_byte(0 xBE);/读取温度for(i=0;i9;i+)bufi=ds1820_read_byte();i=buf1;i=8;i|=buf0;temp_value=i;temp_value=(uint)(temp_value*0.625);/不是乘以0.0625的原由是为了把
21、小数点后一位数据也转变为能够显示的数据/比方温度自己为27.5度,为了在后续的数据办理程序中得到BCD码,我们先放大到275/而后在显示的时候确立小数点的地点即可,就能显示出27.5度了.returni;/*温度数据办理函数*voiddata_do(uinttemp_d)A3=temp_d%10;/分出百,十,和个位temp_d/=10;A2=temp_d%10;A1=temp_d/10;/*办理温度数据*voidhandletemp()ds1820_start();/启动一次变换ds1820_read_temp();/读取温度数值data_do(temp_value);/办理数据,获得要显示
22、的值truetemp=0.1*temp_value;/judgeAlarm();/判断能否触发警报/已将其增添至按键程序/*显示温度*voidshowtemp()ucharj;for(j=0;j100;j+)Display_DS18B20(A1,A2,A3);/显示温度值/delay_ms(100);/延时100ms/*主程序*voidmain(void)ucharflag1,flag2,flag3,flag4;/uintkey_store=0 x00;/没有按键按下时,默认显示1WDT_Init();/看门狗初始化Clock_Init();/时钟初始化Port_Init();/端口初始化,用
23、于控制IO口输入或输出/Close_LED();DS18B20_Reset();/复位D18B20delay_ms(100);/延时100mswhile(1)Key_Scan();/键盘扫描,看能否有按键按下if(key!=0 xff)/假如有按键按下,则显示该按键键值14switch(key)case1:LED8PORT=0 xfc;flag1=1;flag2=0;flag3=0;flag4=0;break;/对温度数据.办理判断警报,而后显示,handletemp();showtemp();case2:LED8PORT=0 xf3;flag1=0;flag2=1;flag3=0;flag4=0;break;/温度数据办理判断警报,封闭显示,节俭电源,handletemp();C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮试用工协议书
- 黄仁勋保护协议书
- 员工急辞工协议书
- 高考填志愿协议书
- 旧小区拆迁协议书
- 承包拆除了协议书
- 2025年山西省广播电视局中波台管理中心招聘应急广播平台值班员备考题库及参考答案详解
- 2025年杨建华课题组招聘备考题库及一套完整答案详解
- 成都市实验中学教师招聘20人备考题库及答案详解1套
- 2025年缙云县保安服务有限公司公开招聘外包工作人员备考题库及完整答案详解一套
- 西方作曲技术风格分析与仿作智慧树知到期末考试答案章节答案2024年星海音乐学院
- 工程地勘施工方案
- MOOC 电子技术-北京科技大学 中国大学慕课答案
- 《水电工程运行调度规程编制导则》(NB-T 10084-2018)
- 高中英语命题要求与技巧课件高考英语命题技术讲座
- 话题标记从何而来中国语言学的新进展评《乐在其中王士元教授七十华诞庆祝文集》
- 肝血管瘤患者的护理查房
- 二次结构电气配管及预埋技术交底
- 电气安装工程监理控制要点
- 商场超市安全生产标准化管理体系方案资料汇编(2022-2023新标准实施模板)
- 沈阳市义务教育学校教学常规管理实施细则
评论
0/150
提交评论