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