文档库 最新最全的文档下载
当前位置:文档库 › 应用系统设计报告

应用系统设计报告

应用系统设计报告
应用系统设计报告

随着电子技术的进步和发展,单片机的应用已经普及到我们生活、工作、科研等各个领域,其技术日趋成熟和完善。本设计是一个基于80C51单片机,采用“一线总线”数字化温度传感器DS18B20的测温系统。采用WAVE6000集成调试软件编写汇编程序实现温度的转化、数值计算以及数码管显示当前温度功能,并且可以通过按键设置高低温报警温度,对应配置报警器和报警指示灯。数码管显示采取动态扫描的方法,简化了硬件电路;温度调整运用中断处理,保证了报警温度调整的实时性。本设计可以方便快捷的实现温度的采集和显示,具有精度高、测温范围宽、体积小、功耗低等优点,适用于我们日常生活和工、农业生产中的温度测量,也可以作为温度处理模块嵌入其它系统中,作为其他主系统的扩展电路。DS18B20与80C51结合实现最简温度检测系统,结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。

关键词:一线总线动态扫描中断处理报警温度

摘要 (1)

软件设计部分

一、目的 (3)

二、设计要求 (3)

(一)上机编程操作内容 (3)

(二)实验步骤 (4)

(三)心得体会 (10)

应用系统设计部分

1概述 (11)

1.1设计目的与意义 (11)

1.2设计任务及要求 (11)

2系统总体方案及硬件设计 (11)

2.1主控芯片 (12)

2.1.1 80C51单片机芯片引脚及功能介绍 (12)

2.1.2 芯片引脚介绍 (12)

2.2显示电路 (13)

2.3报警温度调整电路 (13)

2.4报警电路 (13)

2.5温度传感器 (13)

2.6 DS18B20温度传感器与单片机的接口电路 (14)

2.7系统整体硬件电路 (15)

3软件设计 (16)

3.1主程序 (16)

3.2读温度子程序 (16)

3.3报警温度调整子程序 (16)

3.4显示子程序 (16)

4总结 (21)

参考文献 (21)

软件设计

一、目的

1.巩固和加深对《单片机原理》课程内容的认识和理解,提高应用水平。 2.掌握MCS-51汇编语言程序的编制方法。 3.熟悉键盘控制和七段数码管的使用。 4.熟悉单片机应用系统硬件设计的基本方法。

二、设计要求

本课程设计内容包含二个方面:系统设计及上机编程。 (一)上机编程操作内容:

(1)程序一:编程实现在4位LED 上移动显示012345678 (2)程序二:编程实现键盘功能:

按3→A135

按7→B246

,其它左移显示

(3)程序三实现以下要求

a)定义键盘按键,5个为数字键2、4、7、1、3,3个功能键:减号-,

乘号×,等号=; b)可进行三位8进制减法运算;

c)可进行两位8进制乘法运算。

(4)电路框图

(二)实验步骤:

(1)对照实验线路原理图进行接线,并仔细检查;

(2)输入程序并检查无误,经汇编、连接后装入系统;

(3)运行程序

源程序:

(1)

ORG 0000H

LJMP MAIN

ORG 1000H MAIN:

MOV 50H,#00H MOV 51H,#01H MOV 52H,#02H MOV 53H,#03H MOV 54H,#04H MOV 55H,#05H MOV 56H,#06H MOV 57H,#07H MOV 58H,#08H

KEYSUB:

MOV A,#0EH MOV DPTR,#7F00H MOVX @DPTR,A BEGINA:

MOV R1,#50H MOV R4,#06H MOV R5,#0FFH

BEGIN:

ACALL DIS

DJNZ R5,BEGIN

DIS:

PUSH ACC

PUSH 00H

PUSH 03H

MOV A,R1

MOV R0,A

MOV R3,#0FEH MOV A,R3

AGAIN:

MOV DPTR,#7F03H

MOVX @DPTR,A

MOV A,@R0

MOV DPTR,#DDEG

MOVC A,@A+DPTR MOV DPTR,#7F02H

MOVX @DPTR,A

ACALL DL1MS

INC R0

MOV A,R3

JNB ACC.3,OUT

RL A

MOV R3,A

AJMP AGAIN

OUT:

POP 03H

POP 00H

POP ACC

RET

DDEG:

DB 0FCH,60H,0DAH,0F2H,

66H,0B6H,0BEH,0E0H,0FEH DL1MS:

MOV R7,#01H

DL0:

