微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于MSP430单片机的智能温度检测系统设计

基于MSP430单片机的智能温度检测系统设计

时间:09-03 来源:互联网 点击:

片。

CAT24WC64是一个64k位串行CMOS EEPROM, 内部含有8192个8位字节, 具有一个32 字节写缓冲器, 该器件通过I2C 总线接口进行操作, 有专门的写保护功能。测温系统采用CAT24WC64用来集中记录单总线上所有温度传感器的注册信息, 即按地址顺序存放DS18B20 的64位光刻ROM 序列码。每个序列码占用8字节空间, 系统管理程序会以8字节为基数计算传感器注册码的地址序号, 并反馈给用户作为传感器的标识号。

2. 6 串口通信接口电路设计

将MSP430F149单片机采集的温度数据传输到上位机, 利用MSP430 单片机的通讯接口连接到RS232串行口接收或发送数据和指令, 但是单片机的TTL电平和RS232不兼容, 因此使用MAX232进行电平转换, 其接口电路图如图3所示。


图3 MSP430F149与PC机的串行接口电路

MSP430 有两组通讯接口, UTXD0、URXD0 和UTXD1、URXD1, 这里用的是第一组。MSP430F149单片机3. 3V 的信号由UTXD0出来输入到MAX232的T1 IN 脚, 转换成±15V的信号由T1OUT 送到通讯标准接头的2脚( RXD) , ±15V 的信号由通讯标准接头的3脚( TXD )出来输入到MAX232 的R1 IN脚, 转换成±15V 的信号由R10UT 送到单片机的URXDO。

3 温度检测系统软件设计

MSP430系列是一种具有集成度高、功能丰富、功耗低等技术特点的16位单片机, 它采用c语言完成程序设计, 大大提高了开发调试的工作效率; 同时用c语言所产生的文档资料也容易理解, 便于移植。

3. 1 下位机编程

系统程序设计包括主程序, 复位子程序, 报警和分辨率设置子程序, 温度转换子程序, 读温度子程序, 计算温度和显示温度子程序等等。MSP430F149对DS18B20的访问流程是: 先对DS18B20初始化,再进行ROM 操作命令, 最后才能对存储器RAM 操作。程序流程图如图4 所示。下面就简要介绍MSP430系列单片机C 语言的几个主要子程序。


图4 程序流程图

3. 1. 1 复位子程序

该程序的主要功能是负责DS18B20的复位, 以方便进行以后的操作。复位要求主CPU 将数据线下拉500微秒, 然后释放, DS18B20收到信号后等待16~ 60微秒左右, 后发出60 ~ 240微秒的存在低脉冲, 主CPU 收到此信号表示复位成功。

bit ResetDS18B20( )

{ unsigned char ;i

bit flag;

DS18B20= 0:

for( i= 0; i 200; i+ + ) ; / /保持低电平500微秒

DS18B20= 1:

for( i= O; i 30; i+ + ) ; / /等60微秒

flag= DS18B20; / /取DS18B20状态

for( i= 0; i 100; i+ + ) ; / /等300微秒

return flag; / / flag= 0复位成功, flag= 1, 复位不成功

}

3. 1. 2 写一个字节子程序:

CPU 将数据线从高电平拉至低电平, 产生写起始信号; 15 微秒之内, 将所写的位送到数据线上;DS18B20在之后15~ 60微秒接收位信息; 写下一个位之前要有1秒以上的高电平恢复; 将以上过程重复8次, 即完成一个字节的写操作。

vo idWRDS18B20( unsigned char data0)

{ unsigned char ,i ;j

for( j= 0; j 8; j+ + )

{

DS18B20= 0; / /高电平拉到低电平, 产生写起始信号

for( i= 0; i 1; i+ + ) ;

DS18B20 = da ta0 0x01; / /15微秒内写一位

for( i= 0; i 20; i+ + ) ; / /等60微秒, DS18B20完成采样

DS18B20= 1; / /高电平恢复

data0= data0> > 1; / /右移, 为下一位准备}

}

3. 1. 3 读一个字节子程序

CPU 将数据线从高电平拉到低电平1微秒以上, 再拉到高电平, 产生读起始信号; 15微秒之内,CPU 读一位; 读周期为60微秒, 读下一个位之前要有1微秒以上的高电平恢复; 将以上过程重复8次,即完成一个字节的读操作。

unsigned charRDDS18B20( )

{ unsigned char ,i ,j data0= 0;

bit temp;

for( j= 0; j 8; j+ + )

{ DS18B20= 0; / /高电平拉到低电平1微秒以上

for( i= 0; i ;l i+ + ) ;

DS18B20= 1; / /再拉到高电平, 产生读起始信号

for( i= 0; i 1; i+ + );

temp= DS18B20; / /15微秒之内读一位

for( i= 0; i 20; i+ + ); / /等60微秒

data0= dataO > > 1; / /为下一位准备

if( temp= = 1) data0= dataO |0x80;

else data0= data0 0x7;f

DS18B20= 1; / /高电平恢复

for( i= O; i 1; i+ + ); }

return data0; }

3. 2 上位机软件编程

系统采用MSCOMM 控件实现VC ++ 与单片机之间的数据交换, 具有程序实现简便、程序模块化、工作可靠等优点, 并能满足多数情况下的工控要求。

使用MSCOMM控件主要是通过事件来处理串行口的交互。控件的MSCOMM 事件负责捕获或处理这些通讯事件和通讯错误。

4 结束语

测温系统采用了集成度高、功耗低的MSP430F149 为核心微处理器, 通过传感器DS18B20实现

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top