单片机温度采集系统.docx

上传人:b****3 文档编号:26512597 上传时间:2023-06-20 格式:DOCX 页数:22 大小:218.37KB
下载 相关 举报
单片机温度采集系统.docx_第1页
第1页 / 共22页
单片机温度采集系统.docx_第2页
第2页 / 共22页
单片机温度采集系统.docx_第3页
第3页 / 共22页
单片机温度采集系统.docx_第4页
第4页 / 共22页
单片机温度采集系统.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

单片机温度采集系统.docx

《单片机温度采集系统.docx》由会员分享,可在线阅读,更多相关《单片机温度采集系统.docx(22页珍藏版)》请在冰豆网上搜索。

单片机温度采集系统.docx

单片机温度采集系统

课程设计

 

课程设计名称:

温度采集装置

班级:

数控技术0901

学号:

课程设计时间:

2011.12.5—12.11

 

1设计任务………………………………………………………………………

2

2确定设计方案…………………………………………………………………

3

2.1温度传感器—AD22100K…………………………………………………

3

2.2A/D转换器—ADC0809…………………………………………………

4

2.3单片机的选择—80C51…………………………………………………

6

2.4显示器接口—LED动态显示接口………………………………………

8

3硬件电路的设计…………………………………………………………

10

3.1温度传感器与A/D转换器的接口电路………………………………

10

3.2A/D转换器与89C51的接口电路………………………………………

10

3.389C51与显示器间的接口电路…………………………………………

11

3.4晶振电路和复位电路的设计…………………………………………

12

4软件设计……………………………………………………………………

13

4.1温度采集的主程序流程图………………………………………………

13

4.2程序清单…………………………………………………………………

15

5心得体会………………………………………………………………………

20

附录………………………………………………………………………………

21

温度采集装置

1、设计任务

设计一个温度采集系统,要求按1路/s的速度顺序检测8路温度点,测温范围为+20℃~+100℃,测量精度为±1%。

要求用5位数码管显示温度,最高位显示通道号,次高位显示“—”,低三位显示温度值。

2、设计方案

2.1温度传感器—AD22100K

AD22100K是有信号调节的单片温度传感器,工作温度范围为-50~+150,信号调节不需要调节电路、缓冲器和线性化电路,简化了系统设计。

输出温度与电压和电源电压的乘积(比率测量)成比例。

输出电压摆幅为0.25V(对应-50℃)和4.75V(对应150℃),用5V单电源工作。

2.1.1AD22100K的引脚图如2.1.1

图2.1.1AD22100K的引脚图

注:

1.V电源4.GND接地

2.U输出3、5~8NC不连接

2.1.2AD22100K主要参数

1.工作电压4V~6V

2.工作温度范围-50℃~+150℃

3.精度优于±2%FS;线性度优于±1%FS;温度系数22.5mV/℃

4.单电源工作,反向电压保护;高电平低阻抗输出;封装形式为TO-92SOIC

2.2A/D转换器—ADC0809 

根据题意,测量精度为±1%,所以采用8位的ADC0809即可满足要求,在显示温度时最低单位为0.1。

ADC0809是8位逐次逼近式A/D模数转换器。

其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。

2.2.1ADC0809主要特性

  1)8路输入通道,8位A/D转换器,即分辨率为8位。

  2)具有转换起停控制端。

  3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)   4)单个+5V电源供电  5)模拟输入电压范围0~+5V,不需零点和满刻度校准。

  6)工作温度范围为-40~+85摄氏度  7)低功耗,约15mW。

2.2.2ADC0809内部结构

  ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。

2.2.3ADC0809外部特性(引脚功能)

图2.2.3ADC0809外部引脚

  ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。

下面说明各引脚功能。

  IN0~IN7:

8路模拟量输入端。

  2-1~2-8:

8位数字量输出端。

  ADDA、ADDB、ADDC:

3位地址输入线,用于选通8路模拟输入中的一路  ALE:

地址锁存允许信号,输入,高电平有效。

  START:

A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。

  EOC:

A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

  OE:

数据输出允许信号,输入,高电平有效。

当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

  CLK:

时钟脉冲输入端。

要求时钟频率不高于640KHZ。

  REF(+)、REF(-):

基准电压。

  Vcc:

电源,单一+5V。

  GND:

地。

2.2.4ADC0809的工作过程

  首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。

此地址经译码选通8路模拟输入之一到比较器。

START上升沿将逐次逼近寄存器复位。

下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。

直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。

当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。

  转换数据的传送A/D转换后得到的数据应及时传送给单片机进行处理。

