MSP430单片机温度单片机课程设计报告书_第1页
MSP430单片机温度单片机课程设计报告书_第2页
MSP430单片机温度单片机课程设计报告书_第3页
MSP430单片机温度单片机课程设计报告书_第4页
MSP430单片机温度单片机课程设计报告书_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

1、理工大学计算机学院课程设计单片机系统设计班 级 计科1104姓 名学号指导教师 业德韩慧二.一四年十一月 日课程设计任务书及成绩评定课题名称温度测试系统设计I、 题目的目的和要求:利用温度传感器和 MSP43单片机设计一个温度测试系 统,将测试结果十进制在LEDh显示出来,并定义一个保 持按键,当按下该键时,将当前测试值保持不变 按键不动 作时为正常测量显示.温度显示格式为:XXX C oII、 设计进度及完成情况日期容11.10选取题目,进行资料搜集和系统分析工作11.14进行单独程序设计以及完成单独接口电路11.16将全部程序综合并进行整体程序调试和连接整体接口电路11.18书写课程设计报

2、告并写下相关问题总结11.20进行课程设计辩论,并打印上交III、主要参考文献及资料MSP430列16位低功耗单片机原理及应用DS18B2豳度传感器的使用智能仪器原理及应用学科部主任业德VI、成绩评定:设计成绩: 教师填写指导老师: 签字二. 年 月 日目录I、 题目的目的和要求: 2II、 设计进度及完成情况 2III、 主要参考文献及资料 3VI、成绩评定: 3目录4本次课程设计的目的和意义 5设计题目6系统的主要功能、作用以及主要技术性能指标 7总体设计方案、工作和组成原理 8系统设计11设计总结22作品的使用或操作说明 23设计图纸或图表24本次课程设计的目的和意义稳固加课程设计是让我

3、熟练掌握了课本上的一些理论知识, 课程设计也是一个学习新知识、 深所学课本理论知识的过程,它培养了我们综合运用知识的水平,独立思考和解决问题的水平. 加深我们对单片机原理与应用课程的理解设计题目温度测试系统设计:利用温度传感器DS18B2价口 MSP430片机设计一个温度测试系统,将测试结果十进制 在LED上显示出来,并定义一个保持按键,当按下该键时,将当前测试值保持不变 按键 不动作时为正常测量显示.温度显示格式为:XXX C 0系统的主要功能、作用以及主要技术性能指标系统的主要功能是单片机实时从温度传感器读取温度数据信息,并在数码管显示,同时扫描是否有保持按键按下,如果按下那么不再继续从温

4、度传感器读取温度数据信息,保 持温度值不变.作用是可以实时读取环境中的温度信息,供用户查看,同时当用户需要观察某温度时, 可以按下按键保持温度不变.主要技术指标:1 .根本围0C-99 c2 .精度误差小于0.5 C3 . LED数码直读显示4 .扫描按键保持数值总体设计方案、工作和组成原理数字温度计设计方案论证万案一由于本设计是测温电路, 可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行 A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将 被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比拟麻烦.万案一进而考虑到用温度传感器,

5、在单片机电路设计中, 大多都是使用传感器, 所以这是非常容易想到, 所以可以采用一只温度传感器 DS18B20此传感器,可以很容易直接读取被测温度值,进行转换,就 可以满足设计要求.从以上两种方案,很容易看出,采用方案二,电路比拟简单,软件设计也比拟简单, 故采用了方案二.主限制器单片机采用MSP430片机,处理水平强,功耗低,实现该功能仅需一个按键,8位数码管显示,以及DS18B2W度传感器.显示电路:显示电路采用8位共阴LED数码管,从P4 口输出段码.图一总体设计框图温度传感器:DS18B20温度传感器是美国 DALLAS半导体公司最新推出的一种改良型智能温度传感器,与传统 的热敏电阻等

6、测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现912位的数字值读数方式.DS18B20的性能特点如下: 独特的单线接口仅需要一个端口引脚进行通信; 多个DS18B20可以并联在惟一的三线上,实现多点组网功能; 无须外部器件; 可通过数据线供电,电压围为 3.05.5 V; 零待机功耗; 温度以9或12位数字; 用户可定义报警设置; 报警搜索命令识别并标志超过程序限定温度温度报警条件的器件; 负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20部结构框图如图 2所示.64位ROM勺结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共

