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