数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。

为此可采用下述三种方式。

  

(1)定时传送方式  对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。

例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。

可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。

  

(2)查询方式  A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC端。

因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。

  (3)中断方式  把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。

  不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。

首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。

2.3单片机的选择—80C51

2.3.180C51主要特性

  ·与MCS-51兼容  ·4K字节可编程闪烁存储器

寿命:

1000写/擦循环  数据保留时间:

10年  ·全静态工作:

0Hz-24MHz  ·三级程序存储器锁定  ·128*8位内部RAM  ·32可编程I/O线

·两个16位定时器/计数器  ·5个中断源  ·可编程串行通道  ·低功耗的闲置和掉电模式  ·片内振荡器和时钟电路

2.3.280C51的引脚图及管脚说明

图2.3.280C51的引脚图

  VCC:

供电电压。

  GND:

接地。

  P0口:

P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。

当P1口的管脚第一次写1时,被定义为高阻输入。

P0能够用于外部程序数据存储器,它可以被定义为数据/

地址的低八位。

在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

  P1口:

P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。

P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。

在FLASH编程和校验时,P1口作为第八位地址接收。

  P2口:

P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。

并因此作为输入时,P2口的管脚被外部拉低,将输出电流。

这是由于内部上拉的缘故。

P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。

在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

  P3口:

P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。

当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。

作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

  P3口也可作为AT89C51的一些特殊功能口,如下表所示:

  口管脚备选功能  P3.0RXD(串行输入口)  P3.1TXD(串行输出口)  P3.2/INT0(外部中断0)  P3.3/INT1(外部中断1)  P3.4T0(记时器0外部输入)  P3.5T1(记时器1外部输入)  P3.6/WR(外部数据存储器写选通)  P3.7/RD(外部数据存储器读选通)  P3口同时为闪烁编程和编程校验接收一些控制信号。

  RST:

复位输入。

当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

  ALE/PROG:

当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。

在FLASH编程期间,此引脚用于输入编程脉冲。

在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。

因此它可用作对外部输出的脉冲或用于定时目的。

然而要注意的是:

每当用作外部数据存储器时,将跳过一个ALE脉冲。

如想禁止ALE的输出可在SFR8EH地址上置0。

此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。

另外,该引脚被略微拉高。

如果微处理器在外部执行状态ALE禁止,置位无效。

  /PSEN:

外部程序存储器的选通信号。

在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。

但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

  /EA/VPP:

当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。

注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。

在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

  XTAL1:

反向振荡放大器的输入及内部时钟工作电路的输入。

  XTAL2:

来自反向振荡器的输出。

2.3.3振荡器特性

XTAL1和XTAL2分别为反向放大器的输入和输出。

该反向放大器可以配置为片内振荡器。

石晶振荡和陶瓷振荡均可采用。

如采用外部时钟源驱动器件,XTAL2应不接。

由于输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

2.4显示器接口—LED动态显示器接口

2.4.1七段式LED的结构与工作原理

LED显示器是由发光二极管显示字段的显示器件,也可称为数码管。

其外形结构如图2.4.1所示,由图可见它由8个发光二极管组成,通过不同的组合可用来显示0-9、A-F及小数点“.”等字符。

数码管通常有共阴极和共阳极两种接法。

限流电阻是外接的,一般共阳极数码管必须外接电阻,共阴极不一定外接电阻。

要显示某字形就应使此字形的相应字段点亮,实际就是送一个用不同电平组合代表的数据至数码管。

这种装入数码管中显示字形的数据称为字形码。

图2.4.1LED外部引脚

本次设计采用共阳极数码管,字形与字形码的关系,对照图2.4.1,字形码各位定义如下:

D7

D6

D5

D4

D3

D2

D1

D0

DP

g

F

e

d

c

b

a

数据线D0与a段对应,D1与b段对应……,以此类推。

共阳极常用的显示字形如上表所示。

按照显示字符顺序排序。

通常显示代码存放在程序存贮器的固定区域中,构成显示代码表。

当要显示某字符时,可根据地址及显示字符查表。

2.4.2LED动态显示器接口的选择

七段式LED显示器有静态显示与动态扫描两种方式,动态显示需要耗费大量的CPU时间,且亮度不够;而静态亮度高,CPU负担很小,但所需硬件驱动芯片较多,在位数较多时,字符更新速度慢,电路比较复杂,成本较高。

因此在此温度采集装置中采用动态显示方式。

3、硬件电路设计