MOV R6,#0FFH

DL1:

DJNZ R6,DL1

DJNZ R7,DL0

RET

END

(2)程序二:

ORG 0000H

LJMP MAIN

ORG 1000H

MAIN:

MOV 50H,#00H

MOV 51H,#00H

MOV 52H,#00H

MOV 53H,#00H

KEYSUB:

MOV A,#0EH

MOV DPTR,#7F00H

MOVX @DPTR,A BEGIN:

ACALL DIS

ACALL CLEAR

ACALL CCSCAN

JNZ INK1

AJMP BEGIN

INK1:

ACALL DIS

ACALL DL1MS

ACALL DL1MS

ACALL CLEAR

ACALL CCSCAN

JNZ INK2

AJMP BEGIN

INK2:

MOV R2,#0FEH

MOV R4,#00H

COLUM:

MOV DPTR,#7F03H

MOV A,R2

MOVX @DPTR,A

MOV DPTR,#7F01H

MOVX A,@DPTR

JB ACC.3,LONE

MOV A,#00H

AJMP KCODE

LONE:

JB ACC.2,NEXT

MOV A,#04H KCODE:

ADD A,R4

CJNE A,#00H,TT0

MOV A,#06H

AJMP L0

TT0:

CJNE A,#01H,TT1

MOV 50H,#0BH

MOV 51H,#02H

MOV 52H,#04H

MOV 53H,#06H

AJMP L1

TT1:

CJNE A,#02H,TT2

MOV A,#0CH

AJMP L0

TT2:

CJNE A,#03H,TT3

MOV A,#0DH

AJMP L0

TT3:

CJNE A,#04H,TT4

MOV A,#0AH

AJMP L0

TT4:

CJNE A,#05H,TT5

MOV A,#0BH

AJMP L0

TT5:

CJNE A,#06H,TT6

MOV A,#09H

AJMP L0

TT6:

CJNE A,#07H,L0

MOV 50H,#0AH

MOV 51H,#01H

MOV 52H,#03H

MOV 53H,#05H

AJMP L1

L0:

ACALL PUTBUF L1:

PUSH ACC

KON:

ACALL DIS

ACALL CLEAR

ACALL CCSCAN

JNZ KON

POP ACC

NEXT:

INC R4

MOV A,R2

JNB ACC.3,KERR

RL A

MOV R2,A

AJMP COLUM KERR:

AJMP BEGIN CCSCAN:

MOV DPTR,#7F03H

MOV A,#00H

MOVX @DPTR,A

MOV DPTR,#7F01H

MOVX A,@DPTR

CPL A

ANL A,#0CH

RET

CLEAR:

MOV DPTR,#7F02H

MOV A,#00H

MOVX @DPTR,A

RET

DIS:

PUSH ACC

PUSH 00H

PUSH 03H

MOV A,#0EH

MOV DPTR,#7F00H

MOVX @DPTR,A

MOV R0,#50H

MOV R3,#0FEH

MOV A,R3 AGAIN:

MOV DPTR,#7F03H

MOVX @DPTR,A

MOV A,@R0

MOV DPTR,#DDEG MOVC A,@A+DPTR

MOV DPTR,#7F02H

MOVX @DPTR,A

ACALL DL1MS

INC R0

MOV A,R3

JNB ACC.3,OUT

RL A

MOV R3,A

AJMP AGAIN

OUT:

POP 03H

POP 00H

POP ACC

RET

DDEG:

DB 0FCH,60H,0DAH,0F2H, 66H,0B6H,0BEH,0E0H,0FEH DL1MS:

MOV R7,#01H

DL0:

MOV R6,#0FFH

DL1:

DJNZ R6,DL1

DJNZ R7,DL0

RET

PUTBUF:

MOV 50H,51H

MOV 51H,52H

MOV 52H,53H

MOV 53H,A

RET

END

(3)程序三:

ORG 0000H

LJMP MAIN

ORG 1000H

MAIN:

MOV 50H,#00H

MOV 51H,#00H

MOV 52H,#00H

MOV 53H,#00H

MOV 60H,#00H

MOV 61H,#00H

MOV 62H,#00H

MOV 63H,#00H

MOV 71H,#02H

KEYSUB:

MOV A,#0EH

MOV DPTR,#7F00H

MOVX @DPTR,A BEGIN:

ACALL DIS

ACALL CLEAR

ACALL CCSCAN

JNZ INK1

AJMP BEGIN

INK1:

ACALL DIS