7、有 48位,最后8位是前面56位的CRC佥验码,这也是多个 DS18B20可以采用一线进行通信的原因.温度报警触发器T H和T L ,可通过软件写入户报警上下限.DS18B20a度传感器的部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM高速暂存RAM勺结本勾为8字节的存储器,结构如图3所示.头2个字节包含测得的温度信息,第 3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新. 第5个字节,为配置存放器,它的容用于确定温度值的数字转换分辨率.DS18B20工作时存放器中的分辨率转换为相应精度的温度数值.该字节各位的定义如图3所示.低5位一直为1, TM是工作模式位,

8、用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率.囱口51犯2 口内部结构温度传感器连接如下列图所示,DC8I脚与单片机的P5.3相连:系统设计接口电路设计,程序设计程序框图和程序清单及注释其他有关的理论分析和计算 接口电路设计:IFlgM 一 Ml<l ,rmrL h ICklT)人1篁匚4Xu 罂/HI 求1 UlTTft?1MFR丁4 (O5rFuantf+-T工 mMtKrl 上有ix-E 53p城LJ.一s上二壬 N-rf一 受 次w K><3.Lb上博 Mlwar

9、9;lVRHLlKF:Y(I12KLBuh±YJ15KFY4IAVvfcFF-Pli.*A4 PliJfAi Pb.tfAC Pb.TfA?VKLI XIN XOJTTCLX VekLF-VBU WtKEI - PJ a MIX H.VTAO pi yr Ai P1.3fTA2 PJ l.'SMt-LK00下元-£ 爸WEUMJnasuao.faMOSE rvu MS £ -WI/L Mw-yszdl 金,w三'i二M 二<_ ri<n nV% ;P5.4M<.'LK P5 3/LtLkl P52ZSOM1I Pj.JAl

10、MtMP?.lkSTEl KJflBCLkN (/TB6 PJ snuiN-VT&4 VH.iflbS t'42B2N 1/lblN VTU-J 电和RXIM ra.fiflfTXDI PJSUKXLiiJ Ku IE工-nW"IsEA比 更 m匚 r立l&mvE 力 f二 M 二171二. Tr 1IZI二/K舟 slIK-i- 口 行 云一话 zu IT: 品 (工IN,Llrl,lxk£lI0K温度传感器KtY4KFKEY7保持按键年= VS,j£T口at vetT IC_3lTmrn二ADO 3d(.Jt.VLLLEwrr 匿14

11、AADD5 J1 L£DIQIn-T1rvfw wo用?.亡AM 4l> HABI35IK W1r CAtC4BQS* W2AOi 52lb D.3:It W3AMe1! EAIM,1* W4心 %14 FAU?14 W5ADfe 8 11) CiADBI 11fl>13012 HAiff12 W7(wIQ(EM?广丁4HT中74HTS73数码管电路程序框图:总体设计流程图读取温度传感器数据流程图数码管温度显示程序设计:*定义弓 | 脚 *#define LED8PORT#define LED8SEL#define LED8DIRP2OUTP2SELP2DIR/P2/P2

12、/P2接8个LED灯接8个LED灯接8个LED灯#define DATAPORTP4OUT/数据口所在端口 P4#define DATASELP4SEL/数据口功能存放器,限制功能模式#define DATADIRP4DIR/数据方向存放器#define CTRPORTP6OUT/限制线所在的端口 P6#define CTRSELP6SEL/限制口功能存放器,限制功能模式#define CTRDIRP6DIR/限制口方向存放器#define DCTR0P6OUT &= BIT4/数码管段限制位信号置低#define DCTR1P6OUT |=BIT4/数码管段限制位信号置高#defin

13、e WCTR0P6OUT &= BIT3/数码管位限制位信号置低#define WCTR1P6OUT |=BIT3/数码管位限制位信号置高#define KEYPORTP1OUT/按键所在的端口 P1#define KEYSELP1SEL/限制口功能存放器,限制功能模式#define KEYDIRP1DIR/限制口方向存放器#define KEYINP1IN/键盘扫描判断需要读取IO 状态值uchar key=0xFF;/键值变量uint temp_value;float truetemp;uint temp,A1,A2,A3;H*/定义的变量,显示数据处理共阴数码管显示的断码表*uc

14、har table尸0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/ *void Clock_Init()uchar i;BCSCTL1&=XT2OFF;BCSCTL2|=SELM1+SELS; doIFG1&=OFIFG;for(i=0;i<100;i+)_NOP();while(IFG1&OFIFG)!=0);IFG1&=OFIFG;系统时钟初始化 */MCLK翻开XT2振荡器为 8MHZ SMCL 8MHZ/清楚振荡器错误标志如果标志位

15、1,那么继续循环等待/*MSP430部看门狗初始化 *void WDT_Init()WDTCTL = WDTPW + WDTHOLD;/*MSP430IO/ 关闭看门狗口 初始化 *void Port_Init()LED8SEL = 0x00;/LED8DIR = 0xFF;/LED8PORT = 0xFF;/P2设置IO 口为普通I/O模式,此句可省设置IO 口方向为输出口初始设置为FFDATASEL = 0x00;/DATADIR = 0xFF;/DATAPORT = 0xFF;/P4CTRSEL = 0x00;/CTRDIR |= BIT3 + BIT4 +BIT2; /CTRPORT

16、= 0xFF;/P6设置IO 口为普通I/O模式,此句可省设置IO 口方向为输出口初始设置为FF设置IO 口为普通I/O模式,此句可省设置IO 口方向为输出,限制口在P63,P64口初始设置为FFKEYSEL = 0x00;KEYDIR = 0x0F;KEYPORT= 0xF0; /*74HC573/设置IO 口为普通I/O模式,此句可省/高四位输入模式,低四位输出模式,外部上拉电阻/初始值0xF0限制数码管动态扫描键值显示函数*uchar i,j;j=0x01;/for(i=0;i<8;i+)/8DCTR1;/WCTR1;/void Display_Key(uchar num) 此数据

17、用来限制位选个数码管依次显示限制数码管段数据的 74HC573的LE管脚置高限制数码管位的74HC573的LE管脚置高DATAPORT=j;/WCTR0;/DATAPORT=tablenum; /DCTR0;/j=j<<1;/delay_us(500);/)Close_LED();/设置要显示的位,也就是哪一个数码管亮锁存位数据,下面送上段数据以后,就显示出来了送要显示的数据,这里是键值锁存段数据,数码管亮一个时间片刻移位,准备进行下一位的显示显示一个时间片刻,会影响亮度和闪烁性显示完8个数码管后关闭数码管显示,否那么可能导致各个数码管亮度不一致11m*键盘扫描子程序,采用逐键扫描

18、的方式*uchar Key_Scan(void) 一uchar key_check;uchar key_checkin;key_checkin=KEYIN;key_checkin&= 0xF0;if(key_checkin!=0xF0) /IO delay_ms(20); key_checkin=KEYIN;/if(key_checkin!=0xF0)/ key_check=KEYIN;/switch (key_check & 0xF0) / 读取IO 口状态,判断是否有键按下/屏蔽掉低四位的不确定值口值发生变化那么表示有键按下/键盘消抖,延时 20MS再次读取IO 口状态确定

19、是否真正的有键按下有键按下,读取端口值判断是哪个键按下case 0xE0:key=1;break;case 0xD0:key=2;break;case 0xB0:key=3;break;case 0x70:key=4;break;)elsekey=0xFF;/无键按下,返回 FFreturn key;)/*74HC573限制数码管动态扫描显示函数,显示采集到的温度 *void Display_DS18B20(uint data_b,uint data_s,uint data_g)uchar i,j;j=0x01;/此数据用来限制位选for(i=0;i<3;i+)/用后3位数码管来显示DC

20、TR1;WCTR1;DATAPORT=j;WCTR0;j=(j<<1); DATAPORT=0x00; / DCTR0; delay_ms(2); ) DCTR1;/WCTR1; DATAPORT=j; WCTR0; j=(j<<1); DATAPORT=tableA1; DATAPORT=tabledata_b; DCTR0; delay_ms(1);DCTR1;/WCTR1;DATAPORT=j;WCTR0;j=(j<<1);DATAPORT=tableA20x80;/DATAPORT=tabledata_s|0x80; / DCTR0; delay_m

21、s(1);DCTR1;/WCTR1;DATAPORT=j;WCTR0;j=(j<<1);DATAPORT=tableA3; DATAPORT=tabledata_g;DCTR0;delay_ms(1);DCTR1;/WCTR1;DATAPORT=j;WCTR0;j=(j<<1);DATAPORT=tableA3; DATAPORT=0x63; DCTR0; delay_ms(1);DCTR1;/WCTR1;DATAPORT=j;WCTR0;j=(j<<1);DATAPORT=tableA3; DATAPORT=0x39;前5位都不显示,送数据 00即可开始显

22、示第6位,即十位开始显示个位显示小数点显示小数点开始显示小数点后面的数据开始显示温度单位开始显示温度单位DCTR0;delay_ms(1);DCTR1;WCTR1;DATAPORT=0xff;WCTR0;*DS18B20unsigned char DS18B20_Reset(void)一unsigned char i;DQ_OUT;DQ_CLR;delay_us(500);DQ_SET;DQ_IN;delay_us(80);i = DQ_R;delay_us(500);初始化 */初始化和复位/ 延时 500uS(480-960)/ 延时80uS/ 延时 500uS(保持 >480uS)

23、if (i)return 0x00;) elsereturn 0x01;)/*DS18B20unsigned char ds1820_read_byte(void)unsigned char i;unsigned char value = 0;for (i = 8; i != 0; i-)value >>= 1;DQ_OUT;DQ_CLR;delay_us(4);/*DQ_SET;DQ_IN;delay_us(10);/*if (DQ_R)value|=0x80;)delay_us(60);/*读一个字节函数 *延时4uS延时10uS延时60uS)return(value);)*/

24、*DS18B20字节写入函数*/向 18B20 写一个字节函数 *void ds1820_write_byte(unsigned char value)unsigned char i;for (i = 8; i != 0; i-)(DQ_OUT;DQ_CLR;delay_us(4);if (value & 0x01)(DQ_SET;)delay_us(80);DQ_SET;value >>= 1;)/* /*启动ds1820转换*/ void ds1820_start(void) (DS18B20_Reset();/ 延时4uS/延时80uS/ 位结束发送温度转换命令 */

25、勿略地址/启动转换/*DS8B20读取温度信息*ds1820_write_byte(0xCC);ds1820_write_byte(0x44);)unsigned int ds1820_read_temp(void)(unsigned int i;unsigned char buf9;DS18B20_Reset();勿略地址读取温度ds1820_write_byte(0xCC);/ds1820_write_byte(0xBE);/for (i = 0; i < 9; i+) (bufi = ds1820_read_byte();)一 一i = buf1;i <<= 8;i |

26、= buf0;temp_value=i;不是乘以0.0625的原因是为了把小数点后一位数比方温度本身为 27.5度,为了在后续的数据处理程序中得然后在显示的时候确定小数点的位置即可,就能显temp_value=(uint)(temp_value*0.625); / 据也麻为可以显示的数据/至ij BC加,我们先放大至IJ275/示出27.5度了return i;)H*温度数据处理函数 *void data_do(uint temp_d)( A3=temp_d%10;/temp_d/=10;A2=temp_d%10; A1=temp_d/10;)/* void handletemp() ( ds

27、1820_start();ds1820_read_temp(); data_do(temp_value); truetemp=0.1*temp_value; /judgeAlarm();)/* void showtemp() (分出百,十,和个位处理温度数据 */启动一次转换/读取温度数值/处理数据,得到要显示的值/判断是否触发警报已将其添加至按键程序显示温度 *uchar j;for(j=0;j<100;j+)(Display_DS18B20(A1,A2,A3); /显示温度值/delay_ms(100);/延时100ms)/*主程序*void main(void)(uchar fla

28、g1,flag2,flag3,flag4;/uint key_store=0x00;/WDT_Init();/Clock_Init();/Port_Init();/Close_LED(); DS18B20_Reset();/delay_ms(100);/while(1) ( Key_Scan();/if(key!=0xff)/没有按键按下时,默认显示1看门狗初始化时钟初始化端口初始化,用于限制 IO 口输入或输出复位D18B20延时100ms键盘扫描,看是否有按键按下如果有按键按下,那么显示该按键键值14(switch(key)(case1: LED8PORT=0xfc;flag1=1;fla

29、g2=0;flag3=0;flag4=0;break;/对温度数据温度数据处关闭警测试警报处理判断警报,然后显示,handletemp();showtemp(); case2: LED8PORT=0xf3;flag1=0;flag2=1;flag3=0;flag4=0;break;/理判断警报,关闭显示,节省电源,handletemp();Close_LED();case 3: LED8PORT=0xcf;flag1=0;flag2=0;flag3=1;flag4=0;break;/报,SOUNDOFF;handletemp();case 4: LED8PORT=0x3f;flag1=0;fl

30、ag2=0;flag3=0;flag4=1;break;/SOUNDON; else LED8PORT&=0xff; / if(flag1=1) /handletemp(); showtemp(); if(flag2=1) handletemp(); showtemp(); if(flag3=1) SOUNDOFF; handletemp(); if(flag4=1) SOUNDON; 设计总结对整个设计工作过程进行归纳和综合,对设计中所存在的问题和缺乏进行分析和总 结,提出解决的方法、举措、建议和对这次设计实践的熟悉、收获和提升.在本次设计的过程中,我发现很多的问题,也学到了许多东西.虽然我以前也做过类似的课程设计,但这次设计真的让我长进了很多.本次单片机课程设计的重点就在于测温及按键编程软件算法的设计,其中有许多很巧妙的算法.我以前总是能看懂别人写的程序,但自己单独写时就会出现很多

温馨提示

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

评论

0/150

提交评论