如何制作数字温度计
[09-12 12:19:30] 来源:http://www.88dzw.com 电路基础 阅读:8530次
文章摘要:如何制作数字温度计 现在您对Stamp和液晶显示屏有了初步的了解,我们再加一个元件就可以制作一支数字温度计。 制作数字温度计需要用到芯片DS1620。 该芯片包含: 一个温度传感器 一个用于温度感应设备的模拟数字转换器 一个用于从模数转换器读取数据的移位寄存器 一个用于保存设置的小型电可擦除只读存储器 DS1620有两种工作模式: 一种作为独立的恒温芯片;另一种则是与计算机相连作温度计使用。 电可擦除只读存储器用来保存当前的工作模式和恒温模式设定值。 DS1620与Stamp的连接十分简单。 该芯片有8根引脚。从Stamp引出的5伏以上电源接入DS1620的8号引脚; 电源地线接DS1620的
如何制作数字温度计,标签:电子电路基础,模拟电路基础,http://www.88dzw.com如何制作数字温度计
现在您对Stamp和液晶显示屏有了初步的了解,我们再加一个元件就可以制作一支数字温度计。 制作数字温度计需要用到芯片DS1620。 该芯片包含:
- 一个温度传感器
- 一个用于温度感应设备的模拟数字转换器
- 一个用于从模数转换器读取数据的移位寄存器
- 一个用于保存设置的小型电可擦除只读存储器
DS1620有两种工作模式: 一种作为独立的恒温芯片;另一种则是与计算机相连作温度计使用。 电可擦除只读存储器用来保存当前的工作模式和恒温模式设定值。
DS1620与Stamp的连接十分简单。 该芯片有8根引脚。从Stamp引出的5伏以上电源接入DS1620的8号引脚; 电源地线接DS1620的4号引脚。3根Stamp输入输出引脚驱动DS1620的以下三根引脚:
- 1 号引脚为数据线。 通过该引脚读写数据。
- 2 号引脚为时钟引脚。 为移位寄存器移入移出数据提供时钟。
- 3 号引脚为复位、片选信号。 该引脚置高电平,选通芯片。
例程代码中,假设:
- 数据线连接Stamp的2号输入输出引脚。
- 时钟引脚连接Stamp的1号输入输出引脚。
- 复位、片选信号由Stamp的0号输入输出引脚提供。
完整连线如下图所示:
![]() |
你可以将DS1620芯片安装在Stamp的母板的实验建模区,也可以装在单独的面包板上。安装完毕,将液晶显示屏与Stamp的3号输入输出引脚相连,载入并运行下面的程序:
symbol RST = 0 ' 定义复位、选通1620芯片引脚编号
symbol CLK = 1 ' 定义连接1620芯片移位寄存器的时钟引脚编号
symbol DQ = 2 ' 定义连接1620芯片数据线的引脚编号
symbol DQ_PIN = pin2 ' 定义2号引脚为数据线
symbol LCD = 3 ' 定义液晶显示屏数据线引脚编号
begin:
low RST ' 不用时,不选通1620芯片
high CLK ' 1620芯片时钟引脚默认为高电平
pause 1000 ' 等待温度计与显示屏的引导启动
setup:
high RST ' 选通1620芯片
b0 = $0C ' $0c 是1620的命令字节
' 意思是“写入设定”
gosub shift_out ' 发送至1620芯片
b0 = %10 ' %10 是1620的命令字节
' 设定温度计工作模式
gosub shift_out ' 发送至1620芯片
low RST ' 不选通1620芯片
pause 50 ' 延时50毫秒,等待电可擦除只读存储器
start_convert:
b0 = $EE ' $EE 是1620的命令字节
' 启动模数转换
high RST ' 选通1620芯片
gosub shift_out ' 发送至1620芯片
low RST ' 不选通1620芯片
' 以下为主循环程序
' -- 每秒读取并显示温度
main_loop:
high RST ' 选通1620芯片
b0 = $AA ' $AA 为1620命令字节
' 温度信号采样
gosub shift_out ' 发送至1620芯片
gosub shift_in ' 从1620读取
' 温度数值
low RST ' 不选通DS1620。
gosub display ' 用摄氏度单位显示温度
pause 1000 ' 等待一秒
goto main_loop
' shift_out 子程序将b0字节中的内容
' 发送至 1620 芯片
shift_out:
output DQ ' 设置数据线为
' 输出模式
for b2 = 1 to 8
low CLK ' 准备1620发送数据所需的时钟
DQ_PIN = bit0 ' 发送数据位
high CLK ' 数据位送至1620
b0 = b0/2 ' 将所有位
' 朝bit0右移
next
return
' shift_in 子例程从 1620 中
' 得到 9 位的温度读数
shift_in:
input DQ ' 设置数据线设置为
' 输入模式
w0 = 0 ' 变量w0清零
for b5 = 1 to 9
w0 = w0/2 ' 输入数据右移。
low CLK ' 向1620请求下一位
bit8 = DQ_PIN ' 读取位
high CLK ' 时钟信号引脚切换为高电平
next
return
' 以摄氏度单位显示温度
display:
if bit8 = 0 then pos ' 如果bit8=1
' 温度为负值
b0 = b0 and/ b0 ' 通过对自身的与非操作
' 对b0取反
b0 = b0 + 1
pos:
serout LCD, n2400, (254, 1) ' 清除液晶显示屏
serout LCD, n2400, ("Temp = ") ' 在显示屏上
' 显示“Temp=”
bit9 = bit0 ' 保存0.5度
b0 = b0 / 2 ' 换算成度数
if bit8 = 1 then neg ' 判断温度是否为负值
serout LCD, n2400, (#b0) ' 显示正温度
goto half
neg:
serout LCD, n2400, ("-", #b0)' 显示负温度
half:
if bit9 = 0 then even
serout LCD, n2400, (".5 C") ' 显示 .5度
goto done
even:
serout LCD, n2400, (".0 C") ' 显示 .0度
done:
return
Tag:电路基础,电子电路基础,模拟电路基础,电路基础
- 上一篇:振荡器工作原理
《如何制作数字温度计》相关文章
编辑推荐
分类导航
最新更新
- · 什么是系统仿真
- · 什么是CPCI
- · 英特尔 Parallel Composer入门
- · 什么是支持数据库,什么是中宏数据库
- · 什么是数据交换技术
- · 什么是内部数据传输率
- · 什么是空间数据交换中心
- · 什么是差异备份
- · 什么是备份集
- · 什么是映像备份
热门排行
- · IGBT模块
- · 什么是24脉波整流变压器
- · 自动变速器不能强制降挡故障原因、诊断与排
- · 什么是MD机
- · 中心频率,什么是中心频率
- · 功率单位mw和dbm的换算表
- · 中值滤波模块设计思路
- · 反馈振荡器的原理
- · 气体激光器简介
- · 数制与进位记数法