大连理工大学单片机实验报告docxWord文档格式.docx

上传人:b****2 文档编号:14943699 上传时间:2022-10-26 格式:DOCX 页数:19 大小:98.39KB
下载 相关 举报
大连理工大学单片机实验报告docxWord文档格式.docx_第1页
第1页 / 共19页
大连理工大学单片机实验报告docxWord文档格式.docx_第2页
第2页 / 共19页
大连理工大学单片机实验报告docxWord文档格式.docx_第3页
第3页 / 共19页
大连理工大学单片机实验报告docxWord文档格式.docx_第4页
第4页 / 共19页
大连理工大学单片机实验报告docxWord文档格式.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

大连理工大学单片机实验报告docxWord文档格式.docx

《大连理工大学单片机实验报告docxWord文档格式.docx》由会员分享,可在线阅读,更多相关《大连理工大学单片机实验报告docxWord文档格式.docx(19页珍藏版)》请在冰豆网上搜索。

大连理工大学单片机实验报告docxWord文档格式.docx

I2C总线

VCC

上拉电阻5K×

2

8位数码管

BUZZ

B5区

8550

10K

保护电阻47欧

103

DS

18B20

1GND

3VDD

DQ

GND

VDD5V

4.7K

B4区

AT89C51

P1.0

P1.1

P1.7

/INT0(P3.2)

P3.3

P3.4

SW1

P1.3

四.外围接口模块硬件电路功能描述

1.DS18B20:

用于测定温度,测量范围-55~+125,分辨率为0.0625℃,数据格式为二进制补码形式。

2.ZLG7290B:

用于数码管动态显示驱动,键盘扫描管理。

能够驱动8位共阴极结构的LED数码管或64位独立的LED,同时还能扫描管理多达64个按键的扫描识别,其中八个键可以作为功能键使用。

接口采用I²

C结构。

3.蜂鸣器:

这里用作报警,为无源蜂鸣器。

五.主程序中主要变量定义

变量名称

内存单元

功能

TEMPER_L

36H

存放温度低四位

TEMPER_H

35H

存放温度高四位

TEMPER

34H

转换后的温度值

TEMPER_BCD

33H

BCD形式温度值

TEMPER_NUM

60H

温度值缓冲单元

WSLA_7290

70H

7290写控制单元

RSLA_7290

71H

7290读控制单元

20-27H

数码管显示缓冲区

28H

存放温度上限值

30-31H

存放温度BCD码个位十位

六.系统软件中各个子程序的功能描述

子程序名称

入口参数

出口参数

功能描述

GET_TEMPER

35H,36H

读取18B20的温度值

READ_18200

向18b20读控制字

TEMPER_COV

35H,36H

20H,21H

温度转换成十进制BCD码形式

CF

R3,R4

拆分子程序,拆分送数码管显示

INIT_1820

温度传感器初始化

BUZZER

无无

蜂鸣器控制发声子程序

INT_7290

读取按键外部中断子程序

RDKEY

A

读取键值子程序

DELAY

延时子程序

七.主程序程序流程图

8.程序清单(要求打印格式要规范、重要的语句要有必要的注释)

SDABITP1.0

SCLBITP1.1

TEMPER_LEQU36H

TEMPER_HEQU35H

TEMPEREQU34H;

转换后温度值

TEMPER_BCDEQU33H;

BCD码温度值

TEMPER_NUMEQU60H;

缓冲单元

WSLA_7290EQU70H

RSLA_7290EQU71H

FLAG1BIT00H

DQBITP3.3;

总线控制单元

ORG0000H

LJMPMAIN

ORG0003H

LJMPINT_7290

ORG0100H

MAIN:

MOVSP,#70H

;

ZLG7290复位

CLRP1.7

LCALLDELAY

SETBP1.7

MOV28H,#1EH;

温度上限初始值30度

MOVTMOD,#01H;

模式一,16位计数器

SETBEA;

允许INTO中断

MODE:

JBP1.3,SETTMP;

拨码为0时采集温度

;

温度采集

TMP:

CLREX0

MOV27H,#1FH;

t

LP1:

LCALLGET_TEMPER

LCALLTEMPER_COV

;

7290显示

MOVR7,#08H

MOVR0,#20H

MOVR2,#10H

MOVR3,#WSLA_7290

LCALLWRNBYT

LCALLDELAY

MOVA,TEMPER

判断温度上限

MOV28H,R5

CLRC

CJNEA,28H,rel;

此处报警温度为30度

rel:

JCNET

LCALLBUZZER;

大于等于时蜂鸣器报警

闪烁

MOV28H,#70H;

闪烁命令字

MOV29H,#7FH;

MOVR7,#02H;

设定数据个数

MOVR0,#28H;

设置源数据首地址

MOVR2,#07H;

设置外围器件内部寄存器首地址

MOVR3,#WSLA_7290;

设定外围器件地址

LCALLWRNBYT;

调用显示子程序

LJMPNEXTT

;

设定温度上限

SETTMP:

SETBEX0

7290复位

SETBP1.7

显示设定内容

MOV27H,#0B6H;

S

MOV26H,#9EH;

E

MOV25H,#1FH;

T.

MOVR7,#03H

MOVR0,#25H

MOVR2,#15H

SJMPNEXTT

NET:

MOV28H,#70H;

不能闪烁

MOV29H,#00H

MOVR7,#02H

MOVR0,#28H

MOVR2,#07H

NEXTT:

CALLDELAY

SJMPMODE

GET_TEMPER:

SETBDQ;

定时入口

BCD:

LCALLINIT_1820

JBFLAG1,S22

LJMPBCD;

若ds18b20不存在则返回

S22:

LCALLDELAY1

MOVA,#0CCH;

跳过rom匹配0cch

LCALLWRITE_1820

MOVA,#44H;

发出温度转换命令

CBA:

LCALLINIT_1820

JBFLAG1,ABC

LJMPCBA

ABC:

跳过rom匹配

MOVA,#0BEH;

发出读温度命令

LCALLREAD_18200

RET

WRITE_1820:

;

写ds18b20程序

MOVR2,#8

WR1:

CLRDQ

MOVR3,#6;

延时24us

DJNZR3,$

RRCA

MOVDQ,C

MOVR3,#23;

延时60us

SETBDQ

NOP

DJNZR2,WR1

SETBDQ

READ_18200:

从1820中读出两个字节温度数据

PUSH01H

MOVR4,#2

MOVR1,#36H

RE00:

MOVR2,#8

RE01:

CLRC

CLRDQ

MOVR3,#2

MOVC,DQ

MOVR3,#23H

RRCA

DJNZR2,RE01

MOV@R1,A

DECR1

DJNZR4,RE00

POP01H

RETU8

TEMPER_COV:

将读出的数据转换

PUSHDPH

PUSHDPL

PUSH02H

MOVA,#0F0H

ANLA,TEMPER_L;

舍去小数点后的四位

SWAPA

MOVTEMPER_NUM,A

MOVA,TEMPER_H

ANLA,#07H

ADDA,TEMPER_NUM

MOVTEMPER,A

转换成十进制数显示

MOVB,#10

DIVAB

MOV30H,B;

个位

MOV31H,B;

十位

ANLA,#0FH;

百位

ADDA,B

MOVTEMPER_BCD,A

LCALLCF2;

拆分查表

MOV25H,R3

MOV26H,R4

MOVA,30H

ANLA,#0FH

LCALLCF

MOV24H,R3

处理四位小数位数据

MOVA,TEMPER_L

ANLA,#0FH;

取低四位数据

MOVB,#02H

MULAB;

字节转为字

MOVDPTR,#NUMSEG

MOVCA,@A+DPTR

LCALLCF2

MOV22H,R3

MOV23H,R4

MULAB

INCA

MOVCA,@A+DPTR

MOV20H,R3

MOV21H,R4

POP02H

POPDPL

POPDPH

;

--------------小数部分查表-------------------

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

当前位置:首页 > 幼儿教育 > 家庭教育

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

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