李兴瑞数字式温度计Word下载.docx
- 文档编号:16624002
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:27
- 大小:263.54KB
李兴瑞数字式温度计Word下载.docx
《李兴瑞数字式温度计Word下载.docx》由会员分享,可在线阅读,更多相关《李兴瑞数字式温度计Word下载.docx(27页珍藏版)》请在冰豆网上搜索。
2.1.18255A在本设计中的作用
芯片8255A在本设计中起输出、输入作用,C口的高四位输入方式。
PC7作为读取EOC信号,低四位作输出方式,PC1、PC0作七段LED显示器的位选码,PA口用作输出方式,作七段LED的段选码,PB口为输入方式,读取ADC0809转换后的数字量即8255A通过PB口读入ADC0809转换后的数字量由PC1、PC0产生位选,PA口产生段选后七段LED显示出数字量。
2.1.28255A功能分析
8255A是一种通用的可编程的并行I/O接口芯片,可用与连接PCI卡与外设,实现数据的的输入输出功能,可以对输入/输出的数据进行数据锁存和数据缓冲,有中断请求信号,可以向CPU发出中断请求,能进行单向和双向通信。
8255A的数据总线缓冲器是一个三态8位双向缓冲器,用作8255A同系统数据总线相连时的缓冲部件,CPU通过执行输入/输出指令来实现对缓冲器发送或接收数据。
8255A的控制字或状态字也是通过该缓冲器传送的。
PA、PB、PC三口均工作在方式0状态。
图2-18255A原理图
表2-18255A的操作功能表
8255A的操作功能表
A1A0
操作
数据传送方式
00100
读A口
A口数据→数据总线
00101
读B口
B口数据→数据总线
00110
读C口
C口数据→数据总线
01000
写A口
数据总线数据→A口
01001
写B口
数据总线数据→B口
01010
写C口
数据总线数据→C口
01011
写控制口
数据总线数据→控制口
(1)方式0的工作特点:
这种方式通常不用联络信号,不使用中断,三个通道中的每一个都有可以由程序选定作为输入或输出。
(2)方式0的功能为:
a.两个8位通道:
通道A、B。
两个四位通道:
通道C高4位和低四位;
b.任何一个通道可以作输入/输出;
c.输出是锁存的;
d.输入是不锁存的;
e.在方式0时各个通道的输入/输出可有16种不同的组合。
2.1.38255A主要技术参数
表2-28255A主要技术参数
参数名称
符号
测试条件
规范值
最大
最小
输入低电平电压
VIL
0.8V
-0.5V
输入高电平电压
VIH
VCC
2.0V
输入低电平电压(数据总线)
VOL
IOL=2.5MA
0.45V
输入低电平电压(外部端口)
IOL=1.7MA
输入高电平电压(数据总线)
VOH
IOH=-400UA
2.4V
输入高电平电压(外部端口)
IOH=-200UA
达林顿驱动电流
IDAR
REXT=750VEXT=1.5
-0.4MA
1.0MA
电源电流
ICC
120MA
输入负载电流
IIL
I=VCC~0MA
+10MA
-MA
输出浮动电流
IOFL
VOUT=VCC~0MA
+MA
2.2选择芯片LED
2.2.1LED在本设计中的作用
LED发光二极管(Light-EmittingDiode),在本设计中采用7段数字发光二级管,做为终端显示。
2.2.2LED的功能分析
笔画型LED显示器是由8个二极管电路a~dp按字型‘8’的方式排列,当不同的二极管被选通后根据发光效果会显示不同的自型。
本设计中采用共阴极连接方式,当某段接入正电压时,对应的发光二极管会发光,当需要显示字型码“0”时,对应下图中的a,b,c,d,e,f发光二极管应发光,输入位选码应为00111111,即为:
3FH;
类似可以显示其他。
a~dp分别与74LS273的1Q~8Q相连,接收段选码信号(高电平);
4位LED显示器的4根共阴极引线与8255A的PC0~PC3相连,接收位选码信号(低电平)。
段选码和位选码共同作用以显示不同的字型。
表2-3共阴极七段LED显示段码
数字
DP
g
f
e
d
c
b
a
二进制编码(字形)
1
3FH
03H
2
5BH
3
4FH
4
66H
5
6DH
6
7DH
7
07H
8
7FH
9
6FH
A
77H
B
7CH
C
69H
D
5EH
E
79H
F
71H
2.2.3芯片LED的技术参数
表2-4LED的技术参数
Pcw
If
Vr
Ir
^p
对应型号
散射颜色
BT235-2
70
25
≥1.5
≤2.5
200
SEL-10
红色
BT1441529
100
40
≥0.5
565
绿色
BT1341529
585
蓝色
消耗功率PM=150mW
最大工作电流IFM=100mA
正常工作电流IF=40mA
正向压降VF≤1.8V
燃亮电压为5v
共阴极LED的PM=300mW,IFM=200mA,IF=60mA,VF≤1.8V,VR≥5V,发红光。
2.3选择芯片DS18B20
2.3.1DS18B20在本设计中的作用
DS18B20在本设计中主要是测量手部的温度并将接收的模拟信号转化为数字信号输出至8255中。
2.3.2DS18B20的功能分析
DS18B20测温原理如图2-2所示。
图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。
高温度系数晶振随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。
计数器1和温度寄存器被预置在-55℃所对应的一个基数值。
计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。
图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。
图2-2DS18B20测温原理图
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-3DS18B20温度值格式
这是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-4DS18B20温度转换
(3)DS18B20温度传感器的存储器
DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。
(4)配置寄存器
低五位一直都是"
1"
,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。
在DS18B20出厂时该位被设置为0,用户不要去改动。
R1和R0用来设置分辨率,如下表所示:
(DS18B20出厂时被设置为12位)
表2-5配置寄存器分辨率
表2-5ROM指令
表2-5RAM指令
3、硬件总逻辑图及其说明
3.1硬件总逻辑图
图3-1硬件总逻辑图
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显示器中显示。
从高位到低位、输出结果并控制显示器显示通过循环完成。
4.2程序流程图
(1)主程序
(3)读18B20子程序
(2)写18B20子程序
(4)复位DS18B20子程序
(6)启动DS18B20子程序
(7)读温度子程序
(5)0->
8255的PC0口子程序
(8)1->
(9)显示子程序
(10)存放字节子程序
4.3程序代码
表5-1转换表
3fh
60h
5Bh
4Fh
66h
6dh
7dh
07h
7fh
6fh
77h
7ch
39h
5eh
79h
71h
.MODELTINY
PCIBAR3EQU1CH;
8位I/O空间基地址(它就是实验仪的基地址,也为DMA&
32BITRAM板卡上的8237提供基地址)
Vendor_IDEQU10EBH;
厂商ID号
Device_IDEQU8376;
设备号
.STACK300
.DATA
IO_Bit8_BaseAddressDW?
msg0DB'
BIOS不支持访问PCI$'
msg1DB'
找不到StarPCI9052板卡$'
msg2DB'
读8位I/O空间基地址时出错$'
Con_8255DW00F3H
PA_8255DW00F0H
PB_8255DW00F1H
PC_8255DW00F2H
bufferDB8DUP(0);
温度临时存放区
TABdb
3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,77h,7ch,39h,5eh,79h,71h;
七段显示器TABdb3eh,05h,5ah,4eh,65h,6ch,7ch,06h,7eh,6eh,76h,7bh,38h,5dh,78h,70h
tab1db0bfh,086h,0dbh,0cfh,0e6h,0edh,0fdh,087h,0ffh,0efh,0f7h,0fch,0b9h,0ceh,0f9h,0f1h
.CODE
START:
MOVAX,@DATA
MOVDS,AX
MOVES,AX
NOP;
DELAY?
CALLInitPCI
CALLModifyAddress;
根据PCI提供的基地址,将偏移地址转化为实地址
CALLInit8255;
初始化8255
MAIN:
CALLSTART_Temperature;
向DS18B20发送读温度指令
JBMAIN
CALLRD_Temperature;
读出温度值
calldisplayNumber
;
调用显示子程序
JMPMAIN;
DS18B20复位初始化子程序
INIT_18B20PROCNEAR
CALLW_L;
调用0->
PC0子程序
CALLDelay501us;
;
主机发出501us复位低脉冲,标示复位信号
MOVDX,Con_8255;
8255控制口地址->
DX
MOVAX,89H;
设置控制字10001001
OUTDX,AL;
PC输入状态
DECDX;
DX-1
MOVCX,15
;
15->
CX
INIT_18B20_1:
INAL,DX;
[DX]->
AL
TESTAL,01H;
AL.0=1?
JZINIT_18B20_2
LOOPINIT_18B20_1
STC;
1;
置位标志位,表示DS18B2bu0存在
RET
INIT_18B20_2:
CALLDelay501us
CLC;
0;
复位标志位,表示DS18B存在
RET
INIT_18B20ENDP
Delay501usPROCNEAR
PUSHAX
PUSHCX
PUSHDX
MOVCX,167
MOVDX,PA_8255
Delay501us_1:
INAL,DX
LOOPDelay501us_1
POPDX
POPCX
POPAX
Delay501usENDP
Delay50usPROCNEAR
PUSHCX
PUSHDX
MOVCX,12
Delay50us_1:
INAL,DX
LOOPDelay50us_1
POPDX
POPCX
POPAX
RET
Delay50usENDP;
写操作
WRITE_18B20PROCNEAR
MOVCX,8
;
一共8位数据
WRI:
CALLW_L;
0->
PC0
RORAL,1;
把最低位移到cf和最高位
JNBWRI1
if(ch==0)jmp
CALLW_H
1->
PC0
WRI2:
CALLDelay50us
CALLW_H
LOOPWRI
WRI1:
PUSHCX
保存CX,恢复CX
JMPWRI2
WRITE_18B20ENDP
读操作
READ_18B20PROCNEAR
MOVCX,8
数据一共有8位
Read:
CALLDelay50us
MOVDX,Con_8255
MOVAL,80H
MOVAL,89H
OUTDX,AL
PC口输入状态
MOVDX,PC_8255
8255PC口地址->
DX
INAL,DX
RORAL,1
RCRBL,1
cfror
MOVDX,Con_8255
MOVAL,80H
OUTDX,AL
MOVAL,01H
OUTDX,AL
LOOPRead
MOVAL,BL
READ_18B20ENDP
******************************
判断DS18B20是否存在,启动DS18B20;
CY为判断标志
START_Temperature:
CALLINIT_18B20
先复位DS18B20
JBGET_T
判断DS1820是否存在?
若DS18B20不存在则返回
MOVAL,0CCH
跳过ROM匹配
CALLWRITE_18B20
MOVAL,44H
发出温度转换命令
CLC
GET_T:
RET
读出转换后的温度值,存在AX
RD_Temperature:
CALLINIT_18B20
准备读温度前先复位
MOVAL,0CCH
CALLWRITE_18B20
MOVAL,0BEH;
发出读温度命令
CALLWRITE_18B20
CALLREAD_18B20
调用读18B20子程序,读出温度
MOVAH,AL
存放到AX
CALLREAD_18B20
调用读18B20子程序
XCHGAL,AH
先读低8位再读高8位
Init8255PROCNEAR
MOVDX,Con_8255;
8255的控制口->
DX
MOVAL,89H
OUTDX,AL
DECDX
Init8255ENDP
写0
W_LPROCNEAR
PUSHAX;
保存AX
MOVAL,80H;
80H->
OUTDX,AL
AL->
[DX](0->
PC0口)
POPAX;
恢复AX
W_LENDP;
写1
W_HPROCNEAR
PUSHAX;
MOVDX,Con_8255;
MOVAL,01H;
01H->
outdx,AL
[DX](1->
POPAX;
W_HENDP
***************************
向8255写入显示的数
displayNumberprocnear;
movsi,ax
pushax
pushbx
T1:
movax,si
pushcx
movdx,PA_8255
callbl10
andax,000fh
mulbl
movbl,16
divbl;
al为显示的0-9
callconv
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 李兴瑞 数字式 温度计
![提示](https://static.bdocx.com/images/bang_tan.gif)