基于单片机的数字温度计Word下载.docx
- 文档编号:22917880
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:20
- 大小:363.55KB
基于单片机的数字温度计Word下载.docx
《基于单片机的数字温度计Word下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字温度计Word下载.docx(20页珍藏版)》请在冰豆网上搜索。
在0—100摄氏度时,最大线形偏差小于0.2摄氏度。
ADC0804的最大特点之一采用了单总线的数据传输,由数字温度计ADC0804和微控制器AT89S51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。
这样,测温系统的结构就比较简单,体积也不大。
采用51单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。
既可以单独对多ADC0804控制工作,还可以与PC机通信上传数据,另外AT89S51在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。
从以上两种方案,容易看出方案一的测温装置可测温度范围宽、体积小,但是线性误差较大。
方案二的测温装置电路简单、精确度较高、实现方便、软件设计也比较简单,故本次设计采用了方案二。
2.1系统设计原理
利用电位器(代替温度传感器DS18B20)可以直接读取被测温度值,进行转换的特性,模拟温度值经过ADC0804处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。
同时处理后的数据送到LED中显示。
2.2系统组成
本课题以是80C51单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等组成。
系统框图主要由主控制器、单片机复位、、时钟振荡、LED显示、电位器、ADC0804组成。
系统框图如图3-2所示。
图2-2系统基本方框图
3.1单元电路设计
3.180C51单片机管脚图
图3-180C51单片机管脚图
3.12时钟电路引脚XTAL1和XTAL2:
XTAL2(18脚):
接外部晶体和微调电容的一端;
在8051片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。
若需采用外部时钟电路时,该引脚输入外部时钟脉冲。
要检查8051/8031的振荡电路是否正常工作,可用示波器查看XTAL2端是否有脉冲信号输出。
XTAL1(19脚):
接外部晶体和微调电容的另一端;
在片内它是振荡电路反相放大器的输入端。
在采用外部时钟时,该引脚必须接地。
图3-280C51单片机晶振电路
控制信号引脚RST,ALE,PSEN和EA:
RST/VPD(9脚):
RST是复位信号输入端,高电平有效。
当此输入端保持备用电源的输入端。
当主电源Vcc发生故障,降低到低电平规定值时,将+5V电源自动两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。
RST引脚的第二功能是VPD,即接入RST端,为RAM提供备用电源,以保证存储在RAM中的信息不丢失,从而合复位后能继续正常运行。
图3-380C51单片机复位电路
3.1.389C51单片机的中断系统
89C51系列单片机的中断系统有5个中断源,2个优先级,可以实现二级中断服务嵌套。
由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;
由中断优先级寄存器IP安排各中断源的优先级;
同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。
3.1.480C51单片机的定时/计数器
在单片机应用系统中,常常会有定时控制需求,如定时输出、定时检测、定时扫描等;
也经常要对外部事件进行计数。
80C51单片机内集成有两个可编程的定时/计数器:
T0和T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,此外,T1还可以作为串行口的波特率发生器。
3.2ADC0804介绍
3.2.1ADC0804芯片介绍
图3-4ADC0804规格及引脚分配图
/CS:
芯片片选信号,低电平有效,即/CS=0,该芯片才能正常工作,在外接多个ADC0804芯片时,该信号可以作为选择地址使用,通过不同的地址信号使能不同的ADC0804芯片,从而可以实现多个ADC通道的分时复用。
/WR:
启动ADC0804进行ADC采样,该信号低电平有效,即/WR信号由高电平变成低电平时,触发一次ADC转换。
/RD:
低电平有效,即/RD=0时,可以通过数据端口DB0~DB7读出本次的采样结果。
UIN(+)和UIN(-):
模拟电压输入端,模拟电压输入接UIN(+)端,UIN(-)端接地。
双边输入时UIN(+)、UIN(-)分别接模拟电压信号的正端和负端。
当输入的模拟电压信号存在“零点漂移电压”时,可在UIN(-)接一等值的零点补偿电压,变换时将自动从UIN(+)中减去这一电压。
VREF/2:
参考电压接入引脚,该引脚可外接电压也可悬空,若外界电压,则ADC的参考电压为该外界电压的两倍,如不外接,则Vref与Vcc共用电源电压,此时ADC的参考电压即为电源电压Vcc的值。
CLKR和CLKIN:
外接RC电路产生模数转换器所需的时钟信号,时钟频率CLK=1/1.1RC,一般要求频率范围100KHz~1.28MHz。
AGND和DGND:
分别接模拟地和数字地。
/INT:
中断请求信号输出引脚,该引脚低电平有效,当一次A/D转换完成后,
将引起/INT=0,实际应用时,该引脚应与微处理器的外部中断输入引脚相连(如51单片机的INT0,INT1脚),当产生/INT信号有效时,还需等待/RD=0才能正确读出A/D转换结果,若ADC0804单独使用,则可以将/INT引脚悬空。
DB0~DB7:
输出A/D转换后的8位二进制结果。
3.2.2外围电路设计
图3-5ADC0804的外围电路
图4为ADC0804外围电路原理图,其中,AVCC=5V,引脚VREF/2悬空,因此ADC转换的参考电压为AVCC的值,即5V。
VIN-接地,而VIN+连接滑动变阻器VR1的输出,因此VIN+的电压输入范围为0V~5V,正好处于参考电压范围内。
引脚CS_1,WR_1和RD_1分别连接单片机的P3_5,P3_6以及P3_7脚,而DB0~DB7连接单片机的P2脚.
、
3.3LED四位数码显示管简介
3.31四位数码显示管与89C51的接口
图3-6四位七段数码管外围电路图
4.系统功能说明及其使用说明
图4-1该图为数字温度计电路图
图4-2电压为5V时显示温度
图4-3电压为3.75V时显示温度
图4-4电压为2.5V时显示温度
图4-5电压为1.25V时显示温度
图4-6电压为0V时显示温度
参考资料
[1]阎石.数字电子技术基础.高等教育出版社,2006
[2]王卫东.模拟电子电路基础[M].西安:
西安·
电子科技大学出版社,2003
[3]曹丙霞,赵艳华.PROTEL99SE原理图与PCB设计.电子工业出版社,2007
[4]李群芳,张士军,黄建.单片机微型计算机与接口技术.电子工业出版社,2008
[5]赵世强.电子电路EDA技术[M].西安:
西安电子科技大学出版社,2000
[6]郭天祥.新概念51单片机C语言教程.电子工业出版社,2009
附录一
系统总体原理图
附录二
系统程序清单
#include<
reg51.h>
/*声明驱动信号阵列*/
charcodeTAB[10]={0x3f,0x06,0x5b,0x4f,0x66,//0 ̄4
0x6d,0x7d,0x07,0x7f,0x6f};
//5 ̄9
#defineSCANPP1//定义扫瞄信号连接埠
#defineSEG7PP2//定义七节显示器连接埠
sbitINTR=P3^2;
//定义IRQ接脚
unsignedcharxdataadc;
//声明外部记忆体变量
unsignedchar_adc;
//声明变量
unsignedchardisp[4]={0,0,0,0};
//声明显示区阵列
voiddataproc(unsignedchar);
//声明资料处理函数
voiddisplay(void);
//声明显示函数
voiddelay1ms(char);
//声明延迟函数
main()//主程序
{while
(1)//while开始
{display();
//显示
_adc=adc;
/*读取外部记忆体,目的是让ADC0804之RD=0、INTR=1*/
adc=0x00;
while(INTR==1);
//等待中断
//读取外部记忆体
dataproc(_adc);
//资料处理
}//while结束
}//主程序结束
//====资料处理函数====
voiddataproc(unsignedchardata_in)
{intresults;
//声明变量
results=data_in;
results=results*3.922;
//读取ADC0804转换结果
disp[3]=results/1000;
//取得千位数
disp[2]=(results/100)%10;
//取得百位数
disp[1]=(results/10)%10;
//取得十位数
disp[0]=results%10;
//取得个位数
}//资料处理函数结束
//====显示函数====
voiddisplay(void)
{chari,scan;
chartimes=20;
//扫瞄20次
while(--times>
=0)//while循环开始
{scan=1;
//初始扫瞄信号
for(i=0;
i<
4;
i++)//for叙述开始
{SEG7P=0x00;
//关闭7节显示器
SCANP=~scan;
//输出扫瞄信号
SEG7P=TAB[disp[i]];
//转换成驱动信号,并输出到P0
if(i==1)
P2=TAB[disp[1]]+0x80;
delay1ms(4);
//延迟4ms
scan<
<
=1;
//下一个扫瞄信号
}//结束for叙述
}//结束while叙述
}//display函数结束
//====延迟函数====
voiddelay1ms(charx)
{inti,j;
for(i=0;
x;
i++)//外循环
for(j=0;
j<
120;
j++);
//内循环
}//延迟函数结束
附录三误差分析
从0V~5V,每隔0.05V采集一个数据,共采集了101个数据(如图5-1中的测得温度一列)。
根据公式计算的每点应该输出温度(如图5-1中的计算温度一列),测得温度-计算温度的则就是产生的误差。
误差=(测得温度-计算温度)/量程*100%=0.2%
即我们所设计的数字温度计精度为2.0级,误差小于0.2%。
数字温度计数据采集及误差分析
电压
测得温度
计算温度
测得温度-计算温度
0.0
2.6
50.9
51.0
-0.1
0.1
1.1
1.0
52.1
52.0
1.9
2.0
2.7
52.9
53.0
0.2
3.1
3.0
54.1
54.0
3.9
4.0
2.8
54.9
55.0
0.3
5.0
56.0
5.8
6.0
-0.2
2.9
56.8
57.0
0.4
7.0
58.0
7.8
8.0
58.8
59.0
0.5
9.0
60.0
9.8
10.0
61.1
61.0
0.6
10.9
11.0
61.9
62.0
12.1
12.0
3.2
63.1
63.0
0.7
12.9
13.0
63.9
64.0
14.1
14.0
3.3
65.1
65.0
0.8
14.9
15.0
65.8
66.0
16.0
3.4
67.0
0.9
16.8
17.0
67.8
68.0
18.0
3.5
69.0
18.8
19.0
69.8
70.0
20.0
3.6
70.9
71.0
21.1
21.0
72.1
72.0
21.9
22.0
3.7
72.9
73.0
1.2
23.1
23.0
74.1
74.0
23.9
24.0
3.8
74.9
75.0
1.3
25.1
25.0
76.0
25.8
26.0
76.8
77.0
1.4
27.0
78.0
27.8
28.0
78.8
79.0
1.5
29.0
80.0
29.8
30.0
4.1
81.1
81.0
1.6
30.9
31.0
81.9
82.0
32.1
32.0
4.2
83.1
83.0
1.7
32.9
33.0
83.9
84.0
34.1
34.0
4.3
85.1
85.0
1.8
34.9
35.0
85.8
86.0
36.0
4.4
87.0
36.8
37.0
87.8
88.0
38.0
4.5
89.0
38.8
39.0
89.8
90.0
40.0
4.6
90.9
91.0
2.1
41.1
41.0
92.1
92.0
41.9
42.0
4.7
92.9
93.0
2.2
43.1
43.0
94.1
94.0
43.9
44.0
4.8
94.9
95.0
2.3
45.1
45.0
96.0
45.8
46.0
4.9
96.8
97.0
2.4
47.0
98.0
47.8
48.0
98.8
99.0
2.5
49.0
100.0
49.8
50.0
图5-1
图5-2计算温度与测得温度分析对比图
附录四
基于单片机的数字温度计电路元件清单
元件名称
规格
个数
电源
5V
1
电位器
1K
STC89C51
ADC0804
四位数码显示管
复位开关
晶振
电容
22pf
2
10uf
150pf
电阻
1k
10k
4
电线
若干
数字温度计设计的心得体会
本次课程设计即将进入尾声,回想这两周来的数字温度计制作经历,我感触甚是深刻。
通过本次课程设计,使我对电子设计及制作产生了较为浓厚的兴趣,这不仅加强了自己对理论知识的理解和巩固,还能提高自己的动手能力,可以说受益匪浅。
当然更重要的是,激起了我学好单片机的斗志。
本次课程设计主要分为四部分:
设计、仿真、调试。
这三个步骤在整个课程设计过程中起着重要的作用。
本次课程设计的任务是:
根据老师给出的设计题目的要求选择合适的电路,确定元件参数,对原理图进行电路仿真。
在整个设计制作过程中用到了两个软件,protues和KEIL软件。
可以说,在此之前自己未曾使用过protues软件。
而且KEIL用起来也是相当的陌生,毕竟已隔将近半年多没用此软件做板了。
本次课设让我学到了如何去运用protues软件对电路进行仿真。
而在使用protues软件设计时,我也有了不少的学习应用心得。
最能体现一个人的耐心程度,也最能学到东西的阶段还是在调试过程。
在整个过程中既要求熟练掌握设计的原理,懂得运用所学电学的基本理论,还要求善于查错,改错。
如果在调试过程中无法达到预期结果,就要从整个设计制作过程中认真分析,细心查找错误,一步一步仔细排查。
本次课程设计的大概题目是老师给出,当然我们也可以自由选择。
我在学校图书馆以及网上查阅了相关资料之后,确定了一个与目前我所学的知识比较接近且相对而言比较熟悉的题目。
可以说从确定题目,寻找原理图,到焊接调试,每一个步骤都付出了努力,倾注了我两周的心血,也从中积累了宝贵的经验,最后终于大抵上完成了设计任务。
从总体上看,这次数码温度计制作还是比较成功的,程序设计与电路图制作比较理想。
看着自己调试出的数码温度计,心里总有些许的“
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 数字 温度计