3.1温度传感器与A/D转换器的接口电路

3.2A/D转换器与80C51的接口电路

80C51单片机与ADC0809接口时必须注意事项(80C51单片机与ADC0809接口如图3.2A/D转换器与80C51的接口电路)

图3.2A/D转换器与80C51的接口电路

(1)在START端送一个100ns宽的启动正脉冲

(2)获取EOC端上的状态信息,因为它是A/D转换的结束标志

(3)给“三台输出锁存器”分配一个端口地址,也就是给OE端送一个地址译码器的输出信号

3.380C51与显示器件的接口电路

在单片机系统中,LED显示一般采用静态显示和动态扫描两种驱动方式。

本次设计采用的是动态扫描驱动方式。

所谓动态显示就是指一位一位地轮流点亮各个显示器,对于每一位显示器来说,每隔一段时间点亮一次。

点亮时间通常1左右,相隔时间为20。

动态显示器件与80C51间的接口如图3.380C51与显示器件的接口电路所示。

图3.380C51与显示器件的接口电路

图3.380C51与显示器件的接口电路中,74LS373-1的输出为段数据口,接显示器的各个段极,74LS373-2的输出为位扫描口,接LED的公共极。

显示时,首先使74LS373-2的Q0为低电平,Q1~Q7为高电平,则仅第一位显示器的公共阴极为低电平(被选通);同时74LS373-1输出第一个显示数据的段码,这时第一位显示器将显示出第一个显示数据。

持续1左右后,使Q0为低电平,关闭第一个显示器,随后使Q1为低电平,并选通第二位显示器,并由74LS373-1输出第二个显示数据,并持续1左右。

有类似的方法一次选通第3,第4,…第8位即完成依次循环显示。

3.4晶振电路与复位电路的设计

3.4.1晶振电路的设计

要给CPU提供其工作时的时序要求就要有相关的硬件电路—晶振电路,即振荡器和时钟电路。

80C51系列单片机内部有一个高增益方向放大器,用于构成振荡器,但要构成时钟,外部还需要附加电路。

80C51的时钟产生方法有内部时钟方式和外部时钟方式两种。

图3.4.1晶振电路

本次设计采用的是内部时钟方式。

利用芯片内部的振荡器,然后在引脚XTAL1和XTAL2两端跨接晶体或陶瓷谐振器,就构成了稳定的自己振荡器,其发出的脉冲直接送入内部时钟电路,见图3.4.1晶振电路。

3.4.2复位电路的设计

复位是单片机的初始化操作,单片机在启动运行时,都需要先复位,它的作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。

单片机本身一般是不能自动进行复位的,必须配合相应的外部电路才能实现。

单片机的外部复位电路有上电自动复位和按键手动复位(按键手动复位又分为按键电平复位和按键脉冲复位)两种,本次设计采用的是按键手动复位的按键电平复位,见图3.4.2复位电路。

按键电平复位相当于按复位键后复位端通过电阻与电源接通。

图3.4.2复位电路

 

4、软件设计

4.1主程序流程图

4.2程序清单

根据题意设计电路如附录A所示。

图中数码管采用共阴极,采用8位的ADC0809转换器,单片机工作频率为12MHZ,采用定时器0定时为50ms.其地址分配及编程如下:

;===================================================================

DM-ADDREQU0DFFFH;数码管段码地址

WM-ADDREQU0BFFFH;数码管位码地址

ADC-ADDREQU07FF0H;AD0809转换通道0地址

;………………………………………………………………………………………

POSITIONEQU30H;显示位码寄存器

CHANNELEQU31H;通道寄存器

DISPLAY1EQU38H;显示数据寄存器(高位)

DISPLAY2EQU39H·

DISPLAY3EQU3AH·

DISPLAY4EQU3BH·

DISPLAY5EQU3CH;显示数据寄存器(低位)

CONEQU3DH;秒计数器

;………………………………………………………………………………………

ORG0000H

LJMPMAIN

ORG000BH

LJMPTIMER0;转10ms定时中断程序

ORG0030H

MAIN:

MOVSP,#50H;修改堆栈指针

MOVPOSITION,#0FEH;设置位码寄存器

MOVTMOD,#01H;设置定时器0工作方式

MOVTH0,#0D8H;定时器0定初值(10ms)

MOVTL0,#0F0H

SETBTR0;启动定时器0

SETBET0;允许定时器0中断

SETBEA;开中断

CLR10H;秒标志位清0

MOVCON,#100H;秒计数器置初值

START:

MOVCHANNEL,#00H;通道设置(0通道)

