当前位置:首页 >> 工学 >>

热敏电阻测温电路的单片机课程设计


课程题目:热敏电阻测温电路的设计 院 班 系:机电汽车工程学院 级:

学生姓名: 学 号:

小组成员: 指导教师:

目录
一、设计目的、要求及方案选择 1、设计目的 2、设计要求 -----------------------------------------------------(2) ---------------------------------------------------------------------------(2) ---------------------------------------------------------------------------(2) --------------------------------------------------------------------(2) ---------------------------------------------------(3)

3、设计方案的选择

二、硬件系统各模块电路的设计 1、单片机系统的设计

---------------------------------------------------------------(3) ---------------------------------------------(3) -----------------------------------------------(5)

1-1、AT89C51 的简介及管脚功能 1-1、AT89C51 的最小系统介绍

2、基于 MF58 的 NTC 热敏电阻温度测量电路设计 ---------------------------(7) 2-1、MF58 热敏电阻的介绍 2-2、温度测量电路的设计 3、LED 数码管显示电路的设计 ---------------------------------------------------(8) ----------------------------------------------------(10) ---------------------------------------------------(11) ------------------------------------------------(11)

3-1、显示电路驱动系统的设计 3-2、数码管显示的原理 3-3、显示电路的原理图

--------------------------------------------------------(17) ---------------------------------------------------------(19) ----------------------------------------------------(19)

三、软件系统各模块电路的设计 1、程序设计语言的选用 2、软件程序的设计

-------------------------------------------------------------(19)

-------------------------------------------------------------------(19) ------------------------------------------------------(20) ------------------------------------------------------(22)

2-1、测量系统软件的设计 2-2、显示电路软件的设计 四、结论

---------------------------------------------------------------------------------(24) ---------------------------------------------------------------------------(25)

五、参考文献 六、附页

----------------------------------------------------------------------------------(26)

一、设计目的、要求及方案选择
1、设计目的
随着人们生活水平的提高, 人们对各种测量器具的智能化、多功能化提出了 更高的要求, 而电子技术的飞速发展使得单片机在各种测量产品领域中的应用越 来越广泛。 把以单片机为核心, 开发出来的各种测量及控制系统作为测量产品的 主要部分,使各种测量产品更具智能化、拥有更多功能、便于人们操作和使用, 更具时代感, 这是测量产品的发展方向和趋势所在。 有的测量产品要求测量温度、 测量光强度、测量流量、测量速度,需要增加显示、报警和自动诊断等功能。这 就要求我们的生产具有自动控制系统, 自动控制主要是由计算机的离线控制和在 线控制来实现的,离线应用包括利用计算机实现对控制系统总体的分析、设计、 仿真及建模等工作; 在线应用就是以计算机代替常规的模拟或数字控制电路使控 制系统“软化” ,使计算机位于其中,并成为控制系统、测试系统及信号处理系 统的一个组成部分,这类控制由于计算机要身处其中,因此对计算机有体积小、 功耗低、价格低廉以及控制功能强有很高的要求,为满足这些要求,应当使用单 片机。 单片机在电子产品中应用的广泛,在很多的电子产品中也用到了温度检测 和温度控制,但那些温度检测与控制电路通常较复杂,成本也高,本设计提供了 一种低成本的利用单片机多余 I/O 口实现的温度检测电路,该电路非常简单, 且易于实现,并且适用于几乎所有类型的单片机。

2、设计要求
20、热敏电阻温度测量系统设计 任务要求:a、设计基于 MF58 的 NTC 热敏电阻信号调理电路 b、设计 A/D 转换电路 c、设计数码管显示电路

3、设计方案的选择
本设计以 AT89C51 单片机系统为核心,采用热敏电阻对温度进行检测;通

过电容进行充放电进行 A/D 转换把温度信号调解转换为电压信号,计算出电阻, 与 AT89C51 单片机接口设置 LED 八段数码管实时显示温度值。 本设计包括热敏 电阻选择、测量模块、数据传输模块、温度显示模块四个部分。文中对每个部分 功能、实现过程作详细介绍。