ACALL DL1MS

ACALL DL1MS

ACALL CLEAR

ACALL CCSCAN

JNZ INK2

AJMP BEGIN

INK2:

MOV R2,#0FEH

MOV R4,#00H

COLUM:

MOV DPTR,#7F03H

MOV A,R2

MOVX @DPTR,A

MOV DPTR,#7F01H

MOVX A,@DPTR

JB ACC.3,LONE

MOV A,#00H

AJMP KCODE LONE:

JB ACC.2,NEXT

MOV A,#04H KCODE:

ADD A,R4

CJNE A,#00H,TT0

DJNZ 71H,GOON

AJMP RESET GOON:

AJMP EQU1

TT0:

CJNE A,#01H,TT1

AJMP MUL1

TT1:

CJNE A,#02H,TT2

AJMP SUB1

TT2:

CJNE A,#03H,TT3

MOV A,#03H

AJMP L0

TT3:

CJNE A,#04H,TT4

MOV A,#02H

AJMP L0

TT4:

CJNE A,#05H,TT5

MOV A,#04H

AJMP L0

TT5:

CJNE A,#06H,TT6

MOV A,#07H

AJMP L0

TT6:

CJNE A,#07H,L0

MOV A,#01H

L0:

ACALL PUTBUF

L1:

PUSH ACC

KON:

ACALL DIS

ACALL CLEAR

ACALL CCSCAN

JNZ KON

POP ACC

NEXT:

INC R4

MOV A,R2

JNB ACC.3,KERR

RL A

MOV R2,A

AJMP COLUM KERR:

AJMP BEGIN CCSCAN:

MOV DPTR,#7F03H

MOV A,#00H

MOVX @DPTR,A

MOV DPTR,#7F01H

MOVX A,@DPTR

CPL A

ANL A,#0CH

RET

CLEAR:

MOV DPTR,#7F02H

MOV A,#00H

MOVX @DPTR,A

RET

DIS:

PUSH ACC

PUSH 00H

PUSH 03H

MOV A,#0EH

MOV DPTR,#7F00H

MOVX @DPTR,A

MOV R0,#50H

MOV R3,#0FEH

MOV A,R3 AGAIN:

MOV DPTR,#7F03H

MOVX @DPTR,A

MOV A,@R0

MOV DPTR,#DDEG MOVC A,@A+DPTR MOV DPTR,#7F02H

MOVX @DPTR,A

ACALL DL1MS

INC R0

MOV A,R3

JNB ACC.3,OUT

RL A

MOV R3,A

AJMP AGAIN

OUT:

POP 03H

POP 00H

POP ACC

RET

DDEG:

DB 0FCH,60H,0DAH,0F2H, 66H,0B6H,0BEH,0E0H,0FEH DL1MS:

MOV R7,#01H

DL0:

MOV R6,#0FFH

DL1:

DJNZ R6,DL1

DJNZ R7,DL0

RET

PUTBUF:

MOV 50H,51H

MOV 51H,52H

MOV 52H,53H

MOV 53H,A

RET

MUL1:

NOP

KON1:

ACALL DIS

ACALL CCSCAN

JNZ KON1

MOV 63H,53H

MOV 62H,52H

MOV 53H,#00H

MOV 52H,#00H

MOV 70H,#00H

AJMP BEGIN

SUB1:

NOP

KON2:

ACALL DIS

ACALL CCSCAN

JNZ KON2

MOV 60H,50H

MOV 61H,51H

MOV 62H,52H

MOV 63H,53H

MOV 70H,#01H

MOV 53H,#00H

MOV 52H,#00H

MOV 51H,#00H

MOV 50H,#00H

EQU1:

NOP

KON3:

ACALL DIS

ACALL CCSCAN

JNZ KON3

MOV A,70H

CJNE A,#00H,SUB2

MUL2:

MOV A,62H

MOV B,#08H

MUL AB

ADD A,63H

MOV 30H,A

MOV A,52H

MOV B,#08H

MUL AB

ADD A,53H

MOV B,30H

MUL AB

MOV 30H,B

MOV 31H,A

ANL A,#07H

MOV 53H,A

MOV A,31H

ANL A,#38H

RR A

RR A

RR A

MOV 52H,A

MOV A,31H

ANL A,#0C0H

RL A

RL A

MOV 31H,A

MOV A,30H

ANL A,#01H

RL A

RL A

ORL A,31H

MOV 51H, A

MOV A,30H

ANL A,#0EH

