数字式温度计.docx

上传人:b****7 文档编号:9558499 上传时间:2023-02-05 格式:DOCX 页数:39 大小:28.61KB
下载 相关 举报
数字式温度计.docx_第1页
第1页 / 共39页
数字式温度计.docx_第2页
第2页 / 共39页
数字式温度计.docx_第3页
第3页 / 共39页
数字式温度计.docx_第4页
第4页 / 共39页
数字式温度计.docx_第5页
第5页 / 共39页
点击查看更多>>
下载资源
资源描述

数字式温度计.docx

《数字式温度计.docx》由会员分享,可在线阅读,更多相关《数字式温度计.docx(39页珍藏版)》请在冰豆网上搜索。

数字式温度计.docx

数字式温度计

数字式温度计1、题意分析及解决方案1.1题义需求分析1.1.1设计内容本设计为从温度传感器DS18B20通道采样温度模拟信号转化成数字信号

并在LED液晶显示器上显示出来.

由于DS18B20可以直接将模拟量转换为数字量,因此在并送LED显示时须

通过A/D转换器先将信号送入CPU,然后再选用8255A作为微处理器的输入输出

接口芯片,最后将8位数字信号量显示到LED显示器上。

可以从四个方面来分析问题

1采样模拟信号转化成数字信号。

2接口的连接问题。

3LED显示器如何接入电路。

4)如何进行显示控制。

1.2解决问题方法及思路1.2.1硬件部分

(1)温度传感器DS18B20

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智

能温度传感器与传统的热敏电阻等测温元件相比它能直接读出被测温度可

编程的分辨率为912位对应的可分辨温度分别为0.5℃、0.25℃、0.125℃

和0.0625℃可实现高精度测温

(2)输入输出接口芯片8255A由于考虑到8086接口不足的问题比如对LED数码管进行位选需要2位对LED数码

管每一位进行段选需要8位所以必须要用8255进行I/O的扩展,通过8255ACPU可以直

接同外设相连接,将数字量从CPU输出到LED显示器上.

(3)硬件比较表1-18255A芯片与8251A芯片比较8255A

芯片8255A芯片是可编程并行接口芯片不需要附加外部电路便可

和大多数并行传输的外设相连数据可多为同时传输使用广

泛方便。

微机原理课程设计

118251A

芯片8251A是可编程的串行接口芯片数据一位一位地顺序传送

电路简单传输距离远。

表1-2和比较LED

与LCD相比LED在亮度功耗可视角度和刷新速率等方面更具

有优势其最显著的特点是使用寿命长光电转换效能高。

LCDLCD占用空间小功耗低低辐射能降低视觉疲劳但会出现

闪烁现象。

1.2.2软件部分

该程序主要应分为两大部分

(1)对DS18B20进行设置

如何赋初始温度值,如何保存读出的数字量,如何获取当前温度值,如何将温度

值显示出来等问题进行编程.

(2)对8255的初始化

对方式选择控制字的赋值问题也就是解决8255A的A口、B口分别工作在

方式几A口、B口、C口高位、C口低位分别是作为输出口还是输入口的问题。

2、硬件设计2.1选择芯片8255A2.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三口

均工作在方式状态。

微机原理课程设计

22图2-18255A原理图

表2-18255A的操作功能表82

55A的操作功能表CSRDWRA1A0

操作数据传送方式

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.输出是锁存的微机原理课程设计

33d.输入是不锁存的

e.在方式0时各个通道的输入/输出可有16种不同的组合。

2.1.38255A主要技术参数表2-28255A主要技术参数参数名称

符号测试条件

规范值

最大最小

输入低电平电压

VIL0.8V-0.5V

输入高电平电压

VIHVCC2.0V

输入低电平电压数据总线

VOLIOL=2.5MA0.45V

输入低电平电压外部端口

VOLIOL=1.7MA0.45V

输入高电平电压数据总线

VOHIOH=-400UA2.4V

输入高电平电压外部端口

VOHIOH=-200UA2.4V

达林顿驱动电流

IDAR

REXT=750

VEXT=1.5

-0.4MA1.0MA

电源电流

ICC120MA

输入负载电流

IILI=VCC~0MA+10MA-MA

输出浮动电流

IOFLVOUT=VCC~0MA+MA-MA