二、硬件系统各模块电路的设计
1、单片机系统的设计
F1ash AT89 系列单片机是一种内部含 Flash 存储器的特殊单片机。由于它内 部含有大容量的 Flash 存储器,所以,在产品开发及生产便携式商品、手提式仪 器等方面有着十分广泛的应用, 也是目前取代传统的 MCS-51 系列单片机的主流 单片机之一。AT89 系列单片机对于一般用户来说,有下列明显的优点:①内部 含有 Flash 存储器,在系统开发过程中很容易修改程序,可以大大缩短了系统的 开发时间。②与 MCS-51 系列单片机引脚兼容,可以直接进行代换。③AT89 系 列并不对 80C31 的简单继承,功能进一步增强。 AT89 系列包括两大类第一类是常规的,就是 AT89C 系列,这类单片机要用 常规的并行方法编程,必需使用编程器编程;第二类是在系统可编程(即芯片安 装到电路板上之后不用拿下来而直接往里面烧写程序)ISP Flash 系列,也就是 AT89S 系列, 这类单片机除了用常规的并行方法编程外, 还可以在系统用下载线 进行编程,省去价格较贵的编程器,而且可以在目标板上直接修改程序。 AT89C51 是 一 种 带 4K 字 节 FLASH 存 储 器 ( FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS 8 位微处理器, 俗称单片机。 单片机的可擦除只读存储器可以反复擦除 1000 次。 该 器 件 采 用 ATMEL 高 密 度 非 易 失 存 储 器 制 造 技 术 制 造 , 与 工 业 标 准 的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组 合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,为很多嵌入式 控制系统提供了一种灵活性高且价廉的方案。考虑到单片机的存储空间与价 格,以及我对单片机的熟悉程度,课本学习的是 AT89C51 单片机,因此,此次 设计我选用了 AT89C51 单片机来完成此次设计。

1-1 AT89C51 的简介及管脚功能

VCC:供电电压。 GND:接地 P0 口: 口为一个 8 位漏极开路双向 I/O 口, P0 每脚可吸收 8 个 TTL 门电流。 当 P0 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外 部程序数据存储器,它可以被定义为数据/地址的低八位。在 FIASH 编程时,P0 口作为原码输入口,当 FIASH 进行校验时,P0 输出原 码,此时 P0 外部必须被拉高。 P1 口: 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接 P1 收输出 4 个 TTL 门电流。P1 口管脚写入 1 后,被内部上拉为高, 可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于 内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为低八位地址 接收。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可接收, 输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低, 将输出电流。 这是由于内部上拉的缘故。P2 口当用于外部程序存储 器或 16 位地址外部数据存储器进行存取时,P2 口输出地址的高八 位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址 数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用 作输入。作为输入时,由于外部下拉为低电平,P3 口将输出电流 (ILL)这是由于上拉的缘故。 P3 口也可作为 AT89C51 的一些特殊功能口,如下表所示: P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断 0) P3.3 /INT1(外部中断 1)