EX5A:

MOVDPTR,#ADC-ADDR

MOVA,DPL

ADDA,CHANNEL;计算通道地址

MOVDPL,A

MOVX@DPTR,A;启动A/D转换

NOP

JBINT1,$;等待转换结束

MOVXA,@DPTR;读取结果

LCALLBCD;条结果转换子程序

MOVDISPLAY1,CHANNEL;送当前显示通道号

MOVDISPLAY2,#0AH;段码表中“-”的位置偏移量

DISP1:

LCALLDISP;调结果显示子程序

JB10H,DISP1;1秒不到,等待

CLR10H

MOVCON,#100;秒计数器重置初值

INCCHANNEL;下一通道

MOVA,CHANNEL

CJNEA,#08H,EX5A;不是最后一通道,转EX5A

LJMPSYART;循环

;………………………………………………………………………………………

;将00~FFH的十六进制数转换成000~999的十进制数,显示单位位0.1

;转换近似公式位:

A*1003D/256D,结果存入R2(H)R3(L)中,其中A:

00~FFH,1003=3EBH

;将BCD结果送入寄存器DISPLAY3~DISPLAY5中

BCD:

MOVR2,A

MOVB,#0EBH;R2*1003D(3EBH)

MULAB

MOVR4,A

MOVR3,B

MOVA,R2

MOVB,#03H

MULAB

ADDA,R3

MOVR3,A

MOVA,B

ADDCA,#00H

MOVR2,A

CJNER4,#80H,BCD1;与80H比较决定4舍5入

BCD1:

JCBCD2

MOVA,R3

ADDA,#01H

MOVR3,A

MOVA,R2

ADDCA,#00H

MOVR2,A

BCD2:

XCHA,R3

XCHA,B

XCHA,R2

MOVR0,#DISPLAY3

MOVR6,#00H

MOVR5,#64H

LCALLSUM;调除法子程序

MOVR6,#00H

MOVR5,#0AH

LCALLSUM

XCHA,B

MOV@R0,A

;………………………………………………………………………………………

SUM:

MOVR7,#00H

SUM0:

CLRC

XCHA,B

SUBBA,R5

XCHA,B

SUBBA,R6

INCR7

JNCSUM0

DECR7

XCHA,B

ADDA,R5

XCHA,B

ADDCA,R6

XCHA,R7

MOV@R0,A

XCHA,R7

INCR0

RET

;………………………………………………………………………………………

DISP:

MOVDPTR,#WM-ADDR;位控口地址

MOVA,#OFFH

MOVX@DPTR,A;关显示

MOVR0,DISPLAY1;指向显示缓冲区首址

MOVPOSITION,#0FEH;指向显示器最高位

MOVR4,#250;置显示延时值

DISP2:

MOVR3,#5

DISP3:

MOVDPTR,#WM-ADDR;数码管位码地址

MOVA,POSITIONG

MOVX@DPPTR,A;输出位控码

MOVA,@R0;取出显示数据

MOVDPTR,#TAB;字形码地址

MOVCA,@A+DPTR;查表,字形码送A

MOVDPTR,#DM-ADDR;数码管(字形)码地址

MOVX@DPPTR,A;输出字形码

INCR0;指向下一缓冲单元

MOVA,POSTITION

RRA;位选字右移

MOVPOSITION,A

DJNZR3,,DISP3

DJNZR4,DISP2

RET

TAB:

DB3FH,06H,5BH,4FH,66H

DB6DH,7DH,07H,7FH,6FH,40H

TIMER0:

PUSHPSW;保护现场

PUSHACC

PUSHDPH

PUSHDPL

CLRTF0;清溢出标志

MOVTH0,#0D8H;重置初值

MOVTL0,#0F0H

DECCON

MOVA,#100

CJNEA,CON,TIEND

SETB10H;置1秒到标志

TIEND:

POPDPL;恢复现场

POPDPH

POPACC

POPPSW

RETI;中断返回

 

5、心得体会

通过这次单片机课程设计,我不仅加深了对单片机理论的理解,更重要的是将学习到的理论应用到实际当中去,理解并掌握了单片机的一些基本功能,同时也发现了自己的许多相关方面的知识都还很欠缺,还仍需不断的学习、不断的提高。

同时意识到要想真正的把学到的理论知识在实际生活中灵活应用,必须把基本的理论知识真正的掌握并做到真正的理解,同时还要不断拓展自己的知识面。

附录

 

 

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

当前位置:首页 > 工程科技 > 交通运输

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

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