RR A

MOV 50H,A

AJMP L1

SUB2:

CLR C

MOV A,63H

SUBB A,53H

JC ADD0

MOV 53H,A

AJMP LOW1 ADD0:

CLR C

ADD A,#08H

MOV 53H,A

DEC 62H LOW1:

MOV A,62H

CLR C

SUBB A,52H

JC ADD1

MOV 52H,A

AJMP LOW2 ADD1:

CLR C

ADD A,#08H

MOV 52H,A

DEC 61H LOW2:

CLR C

MOV A,61H

SUBB A,51H

JC ADD2

MOV 51H,A

AJMP LOW3 ADD2:

ADD A,#08H

MOV 51H,A

DEC 60H

MOV 50H,60H LOW3:

AJMP L1 RESET:

NOP

KON4:

ACALL DIS

ACALL CCSCAN

JNZ KON4

MOV 60H,#00H

MOV 61H,#00H

MOV 62H,#00H

MOV 63H,#00H

AJMP MAIN

END

三、心得体会

通过课程设计,巩固和加深对《单片机原理》课程内容的认识和理解,提高应用水平;掌握MCS-51汇编语言程序的编制方法;熟悉键盘控制和七段数码管的使用;熟悉单片机应用系统硬件设计的基本方法。同时,培养了如何在困境中解决问题的能力。

应用系统设计

1 概述

随着电子技术水平的不断提高,单片机在日常生活中的应用也越来越广泛,它所给人类带来的方便也是有目共睹的,其中数字温度计就是一个典型的例子。随着人们对它的要求越来越高,要为现代人的生活、工作以及科研提供更为方便的设施还需要从单片机技术和更优越的温度传感器入手,一切向着数字化控制,智能化控制方向发展。

我们设计的数字温度计与传统的温度计相比,具有读数直观、方便,测温范围广,测温准确等优点,其输出温度采用数码管显示。主要应用于对测温精度和测温范围要求比较高的场所,也可在科研实验室使用。该设计主控芯片使用80C51单片机,测温传感器使用“一线总线”数字化温度传感器DS18B20,使用4位共阴极LED 数码管以动态扫描方式,实现温度显示,能准确达到以上要求。

1.1 设计目的与意义

综合利用所学单片机知识完成一个单片机应用系统设计并仿真实现所要求的功能,从而加深对单片机软硬件知识的理解和对相关传感器的原理和使用方法的掌握,获得进一步的应用实践经验,为走出校门从事单片机应用的相关工作打下基础。该设计同时也是我们对所学理论知识进行的检测和验证,理论与实践相结合,探索知识的真理殿堂,不拘泥于课本,培养自己发现问题并独立解决问题的能力。

1.2 设计任务及要求

1)基本范围-50℃-110℃; 2)精度误差小于0.5℃; 3)LED 数码直读显示; 4)扩展功能;

5)可以任意设定上下限报警温度。

2 系统总体方案及硬件设计

数字温度计电路设计总体设计方框图如图2-1所示,主控芯片采80C51,温度传感器采用DS18B20,用

4位LED 数码管以动态扫描方式实现温度显示,报警温度调整采用独立按键,报警电路由蜂鸣器和报警指示灯组成。

图2-1 系统总体框图

2.1 主控芯片

2.1.1 80C51单片机芯片引脚及功能介绍

80C51有40引脚双列直插式DIP和44引脚方形扁平式QFP共两种封装形式。本设计采用40引脚双列直插式设计,其引脚排列如图(a)所示

(a)引脚排列

2.1.2 芯片引脚介绍

●输入/输出口线

P0.0~P0.7 P0口8位双向口线

P1.0~P1.7 P1口8位双向口线

P2.0~P2.7 P2口8位双向口线

P3.0~P3.7 P3口8位双向口线

●地址锁存控制信号ALE

在系统扩展时,用于控制把P0口输出的低8位地址送入锁存器锁存起来,以实现低位地址和数据的分时传送。

●外部程序存储器读选通信号_________ PSEN

在读外部ROM时_________

PSEN有效(低电平),以实现外部ROM单元的读操作。

●访问程序存储器控制信号_____ EA

当_____

EA为低电平时,对ROM的读操作是针对外部程序存储器的;而当

_____

EA信号为高电平

时,对ROM的读操作是从内部程序存储器开始,并可延续至外部程序存储器。

●复位信号RST

当输入的复位信号延续2个机器周期以上高电平时即有效,用于完成单片机的复位操作。