P3.4 T0(定时器/计数器 0 外部输入) P3.5 T1(定时器/计数器 1 外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3 口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高 电平时间。 /EA/VPP : 当 /EA 保 持 低 电 平 时 , 则 在 此 期 间 只 外 部 程 序 存 储 器 (0000H-FFFFH) ,不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间 访问内部程序存储器。当 PC 值超过片内程序存储器空间时,则 自动转向外部程序存储器的程序。在 FLASH 编程期间,此引脚 也用于施加 12V 编程电源(VPP) 。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入 XTAL2:来自反向振荡器的输出。 XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向放大器 可以配置为片内振荡器。石英晶体振荡和陶瓷振荡均可采用。如采 用外部时钟源驱动器件,XTAL2 应不接。有余输入至内部时钟信号 要通过一个二分频触发器, 因此对外部时钟信号的脉宽无任何要求, 但必须保证脉冲的高低电平要求的宽度。

1-2 AT89C51 的最小系统介绍
时钟电路:
单片机内部的振荡电路是一个高增益反相放大器,引线 XTAL1 和 XTAL2 分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟, 外部还需附加电路。单片机的时钟产生方式有两种。 ① 内部时钟方式。利用其内部的振荡电路在 XTAL1 和 XTAL2 引线上外接 定时元件,内部振荡电路便产生自激振荡,用示波器可以观察到 XTAL2 输出的

时钟信号。 ② 外部时钟方式。在单片机组成的系统中,为了各单片机之间时钟信号的 同步, 应当引入惟一的合用外部振荡脉冲作为各单自片机的时钟。外部时钟方式 中是把外部振荡信号源直接接入 XTAL1 或 XTAL2。
图 3-1 为内部时钟电路 图 3-2 为 HMOS 型外部时钟电路 图 3-3 为 CHMOS 型外部时钟电路

复位电路和复位状态
单片机的复位是靠外部电路实现的。单片机工作后,只要在它的 RST 引线 上加载 10ms 以上的高电平,单片机就能够有效地复位。 ① 复位电路。单片机通常采用上电自动复位和按键复位两种方式。最简单 的复位电路如下图所示。上电瞬间,RC 电路充电,RST 引线端出现正脉冲,只 要 RST 端保持 10ms 以上的高电平,就能使单片机有效地复位。在应用系统中, 有些外围芯片也需要复位。 如果这些芯片复位端的复位电平的要求一致,则可以 将复位信号与之相连。

简单的复位电路 ② 复位状态。复位电路的作用是使单片机执行复位操作。复位操作主要是 把 PC 初始化为 0000H,使单片机从程序存储器的 0000H 单元开始执行程序。程

序存储器的 0003H 单元即单片机的外部中断 0 的中断处理程序的入口地址。留 出的 0000H~0002H 3 个单元地址,仅能够放置一条转移指令,因此,MCS-51 单片机的主程序的第一条指令通常情况下是一条转移指令。 除 PC 之外,复位还对其他一些特殊功能寄存器有影响,它们的复位状态如 表 2-16 所示。利用它们的复位状态,可以减少应用程序中的初始化编程。 表 2-16 寄存器的复位状态 寄存器 PC ACC PSW SP DPTR P0~P3 IP IE 复位状态 0000H 00H 00H 07H 0000H FFH Xxx00000B 0xx00000B 寄存器 TMOD TCON TL0 TH0 TL1 TH1 SCON PCON 复位状态 00H OOH 00H 00H 00H 00H 00H 0xx00000B

由表 2-16 可知,除 SP=07H,P0~P3 4 个锁存器均为 FFH 外,其他所有的 寄存器均为 0,很好记忆。记住他们的复位状态,对于熟悉单片机的操作,减少 应用程序中的初始化编程都是十分必要的。 单片机的复位不影响片内 RAM 的状态(包括通用寄存器 Rn) 。 P0、 P1、 P2、 共有 4 个 8 位并行 I/O 口, P3 它们引线为: P0.0~P0.7、 P1.0~P1.7、 P2.0~P2.7、P3.0~P3.7,共 32 条引线。这 32 条引线可以全部用做 I/O 线,也可 将其中部分用做单片机的片外总线。

单片机最小系统图

最小系统图

2、基于 MF58 的 NTC 热敏电阻温度测量电路设计 2-1 MF58 热敏电阻的介绍

热敏电阻传感器是对温度敏感的电阻器的总称,是半导体测温元件。随着外 界温度的变化, 其阻值会相应发生较大改变。按温度系数分为负温度系数热敏电 阻(NTC)和正温度系数热敏电阻(PTC)两大类。NTC 热敏电阻以 MF 为其型 号,PTC 热敏电阻以 MZ 为其型号。热敏电阻符号如下图:

MF58 测温型 NTC 热敏电阻,由 Co、Mn、Ni 等过渡金属元素的氧化物组 成,经高温烧成半陶瓷,利用半导体微米的精密加工工艺,采用玻璃管封装,耐 温性好,稳定性高,可靠性高。

应用:1、家用电器,如空调机、微波炉、电风扇、电取暖炉等的温度控制与
温度检测。

2、办公自动化设备,如复印机、打印机的温度检测或温度补偿 3、工业、医疗、环保、气象、食品加工设备的温度控制与检验。 4、液面指示和流量测量。 5、手机电池。 6、仪表线圈、集成电路、石英晶体振荡器和热电偶的温度补偿。

特点: 1、 稳定性好,可靠性高。
2、 阻值范围宽:0.1-1000K 3、 阻值精度高。 4、 由于玻璃封装,可在高温和高温等恶劣环境下使用。 5、 体积小、 重量轻、 结构坚固, 便于自动化安装 (在印制线路板上) 。 6、 热感应速度快、灵敏度高。

主要技术参数:1、额定零功率电阻值范围(R25):0.1~1000KΩ
2、R25 允许偏差:±1%、±2%,±3%, ±5%, ±10%. 3、B 值范围(B25/50℃):1960~4480K 4、B 值允许偏差:±0.5%,±1%,±2%. 5、耗散系数: 2mW/℃(在静止空气中) 6、热时间常数: 20S (在静止空气中) 7、工作温度范围: -55℃~ +300℃ 8、额定功率:≤50Mw

注意事项:1、MF 系列热敏电阻器是玻璃封装的,请勿剧震、碰击以防玻璃外
壳破裂。 2、焊接时间控制在 4S 内。 3、MF 系列热敏电阻器不能直接在水中或液体中使用

MF58-503-40 的电阻—温度表
阻值 167.1 100.5 62.61 温度 0.0 10 20

40.07 26.28 17.69 12.13 8.498 6.051 4.390 3.226 2.409 1.821 1.395 1.081 0.8473 0.6707 0.5364 0.4331

30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180

2-2 温度测量电路的设计 原理图:

各元器件介绍:
P1.0、P1.1 和 P1.2 是单片机的 3 个 I/O 脚 RT 为 100K-精度为 1%的热敏电阻 R2 为 100Ω 的普通电阻 C4 为 0.1μ 的瓷介电容 R4 为 100K 的普通电阻 J1、J2 为 p 沟道的 JFET 管 Q1 为 PNP 的 CMOS 管 U3 是电压跟随器

其工作原理为:
(1)将 P1.0 设为低电平,P1.1、P1.2 为低电平,Q1 导通,J1、J2 截止,使 C4 放电 至完全,P3.2 为高电平

(2)将 P1.0 设为高电平、P1.1 为高电平,P1.2 为低电平,Q1 截止,J1 导通,

J2 截止,通过 R4 电阻对 C4 充电,单片机内部计时器清零并开始计时,检 测 P3.2 口状态,当 P3.2 口检测为低电平时,即 C4 上的电压充至完全,单 片机计时器记录下从开始充电到 P3.2 口转变为低电平的时间 TSC (3)将 P1.0 设为低电平,P1.1、P1.2 为低电平,Q1 导通,J1、J2 截止,使 C4 放电 至完全,P3.2 为高电平

(4)将 P1.0 设为高电平、P1.1 为低电平,P1.2 为高电平,Q1 截止,J2 导通, J1 截止,通过 RT 电阻对 C4 充电,单片机内部计时器清零并开始计时,检 测 P3.2 口状态,当 P3.2 口检测为低电平时,即 C4 上的电压充至完全,单 片机计时器记录下从开始放电到 P3.2 口转变为低电平的时间 TEC 可以得到:TSC/R4=TEC/RT,即 RT=TEC× R4/TSC 通过单片机计算得到热敏电阻 RT 的阻值。 并通过执行程序可以得到温度值。 从上面所述可以看出, 该测温电路的误差来源于这几个方面:单片机的定时 器精度、R4 电阻的精度、热敏电阻 RT 的精度,而与单片机的输出电压值、门 限电压值、电容精度无关。因此,适当选取热敏电阻和精密电阻的精度,单片机 的工作频率够高, 就可以得到较好的测温精度。当单片机选用 12MHz 频率,R4、RT 均为 1%精度 的电阻时,温度误差可以做到小于 1℃ 。

3、LED 数码管显示电路的设计
3-1 显示电路驱动系统的设计

驱动芯片 MAX7219 简介:
MAX7219 是一种集成化的串行输入/输出共阴极显示驱动器,它连接微 处理器与 8 位数字的 7 段数字 LED 显示,也可以连接条线图显示器或者 64 个独立的 LED。其上包括一个片上的 B 型 BCD 编码器、多路扫描回路,段字 驱动器,而且还有一个 8*8 的静态 RAM 用来存储每一个数据。 只有一个外 部寄 存器 用 来设 置各 个 LED 的段 电 流。 MAX7221 与 SPI?、 QSPI?以 及 MICROWIRE?相兼容,同时它有限制回转电流的段驱动来减少 EMI(电磁干 扰)。 一个方便的四线串行接口可以联接所有通用的微处理器。 每个数

据可以寻址在更新时不需要改写所有的显示。 MAX7219 同样允许用户对每一 个数据选择编码或者不编码。 整个设备包含一个 150μ A 的低功耗关闭模 式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示 1-8 位数据, 还有一个让所有 LED 发光的检测模式。它的操作很简单,MCU 只需通过模拟 SPI 三线接口就可以将相关的指令写入 MAX7219 的内部指令和数据寄存器,同 时它还允许用户选择多种译码方式和译码位。 此外它还支持多片 7219 串联方式, 这样 MCU 就可以通过 3 根线(即串行数据线、串行时钟线和芯片选通线)控制 更多的数码管显示。

管脚功能:
1:DIN 串行数据输入端口。在时钟上升沿时数据被载入内部的 16 位寄存 器。 2,3,5-8,10,11 DIG 0–DIG7:八个数据驱动线路置显示器共阴极为 低电平。 4,9:GND 地线 (4 脚和 9 脚必须同时接地) 12:LOAD 载入数据。连续数据的后 16 位在 LOAD 端的上升沿时被锁定。

13:CLK 时钟序列输入端。最高频率为 10MHz.在时钟的上升沿,数据移入 内部移位寄存器。下降沿时,数据从 DOUT 端输出。 14-17,20-23:SEG A–SEG G 7 段和小数点驱动,为显示器提供电流。当一 个段驱动关闭时,7219 的此端呈低电平 18:ISET: 通过一个 10k 电阻和 Vcc 相连,设置段电流 19:V+ 正极电压输入,+5V 24:DOUT 串行数据输出端口,从 DIN 输入的数据在 16.5 个时钟周期后在 此端有效。当使用多个 MAX7219 时用此端方便扩展 MAX7219 的外部引脚分配如图及内部结构如图 2 所示。

MAX7219 的外部引脚分配

MAX7219 的内部引脚分配

规格:
数位数量:8

片段数量: 7 封装 / 箱体: PDIP-24 工作电源电压: 4 V to 5.5 V 最大电源电流: 330 mA 最大功率耗散: 1066 mW 高电平输出电流: 65 mA

MAX7219 寄存器:
MAX7219 内部的寄存器如下图,主要有:译码控制寄存器、亮度控制寄存 器、扫描界限寄存器、关断模式寄存器、测试控制寄存器。编程时只有正确操作 这些寄存器,MAX7219 才可工作。

MAX7219 内部的相关寄存器 (1) 译码控制寄存器(X9H)

如下图所示,MAX7219 有两种译码方式:B 译码方式和不译码方式。当选择不 译码时,8 个数据为分别一一对应 7 个段和小数点位;B 译码方式是 BCD 译码, 直接送数据就可以显示。实际应用中可以按位设置选择 B 译码或是不译码方式。

MAX7219 的译码控制寄存器 (2)扫描界限寄存器(XBH)

如下图所示, 此寄存器用于设置显示的 LED 的个数 (1~8) 比如当设置为 0xX4 , 时,LED 0~5 显示。

MAX7219 的扫描界限控制寄存器

(3)亮度控制寄存器(XAH) 共有 16 级可选择,用于设置 LED 的显示亮度,从 0xX0~0xXF (4)关断模式寄存器(XCH) 共有两种模式选择,一是关断状态,(最低位 D0=0)一是正常工作状态 (D0=1)。 (5)显示测试寄存器(XFH)

用于设置 LED 是测试状态还是正常工作状态,当测试状态时(最低位 D0=1)各位显示全亮,正常工作状态(D0=0)。

读写时序说明
MAX7129 是 SPI 总线驱动方式。它不仅要向寄存器写入控制字,还需要读 取相应寄存器的数据。 要想与 MAX7129 通信,首先要先了解 MAX7129 的控制字。MAX7129 的 控制字格式如下图。

控制字(即地址及命令字节) 如图,工作时,MAX7219 规定一次接收 16 位数据,在接收的 16 位数据中: D15~D12 可以与操作无关,可以任意写入,D11~D8 决定所选通的内部寄存器地 址,D7~D0 为待显示数据或是初始化控制字。在 CLK 脉冲作用下,DIN 的数据 以串行方式依次移入内部 16 位寄存器,然后在一个 LOAD 上升沿作用下,锁存 到内部的寄存器中。注意在接收时,先接收最高位 D16,最后是 D0,因此,在 程序发送时必须先送高位数据,在循环移位。工作时序图见下图。

数据读写时序

3-2

数码管显示的原理
在单片机应用系统中, 如果需要显示的内容只有数码和某些字母, 使用 LED

数码管是一种较好的选择。LED 数码管显示清晰、成本低廉、配置灵活,与单 片机接口简单易行。

LED 数码管原理:

LED 数码管是由发光二极管作为显示字段的数码型显示器件。下图为 0.5 英 尺 LED 数码管的外形和引脚图,其中七只发光二极管分别对应 a~g 笔段构成 “ ”字形另一只发光二极管 dp 作为小数点。因此这种 LED 显示器称为七段数 码管或八段数码管。

LED 数码管 LED 数码管按电路中的连接方式可以分为共阴极和共阳极两大类,如上图。 共阳型是将各段发光二极管的正极连在一起,作为公共端 COM,公共端 COM 接高电平,a~g、dp 各笔段通过限流电阻接控制端。某笔段控制端低电平时, 该笔段发光,高电平时不发光。控制这几段笔段发光,就能显示出某个数码或字 符。共阴型是将各数码发光二极管的负极连在一起,作为公共端 COM 接地,某 笔段通过限流电阻接高电平时发光。 LED 数码管按其外形尺寸有多种形式,使用较多的是 0.5 英寸和 0.8 英寸; 按显示颜色也有多种形式,主要有红色和绿色;按亮度强弱可分为高亮和普亮, 指通过同样的电流显示亮度不一样,这是因发光二极管的材料不一样而引起的。

LED 数码管的使用与发光二极管相同,根据其材料不同正向压降一般为 1.5~2V 额定电流为 10mA,最大电流为 40mA。静态显示时取 10mA 为宜,动 态扫描显示可加大,加大脉冲电流,但一般不超过 40mA。

LED 数码管编码方式

当 LED 数码管与单片机相连时, 一般将 LED 数码管的各笔段引脚 a、 ?、 b、 g、dp 按某一顺序接到 MCS-51 型单片机某一个并行 I/O 口 D0、D1、?、D7, 当该 I/O 口输出某一特定数据时,就能使 LED 数码管显示出某个字符。例如要 使共阳极 LED 数码管显示“0”,则 a、b、c、d、e、f 各笔段引脚为低电平,g 和 dp 为高电平,如下表。 共阳极 LED 数码管显示数字“0”时各管段编码
D7 dp 1 D6 g 1 D5 f 0 D4 e 0 D3 d 0 D2 c 0 D1 b 0 D0 a 0 C0H 0 字段码 显示数

C0H 称为共阳极 LED 数码管显示“0”的字段码,不计小数点的字段码称为 七段码,包括小数点的字段称为八段码。 LED 数码管编码方式有多种,按小数点计否可分为七段码和八段码;按共 阴共阳可分为共阴字段码和共阳字段码, 不计小数点的共阴字段码与共阳字段码 互为反码;按 a、b、?、g、dp 编码顺序是高位在前,还是低位在前,又可分为 顺序字段码和逆序字段码。甚至在某些特殊情况下将 a、b、?、g、dp 顺序打乱 编码。下表为共阴极和共阳极 LED 数码管几种八段编码表。

共阴极和共阳极 LED 数码管几种八段编码
共阴顺序小数点暗 dp g f e d c b a 0 1 2 00111111 00000110 01011011 16 进制 3FH 06H 5BH 共阴逆序小数点暗 a b c d e f g dp 11111100 01100000 11011010 16 进制 FCH 60H DAH 共阳顺序 小数点亮 40H 79H 24H 共阳顺序 小数点暗 C0 H F9 H A4 H

3 4 5 6 7 8 9

01001111 01100110 01101101 01111101 00000111 01111111 01101111

4FH 66H 6DH 7DH 07H 7FH 6FH

11110010 01100110 10110110 10111110 11100000 11111110 11110110

F2H 66H B6H BEH E0H FEH F6H

30H 19 H 12 H 02 H 78 H 00 H 10 H

B0 H 99 H 92 H 82 H F8 H 80 H 90 H

3-3 显示电路的原理图

U1
19 XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17

U2
DIN LOAD CLK A B C D E F G DP DIG0 DIG1 DIG2 DIG3 DIG4 DIG5 DIG6 DIG7

18

XTAL2

9

C5
20pF

C6
20pF

C7
20pF

RST

29 30 31

PSEN ALE EA

R5
1k ISET DOUT MAX7219

1 2 3 4 5 6 7 8

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C51

FILE NAME:

白feng.DSN
I:\白凤蕊 \白feng.DSN

显示电路原理图

DESIGN TITLE: PATH: BY: <NONE>

I:\白凤蕊\白feng.

三、软件系统各模块电路的设计
1、程序设计语言的选用
本设计中采用的处理器是 AT89C51 单片机,由此可采用面向 MCS-51 的程 序设计语言,包括 ASM51 汇编语言和 C51 高级语言,这两种语言各有特点。汇 编语言更接近机器语言,常用来编制与系统硬件相关的程序,如访问 I/O 端口、 中断处理程序、实时控制程序、实时通信程序等;而数学运算程序则适合用 C51 高级语言编写, 因为用高级语言编写运算程序可提高编程效率和应用程序的可靠 性。考虑到设计中要用到乘除运算,在智能测控装置的基本功能软件开发中,全 部程序均采用 C51 高级语言编写。

2、 软件程序的设计
程序主要由主程序和子程序两部分构成。 主程序主要实现系统的初始化,温度信号采集。 系统的初始化包括寄存器的初始化(控制寄存器、堆栈、中断寄存器等) , 通信的初始化(串口的初始化,MAX7219 的初始化,通信缓冲区的初始化) , LED 显示的初始化,输出端口的初始化,采集、累计数据的初始化。 子程序主要有延时程序和显示程序等。 显示程序包括数据转换(主要实现将各类参数、测量数据、计算累计值等转 换成 LED 显示所需的数据类型) 。

2-1

测量系统软件的设计

其程序流程图如下:

开始
P1.0=0, P1.1=0 ,P1.1=0 使电容 C4 放电

延时 1s

P1.0=1 ,P1.1=1,P1.2=0 通过标准电阻对 C4 充电

N P3.2= 0? Y 记下充电时间 TSC

P1.0=0

P1.1=0 使电容 C4 放电

P1.1=0

延时 1s

P1.0=1,P1.1=0,P1.2=1 通过热敏电阻对 C4 充电

P3.2= 0? N Y 记下充电时间 TEC

RT=TEC×R4/TSC

线性插值,求出相应温度

结束

2-2

显示电路软件的设计

//管脚定义 sbit LOAD=P0^1; sbit DIN=P0^0; sbit CLK=P0^2; //寄存器宏定义 #define DECODE_MODE 0x09 #define INTENSITY #define SCAN_LIMIT #define SHUT_DOWN 0x0A 0x0B 0x0C //译码控制寄存器 //MAX7219 片选 //MAX7219 串行数据 //MAX7219 串行时钟 12 脚 1脚 13 脚

//亮度控制寄存器 //扫描界限寄存器 //关断模式寄存器 //测试控制寄存器

#define DISPLAY_TEST 0x0F //函数声明

void Write7219(unsigned char address,unsigned char dat); void Initial(void); //地址、数据发送子程序 void Write7219(unsigned char address,unsigned char dat) { unsigned char i; LOAD=0; //发送地址 for (i=0;i<8;i++) { CLK=0; //清零时钟总线 //移位循环 8 次 //拉低片选线,选中器件

DIN=(bit)(address&0x80); //每次取高字节 address<<=1; CLK=1; } //左移一位 //时钟上升沿,发送地址

//发送数据 for (i=0;i<8;i++) { CLK=0; DIN=(bit)(dat&0x80); dat<<=1; CLK=1; } LOAD=1; } //MAX7219 初始化,设置 MAX7219 内部的控制寄存器 void Initial(void) { Write7219(SHUT_DOWN,0x01); Write7219(DISPLAY_TEST,0x00); Write7219(DECODE_MODE,0xff); Write7219(SCAN_LIMIT,0x07); Write7219(INTENSITY,0x04); } //显示程序
void DISPLAY() { int b,c,d; Initial(); //MAX7219 初始化 b=(int)(TEM/100); c=(int)((TEM-b*100)/10); d=(int)(TEM-b*100-c*10); Write7219 (6,b); Write7219 (7,c); Write7219 (8,d); delay(1000); }

//时钟上升沿,发送数据

//发送结束, 上升沿锁存数据

//开启正常工作模式(0xX1) //选择工作模式(0xX0) //选用全译码模式 //8 只 LED 全用 //设置初始亮度

四:结论 本设计中,是以温度采集及检测为总目标,以 AT89C51 单片机最 小应用系统为总控制中心,辅助设计有温度采样电路、驱动显示单元 等。单片机开发过程是一个非常严谨,复杂,科学,周密和细致,及 技术性和综合性都相当高的过程, 它要求你必须具备相当扎实的专业 基础和理论知识,较强的实践专业操作技能。能以细致和科学的头脑 去考察、分析和解决问题。同时在设计中必须要有足够的耐心,持之 以恒的毅力,坚强的意志以及实事求是,一丝不苟的精神,才能开发 出理想的设计出来。在设计过程中,遇到了许多问题,如设计初始阶 段目的不明,思绪混乱,经过认真思考和老师的指导,才使自己思路 明确,抓住重点,不懂就问,在规定的时间内系统有序的完成。温度 检测是工业过程控制中一个重要参数,了解到温度检测的重要性,使 自己在设计过程中,更加有兴趣和动力,在软件设计方面,遇到了一 些实际问题,不过,在老师的指导和同学的帮助下都能一一解决,使 自己学到了许多新的知识。

五、参考文献

[1] 中国期刊全文数据库: http://dlib.edu.cnki.net/kns50/

[2] www.baidu.com [3] www.google.com [4] 查电子元器件资料: http://www.21icsearch.com/ [5]汪贵平 李登峰等编著《新编单片机原理及应用》,机械工业出版社 [6] 李隆宝. 实用电子器件和电路简明手册[M]. 北京:电子工业出版社,1991. [7]康华光,电子技术基础 数字部分(第四版)[M].北京:高等教育出版社,1987 [8] 付家才等主编《单片机控制工程实践技术》,化学工业出版社

附页:
#include <reg52.h> #include <stdio.h>

//宏定义 #define uchar unsigned char; #define DECODE_MODE 0x09 //译码控制寄存器 #define INTENSITY 0x0A //亮度控制寄存器 #define SCAN_LIMIT 0x0B //扫描界限寄存器 #define SHUT_DOWN 0x0C //关断模式寄存器 #define DISPLAY_TEST 0x0F //测试控制寄存器 //函数声明 void DISPLAY( ); void Write7219(unsigned char address,unsigned char dat); void Initial(void); float TSC,TEC,RTemp,TEM; int z; //延时子程序 void delay (int z) { int x,y; for (x=z;x>0;x--) for (y=100;y>0;y--); } sbit w=P1^0; sbit o=P1^1; sbit m=P1^2; sbit a=P3^2; sbit LOAD=P0^1; sbit DIN=P0^0; sbit CLK=P0^2; //主程序 void main() { //C4 放电 w=0; o=0; m=0; delay(10); //定时器 0 和外中断 0 初始化 TMOD=0X01; TCON=0X00; TH0=0;

//MAX7219 片选 //MAX7219 串行数据 //MAX7219 串行时钟

12 脚 1脚 13 脚

TL0=0; EA=1; IT0=1; EX0=1; //通过 R4 对 C4 充电 w=1; o=1; m=0; TR0=1; //启动定时器 0 while(a); //等待 a 为低电平 TR0=0; //关闭定时器 0 o=0; TSC=TH0*256+TL0; //C4 放电 w=0; o=0; m=0; delay(10); //定时器 0 和外中断 0 初始化 TMOD=0X01; TCON=0X00; TH0=0; TL0=0; EA=1; IT0=1; EX0=1; //通过 RT 对 C4 充电 w=1; o=0; m=1; TR0=1; while(a); m=0; TR0=0; TEC=TH0*256+TL0; RTemp=(TEC*100)/TSC; if(RTemp>167.1||RTemp<0.4321) DISPLAY( ); else { if(RTemp<=167.1&&RTemp>100.5)

{TEM=(-10*RTemp+1671)/66.6; DISPLAY();} else { if(RTemp<=100.5&&RTemp>62,61) {TEM=(-10*RTemp+1005)/37.89; DISPLAY();} else { if(RTemp<=62.61&&RTemp>40.07) {TEM=(-10*RTemp+626.1)/22.54; DISPLAY();} else { if(RTemp<=40.07&&RTemp>26.28) {TEM=(-10*RTemp+400.7)/13.39; DISPLAY();} else { if(RTemp<=26.28&&RTemp>17.69) { TEM=(-10*RTemp+262.8)/8.99; DISPLAY();} else { if(RTemp<=17.69&&RTemp>12,13) { TEM=(-10*RTemp+176.9)/5.56; DISPLAY();} else { if(RTemp<=12.13&&RTemp>8.498) {TEM=(-10*RTemp+121.3)/3.632; DISPLAY();} else { if(RTemp<=8.498&&RTemp>6.051) { TEM=(-10*RTemp+84.98)/2.447; DISPLAY();} else { if(RTemp<=6.051&&RTemp>4.390) { TEM=(-10*RTemp+60.51)/1.661; DISPLAY();} else {

if(RTemp<=4.390&&RTemp>3.226) { TEM=(-10*RTemp+43.90)/1.164; DISPLAY();} else { if(RTemp<=3.226&&RTemp>2.409) { TEM=(-10*RTemp+32.26)/0.817; DISPLAY();} else { if(RTemp<=2.409&&RTemp>1.821) { TEM=(-10*RTemp+24.09)/0.588; DISPLAY();} else { if(RTemp<=1.821&&RTemp>1.395) { TEM=(-10*RTemp+18.21)/0.426; DISPLAY();} else { if(RTemp<=1.395&&RTemp>1.081) {TEM=(-10*RTemp+13.95)/0.314; DISPLAY();} else { if(RTemp<=1.081&&RTemp>0.8473) { TEM=(-10*RTemp+10.81)/0.2337; DISPLAY();} else { if(RTemp<=0.8473&&RTemp>0.6707) {TEM=(-10*RTemp+8.473)/0.1766; DISPLAY();} else { if(RTemp<=0.6707&&RTemp>0.5364) {TEM=(-10*RTemp+6.707)/0.1343; DISPLAY();} else { if(RTemp<=0.5364&&RTemp>0.4331) { TEM=(-10*RTemp+5.364)/0.1033; DISPLAY();} }

} } } } } } } } } } } } } } } } } } //地址、数据发送子程序 void Write7219(unsigned char address,unsigned char dat) { unsigned char i; LOAD=0; //拉低片选线,选中器件 //发送地址 for (i=0;i<8;i++) //移位循环 8 次 { CLK=0; //清零时钟总线 DIN=(bit)(address&0x80); //每次取高字节 address<<=1; //左移一位 CLK=1; //时钟上升沿,发送地址 } //发送数据 for (i=0;i<8;i++) { CLK=0; DIN=(bit)(dat&0x80); dat<<=1; CLK=1; //时钟上升沿,发送数据 } LOAD=1; //发送结束,上升沿锁存数据 } //MAX7219 初始化,设置 MAX7219 内部的控制寄存器 void Initial(void) {

