用单片机进行数字信号处理的温度计

   2023-06-15 互联网3210
核心提示:0.引言随着计算机的发展,在气象系统中逐渐使用智能化仪表来进行温度的测量,测量仪表精确度的高低,直接影响着居民的生活和企业

0.引言

随着计算机的发展,在气象系统中逐渐使用智能化仪表来进行温度的测量,测量仪表精确度的高低,直接影响着居民的生活和企业的经济效益。那么在我国现有经济水平下,使用单片机开发的温度显示仪表是非常适用的,该仪表测量精度高,不仅适用于气象中,还广泛适用于工业以及家庭。

1.系统概述

要设计一个能够数字显示测量温度的温度计,首先要有温度信号采集电路,在本设计中,我们采用的电流型温度传感器AD590来构架温度采集系统,采集到的温度信号经过传感器的处理转换成电信号,但是我们得到的还是比较微弱的模拟号,要对信号进行放大,然后将此模拟信号转换成单片机所能够接受、处理的数字信号,经过程序处理后,单片机输出相应的数字信号,通过译码环节最终用七段LED显示器显示出来。

2.系统组成

温度计电路组成框图如下图所示:

3.系统硬件电路

3.1检测电路

本课题主要是对温度实现控制,而我们要控制温度首先就是对温度进行检测。本设计电路采用了温度传感AD590。AD590(0℃时为273.2μA)产生的电流与绝对温度成正比,温度每增加1℃,其电流增加1μA,它可接收的工作电压为4V~30V,检测的温度范围为-55℃~+150℃。它有非常好的线性输出性能,与其他温度传感器比较,具有灵敏度高、线性好、简便的特点。

3.2放大电路

AD590是通过电流反映温度的,而AD590产生的电流非常小,自然加在电阻两端的电压也非常的小,电压变化的幅度也很小,所以必须通过放大电路对其进行放大,其LM741具有功耗小,性能好等优点,因此我们采用LM741组成比例放大器。本设计中一共使用了3个比例放大器,但是其作用是不一样的。这样既保证了信号的阻抗匹配,又使其相位保持不变。

3.3转换电路

由于单片机只能处理电信号,而温度信号不能直接送给单片机,所以需要通过A/D转换来实现对温度的控制。A/D转换器是用于把模拟量转换成数字量的元器件,把输入的模拟电压直接转换成数字代码,A/D转换器目前应用广泛。本电路中的ADC0804是8位逐次逼近型的A/D转换器,转换速度快、精度较高,能够达到设计的要求,所以决定本设计电路用ADC0804作为模数转换的器件。ADC0804引脚图如下:

3.4处理电路

本设计电路硬件的核心是ATMEL生产的AT89S51单片机,它是一种低功耗/低电压、高性能的8位单片机,片内带有一个4K字节的Flash可编程可擦除只读存储器,它采用了CMOS工艺和ATMEL公司的高密度非易失性存储器技术,而且其输出引脚和指令系统都与MCS-51兼容。

3.5译码电路

译码是编码的反过程,是将给定的二进制代码翻译成编码时赋予的原意,完成这种功能的电路称为译码器。A/D转换成的数值经芯片AT89S51处理后,由于转换后的的信号直接控制数码管显示比较复杂,因此我们采用译码器来进行译码显示。

3.6显示电路

由译码器进行处理,就是把机器运行的二-十进制BCD码译成十进制数的代码,并通过显示器显示出来。在本设计电路中显示器采用LED数码管,优点是工作电压较低、体积小、寿命长、工作可靠性高、响应速度快、亮度高,显示清晰。它有共阳极和共阴极之分,由于身边只有共阳极的数码管,所以本设计就使用了共阳极的数码管。

3.7数字温度计整体原理图

通过上面对各个部分电路的分析,其整体原理图见附录。

本设计具有以下特点:

1、采用了微处理技术,可靠性高。

2、采用了微功耗器件,耗电低。