2.2选择芯片LED2.2.1LED在本设计中的作用

LED发光二极管Light-EmittingDiode在本设计中采用7段数字发

光二级管做为终端显示。

2.2.2LED的功能分析

笔画型LED显示器是由8个二极管电路a~dp按字型‘8’的方式排列

当不同的二极管被选通后根据发光效果会显示不同的自型。

本设计中采用共

阴极连接方式当某段接入正电压时对应的发光二极管会发光当需要显

示字型码“0”时对应下图中的abcdef发光二极管应发光输入

位选码应为00111111即为3FH类似可以显示其他。

a~dp分别与74LS273

的1Q~8Q相连接收段选码信号高电平4位LED显示器的4根共阴极

引线与8255A的PC0~PC3相连接收位选码信号低电平。

段选码和位选

码共同作用以显示不同的字型。

微机原理课程设计

44表2-3共阴极七段LED显示段码

数字

DPgfedcba二进制编码字形

0001111113FH

10000001103H

2010110115BH

3010011114FH

40110011066H

5011011016DH

6011111017DH

70000011107H

8011111117FH

9011011116FH

A0111011177H

B011111007CH

C0011100169H

D010111105EH

E0111100179H

F0111000171H

2.2.3芯片LED的技术参数表2-4LED的技术参数

消耗功率PM150mW

最大工作电流IFM100mA

正常工作电流IF40mA

正向压降VF≤1.8V

燃亮电压为5v

共阴极LED的PM300mW,IFM200mA,IF60mA,VF≤1.8V,VR≥

5V发红光。

2.3选择芯片DS18B20

PcwIfVrIrIf^p

对应型号散射颜色

BT2352

70255

≥1.5≤2.5

200SEL-10

红色

BT1441529100405

≥0.5≤2.5

565

绿色

BT1341529100405

≥0.5≤2.5

585

蓝色

微机原理课程设计

552.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的目的。

2DS18B20中的温度传感器可完成对温度的测量以12位转化为例

用16位符号扩展的二进制补码读数形式提供以0.0625℃/LSB形式表达其中

S为符号位。

如图2-3:

微机原理课程设计

66图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温度转换

3DS18B20温度传感器的存储器

DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性

的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。

4配置寄存器

低五位一直都是"1"TM是测试模式位用于设置DS18B20在工作模式还是

在测试模式。

在DS18B20出厂时该位被设置为0用户不要去改动。

R1和R0用

来设置分辨率如下表所示DS18B20出厂时被设置为12位表2-5配置寄存器分辨率微机原理课程设计

77

表2-5ROM指令

表2-5RAM指令

3、硬件总逻辑图及其说明3.1硬件总逻辑图微机原理课程设计

88图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,即100010018255

芯片工作于方式0PA口作输出段选PB口作输出位选PC口作为输入。

然后向DS18B20发送读温度指令准备读温度前先复位跳过ROM匹配

发出读温度命令调用读18B20子程序,先读低8位再读高8位读出转换后的

温度值存在AX中。

再调用显示子程序将温度值显示出来。

实现二进制到十六进制数字型码的转化主要通过二进制数从段选码中查表

找出相应的字型码并从8255中送出在LED显示器中显示。

从高位到低位、输出

结果并控制显示器显示通过循环完成。

微机原理课程设计

994.2程序流程图

1主程序

(3)读18B20子程序

(2)写18B20子程序

Y

开始

初始化8255N

调用启动DS18B20子程序CF=1

延时1s调用读温度子程序

转换后数据->3、2、1号数码管

4、5、6、7、8号数码管消隐

调用0->PC0子程序

RORAL1开始

8->CXCF=0

返回

保存CX恢复CX调用

1->PC0子程序保存CX

12->CXCX

-1=0

N

恢复CXY

调用1->PC0子程序CX

-1=0

N

Y

Y

N

Y

N

开始

8->CXCX

-1=0

返回

BL->AL8255

控制口地址->DX

80H->AL

AL->[DX]0->PC0

89H->AL

AL->[DX]PC口输入

NOP

NOP

NOP

8255PC口地址->DX

[DX]->AL

RORAL,1

RCRBL,1

8255控制口地址->DX

80H->AL

AL->[DX]0->PC0

1->AL

AL->[DX]1->PC0

微机原理课程设计

1010

