单片机温度测量

上传人:go****e 文档编号:136939338 上传时间:2020-07-03 格式:DOCX 页数:9 大小:84.58KB
返回 下载 相关 举报
单片机温度测量_第1页
第1页 / 共9页
单片机温度测量_第2页
第2页 / 共9页
单片机温度测量_第3页
第3页 / 共9页
单片机温度测量_第4页
第4页 / 共9页
单片机温度测量_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《单片机温度测量》由会员分享,可在线阅读,更多相关《单片机温度测量(9页珍藏版)》请在金锄头文库上搜索。

1、2016-2017学年第(1)学期课程名称: 单片机控制系统设计 班级: 姓名: 学号: 指导教师: 成绩: 设计报告题目:温度测量实验一设计要求1.设计并绘制单片机电路原理图2.设计并绘制PCB电路图3.编写单片机运行程序并调试二设计过程1. 电路图图1 单片机芯片 作用:MSP430F449IPZ芯片采用100PIN QFP封装,和采用16位RISC结构,具有丰富的片内外设和大容量的片内工作寄存器和存储器,分析写入的程序并根据程序在特定引脚给出脉冲。图2 晶振电路及电源保护电路 作用:结合单片机内部电路,并提供单片机的原始脉冲,使电源电压稳定.而且时钟频率越高,单片机运行频率越快。图3 温

2、度寄存器和计数器图4 数字温度传感器作用:将传感器受到的温度以脉冲信号的形式发送给计数器再计算传递至温度寄存器显示。图5 引脚连接作用:将收集到的数据传送到MSP430F499IPZ上。2.电路图制版3.程序编制#include #define DQ1 P6OUT|=BIT6#define DQ0 P6OUT&=BIT6unsigned char dis_buf2;int Temper=0;int temperature=0;unsigned char Error = 0;/-/功能:us 级别延时/ n=10,则延时10*0.74+2.7=10.1uS/-void DelayNus(unsi

3、gned int num) while(num-) ;/-/功能:写18B20/-void Write_18B20(unsigned char n) unsigned char i; for(i=0;i1; DelayNus(50);/延时40us 以上 DQ1; /-/功能:读取18B20/-unsigned char Read_18B20(void) unsigned char i; unsigned char temp=0; for(i=0;i1; DQ0; _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP(); _NOP();/延时1us DQ1

4、; DelayNus(1);/2.7us P6DIR&=BIT6; if(P6IN&BIT6)=0) temp=temp&0x7F; else temp=temp|0x80; DelayNus(57);/延时45us P6DIR|=BIT6; DQ1; return temp;/-void Init (void) DQ0; DelayNus(672);/延时500us DQ1; DelayNus(90);/延时70us P6DIR&=BIT6; if(P6IN&BIT6)=BIT6) /0001 1111b=1f Error =1; /失败1 P6DIR|=BIT6; else Error =

5、 0;/初始化成功 P6DIR|=BIT6; DQ1; DelayNus(335);/延时250usvoid ReadTemp (void) char temp_low,temp_high; /温度值 temp_low=Read_18B20(); /读低位 temp_high=Read_18B20(); /读高位 temperature=(temp_high&0x0f); temperature=8; temperature|=temp_low; Temper=temperature*0.0625;void GetTemp(void) Init(); Write_18B20(0xcc);/Sk

6、ip ROM _NOP(); Write_18B20(0x44);/Convert T DelayNus(65000); DelayNus(65000); DelayNus(65000); DelayNus(65000); DelayNus(65000); DelayNus(65000); DelayNus(65000); DelayNus(65000); DelayNus(65000); DelayNus(65000); DelayNus(65000); DelayNus(65000); DelayNus(65000); DelayNus(65000); DelayNus(65000); D

7、elayNus(65000);/延时750ms以上 Init(); Write_18B20(0xcc);/Skip ROM _NOP(); Write_18B20(0xbe); ReadTemp();void delayms() unsigned int i; i = 10000; do (i-); while (i != 0);void Init_Port(void) /将P2所有管脚初始化为输入方向 P2DIR = 0; /将P1口所有的管脚为普通I/O P2SEL = 0; /将P2.4 P2.5设置为输出方向 P2DIR |= BIT4; P2DIR |= BIT5; return;v

8、oid Led_Disp() unsigned char led_dat16= 0xfc, 0x60, 0xda, 0xf2, 0x66, 0xb6, 0xbe, 0xe0, 0xfe, 0xf6,0xee,0x3e,0x1a,0x7a,0x9e; / 数码管段码数据 unsigned char c,x,dat,DAT; for(x=0;x2;x+) / 发送显示数据 dat=led_datdis_buf1-x; for(c=0;c=1; void init_clk( ) SCFI0 |= FN_4; / x2 DCO frequency, 8MHz nominal DCO SCFQCTL =

9、 121; / (121+1) x 32768 x 2 = 7.99 Mhz FLL_CTL0 = DCOPLUS + XCAP18PF; / DCO+ set so freq = xtal x D x N+1void main(void) WDTCTL = WDTPW + WDTHOLD; / 停看门狗 P4DIR = 0xff; P4OUT = 0xff; init_clk( ); Init_Port(); P6DIR |=BIT6; while(1) GetTemp(); dis_buf0= Temper/10%10; dis_buf1= Temper%10; Led_Disp(); d

10、elayms(); 三实验测试 通过芯片MSP430测试温度变化并利用IAR程序编写测试程序,将所测得的温度数值显示到显示屏。四心得与体会在MSP430的实验中,我的收获很多,实现将传感器采集到的模拟信号转换成单片机可以识别的数字信号,再经单片机转换成LED显示器可以识别的信息,最后显示输出。对于学习过单片机,在学习中,我从网上搜索的资料对我帮助很大,遇到不懂的问题自己解决不了,就和大家一起讨论。此次课程设计使我更加了解430芯片的功能,以前学习单片机过程中得漏洞也得到了很好的修补,单片机控制数码管的显示时,尤其是多个时,要使用驱动电路。课程设计暴露了我在平时学习中的不足,以及对知识缺乏融会贯通的能力,课程设计过程中,我们不断发现错误,不断修改,不断领悟,不断获取。实践出真知,只有亲身实践才能得到真理。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 幼儿/小学教育 > 其它小学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号