第3组 06103班 傅兰涛Word格式.docx

上传人:b****3 文档编号:18416790 上传时间:2022-12-16 格式:DOCX 页数:59 大小:159.73KB
下载 相关 举报
第3组 06103班 傅兰涛Word格式.docx_第1页
第1页 / 共59页
第3组 06103班 傅兰涛Word格式.docx_第2页
第2页 / 共59页
第3组 06103班 傅兰涛Word格式.docx_第3页
第3页 / 共59页
第3组 06103班 傅兰涛Word格式.docx_第4页
第4页 / 共59页
第3组 06103班 傅兰涛Word格式.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

第3组 06103班 傅兰涛Word格式.docx

《第3组 06103班 傅兰涛Word格式.docx》由会员分享,可在线阅读,更多相关《第3组 06103班 傅兰涛Word格式.docx(59页珍藏版)》请在冰豆网上搜索。

第3组 06103班 傅兰涛Word格式.docx

DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。

该字节各位的定义如图3所示。

低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分率。

由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。

因此,在实际应用中要将分辨率和转换时间权衡考虑。

高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。

第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。

当DS18B20接收到温度转换命令后,开始启动转换。

转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。

单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。

当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;

当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。

表2是一部分温度值对应的二进制温度数据。

DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。

若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。

因此,可用多只DS18B20同时测量温度并进行报警搜索。

在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。

主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。

DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;

高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。

器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。

计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55

℃所对应的一个基数值。

减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。

其输出用于修正减法计数器的预置值,只要计数器门仍关闭就重复上述过程,直到温度寄存器值大致被测温度值。

硬件介绍

系统框图

原理图

LCD液晶模块设计:

4*4键盘模块设计:

DS18B20温度采集模块设计:

软件设计

流程图如下:

源程序及程序注释

;

----------KEYBOARD-----------

HOR_DATAEQU08H;

PORTD行

VER_DATAEQU06H;

PORTB列

HOR_TRISEQU88H;

TRISD

VER_TRISEQU86H;

TRISB

FSREQU04H

PCLEQU02H

KEYEQU20H

DATA1EQU21H

DATA2EQU22H

CHARCOUNTEQU23H

TABLEEQU40H

STATUSEQU03H

ZEQU2

COMPAREEQU50H

-----------LCD-----------

LCD_DATAEQU08H;

PORTD

LCD_DATA_TRISEQU88H;

LCD_CTRLEQU09H;

PORTE

LCD_CTRL_TRISEQU89H;

TRISE

ADCON1EQU9FH

LCD_EEQU1

LCD_RSEQU0

TMR0EQU01H

TMR0BEQUD'

176'

INTCONEQU0BH

OPTION_REGEQU81H

----------18B20---------------

PORTAEQU5H

TRISAEQU85H

TEMPEQU24H

TEMP1EQU25H

TEMP2EQU26H

COUNTEQU27H

COUNT1EQU28H

CEQU0

INDFEQU00H

PPEQU29H

KEYDATAEQU2AH

PLUS1EQU71H

PLUS2EQU72H

WARNHHEQU2BH

WARNHLEQU2CH

WARNLHEQU2DH

WARNLLEQU2EH

BIAOZHIEQU2FH

--------------WARNING---------

PORTCEQU7H

TRISCEQU87H

COUNT2EQU31H

---------------------------------

ORG0X00

NOP

GOTOMAIN

---------------------显示WARNINGMAX:

---------------

WARNHTABLE

MOVFCHARCOUNT,w

ADDWFPCL,1

RETLW'

W'

A'

R'

N'

I'

G'

'

M'

X'

RETLW'

:

'

--------------------------显示WARNINGMIN----------------------

WARNLTABLE

-----------------------显示WELCOMETOUSE----------------------

WELCOMETABLE;

显示"

WELCOMEUSE"

E'

L'

C'

O'

T'

U'

S'

---------------------显示TEMPERATURE:

TEMPTABLE;

TEMPERATURE:

"

P'

--------------------显示MAXTEMP-----------------------------

MAXTABLE

--------------------显示MINTEMP-----------------------------

MINTABLE

---------------------显示CHECK:

CHECKTABLE;

B'

D'

F'

-------------------翻译程序----------------------------------

TRANSLATELCD

0'

;

1'

2'

3'

4'

5'

6'

7'

8'

9'

---------------显示AVERAGETEMP---------------------------

AVETABLE

V'

----------------------显示GOODBYE-----------------------------

ENDTABLE

Y'

----------------------主函数------------------------------

MAIN

CALLLCDINTI

MOVLW0X0C;

开显示,关光标

CALLLCDPUTCMD

CALLLCDCLAR

MOVLW0X01;

右移1位显示

CALLLCDDDRAM

CALLDISPWELCOME

CALLDELAY250MS

MOVLW0X00

MOVWFPP

MOVWFBIAOZHI

CALLKEY1

CALLCHECKCHECK;

报警温度输入程序

BANKSELTRISA

CLRFTRISC

MOVLW01H

MOVWFOPTION_REG

MOVLW06H

MOVWFADCON1;

将A,E端口设置成普通I/O端口

BANKSELPORTA

MOVLW00H;

关中断

MOVWFINTCON

CALLDISPTEMP

MOVLW0XC6;

换行再移六位

GOTOLOOP;

温度检测程序

--------------在RAM中建立位置码位---------------------------

KEY1

MOVLW0DBH;

0

MOVWF40H

MOVLW077H;

1

MOVWF41H

MOVLW07BH;

2

MOVWF42H

MOVLW07DH;

3

MOVWF43H

MOVLW07EH;

4

MOVWF44H

MOVLW0B7H;

5

MOVWF45H

MOVLW0BBH;

6

MOVWF46H

MOVLW0BDH;

7

MOVWF47H

MOVLW0BEH;

8

MOVWF48H

MOVLW0D7H;

9

MOVWF49H

MOVLW0DDH;

A

MOVWF4AH

MOVLW0DEH;

B

MOVWF4BH

MOVLW0E7H;

C

MOVWF4CH

MOVLW0EBH;

D

MOVWF4DH

MOVLW0EDH;

E

MOVWF4EH

MOVLW0EEH;

F

MOVWF4FH

RETURN

-------------报警温度输入程序(ABCCEF输入无效)----------------------

CHECKCHECK

CALLDISPWARNH;

WARNINGMAX界面程序

MOVLW0C6H

CALLLCDDDRAM;

换行并右移6个单位

MOVLW0X0F

CALLLCDPUTCMD;

开光标并闪烁

TT1

CALLCHECK;

按键及显示程序

MOVLW0X0A

SUBWFFSR,0

BTFSCSTATUS,0;

比较键值是否比A大

GOTOTIM1;

是,调用函数TIM1

MOVLW30H;

否,把值加30(转换成ASCII码)赋给报警上限温度的十位

ADDWFFSR,0

MOVWFWARNHH

TT2

GOTOTIM2;

是,调用函数TIM2

否,把值加30(转换成ASCII码)赋给报警上限温度的个位

MOVWFWARNHL

CALLLCDCLAR;

清屏函数

CALLDISPWARNL;

WARNINGMIN界面程序

MOVLW0C6H;

MOVLW0X0F;

TT3

GOTOTIM3;

是,调用函数TIM3

否,把值加30(转换成ASCII码)赋给报警下限温度的十位

MOVWFWARNLH

TT4

GOTOTIM4;

是,调用函数TIM4

否,把值加30(转换成ASCII码)赋给报警下限温度的个位

ADDWFFSR,0

MOVWFWARNLL

TIM1

换行并右移6个单位(回位,即输入无效,再次覆盖)

GOTOTT1

TIM2

MOVLW0XC7;

换行并右移7个单位(回位,即输入无效,再次覆盖)

GOTOTT2

TIM3

GOTOTT3

TIM4

GOTOTT4

-----------------按键和键盘防抖及调用显示子程序----------------------

CHECK

CALLSCANBOARD

COMFKEY,0

BTFSCSTATUS,2;

判断是否有键按下

GOTOCHECK;

无键按下

MOVLW.13;

预置外循环变量

MOVWFDATA2

CALLDELAY2;

调用延时子程序,消除抖动影响

再次判断是否有键按下,否,有键按下

是,无键按下

MOVFKEY,0

MOVWFKEYDATA

CALLTRANSLATE;

把键位码翻译成16进制数

MOVFFSR,0

CALLTRANSLATELCD;

把16进制数翻译成用于显示的ASCII码

BANKSELLCD_DATA_TRIS;

把D,E端口设置为输出

CLRFLCD_DATA_TRIS

CLRFLCD_CTRL_TRIS

BANKSELLCD_DATA

CALLLCDPUTCHAR;

调用显示子程序

CHECK1

MOVLW.117

MOVWFDATA2;

产生100毫秒延时

CALLSCANBOARD

COMFKEY,0;

位置码取反

BTFSSSTATUS,2;

测试按键释放否

GOTOCHECK1;

否继续检测

RETURN

------------键盘扫

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

当前位置:首页 > 教学研究 > 教学反思汇报

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

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