(4)复位DS18B20子程序

(6)启动DS18B20子程序

(7)读温度子程序

(5)0->8255的PC0口子程序

(8)1->8255的PC0口子程序

保存

AX

8255的控制口->DX

01H->AL

AL->[DX](0->PC0口)

恢复AX

开始

返回

保存AX

8255的控制口->DX

80H->AL

AL->[DX](0->PC0口)

恢复AX

开始

返回

返回

0CCH->AL

调用写DS18B20子程序(跳过ROM匹配)

44H->AL

调用写DS18B20子程序(发出温度转换指令)开始

调用复位DS18B20子程序调用读

18B20子程序

AL->AH

调用读18B20子程序

AL与AH交换0CCH

->AL

调用写DS18B20子程序(跳过ROM匹配)

0BEH->AL

调用写DS18B20子程序(发出温度转换指令)

0->CF

开始

调用复位DS18B20子程序

N

Y

CF=1

返回

Y

Y

N

Y

N

N

开始

调用0->PC0子程序

(主机发出501us复位低脉冲)136

->CXCX-1=0

8255控制口地址->DX

89H->AX

AL->[DX]PC输入状态

DX-1

15->CX返回

[DX]->ALAL.0=1

N

CX-1=01

->CF18B20部不存在136->CXCX-1=1

0->CFY

微机原理课程设计

1111

3->cx

N

Y

ROLAH,1

INCSI

N

[SI]->AL

PA_8255->DX

换码

AL->DX

PB_8255->DX

AH->AL

AL->DX

开始

调用存放字节子程序

AX内容->buffer

Y

100->CX

PUSHCX

0FEH->AH

Cx==0

Cx==0

POPCX

Y

N

Y返回

(9)显示子程序(10)存放字节子程序开始LEADI,buffer

CLD

STOSB

STOSB

STOSB

STOSB返回

微机原理课程设计

12124.3程序代码表5-1转换表0

123456789ABCDEF

3f

h

60

h

5B

h

4F

h

66

h

6d

h

7d

h

07

h

7f

h

6f

h

77

h

7c

h

39

h

5e

h

79

h

71

h

.MODELTINY

PCIBAR3EQU1CH;8位I/O

空间基地址(它就是实验仪的基地址,

也为DMA&32BITRAM板卡上的8237

提供基地址)

Vendor_IDEQU10EBH;厂商ID号

Device_IDEQU8376;设备号

.STACK300

.DATA

IO_Bit8_BaseAddressDW?

msg0DB'BIOS不支持访问

PCI$'

msg1DB'找不到Star

PCI9052板卡$'

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,71

h;七段显示器TABdb

3eh,05h,5ah,4eh,65h,6ch,7ch,06h

7eh,6eh,76h,7bh,38h,5dh,78h,70

h

tab1db

0bfh,086h,0dbh,0cfh,0e6h,0edh,0

fdh,087h,0ffh,0efh,0f7h,0fch,0b

9h,0ceh,0f9h,0f1h

.CODE

START:

MOVAX,@DATA

MOVDS,AX

MOVES,AX

NOP;DELAY?

CALLInitPCI

CALLModifyAddress;

根据PCI提供的基地址,将偏移地址

转化为实地址

CALLInit8255;初始化8255

MAIN:

CALLSTART_Temperature;

向DS18B20发送读温度指令

JBMAIN微机原理课程设计

1313CALLRD_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

RET

Delay501usENDP

Delay50usPROCNEAR

PUSHAX

PUSHCX

PUSHDX

MOVCX,12

MOVDX,PA_8255

Delay50us_1:

微机原理课程设计

1414INAL,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

RET

WRI1:

PUSHCX

;保存CX恢复CX

POPCX

JMPWRI2

WRITE_18B20ENDP

;读操作

READ_18B20PROCNEAR

MOVCX,8

;数据一共有8位

Read:

CALLDelay50us

MOVDX,Con_8255

;8255控制口地址->DX

MOVAL,80H

OUTDX,AL;0->PC0

MOVAL,89H

OUTDX,AL

;PC口输入状态

MOVDX,PC_8255

;8255PC口地址->DX

INAL,DX

RORAL,1

RCRBL,1

;cfror

MOVDX,Con_8255

;8255控制口地址->DX

MOVAL,80H

OUTD

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1