1、 基于 AT89S52 的数字 电子秤 班级 : 电子 08-1 姓名: 学号: 0806040110基于 AT89S52 的数字电子称 I 摘 要 本系统采用单片机 AT89S52 控制核心,实现电子秤的基本控制功能。系统的硬件部分包括最小系统板部分、模拟信号采集放大部分、人机交互界面三大部分。最小系统部分主要由单片机、晶体振荡电路、 ISP 下载口、复位电路、电源指示灯组成;模拟信号采集放大部分由压力传感器、信号放大、 A/D 转换电路组成;人机交互部分由键盘输入、八位八段共阴数码管及其驱动电路、蜂鸣器及其驱动电路组成。软件部分应 用单片机 C 语言实现了本设计的全部控制功能。 包括 A/
2、D转换电路的编程、 数码管动态显示、独立键盘扫描、蜂鸣器超重报警等 ,进而达到电子称重的目的。 关键字 : 压力传感器;放大;数码管 ;单片机 Abstract The control system uses microcontroller AT89S52 core, to achieve the basic control functions of electronic scales. System hardware includes the smallest part of the system board, amplified analog signal acquisition part
3、, man-machine interface of three parts. The smallest parts of the system mainly by the single-chip, the crystal oscillator circuit, ISP download port, reset circuit, power indicator composition; analog signal acquisition and amplification in part by the pressure sensor, signal amplification, A/D con
4、version circuit; human-computer interaction in part by the keyboard input, eight out of eight female and driving digital circuits, buzzer and the drive circuit. Software part of the application microcontroller C language implementation of the design of all control functions. Including A/D converter
5、circuit programming, digital dynamic display, separate keyboard scan, alarm buzzer overweight. Between the host computer and the function of the circuit can be interlinked and coordinated to achieve a unified system as a whole, harmonious effect, and thus achieve the purpose of electronic weighing.
6、Key words: Pressure sensor; Enlarge; digital LED; MCU 基于 AT89S52 的数字电子称 II 目 录 摘 要 . I ABSTRACT . I 目 录 . II 1 方案论证与比较 . 1 1.1 传感器 . 1 1.2 前级放大器部分 . 1 1.3 A/D 转换器 . 2 2 硬件详细设计 . 4 2.1 MCU 中央控制部分 . 4 2.1.1 AT89S52 的功能特性描述 . 4 2.1.3 AT89S52 的管脚排列 . 4 2.1.5 AT89S52 单片机的工作过程和工作方式 . 6 2.2 A/D 转换器 . 6 2.2
7、.1 ADC0809 特性 . 6 2.2.2 ADC0809 的基本工作原理 . 7 2.2.3 系统中 ADC0809 的应用 . 8 2.3 按键部分 . 8 3.4 数码管部分 . 8 2.5 前端信号处理 . 9 2.6 电源电路部分 . 10 2.7 声光指示报警电路 . 10 3 系统软件详细设计: . 11 3.1 定时器初始化模块 . 11 3.2 转换模块初始化 . 11 3.3 重量计算模块 . 11 3.4 程序流程图 . 12 参考文献 . 13 附录 . 14 一、程序 . 14 二、原理图 . 17 基于 AT89S52 的数字电子称 1 1 方案论证与比较 1.
8、1 传感 器 为了使得电子称更具有实用性,本系统设定 称重范围 在 10Kg之内 ,重量误差不大于 0.005Kg。 考虑到秤台自重、振动和冲击分量,还要避免超重损坏传感器,所以传感器量程必须大于额定称重 10Kg。根据现有日常使用情况和互联网上可选择的简单型号,我 选择的 是 L-PSIII 型传感器,量程 10Kg,精度为 0.01%,满量程时误差 0.002Kg。可以满足本系统的 设定 精度要求。其原理如 图 1-1 所示 。 称重传感器主要由弹性体、电阻应变片电缆线等组成,内部线路采用惠更斯电桥,当弹性体承受载荷产生变形时,输出信号电压可由下式给出 1:E i nR4 R4R3 R3R
9、2 R2R1 R1)42( 42E RR RRo u t 图 1-1 传感器原理图 1.2 前级放大器部分 压力传感器输出的电压信号为毫伏级,所以对运算放大器要求很高。我们考虑可以采用以下几种方案可以采 用: 方案一、利用普通低温漂运算放大器构成多级放大器。 普通低温漂运算放大器构成多级放大器会引入大量噪声。由于 A/D 转换器需要很高的精度,所以几毫伏的干扰信号就会直接影响最后的测量精度。所以,此中方案不宜采用。 方案二、由高精度低漂移运算放大器构成差动放大器。 差动放大器具有高输入阻抗,增益高的特点,可以利用普通运放 ( 如 OP07)做成一个差动放大器。 基于 AT89S52 的数字电子
10、称 2 图 1-2 如图 1-2 所示 电阻 R1、 R2 电容 C1、 C2、 C3、 C4 用于滤除前级的噪声, C1、C2 为普通小电容,可以滤除高频干扰, C3、 C4 为大的电解电容,主 要用于滤除低频噪声。 优点:输入级加入射随放大器,增大了输入阻抗,中间级为差动放大电路,滑动变阻器 R6 可以调节输出零点,最后一级可以用于微调放大倍数,使输出满足满量程要求。输出级为反向放大器,所以输出电阻不是很大,比较符合应用要求。 缺点:此电路要求 R3、 R4 相等,误差将会影响输出精度,难度较大。实际测量,每一级运放都会引入较大噪声。对精度影响较大。 方案三:采用专用仪表放大器,如: IN
11、A126, INA121 等。 此类芯片内部采用差动输入,共模抑制比高,差模输入阻抗大,增益高,精度也非常好,且外部接口简单。 以 INA126 为例 ,接口如 图 1-3 所示: 图 1-3 放大器增益 GRKG 805,通过改变 GR 的大小来改变放大器的增益。 基于以上分析,我们决定采用制作方便而且精度很好的专用仪表放大器INA126。 1.3 A/D 转换器 方案一、逐次逼近型 A/D 转换器,如: ADC0809、 ADS7804 等。 逐次逼近型 A/D 转换 ,一般具有采样 /保持功能。采样频率高,功耗比较低,基于 AT89S52 的数字电子称 3 是理想的高速、高精度、省电型
12、A/D 转换器件。 方案二、双积分型 A/D 转换器:如: ICL7135、 ICL7109 等。 双积分型 A/D 转换器精度高,但速度较慢 (如: ICL7135),具有精确的差分输入,输入阻抗高(大于 M310 ),可自动调零,超量程信号,全部输出于 TTL电平兼容。 双积分型 A/D 转换器具有很强的抗干扰能力。对正负对称的工频干扰信号积分为零,所以对 50HZ 的工频干扰抑制能力较强,对高于工频干扰(例如噪声电压)已有良好的滤波作用。只要干扰电压的平均值为零,对输出就不产生影响。尤其对本系统,缓慢变化的压力信号,很容易受到工频信号的 影响 2。 但是 作为电子秤,系统对 AD 的转换
13、速度要求并不高,精度上 8 位的 AD 足以满足要求。它比 双积分型 A/D 转换器 虽然有 着低廉的成本 。 综合的分析其优点和缺点,我 最终选择了 ADC0809。基于 AT89S52 的数字电子称 4 2 硬件详细设计 2.1 MCU 中央控制部分 2.1.1 AT89S52 的功能特性描述 AT89S52 是一种低功耗、高性能 CMOS8 位微控制器,具有 8K 在系统可编程 Flash 存储器。使用 Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。片上 Flash 允许程序存储器在系统可编程,亦适 于常规编程器。在单芯片上,拥有灵巧的 8 位
14、CPU 和在系统可编程 Flash,使得 AT89S52 为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。AT89S52 具有以下标准功能: 8k 字节 Flash, 256 字节 RAM, 32 位 I/O 口线,看门狗定时器, 2 个数据指针,三个 16 位定时器 /计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。另外, AT89S52 可降至 0Hz 静态逻辑操作,支持 2 种软件可选择节电模式。空闲模式下, CPU 停止工作,允许RAM、定时器 /计数器、串口、中断继续工作。掉 电保护方式下, RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下
15、一个中断或硬件复位为止。 3 2.1.3 AT89S52 的 管脚排列 AT89S52 的管脚排列如图 2-1。 P1.01P1.12P1.23P1.34P1.45P1.56P1.67P3.0(RXD)10P3.1(TXD)11P3.2(INT0)12P3.3(INT0)13P3.4(T0)14P3.5(T1)15P3.6(WR)16P3.7(RD)17P0.039P0.138P0.237P0.336P0.435P0.534P0.633P0.732P2.728P2.627P2.526P2.425P2.324P2.223P2.122P2.021P1.78XTAL218XTAL119RST9PSE
16、N29ALE30VPP/EA31GND20VCC40图 2-1 AT89S52 管脚图 VCC:供电电压。 GND:接地。 P0 口: P0 口为一个 8 位漏级开路双向 I/O 口 ,作为输出口, 每 位可驱动基于 AT89S52 的数字电子称 5 8 个 TTL 逻辑电平 。当 P0 口的管脚第一次写 1 时,被定义为高阻输入 , P0 能够用于外部程序数据存储器,它可以被定义为数据 /地址的 低 八位。在 FIASH 编程时, P0 口作为原码输入口,当 FIASH进行校验时, P0 输出原码,此时 P0 外部必须被拉高。 P1 口: P1 口是一个内部提供上拉电阻的 8 位双向 I/O
17、 口, P1 输出 缓冲器能驱动 4 个 TTL 逻辑电平 。 P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH编程和校验时, P1 口作为 低 八位地址接收。 P2 口: P2 口为一个内部上拉电阻的 8 位双向 I/O 口, P2 输出 缓冲器 能驱动4 个 TTL 逻辑电平 ,当 P2 口被写 1 时,其管脚被内部上拉电阻拉高,且作为输入 , 并因此作为输入时, P2 口的管脚被外部拉低,将 输出电流 , 这是由于内部上拉的缘故。 P2 口当用于外部程序存储器或 16 位地址外部数据存储器进行存取时,
18、P2 口输出地址的高八位。在给出地址 “ 1” 时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时, P2 口输出其特殊功能寄存器的内容 , P2口在 FLASH 编程和校验时接收高八位地址信号和控制信号。 P3 口: P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口, P3 输出缓冲器能驱动 4 个 TTL 逻辑电平, 当 P3 口写入 1 后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平, P3 口将输出电流这是由于上拉的缘故 。 P3 口也可作为 AT89S52 的一些特殊功能口,如下所示: P3 口管脚 备选功能 P3.0 RXD(串行输入口) P
19、3.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 口同时为闪烁编程和编程校验接收一些控制信号。 基于 AT89S52 的数字电子称 6 RST:复位输入 , 当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许 端 的输出电平用于锁存地址的地 址 字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时
20、, ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX, MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。 /PSEN:外部程 序存储器的选通信号 端 。在由外部程序存储器取指期间,每个机器周期两次 /PSEN 有效 , 但在访问外部数据存储器时,这两次有效的 /PSEN信号将不出现。 /EA/VPP :当
21、/EA 保 持 低 电 平 时 , 则 在 此 期 间 外 部 程 序 存 储 器( 0000H-FFFFH),不管是否有内部程序存储器。注意加密方式 1 时, /EA 将内部锁定为 RESET;当 /EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源( VPP)。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出 。 2.1.5 AT89S52 单片机的工作过程和工作方式 单片机工作过程遵循现代计算机的工作原理(冯诺依曼原理),即程序存储和程序控制。存储程序是指人们必须事先把计算机的执行步骤序列(
22、即程序)及运行中所需的数据,通过一定的方式输入并存储在计算机的存储器中。程序控制是指计算机能自动地逐一取出程序中的指令,加以分析并执行规定的操作。 单片机的工作方式有:复位、程序执行、掉电保护和低功耗、编程、校验与加密等方式 4。 2.2 A/D 转换 器 2.2.1 ADC0809 特性 本设计用到的模数转换器是有 8 路输入通 道和、 8 位输出的 A/D 转换器基于 AT89S52 的数字电子称 7 ADC0809。 在自动控制领域中,除数字量外经常会遇到另一种物理量,即模拟量,例如:温度、速度、压力、电流、电压等。而由于计算机只能识别并处理数字信号,因此计算机系统中凡遇到有模拟信号的地
23、方,就需要将模拟信号转换成数字信号的,在单片机的应用系统中,经常会用到模数转换电路,也就出现了单片机的模/数( A/D) 转换的接口问题。目前这些转换电路及其接口都已集成化,具有体积小、功能强、可靠性高、误差小、功耗低等特点,并能很方便地与单片机连接。 A/D转换器与单片机的接口是单片机应用系统的 重要接口,任何型号的 ADC芯片都能与单片机连接,但接口形式与 ADC 芯片型号、转换速度以及分辨率的要求不同有所差异。从 ADC 接口电路结构来看 ADC 芯片与单片机连接有如下形式:与单片机总线直接连接。用三态门与单片机连接。通过 I/O 接口与单片机 2.2.2 ADC0809 的基本工作原理
24、 ADC0809 可实现 8 路模拟信号的分时采集,转换后的数字量输出是三态的(总线型输出),可直接与单片机数据总线相连接。 ADC0809 采用 5V 电源供电,外接工作时钟。本系统中, ADC0809 工作时钟为 500KHz,其转换时间为128 s。 1)输入为 8 个可选通的模拟量 IN0 IN7。至于 ADC 转换器接收哪一路输入由地址 A、 B、 C 控制的 8 路模拟开关实现。 同一时刻, ADC0809 只接收一路模拟量输入,不能同时对 8 路模拟量进行模数转换。 2)模 /数转换 转换开始时,将逐次逼近寄存器清 0,这时, D/A 转换器输出也为 0。启动转换后,先使逐次逼近寄存器的最高位 D7 置 1,经过 D/A 转换后,得到一个模拟电压 Vs。把 Vs 和输入模拟电压 Vi 进行比较,若 Vi 大于 Vs,则该位为 1,反之为 0。然后使逼近寄存器的 D6 位置 1,经过 D/A 转换后再与 Vi 进行 比较,决定 D6 为 1 还是 0。重复上述过程,经过 8 次比较后,逐次逼近寄存器中得到的数值就是转换后的数据。这个数据送入缓冲寄存器,从而得到数字量输出。 3)输出