●外接晶体引线端XTAL1和XTAL2

当使用芯片内部时钟时,XTAL1和XTAL2用于外接石英晶体谐振器和微调电容,当使用外部时钟时,用于接入外部时钟脉冲信号。

●地线Vss

●+5V电源Vcc

2.2 显示电路

显示电路采用4位共阴LED数码管,从P0口输出段码,接470Ω上拉电阻,用P2口的P2.4-P2.7脚来输出数码管动态扫描位选信号。

2.3 报警温度调整电路

采用独立键盘,分别用外部中断0和1来调整高温报警温度和低温报警温度,在中断中查询加减按键的动作来调整温度,进入中断后,清EA,然后将与中断1即P3.3脚相连的按键作为确定键使用。

2.4 报警电路

采用蜂鸣器来发出报警声音,超高亮发光二极管作为报警指示灯,由于80C51的驱动能力较弱,所以蜂鸣器要加三极管驱动,报警灯外接上拉电阻,单片机用灌电流方式点亮它,可获得较高的亮度!

2.5 温度传感器

DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它可根据实际要求通过简单的编程实现9~12位的分辨率的设定。

DS18B20的性能特点如下:

●零待机功耗;

●温度以9或12位数字;

●用户可定义报警设置;

●可通过数据线供电,电压范围为3.0~5.5V;

●独特的单线接口,仅需要一个端口引脚进行通信;

●多个DS18B20可以并联在一条线上,轻松实现传感器网络组建;

●报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件。

DS18B20内部高速暂存RAM为8字节的存储器,前2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。

DS18B20温度转换得时间比较长,而且分辨率越高,所需要得温度数据转换时间越长。具体得分辨率转换为相应精度得温度数值所需时间如表2-1所示。我们的设计采用12位精度,因此对18B20操作时要对时序根据表2-1来调整。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节中。单片机可以通过单线接口读出该数据,读数据时低8位在先,高8位在后,数据格式以0.0625℃/LSB形式表示。当符号位S=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。

另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处理数据。

1、初始化:单总线的所有处理均从初始化开始。初始化过程是主机通过向作为从机的DS18B20芯片发一个具有一定时间宽度的初始化脉冲实现的。初始化后,才可进行读写操作。

2 、ROM操作命令:总线主机检测到DS18B20的存在便可以发出ROM操作命令。ROM操作命令如表2-2所示:

表2-2 ROM操作命令

3、存储器操作:存储器操作命令如表2-3所示:

4、时序:主机使用时间隙(time slots)来读写DS18B20的数据位和写命令字的位。

2.6 DS18B20温度传感器与单片机的接口电路

DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源;另一种是寄生电源供电方式。本设计采用第一种供电方式,为保证在有效的DS18B20时钟周期内提供足够的电流,可在信号线与电源线之间接上拉电阻,接口电路如图2-2所示。

图2-2 DS18B20与单片机的接口电路

2.7 系统整体硬件电路

系统整体硬件电路包括:传感器数据采集电路,温度显示电路,上下限报警温度调整电路和报警电路,如图2-3所示。图中有4个独立式按键可以分别调整温度计的上下限报警温度,蜂鸣器可以在被测温度超出上下限范围内时,发出报警鸣叫声音,同时报警指示灯超高亮发光二极管将被点亮。图中画出来的是上电复位电路,实际电路将采用按健加上电复位电路,使用比较方便,在程序跑飞时,可以手动复位,这样就不用重启单片机电源,就可以实现复位。显示电路采用动态扫描方式,这样不仅使用单片机端口较少,而且外围电路也比较

简单。

图2-3 系统整体硬件电路

3软件设计部分

系统程序主要包括主程序,读温度子程序,报警温度调整子程序和显示子程序。

3.1主程序

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20测量的当前温度值,其程序流程如图3-1所示。

3.2读温度子程序

读出温度子程序的主要功能是读出温度转换之后RAM中的前2个字节中暂存的温度值,其程序流程图如图3-2所示。

3.3报警温度调整子程序

报警温度调整子程序主要是对按键的处理,具体流程如图3-3所示。

3.4 显示子程序

显示子程序要先判断要显示的是DS18B20采集到的温度值还是报警温度值,再计算出温度值的百位(若温度值大于99°C)、十位和个位并扫描显示,如图3-4。

图3-1 主程序流程图

图3-2 读温度流程图

图3-3 报警温度调整流程图

图3-4 显示流程图

相关文档