3、可数字显示被测量的温度。

4、数显温度计测量精度高。

技术性能:

1、测温范围为-50℃~150℃。

2、分辨率为0.01℃。

3、产生的信号为0~5V控制信号。

4、误差等级:±1、±0.5、±0.3℃

5、电源:5V、+12V、-12V直流电。

4.软件设计部分

4.1程序流程框图

本课题设计的温度计是通过信号的多次转换后,最后显示出温度。信号是如何转变成温度显示出来的?是怎么显示的?这都要事先计算好,然后编到程序里。

例如:当ADC0804输入电压为4V,其对应的温度就是80℃。具体如下:

1)、4V经A/D转换后为C8H。

2)、C8H经十进制转换为0200,R4=02,R5=00。

3)、再将此0200×4=0800,R4=08,R5=00。

4)、小数点设在D2上,其分别显示为 0 8 0. 0

D4 D3 D2 D1

由上面硬件电路及控制要求分析可以得出程序流程图,如下图:

3.2、程序及说明

ORG 0000H

ANL P1,#0F0H ;清除显示器

START:MOVX @R0,A ;令ADC0804 开始转换/WR=0

WAIT:JB P2.0,ADC ;检测ADC0804转换完成否?

ACALL DISP ;调用显示子程序

JMP WAIT

ADC: MOVX A,@R0 ;将转换好的数据读入

ACALL L1 ;调用十进制转换子程序

MOV R1,#05H ;显示延时

DISP1: ACALL DISP ;调用显示子程序

DJNZ R1,DISP1

JMP START

L1: CLR C

MOV R5,#00H ;十进制转换的低位寄存器

MOV R4,#00H ;十进制转换的高位寄存器

MOV R3,#08H ;调整次数

NEXT: RLC A ;将欲转换的最高位移到C中

MOV R2,A ;暂存于R2

MOV A,R5

ADDC A,R5 ;R5乘2加C

DA A ;做十进制调整

MOV R5,A ;结果存回R5

MOV A,R4

ADDC A,R4 ;R4乘2加C

DA A ;做十进制调整

MOV R4,A ;结果存回R4

MOV A,R2

DJNZ R2,NEXT ;做十进制调整结束?

L2:MOV R7,#01H

MOV A,R5

ADD A,R5 ;R5乘2

DA A ;做十进制调整

MOV R5,A ;存入R5

MOV A,R4

ADDC A,R4 ;R4乘2加C

DA A ;做十进调整

MOV R4,A ;存回R4

DJNZ R7,L2

RET

DISP: MOV A,R5

ANL A,#0FH ;取低4位,即D1的值

ORL A,#10H ;令D1使能+D1值

MOV P1,A ;显示D1

ACALL DELAY

MOV A,R5

ANL A,#0F0H ;取高4位,即D2的值

SWAP A ;高低4位交换

ORL A,#20H ;令D2使能+D2值

MOV P1,A ;显示D2

ACALL DELAY

MOV A,R4

ANL A,#0FH ;取低4位,即D3的值

ORL A,#40H ;令D1使能+D3值

MOV P1,A ;显示D3

ACALL DELAY

MOV A,R4

ANL A,#0F0H ;取高4位,即D4的值

SWAP A ;高低4位交换

ORL A,#80H ;令D4使能+D4值

MOV P1,A ;显示D4

ACALL DELAY

CLR A

RET

DELAY: MOV R6,#10 ;5毫秒

D1: MOV R7,#248

DJNZ R7,$

DJNZ R6,D1

RET

END

参考文献:

1、沈庆阳主编《8051单片机实践与应用》清华大学出版社

2、张志梁主编《单片机原理与控制技术》机械工业出版社

3、肖景和编著《CMOS数字电路应用》中国电力出版社

4、何立民编著《单片机应用系统设计》北京航天大学出版社

5、扬志忠主编《数字电子技术》高等教育出版社


 
举报收藏 0打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  隐私政策  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  RSS订阅