Write7219(SHUT_DOWN,0x01); Write7219(DISPLAY_TEST,0x00); Write7219(DECODE_MODE,0xff); Write7219(SCAN_LIMIT,0x07); Write7219(INTENSITY,0x04); } void DISPLAY() { int b,c,d; Initial(); //MAX7219 初始化 b=(int)(TEM/100); c=(int)((TEM-b*100)/10); d=(int)(TEM-b*100-c*10); Write7219 (6,b); Write7219 (7,c); Write7219 (8,d); delay(1000); }

//开启正常工作模式(0xX1) //选择工作模式(0xX0) //选用全译码模式 //8 只 LED 全用 //设置初始亮度


赞助商链接
相关文章:
单片机课程设计热敏电阻测温显示系统
单片机课程设计热敏电阻测温显示系统 - 燕山大学 课程设计说明书 题目: 热敏电阻测温显示系统 学院(系) : 年级专业: 学号: 电气工程学院 10 级精仪 2 班 10...
单片机课程设计热敏电阻测温显示系统
单片机课程设计热敏电阻测温显示系统 - 题目: 热敏电阻测温显示系统 燕山大学课程设计(论文)任务书 设计题 热敏电阻测温显示系统 目设计技术参数设计要求工作量 ...
单片机课程设计 热敏电阻温度计
单片机课程设计 热敏电阻温度计 - 《单片机原理及应用》 课程设计报告书 课题名称 姓学专名号业 热敏电阻温度计 指导教师 机电与控制工程学院 年月日 任务书 ...
PIC单片机温敏电阻测温课程设计资料
PIC单片机敏电阻测温课程设计资料 - 一、设计目的、要求及方案选择 1、设计目的 随着社会的进步和工业技术的发展,人们越来越重视温度对产品的影响,许 多产品对...
基于单片机的热敏电阻测温系统设计
基于单片机的热敏电阻测温系统设计 - 第1章 1.1 热敏电阻 绪论 热敏电阻器是敏感元件的一类,按照温度系数不同分为正温度系数热敏电阻器 (PTC)和负温度系数热敏...
热敏电阻测温显示系统课程设计燕山大学
热敏电阻测温显示系统课程设计燕山大学 - 燕山大学 课程设计说明书 课程名称 题目 单片机原理及应用 热敏电阻测温显示系统 学院(系) 电气工程学院 2012 级 年级专业...
单片机课设 热敏电阻测温系统
单片机课设 热敏电阻测温系统 - 前言 近年来,我国工业现代化的进程和电子信息产业连续的高速增长,带动了 传感器市场的快速上升。温度传感器作为传感器中的重要一类,...
基于单片机的热敏电阻测温系统设计
基于单片机的热敏电阻测温系统设计 - 吉林建筑大学城建学院电气信息工程系课程设计 第1章 1.1 热敏电阻 绪论 热敏电阻器是敏感元件的一类,按照温度系数不同分为正...
利用单片机设计热敏电阻测温电路
利用单片机设计热敏电阻测温电路 - 1. P1.0、P1.1 和 P1.2 是单片机的 3 个 I/O 脚; RK 为 100k 的精密电阻; RT 为 100K-精度为 1%的热敏电阻; ...
单片机课程设计_热敏电阻测温显示系统
单片机课程设计_热敏电阻测温显示系统 - 燕山大学课程设计报告 目录 第一章 第二章 第三章 摘要···2 ···...
更多相关标签: