B C D E F
0 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 1 7CH 69H 5EH 79H 71H 2.2.3 芯片LED的技术参数
表2-4 LED的技术参数
BT235-2 BT1441529 BT1341529
Pcw 70 100 100
If 25 40 40
Vr 5 5 5
Ir ≥1.5 ≥0.5 ≥0.5
If ≤2.5 ≤2.5 ≤2.5
^p 200 565 585
对应型号 SEL-10
散射颜色 红色 绿色 蓝色
消耗功率 PM=150mW 最大工作电流 IFM=100mA 正常工作电流 IF=40mA 正向压降 VF ≤ 1.8V 燃亮电压为5v
共阴极LED的PM=300mW,IFM=200 mA,IF=60mA,VF ≤ 1.8V,VR≥5V,发红光。
2.3 选择芯片DS18B20
2.3.1 DS18B20在本设计中的作用
DS18B20在本设计中主要是测量手部的温度并将接收的模拟信号转化为数字信号输出至8255中。 2.3.2 DS18B20的功能分析
DS18B20测温原理如图2-2所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在-55℃所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
图2-2 DS18B20测温原理图
5
1) DS18B20主要数据部件
(1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。
(2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625℃/LSB形式表达,其中S为符号位。如图2-3:
图2-3 DS18B20温度值格式
这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的
数值需要取反加1再乘于0.0625即可得到实际温度。 例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FF6FH,-55℃的数字输出为FC90H。
图2-4 DS18B20温度转换
6
(3)DS18B20温度传感器的存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
(4)配置寄存器
低五位一直都是\,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)
表2-5 配置寄存器分辨率
表2-5 ROM指令
7
表2-5 RAM指令
3、硬件总逻辑图及其说明
3.1硬件总逻辑图
图3-1 硬件总逻辑图
8
3.2说明
实验硬件原理图由PCI、8255A、DS18B20、LED数码显示器构成,8255A芯片CS片选信号线接PCI卡上CS, 8255A芯片A0、A1接PCI卡的A0、A1。 8255A的C口的PC7作为DS18B20的输入口,A口作为LED数码管的段选,B口作为LED数码管的位选。
4、控制程序设计
4.1 控制程序设计思路说明
本程序主要功能分为初始化、读温度量、写操作及LED的显示输出。 初始化主要实现写8255方式控制字,设置控制字为89h,,即10001001,8255芯片工作于方式0,PA口作输出段选, PB口作输出位选,PC口作为输入。
然后向DS18B20发送读温度指令,准备读温度前先复位,跳过ROM匹配,发出读温度命令,调用读18B20子程序, 先读低8位再读高8位,读出转换后的温度值存在AX中。再调用显示子程序,将温度值显示出来。
实现二进制到十六进制数字型码的转化主要通过二进制数从段选码中查表找出相应的字型码并从8255中送出在LED显示器中显示。从高位到低位、输出结果并控制显示器显示通过循环完成。
9