单片机课程设计方案之多点温度测量系统设计方案Word下载.docx
- 文档编号:15921952
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:14
- 大小:313.43KB
单片机课程设计方案之多点温度测量系统设计方案Word下载.docx
《单片机课程设计方案之多点温度测量系统设计方案Word下载.docx》由会员分享,可在线阅读,更多相关《单片机课程设计方案之多点温度测量系统设计方案Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
与传统的热敏电阻相比,它能够直接读出被测温度,并且可根据实际要求通过编程实现9~12位的数字值读数方式;
可以分别在93.75ms和75Oms内完成9位和12位的数字量;
从DSl8820读出信息或写入DSl8820信息仅需要1根口线(单线接口);
温度变换功率来源于数据总线,总线本身也可以向所挂接的DSl8820供电,而无需额外电源。
使用DSl8820可使系统结构更趋简单,可靠性更高。
DSl8820在测温精度、转换时间、传输距离、分辨率等方面较DSl820有了很大的改进。
(2)DSl8820内部结构及工作原理
DSl8820的内部结构如图1所示,主要包括寄生电源电路、64位只读存储器(ROM)和单线接口、存储器和控制逻辑、存放中间数据的高速暂存存储器、温度传感器、报警上限寄存器TH、报警下限寄存器TL、配置寄存器和8位CRC(循环冗余校验码)发生器。
2.2AT89C51单片机
AT89C51单片机是ATMEL公司生产的高性能8位单片机,主要功能特性如下:
①兼容MCS-51指令系统;
②32个双向I/O口,两个16位可编程定时/计数器;
③1个串行中断,两个外部中断源;
④可直接驱动LED;
⑤低功耗空闲和掉电模式;
⑥4kB可反复擦写(>
1000次)FLASIROM;
该款芯片的超低功耗和良好的性能价格比使其非常适合嵌入式产品应用。
第三章系统总体设计
1.硬件设计
由DS18B20和Atmel公司推出的单片机AT89C51以及相关外围电路组成的高精度、多点温度测量系统的结构框图如图所示。
系统采用8片DS18B20构成小型温度传感器网络[3],通过并行连接方式连接至单片机的通用I/O端口。
单片机获得温度信息后,通过特定的算法,将处理后的温度信息通过LED显示出来,同时通过串行口送上位机处理。
2.软件系统设计
主程序先对各DS18B20进行初始化,然后重复调用写命令和读数据模块,最后将数据处理后送LED显示[7]。
主程序执行流程如图3所示:
/*数码管的显示*/
voiddisplay(uinttemp)
{
ucharbai,shi,ge。
bai=temp/100。
shi=temp%100/10。
ge=temp%100%10。
dula=0。
P0=table[bai]。
//显示百位
dula=1。
//从0到1,有个上升沿,解除锁存,显示相应段
//从1到0再次锁存
wela=0。
P0=0xfe。
wela=1。
delay
(1)。
//延时约2ms
P0=table1[shi]。
//显示十位
P0=0xfd。
P0=table[ge]。
//显示个位
P0=0xfb。
}
3.软件仿真调试
第四章结束语
本系统具有如下特点:
a.结构简单,成本低廉,维护方便。
b.直接将温度数据进行编码,可以只使用单根电缆传输温度数据,通信方便,传输距离远且抗干扰性强。
c.配置灵活、方便、易于扩展。
可扩展多路下位温度采集子系统,将它们通过RS485与上位PC机组网,形成多点温度采集网络。
也可在各子系统中有选择性地增减温度传感器。
d.适合于恶劣环境的现场温度测量,如:
环境控制、设备或过程控制、测温类消费电子产品等。
在大范围温度多点监控系统中具有十分诱人的应用前景。
主要参考文献:
[1].余永权.单片机原理及应用.北京:
电子工业出版社,1997.
[2].邦田.电子电路实用抗干扰技术.北京:
人民邮电出版社,1994.
[3].曲喜贵.电子元件材料手册[M].北京:
电子工业出版社,1989.422-430.
[4].刘君华.智能传感器系统[M].西安:
西安电子科技大学出版社,1999.
[5]戴俊峰.嵌入式系统大屏幕LED点阵显示器[J].现代电子技术,2004,27
附录主程序
#include"
reg52.h"
intrins.h"
#defineucharunsignedchar
#defineuintunsignedint
sbitds=P2^2。
sbitdula=P2^6。
sbitwela=P2^7。
ucharflag。
uinttemp。
//参数temp一定要声明为int型
ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}。
//不带小数点数字编码
ucharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,
0x87,0xff,0xef}。
//带小数点数字编码
/*延时函数*/
voidTempDelay(ucharus)
while(us--)。
voiddelay(uintcount)//延时子函数
uinti。
while(count)
i=200。
while(i>
0)
i--。
count--。
/*串口初始化,波特率9600,方式1*/
voidinit_com()
TMOD=0x20。
//设置定时器1为模式2
TH1=0xfd。
//装初值设定波特率
TL1=0xfd。
TR1=1。
//启动定时器
SM0=0。
//串口通信模式设置
SM1=1。
//REN=1。
//串口允许接收数据
PCON=0。
//波特率不倍频
//
SMOD=0。
//EA=1。
//开总中断
//ES=1。
//开串行中断
voidds_reset(void)
ds=1。
_nop_()。
//1us
ds=0。
TempDelay(80)。
//当总线停留在低电平超过480us,总线上所以器件都将被复位,这里//延时约530us总线停留在低电平超过480μs,总线上的所有器件都
//将被复位。
//产生复位脉冲后,微处理器释放总线,让总线处于空闲状态,原因查//18b20中文资料
TempDelay(5)。
//释放总线后,以便从机18b20通过拉低总线来指示其是否在线,
//存在检测高电平时间:
15~60us,所以延时44us,进行
1-wirepresence//detect(单线存在检测)
if(ds==0)
flag=1。
//detect18b20success
else
flag=0。
//detect18b20fail
TempDelay(20)。
//存在检测低电平时间:
60~240us,所以延时约140us
//再次拉高总线,让总线处于空闲状态
/**/
bit
ds_read_bit(void)//读一位
bitdat。
//单片机(微处理器)将总线拉低
_nop_()。
//读时隙起始于微处理器将总线拉低至少1us
//拉低总线后接着释放总线,让从机18b20能够接管总线,输出有效数据
//小延时一下,读取18b20上的数据,因为从ds18b20上输出的数据
//在读"
时间隙"
下降沿出现15us内有效
dat=ds。
//主机读从机18b20输出的数据,这些数据在读时隙的下降沿出现//15us内有效
TempDelay(10)。
//所有读"
必须60~120us,这里77us
return(dat)。
//返回有效数据
uchards_read_byte(void)//读一字节
ucharvalue,i,j。
value=0。
//一定别忘了给初值
for(i=0。
i<
8。
i++)
j=ds_read_bit()。
value=(j<
<
7)|(value>
>
1)。
//这一步的说明在一个word文档里面
return(value)。
//返回一个字节的数据
voidds_write_byte(uchardat)//写一个字节
uchari。
bitonebit。
//一定不要忘了,onebit是一位
for(i=1。
=8。
i++)
{
onebit=da
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 方案 之多 温度 测量 系统 设计方案
![提示](https://static.bdocx.com/images/bang_tan.gif)