|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
基于PT100的数字温度计的设计 课程设计报告及源代码下载 0 m) N/ ^# m- n' e+ s0 m7 x
m! w- `5 ~$ L3 s" Q1 ^/ Y* v3 c7 ?9 |! [9 p+ i
以下是本报告的部分内容预览:
* E, H. ~/ j* a7 h3 [) W r-----------------------------------------------
g; j6 R1 @: ]& d n( K2 [( e- C+ O8 ]$ _) ]& I4 X! Y
3 T- j% `& k6 c& b* L6 s3 G学生姓名 |
8 t; M4 R- o4 M% v |
- O. n: R- } G1 {# \( F$ |# r班级学号 | , w, l n2 x4 p" s
|
) t3 N* t+ b9 O* X9 q4 n专 业 | 测控技术与仪器 | 6 L, `" L4 f) g$ I: S+ S
课程设计题目 | 基于PT100热电阻的温度检测系统的设计 |
0 a' h0 D$ q8 h4 W; v5 W4 m1 `( `: r; k* B. ^( w
评 3 b% P7 A2 W; H+ B& G# P
; H) a$ b7 H+ S7 F3 |* N语 |
8 f; K# e! U/ h1 u x6 V2 N- L* g7 S1 `
9 ]" K5 h/ i+ z7 j组长签字: |
. W& O; M& x% G2 i- M: L8 e3 G1 l, C/ W. C U
4 l% [9 g' |! a. q- k$ |7 E; A% F$ a! E5 F+ B7 r) `* G- a, x3 h& ?: b
9 l, `$ F7 X0 @7 \7 [成绩 | / X8 \8 j# c- @# q/ i8 s
|
4 K. L8 }! e! S9 O8 @; T6 Z8 Q
8 Q3 C3 B+ Z! y: [0 z( D
$ c/ `: h% K6 V7 G日期 |
6 W' v$ x. p r E! [! d% c/ [3 v' k
+ m" y9 E& I C7 g% d% b7 K3 _) k$ e8 q; C6 ]
201 年 月 日 |
/ ^9 n0 X& W0 ^+ ~6 c
4 J* ~: N5 D2 D; O J( Z5 m1 f
. E4 P) v: ?0 M4 d O) L( I课程设计任务书
% i+ F* O k; `( S5 q' s2 N, p, W8 N) [
- Y, Y. w: \, J* P学 院 | 自动化与电气工程学院 | 专 业 | 测控技术与仪器 | 学生姓名 | ' n$ P% \. L- Y; ~% v/ h V& T
| 班级学号 |
& J# |5 T Q, G1 g# a: m( n& R& I | 课程设计题目 | 基于热电阻的温度检测系统的设计 |
2 L* ~. j" P6 o8 j7 E5 K, B7 Q8 n. j
实践教学要求与任务: 1、熟悉所确定的题目,从问题需求、程序结构、难点及关键技术等方面进行分析, 形成系统的设计方案; 2、根据方案设计硬件电路; 3、软件编程并调试; 4、完成课程设计报告,打印程序,给出运行结果。 ; {& Q8 O M P- A
) w7 z% V4 J: X0 X$ l( Y7 V& W% ~工作计划与进度安排: 第 18 周(12 月 28 日-12 月 31 日):根据设计要求和内容查阅参考文献或资料, 提出设计方案,进行原理设计。 第 20 周(1 月 11 日-1 月 15 日):根据设计方案,完善设计,并进行硬件及软 件调试,测试,撰写课程设计报告,答辩。 | 指导教师: 5 e/ Q, ~4 k1 r: y
4 S# m5 g- F3 c3 b201 年 月 日 | 专业负责人: ; l3 A& h4 U5 X, p" Z8 W, ^
- c0 t3 ]+ E) F: J$ Q, {5 R201 年 月 日 | 学院教学副院长: 6 B* J) ?% p' |6 [' `
7 @( [2 c E0 a7 l+ `9 B8 j4 E201 年 月 日 | % V) z7 @7 \8 l# d2 y
/ p+ N4 v% z1 r T2 P5 V$ l9 L
" |7 Q' K$ ?& o& E4 T1引言...........................................................................................................1
: I( j. h/ @; |1 d9 a L# P9 ]3 Q0 { i9 J
2系统总体设计方案.................................................................................2
f' n* t' N2 `. w
7 K# F( R( D5 E* J% X5 {. e2.1方案设计.......................................................................................2
0 C& _8 H2 E8 f" u" w5 O* }) X2 _/ ` u9 d' ^
2.2工作原理.......................................................................................2 . s) r- L) s2 M/ a. N
, U: V. N* }# p$ v+ u3系统硬件设计.........................................................................................3
9 B9 t: ^9 K# z( U2 Y) I" j1 J0 W. f# D( ~& s# K
3.1铂热电阻简介...............................................................................4
6 f# E7 c% o3 d z7 Q* J) s: B# H+ K- ~" ^
3.2运算放大器 LM324简介...........................................................5
" N8 H f! p h1 ]0 \7 S- d0 k+ ~
3.3ADC0804芯片简介.....................................................................6 5 `4 [. q" h" P
) @ }5 p( {' P7 q2 a1 y8 g
3.4控制电路......................................................................................7
6 F+ @) D8 ^6 R& H
& k6 W& v/ l" Z! _; l" G3.5显示电路.....................................................................................10 i8 r8 P" j; `( G- p( C7 l' Y' R
0 r1 f9 |$ l6 T& t7 n" }. q4系统软件设计........................................................................................11
4 w4 {) _3 U2 [* b4 l7 ~! v$ ]- H& ?6 u4 O6 j# [: x
4.1软件介绍.....................................................................................11
, I4 K' n. ?; _9 d3 v8 T
' S9 k) r6 X* J( ~3 ~# S- y4.2程序流程图.................................................................................13
, c' @! o9 Q, e- p$ E
+ K# j3 ?7 ^3 ^5元件清单...............................................................................................14 1 D3 w9 Q7 P8 j6 [0 _
2 g7 e9 u* I3 U$ Q) X
6系统调试与测试结果...........................................................................14 ( n; V: O' j* |" g: X6 y- A
$ d3 O0 A$ J% ~7测量结果分析.......................................................................................15
: M, U; g4 y9 Q* W
9 ?% x* u/ o8 ~3 A) ^3 e0 L7.1结果分析.....................................................................................15 . Q' S$ x$ L) Y8 j
7 G3 @. `! K( g7.2误差分析.....................................................................................16 7 g3 e. F8 J8 A" @" t: a! d4 L
. \8 }8 M" T2 l; T: @, G8总结........................................................................................................192 _- |) L' J, m9 H2 w1 F% E
) g2 b1 U+ ^3 U% q2 T
# y/ O: l0 ^$ W# H
9 Y* w! \0 Q8 U- p0 C( h1 c7 J
5 L) A5 b# Y3 k2 W$ U6 }+ f* e" }* P3 \# L. c
, U' H4 l3 x9 Q( U/ j L" G7 n6 G, \
" x9 b, q2 }4 I
5 w" K7 n' ~9 t! v, O% E1引言 9 ~! ~; Z% ~0 y9 H
6 l, Z$ J8 X- v6 W3 g
在工农业生产中,温度检测及其控制占有举足轻重的地位,随着现代信息 技术的飞速发展和传统工业改造的逐步实现 ,能够独立工作的温度检测和显示 系统已经应用于诸多领域。要达到较高的测量精度需要很好的解决引线误差补偿 问题、多点测量切换误差问题和放大电路零点漂移误差等问题,使温度检测复杂 化。模拟信号在长距离传输过程中,抗电磁干扰时令设计者伤脑筋的问题,对于 多点温度检测的场合,各被检测点到监测装置之间引线距离往往不同,此外,各 感元件参数的不一致,这些都是造成误差的原因,并且难以完全清除。 单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,成为 自动化和各个测控领域中必不可少且广泛应用的器件,尤其在日常生活中也发挥 越来越大的作用。采用单片机对温度采集进行控制,不仅具有控制方便、组态简 单和灵活性大等优点,而且可以大幅度提高被控数据的技术指标,从而能够大大 提高产品的质量和数量。 由于科学技术的飞速发展,特别是微电子加工技术,计算机技术及信息处理 技术的发展,人们对信息资源的需求日益增长,作为提供信息的传感技术及传感 器愈来愈引起人们的重视,而综合各种技术的传感器技术也进入到一个飞速的发 展阶段。要及时正确地获取各种信息,解决工程、生产及科研中遇到的各种具体 的检查问题,就必须合理选择和善于应用各种传感器及传感技术。如最简单的温 度的测量,有热电偶、光纤温度传感器等等。但是,热电阻是开发早、种类多、 发展较成熟的感元器。热电阻由半导体陶瓷材料组成,利用的原理是温度引起电 阻变化。热电阻器是感元件的一类,按照温度系数不同分为正温度系数热电阻器 和负温度系数热电阻器。热电阻器的典型特点是对温度感,不同的温度下表现出 不同的电阻值。正温度系数热电阻器在温度越高时电阻值越大,负温度系数热电 阻器在温度越高时电阻值越低,它们同属于半导体器件。随着半导体技术的不断 发展,热电阻作为一种新型感温元件应用越来越广泛。他具有体积小、灵度高、 重量轻、热惯性小、寿命长以及价格便宜等优点,最重要的是作为温度传感器的 热电阻的灵度非常高,这是其他测温传感器所不能比拟的。
: U& P7 u4 N- @2 b! `5 T6 Z+ C4 D/ n% ]. i( q, W/ q- x- s; L3 O
) {- }0 Q* o* Y+ S6 g
本课题基于热电阻的以上优点,并利用单片机和放大器等元器件,在 protus
9 U9 f% `+ H' F, J$ i4 `' k+ o* e" \6 q" F {0 e! Q {/ \5 g5 l
和 keil 软件环境下,对热电阻的测温系统进行仿真。
% s* G# @% s+ ^" f, i
5 \: Q3 R: [( o, O! E; M
( i1 {2 o" i' |
" t' ~4 _* ]1 |$ ?2 Q2系统总体设计方案
8 o, X3 a; k# M+ [
$ e* s( V% @+ m- G3 z3 v
4 O- g# D l& W* i
% h& O( F/ q7 z3 C7 o: O: W2.1方案设计 使用热电阻 pt100 温度传感器利用其感温效应,热电阻随环境温度的变化而 变化,在电路图中将电阻值的变化转换成电压的变化,再将电压值作为输入信号 输入至 AD 转换器中进行模拟信号到数字信号的转换,其输出端接单片机,向单 片机内写入源程序,将被测温度在显示器上显示出来: 测量温度范围−50℃~110℃。 精度误为 1℃。 & P# G3 B [; L7 }0 C U
, K! m1 @) X( j# q. m- T& j3 @& M
/ T* k+ j/ ^! Y5 ~1 G y5 y+ [2.2工作原理
7 Y* A4 n, v$ N- c6 L1 }' t% |, h( j4 ?% O- S3 e3 d3 e
/ j# }* Q2 `# g* v: P' m& [
本题目使用铂热电阻 PT100,其阻值会随着温度的变化而改变。PT 后的 100 即表示它在 0℃时阻值为 100 欧姆,在 100℃时它的阻值约为 138.5 欧姆。厂家 提供有 PT100 在各温度下电阻值值的分度表,在此可以近似取电阻变化率为 0.385Ω/℃。向 PT100 输入稳恒电流,再通过 A/D 转换后测 PT100 两端电压,即 得到 PT100 的电阻值,进而算出当前的温度值。 采用 2.55mA 的电流源对 PT100 进行供电,然后用运算放大器 LM324 搭建的
" `) m6 d$ I' y6 w/ F% {6 i/ K: Z3 P* D! ]1 B; L0 v7 M
- J7 {4 H6 M' o
同相放大电路将其电压信号放大 10 倍后输入到 AD0804 中。利用电阻变化率/ p4 f' z% u& a5 c5 n
4 Y' Z! O( p7 T( U) u$ h. P) y; r* y5 a2 O1 J+ L5 D
0.385Ω/℃的特性,计算出当前温度值。 测温系统如图 2 所示: / p) ]1 N1 n' @% b; b; y
" o! c7 y+ ]# ]2 N% z7 N
图 2 温度检测系统
5 K8 R6 f6 ^" a4 l
- m. d. G# }3 f* N# i0 ?如图 2 所示,热电阻 RT 和 RA1,RB1 和 RC1,可以改变电阻 R2 组成一 个测温点桥,在温度为 20 度时,调节 R2 使点桥达到平衡。当温度升高时,热 电阻的阻值变大,电桥失去平衡,电桥输出不平衡的电压,经过滤波后,输入运 算放大器,进行放大处理。 3 Z! q: n6 M) G: q3 w
* p3 Q: |% O/ O+ f, L* g: `( R' Z
# n& u1 U M- {8 k
3系统硬件设计
% u) i. q# A% ^+ H; T) R, g
( K7 o& u5 ~! A& n5 D3 l3 [/ l% F" p' y1 {& O
# A1 G! z; I# Y3 e
系统硬件连接图如图 3 所示: " E( r' u. s* ]5 Y+ l# l) ~
. o! D) _. L3 ?" D/ r/ B
% X+ b: B; i! U# x/ ^( h A" {
0 o6 S3 [4 @+ f5 q0 e- u1 c; ?3 T图 3 系统硬件连接图 * \7 `8 V! ]! k# T$ K) A) i- C, L I
! ?2 l: F+ i: r
0 M3 D) o5 u( a5 d C
5 f) H- F G' X9 o
$ h' L4 d8 H: L+ B; C8 P: y现对各部分硬件进行介绍。 6 H" [, [1 B- I. |: g0 d& c
/ G) ^) B5 _! e" ]. l: |) A4 W+ e" }2 h/ H1 b
# z6 ^, i ]% v# T2 ?: Z3.1铂热电阻简介 ! S/ m/ j9 `6 o1 L, J& a
3 ~# Y/ E, d9 f* i) Q
4 f1 [- D) ?/ ? ~. {# w" i3 V4 }+ Z& o
pt100 是铂热电阻,它的阻值会随着温度的变化而改变。PT 后的 100 即表 示它在 0℃时阻值为 100 欧姆,在 100℃时它的阻值约为138.5 欧姆。它的工业 原理:当 PT100 在 0℃的时候他的阻值为 100 欧姆,它的的阻值会随着温度上升 它的阻值是成匀速增涨的。
+ b1 `+ T7 _- K
3 e: {6 J n D3 ?& @7 k3 ]. s& _& r0 M+ b( U4 C. @0 F2 b! I t9 o
5 O0 q( j+ p1 P/ z1 R6 K
式中,A=0.00390802;B=-0.000000580;C=0.0000000000042735。可见 Pt100 在 常温 0~100℃之间变化时线性度非常好,其阻值表达式可近似简化为:RPt=100 (1+At),当温度变化 1 ℃,Pt100 阻值近似变化 0.39 欧。
9 }) f0 A4 U( i/ {0 S c" D' w9 z- Y3 G
- d# Z- @" r* \( J: G) H2 F2 O/ K; N* L- _
图 4 Pt100 的分度表(0℃~100℃)
2 l" B4 [: d& K) J' Y3 D6 z- v, u- f. r1 F
6 r, U9 }# ~8 P! {2 |1 z7 O6 ]: ~# T- [% N
* U( v5 q5 \# |1 o) `! \6 w' g' _. N: V; [9 y0 f
) w6 ~, J% Z- k4 k) Q图 5 电阻温度曲线图
& j) u: f: f8 C, U) |4 o7 D0 z" S
4 w5 |0 l8 M/ z' u6 }7 I! m9 i$ h1 J9 }
3.2运算放大器 LM324简介
* f6 U8 K' I8 R3 c0 q3 n8 S# d5 x/ l2 ~" A7 X6 C3 Q( p* T0 m# ~+ |
! W; }2 y7 S u4 [/ n* f
4 J# d! C s5 ^7 Q+ j0 a7 ]( C$ I
LM324 系列器件带有差动输入的四运算放大器。与单电源应用场合的标准 运算放大器相比,它们有一些显著优点。该四放大器可以工作在低到 3.0V 或者 高到 32V 的电源下,静态电流为 MC1741 的静态电流的五分之一。共模输入范 围包括负电源,因而消除了在许多应用场合中采用外部偏置元件的必要性。每一 组运算放大器可用图 1 所示的符号来表示,它有 5 个引出脚,其中“+”、“-” 为两个信号输入端,“V+”、“V-”为正、负电源端,“Vo”为输出端。两个 信号输入端中,Vi-(-)为反相输入端,表示运放输出端 Vo 的信号与该输入端 的位相反;Vi+(+)为同相输入端,表示运放输出端 Vo 的信号与该输入端的相 位相同。如图 6 所示: 图 6 LM324 引脚图 图 7 是 LM324 运算放大器的工作原理图,同相交流放大器的特点是输入阻抗 7 V2 A2 f- Y2 y$ k
$ v$ X5 M3 y# f: H7 P6 `9 j9 ?& o& V* Z( V% H& n
( |0 t1 `5 G* r) L
, d8 @) X' a; j- I B$ P高。其中 R1、R2 组成 1/2V+分压电路,通过 R3 对运放进行偏置。电路的电压 放大倍数 Av 也仅由外接电阻决定:Av=1+RF/R4,电路输入电阻为 R3。R4 的阻 值范围为几千欧姆到十几千欧姆。 图 7 LM324 原理图 ) F$ ]* ~2 g/ S" C' C0 l
- P- N: N" I0 }
8 `& b" X: E4 `5 r* J
3.3ADC0804芯片简介
, _5 \; _8 c- d* y& X$ V# m% L) |
6 A0 x4 ^- E& F" ?0 n% r, B5 ^/ ]$ M
k7 K0 B4 o2 H W
ADC0804 是用 CMOS 集成工艺制成的逐次比较型模数转换芯片。分辨率 8 位,转换时间 100μs,输入电压范围为 0~5V,增加某些外部电路后,输入模 拟电压可为 5V。该芯片内有输出数据锁存器,当与计算机连接时,转换电路的 输出可以直接连接在 CPU 数据总线上,无需附加逻辑接口电路。ADC0804 芯片 管脚如图 8 所示引脚名称及意义如下: 图 8 ADC0804 管脚图
. q2 r$ s$ C0 c3 W: s$ j8 w6 M/ i' p- Z7 k# @. h: }, k. p7 B
! S9 P. b O$ }- x; Q/ ?6 g( [
4 y9 c) J. d5 P$ k( f
2 t$ _% u* D# ]: { s+ m: G0 W
1 t* X: p3 p. @) W' wVIN+、VIN-:ADC0804 的两模拟信号输出端,用以接收单极性、双极性和 差模输入信号。
2 u9 ~# H$ Z; V2 H! Z9 |/ e R0 i* n# q7 @0 I$ w. v2 b
D7~D0:A/D 转换器数据输出端,该输出端具有三态特性,能与微机总线相 接。 AGND:模拟信号地。 DGND:数字信号地。 CLKIN:外电路提供时钟脉冲输入端。 CLKR:内部时钟发生器外接电阻端,与 CLKIN 端配合可由芯片自身产生时钟 脉冲,其频率 为 1.1/RC。 CS:片选信号输入端,低电平有效,一旦 CS 有效,表明 A/D 转换器被选中, 可启动工作。 WR:写信号输入,接收微机系统或其它数字系统控制芯片的启动输入端,低 电平有效, 当 CS、WR 同时为低电平时,启动转换。 RD:读信号输入,低电平有效,当 CS、RD 同时为低电平时,可读取转换输 出数据。 INTR:转换结束输出信号,低电平有效。输出低电平表示本次转换已完成 。 该信号常作为向微机系统发出的中断请求信号。 % s1 s- q6 Y {: r5 d
9 S: X+ Y/ G: n$ i
6 B |' M1 Y. h1 ~3.4控制电路
& {) ]. i5 \$ S4 {) ~" _4 W" e) z1 j& D% c
AT89C51 是一种带 4K 字节 FLASH 存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS8 位微处理器,俗称 单片机。AT89C2051 是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。 单片机的可擦除只读存储器可以反复擦除 1000 次。该器件采用 ATMEL 高密度非 易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由 于将多功能 8位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种 高效微控制器,AT89C2051 是它的一种精简版本。AT89C51 单片机为很多嵌入式
. H# ]# T3 h7 M1 W* P: l' Z3 T& j控制系统提供了一种灵活性高并且价廉的方案。AT89C51 引脚图如图 9 所示:
; F6 A2 v! M v" ~0 p3 H8 W: J5 ^5 h' z5 _: w4 P
( Q+ D7 Y8 } `/ q1 _- b* }
- M# l& t/ D+ d3 i' f; k; P+ H. E
. V9 d/ w5 F) H/ p/ N, A
, s) S7 \7 ^$ \' z) O& j4 uVCC:供电电压。 GND:接地。 图 9 AT89C51 管脚图
; _1 ^& E' `0 \6 o9 O- Z% s2 i8 Z3 o0 C7 W! W
! N! k6 U. o$ ` `( ?; @$ B- Y
$ w S% S2 \" o; l5 N
/ X6 m2 ~! I$ Y! X& x) z
P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当
$ C9 t X9 T6 \) o' Z7 f
# H5 u$ h2 ^* eP0 口的管脚第一次写 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 编程和校验时接收高八位地址信号和控制信号。
. e5 e# @2 c8 ~! e
& f; }& M' F3 O# E
P& V- D0 O" n9 T; xP3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL : J) n1 f, M5 a! k# F; b* U/ K8 z( w
, A' X8 u: U+ t& m8 U2 H
门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输 入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。 P3 口也可作为 AT89C51 的一些特殊功能口,如表 1 所示: 3 [6 M, {) H* Z, A* D
0 b# @, }+ i/ w4 D5 w# h) g1 I( l1 N
表 1 P3 口第二功能表 2 q' ]0 ~) Z5 z$ [: }
1 }* d% r" N: S3 u
P3 口密位 | 第二功能 | 功能 | P3.0
7 X/ [, C4 \3 LP3.1 1 s( q& Z- l9 I/ X2 J+ l9 K! ?
P3.2 # u2 _( |2 k$ Z. t; Z( J
P3.3
g1 c+ @: N k' C* M( h2 fP3.4
( d7 i3 [: ?6 l3 x, A) QP3.5
3 A7 x, l: l9 q. g' k0 b( H# DP3.6 & b6 x$ z9 \3 e' E$ N
P3.7 | RXDTXDINT0! K7 q+ f, \ X+ e" }' v: m
INT1 # j& A* a! J5 J; W9 F: ~ J5 m
T0
; {/ S/ f V. \% F% X0 u1 h# \T1 0 D+ J0 n" _4 ^
WRRD
. b- b* ]5 {! v | 串行输入口串行输出口外部中断 0外部中断 18 K- Y+ b+ ]8 h" @3 V: Q/ D
计时器 0 外部输入计时器 1 外部输入外 部 数 据 存 储 器: w& `8 `" ]$ n j5 m' q
写选通 & h" |! D( e0 ~5 c, ~
外 部 数 据 存 储 器读选通9 S1 w1 P$ y1 @: }. g$ I0 C8 f1 {
|
+ [1 [9 a* R, J4 B( `& ]7 j- v5 ~. B
+ [) F; `$ ]% X3 g x7 z
) Q: B! w$ Y; m: O" L4 |0 Z4 fRST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电 8 q9 E' }& B- X6 K+ X
6 Z/ [+ L4 B( L3 S, b4 [" ^
平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的 低位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不 变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外 部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时, 将跳过一个 ALE 脉冲。如想禁止ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果 微处理器在外部执行状态 ALE 禁止,置位无效。 PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机 器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/PSEN 信号 将不出现。
4 Q l% F7 I/ v ?" A! w! C0 X* P
, R# T3 s5 A" W. J) o
EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH), ; N% g# c* c3 w, O, F% ~, D0 s, `
2 _, o# K9 y2 k3 k
不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当
6 o; n; \. y; `* M3 W
7 T2 t% p! J$ F6 T/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于 施加 12V 编程电源(VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 晶振电路如图 10 所示:
2 |0 A, u, @& U5 M# K% `7 U h8 ]1 B
图10 晶振电路 " j' Z9 ?2 v2 r3 U
# d+ S* c: F) A" K
& N4 A! t# F) m& r: y$ ?4 |
/ {5 m2 K( x; ?6 \. O1 f1 G, S9 E" ]6 K( h0 v* @
, Q$ ]0 N) O2 N
3.5显示电路
1 n* T/ x& l: b1 M- F* g2 R7 _) h) [' s0 x/ N/ n
8 C' |7 }% E0 l3 v
本课程采用 MPX4-DCC 作为显示器。该显示器由四个八段数码管组成,如 图 10 所示,该显示器是共阴极显示器,A、B、C、D、E、F、DP 与 P0 口相连, 1、2、3、4 与 P0 口的 P0~P3 相连。所以,当显示器开始工作时,必须向 P0 口 写 0。通过控制数码显示管的位选,来实现显示温度的目的。
5 @7 ]" T- E0 j% N" {; z" f2 `6 S- U0 m* z+ `) t3 N
9 J; S$ W4 s s' s
$ S2 `3 Z8 A5 U- s# P
, n# j% H$ [. i! e
+ |9 X* ]0 Z H- D7 c+ g' v& m: G: v, M- H: M, {# D
" T' z# }. \0 g# ]& N$ M
& d2 j4 w4 P4 U1 O$ z* q# O
图 11 MPX4-DCC & o- I( t% `( i7 u- `, |
- q3 |, r9 p/ T& [- p3 Y0 D3 n
, }3 ^. T- a$ a" z9 o
. g* a- ^/ e# h2 Y s2 Z) o, y0 t4系统软件设计 E( |: R6 E4 s
: Z, I$ f7 v% T4 l# O: z. r( X9 M. e0 C
, p. |) J! s% q7 _+ J
9 }6 m' H e- f4 ^# k# E4.1软件介绍
# r, a L: K( m4 F8 m1 \ _' R5 q9 h: w) P( v& m. B5 i( u
( n6 Y" ?* O; O5 i, V$ H) y: m4 E
6 l' a. N9 p: |1.Proteus 软件
" A. }* O$ A1 _! h2 c( J
! N$ f8 g1 y6 V3 r: o7 uProteus 是世界上著名的 EDA 工具(仿真软件),从原理图布图、代码调试到 单片机与外围电路协同仿真,一键切换到 PCB 设计,真正实现了从概念到产品的 完整设计。是目前世界上唯一将电路仿真软件、PCB 设计软件和虚拟模型仿真软 件 三 合 一 的 设 计 平 台 , 其处 理 器 模 型 支 持 8051 、 HC11 、 PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086 和 MSP430 等。 Proteus 软件是英国 Lab Center Electronics 公司出版的 EDA 工具软件(该 软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它 EDA 工具软件 的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围 器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教
5 a% o( y: y6 ^% x' b7 e
1 K+ A4 `6 k; n8 [6 z8 b, v# p6 ~6 Q7 o6 X% i4 @
% @' ~& u, g4 }. k
, M+ x- @' Z) p2 o( f) E学的教师、致力于单片机开发应用的科技工作者的青睐。 ( U) n% C1 C0 v& i& C
, `' p) d5 U: F3 G
在 PROTEUS 绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以 在 PROTEUS 的原理图中看到模拟的实物运行状态和过程。 PROTEUS 不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行 过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示 实验难以达到的效果。 它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程 度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检 测、电路修改、软件调试、运行结果等。 课程设计、毕业设计是学生走向就业的重要实践环节。由于 PROTEUS 提供了 实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验 室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养学生实践精神、 创造精神的平台 使用 Proteus 软件进行单片机系统仿真设计,是虚拟仿真技术和计算机多 媒体技术相结合的综合运用,有利于培养学生的电路设计能力及仿真软件的操作 能力。实践证明,在使用 Proteus 进行系统仿真开发成功之后再进行实际制作, 能极大提高单片机系统设计效率。因此,Proteus 有较高的推广利用价值。 2.Keil 软件 6 V# u4 i: [, c+ \! Q
% e) _/ I! V, \8 ^/ a
Keil C51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件 开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明显 的优势,因而易学易用。Keil 提供了包括 C 编译器、宏汇编、链接器、库管理 和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境 (μVision)将这些部分组合在一起。 3 [, c9 Z+ v" v4 O5 ^" @
$ x3 {1 ?; G5 i z+ |4 V
KeilμVision2 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语 言软件开发系统,使用接近于传统 C 语言的语法来开发,与汇编相比,C 语言易 学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,可以在关 键的位置嵌入。Keil C51 标准 C 编译器为 8051 微控制器的软件开发提供了 C 语 言环境,同时保留了汇编代码高效,快速的特点。C51 编译器的功能不断增强,使 你可以更加贴近 CPU 本身,及其它的衍生产品。C51 已被完全集成到μVision2 ! I& \1 ^; G- U, ~3 b
/ L/ @! @8 S$ [6 M& R
8 B7 t2 B& ?$ p E- h O/ h; [( O' n$ W% f8 e0 x/ w& @
3 T! x& B: S( f4 g
的集成开发环境中,这个集成开发环境包含:编译器,汇编器,实时操作系统,
1 Y, T0 X- w7 ?: M9 M% H! [6 f7 R$ |, T/ [- a# \' P! W' F) H8 c
项目管理器,调试器。μVision2 IDE 可为它们提供单一而灵活的开发环境。 7 C* y& B& h# U2 X
- M; y- m7 _4 K4 T
& K! K* _# {5 G5 X9 u
6 c3 j" @! ?. u7 [ F! {4.2程序流程图 主程序流程图如图 12 所示: ( }2 }5 ?3 |0 o$ O& j5 m5 G* K
, |7 e& B0 n( k/ B9 T& z' c' o* d* f( y. O F* _
5 s* h2 o! y, @5 A- B K
$ H5 A1 N( E( b" L
5元件清单 6 H: T E$ D$ @
( |' c3 C7 H' p6 [2 u
; c" _9 K* i8 ~4 R' G所用元件如表 2 所示: 表 2 元件清单
0 T; K9 ^4 ]6 z8 @8 j/ e- H* c6 P+ O+ w& m* @
名称 | 规格 | 数量 | 普通电容 | 16pF | 2 个 | 晶振 | 12MHZ | 1 个 | ADC0809 芯片 |
( ~1 y. e4 {3 D6 E( B( p | 1 片 | AT89C51 芯片 |
) i' [7 L) a6 |) m4 G1 f. `1 |$ ?% K | 1 片 | 运算放大器 | LM324 | 1 个 | 电阻 | 16K | 1 个 | 电阻 | 10K | 4 个 | 电阻 | 90K | 1 个 | 电容 | 20PF | 1 个 | 恒流源 | 2.55mA | 1 个 | 热电阻 | PT100 | 1 个 | 信号发生器 | 100u16V | 1 个 | 显示器 | MPX4-CC | 1 个 | 电压表 | -10V-10V | 1 个 | : s7 E" T4 P+ |" j5 I
1 v/ l; M6 g, ? r' M
* S5 O- F5 @( M! H* T: g
* o+ S. U- B! }) @' q* Y/ v0 G$ d6系统调试与测试结果
9 m/ p( `6 G6 r* v3 K# z8 m9 s0 ]8 p* Y0 E
9 v. }0 A4 d" e
( }& P; p+ O O+ I$ c- g调节热电阻的“↓”和“↑”,观察显示器的示数找到环境温度与示数之间的 线性关系,不断调整程序使环境温度与示数相对应。 在这一环节,示数与温度本来就是呈线性的,寻找示数与温度之间的关系, 即找到示数与环境温度相差多少。在原理上,显示器上的实数是指经 AD 转换后 的电压值,并非环境温度,所以,示数与环境温度必相差一定的值,只要找到这 个值,并在程序中稍加改动,显示器上显示的数就可以看作是所测的环境温度了。
5 P$ b6 ]/ b4 t3 F+ o+ T
: T# @- T1 ]; a6 Z" L. [
3 \6 D/ g8 Z: C! Q
* t8 t2 q0 w# @" r3 L- F# H
# X) P% D6 C* M9 i; L# X7测量结果分析 ( J; x8 Q5 R/ z3 \7 q5 v# Z( i
+ P& S7 L# w$ W+ z0 k, _1 ?
& g, W+ ^4 f0 {6 z5 M& |% p; z+ L' X; R
: E5 q/ k+ @8 I# t0 W7.1结果分析
" v! m: K" P* m2 R% x. J' _3 L
9 H) }$ @* _. B' y+ F; O# E! p7 A2 K7 `1 L4 c4 A6 M7 L
" I* d( @. @# y3 w6 ^, G$ C: `
% {+ L% x& P! y) k
当环境温度大于零℃时,测量结果如图 13 所示:
3 L* ]' q9 L# V
# m0 q' U3 p: F8 M
- _! ?9 f2 E5 \, ?. N$ M. E0 x; C d3 ~2 \
7 `$ n$ i2 s2 U* ?# t/ L9 k7 h/ F1 ~
/ q" r( f4 {! G! w. ^# S
. z/ y, Y/ C: S: [! u( J图13 温度大于零℃
; i0 i2 t( Y" X" j+ Z* a% ?) |' H9 w2 r3 r/ t$ f9 P
2 ]) w1 H/ \# H7 j9 O `8 H4 k+ a) F1 N7 |
; o. G1 e3 v, x3 f
当环境温度小于 0℃时,测量结果如图 14 所示: N- ?8 {7 M; u1 o
* S, U4 W. R! P
7 I+ w) C; X4 V+ T5 ]4 r
/ Y/ S* x; R- a/ G5 Y5 ~# D1 `. M% w5 V1 \
- ` m+ k: a+ D4 z2 T6 A. I- H
o% ]2 g1 R3 v
$ ]& e5 c e7 `
' B% B' I3 s! D5 W! ^图14 温度小于 0℃
, i @! g; v3 B: `' e! E
5 v7 |, F) B, w/ D. ?) L
/ x) p$ k6 k7 C3 ?% Y# m9 d: {( ?' C1 J+ K
7.2误差分析
8 A0 }4 r) [, D, v1 D! f5 D# q# z; \5 Q; S7 Z- p& c; X# c) Z
: S6 q4 n/ Y6 ?( m" N
由于 ADC0804 为八位 AD 转换器,精度不高,而且 PT100 的阻值与温度并非 纯线性关系,所以,本系统必然存在一定的误差。下面对本系统的误差进行分析。
' C0 s" N" K) s5 ~- j0 z/ u0 i
* K) \, @( U3 k( R- W$ H% B- e5 e- l& Q0 A8 C
n3 s/ T2 x8 Y! a7 h/ R* ^2 e
E2 H2 S* s* F8 r* c/ O6 k* B9 V/ y
图15 环境温度-26℃,测量温度-26℃ 4 m1 h* e" K( u) w% c) d
/ c! U, y1 o$ B/ j( ?4 I* k) E
; b. _* \! X) o, R% O
! V* \% a; U0 g1 Q$ k
) T( Z; b3 r- {) y2 d6 V' {: ?图16 环境温度-16℃,测量温度-18℃
# @/ b6 v+ z( b: L3 s7 T+ y& q
/ J& L. N. e4 L" C* B$ [% L9 P# ~) {- J3 w5 z8 E( z) s$ a
2 o) o/ O4 F1 ]
- K4 w$ W* `/ w& n) n5 p* ~( t
) ?) \' O; a4 \& n1 E+ _图17 环境温度 0℃,测量温度 0℃ " v4 `; V3 ]6 R- h/ p/ T
# j- ^- _4 |- E
( x, V! p& T6 V. X$ G3 v6 v7 ~: a7 B2 ]- k) t1 y( i0 p
图18 环境温度 10℃,测量温度 10℃ 6 Q; j, Z* J/ Y% ?. z
$ g2 w c, n. B) |' v1 B* Z L( _
; K+ J0 ~( p% n, `$ ` f5 J
& |; H' ^/ L0 C; y7 k9 E# C+ e- r0 o* S% F
2 R, d9 Z l8 k( p5 r6 z3 @# I! U+ z2 }) _3 G
6 l2 j6 t$ W5 s2 L6 l3 X$ Y
9 S4 M& G5 f E- x4 L# c( ?
0 U. g* }# J" K, V1 x* E7 H+ M+ D/ t
图19 环境温度 36℃,测量温度 36℃ ( E" L9 [6 j9 o( w; W
; m, B. f& F( V4 g0 h& r: i( d+ U3 n! _- T4 p* q
; m) c9 E) w( U: m
图20 环境温度 54℃,测量温度 56℃ ' X6 B t6 I8 c Y
- E2 u: W" b/ f6 u3 p
, E* x9 K4 q6 S7 _2 Q
& P( l$ B' A- a; }" l8 x4 y+ r/ A; q) D( |3 o; {+ \
- u) Q+ r( _ \, A% a( O$ E
图21 环境温度 66℃,测量温度 66℃ $ y$ u( `4 u; T: l* n/ e2 A
& P3 q( d. O5 M& D& ]2 M) m; I# x
! l4 o+ s# m, z7 t8 S$ p3 {
$ l- M, W( z2 |$ y
1 t5 T5 f- }* g8 V
; u# `/ u" L V图22 环境温度 75℃,测量温度 74℃
) ^4 T3 n* ?' y- X' K
' K' a& f& ?$ B. z9 |7 M. ] }! z0 W
6 I0 D$ {5 A4 _, ~1 k9 S$ _7 s3 }. \3 M
由图 15—图 22 可知,本系统的最大误差为±2℃,由于本系统的测量范围 为-50℃—+110℃,所以,本系统的线性误差为±0.0125。 ' c- g/ y' Q0 E# E' F. E
3 l' C$ d; `: b3 Z
8 l" }) C7 v$ y5 c7 }
, k4 j" G& X0 e& M) b. u. f2 C& h( R
0 A* D y L+ w: R8 r o b' X8总结 8 r8 @$ r: V& Q6 t+ v6 u
& q; U. a: q$ O x1 A9 C
数字温度计是为了测温而设计开发的。在单片机技术与热电阻的巧妙结合 下,可以有效测出温度,并实时数字显示。 该系统虽然设计比较简单,但是对所学的知识应用的很多,对锻炼实际能力 有很大的帮助。在查找资料和设计的过程中,对热电阻传感器、基本的测控输入 通道、基本的信号调理电路有了比较深刻的认识。由于时间有限,并受 ADC0832 的精度限制,目前只能测量室内的基本温度,再加上 PT100 的线性只存在与理想 状况下,实际操作中会产生一定的误差,以至于不能达到更高的精度,有待提高。 6 i9 W2 |1 M0 C- V# B! ~0 _
^. ]6 Q/ e; b) s' o. D- H k6 n) v8 _. Z% ]
0 W, q M$ [$ {. I1 o% e
+ ~/ N+ `6 N6 [, h. m# x) W
参考文献:
% T8 J5 D9 x" t9 n( h5 U# A" [: M1 I6 h3 J. v
【1】黄贤武,郑筱霞.传感器原理与应用.第二版.北京:高 等教育出版社 % s( N9 l/ _& z$ B2 Z8 v. [6 ]. }
) ]) x7 p7 e4 A$ h; N【2】梁福平.传感器检测原理及技术.武汉:华中科技大学出 版社 ; V: B! ^+ c. N9 x: u: O
' d8 b, |7 c$ U! E4 l1 t
【3】康华光.电子技术基础(模拟部分).第五版.武汉:华 中科技大学出版 ( g% H5 I4 s6 v* L
源程序:
8 L4 }* r6 C: B#include
! E$ f: R& f3 z#include$ i/ J( H% \( A+ d$ k, A5 H
sbit rd=P2^1;
; B5 ~ M1 Y: isbit wr=P2^2;
5 O2 q- F# i ], P1 I/ c, e! U. N5 \. {sbit led=P2^3;
+ K4 A5 ]1 ~& {: d2 @( h9 |. {bit f=0;
; r) N, D+ Q7 x, d2 g#define uint unsigned int
6 w/ f! K* X8 r2 \#define uchar unsigned char, z& _$ B: D# p6 X5 U0 A
uint bai,shi,ge,a,n;
8 X& l; ~+ j3 x1 ?& n: D* kuchar v; # W/ S% n& Y, y8 v
signed char x;) F3 C2 y# ]4 X7 L
uchar code table[]=9 Z1 d1 A3 \- L/ `5 T5 c ?
{0x3f,0x06,0x5b,0x4f,
. E! V: N5 b( J0 i$ \# Z5 C7 C 0x66,0x6d,0x7d,0x07,
; Q9 [# o+ l5 q3 X, c. | 0x7f,0x6f,0x77,0x7c,
- s' F1 H, K# R3 W3 R+ `9 c2 s 0x39,0x5e,0x79,0x71};
! \1 H; T8 y8 d: } uchar code table1[]=$ u* Z( c' f, z% u% D
{0xbf,0x86,0xdb,0xcf,7 X N6 F! U `+ \
0xe6,0xed,0xfd,0x87,: `- w3 l; \, d5 u6 ~% a
0xef,0xdf,0xe7,0xec,
/ }; p6 F! F" J9 s6 V1 O& b7 k 0xb9,0xde,0xe9,0xe1};, a4 m. i: z7 f% c3 I
void delay(uint);
8 Y* j0 k- d# j l' i/ ?void display(uint);
4 [' w# t6 {; I) b- P3 K8 O& ]void main()! t3 U+ k" U' W$ m& w, m# W
{
, N1 r2 A0 G) n" ]5 } while(1)
$ h5 u/ N& h! N: g& K8 w# a {
/ [4 E6 A/ M, t wr=0;; b" H6 C* D- ^5 L6 P8 \
_nop_();/ ~8 Z$ b' X2 F# D
wr=1;
* w8 i) q: e# r) t$ a display(x);' h" z5 T- w. w/ \" C
rd=0;
$ y8 G$ h6 S2 j# @, W- f& | _nop_();
8 e7 K; \; W( A3 L! u) v# C4 I' X v=P1;
% G) d% P( ^7 t. s8 i+ t5 f if(v>=133)
6 w, x! i: j6 T: F+ y( K5 D5 g0 x: T {
6 W$ o2 D f* w2 D' ?& F3 W( g x=(v-133)*2;
) d; t) H2 s- S: T3 M f=0;5 v$ `3 b& w! \, b
}
: K) @$ O( g; B0 d6 ? else
' [# {1 o1 G& W$ P0 H {
; k8 p; g+ X. E" u2 R x=(133-v)*2;
9 Z( @2 d: G. U$ r3 g f=1;
; l1 U8 U; d N2 G9 e1 V }6 p7 L! i9 G" K5 w' c X( n d
rd=1;
' i, I1 {) E, [. f }
5 u+ t2 ]2 P6 R' o) a}
% k. P& S, O) Q: q) yvoid delay(uint x)
6 u1 R& P* _2 Z3 Q8 I8 N{
; M+ o' C1 |7 T6 i; v uint i,j;6 i* C, j# U& l3 |
for(i=x;i>0;i--)
/ L$ n& @- V) y) ? for(j=110;j>0;j--);
/ ^( t) s2 f6 y/ l$ k} M- n6 g- @! j {9 G. w
void display(uint x)
8 G2 U9 `# W3 c4 _3 z8 t{
8 O9 R: r* z% j5 K9 I+ M! J! Y9 _ bai=x/100;
+ }5 ?$ h2 e# X, q U+ ~3 @+ d9 j2 n shi=x%100/10;$ m# O' w* l6 l1 D
ge=x%100%10;& B5 ^) x- q" Y% n" M, R- f" ^4 H
if(f==1)- ]: ?& N; e) b- g, i9 i& j
{ Y9 ?2 ~ a0 ^8 ^
P0=0x7e;6 r$ d$ m! ]$ B {# B* f$ G- N
P3=0x40;; G2 q$ r2 T, C2 D
delay(5);
0 r. c9 Z- k4 w; D5 M9 A. V P3=0x00;
( K7 e$ N: S+ b! O
, I% S+ I+ n( `…………限于本文篇幅 余下代码请从论坛下载附件…………% C( g9 v' O, R! j9 x- Y5 R
* w$ ]7 b0 V& g2 ]# _
: h% q: L" | }5 V& Q/ q, a
|
|