单片机自动启动串行的解决方法如下:

1、电路原因:电源不稳定导致串行误触发,设置开机后延迟1秒等待电源稳定,再看是否恢复。
2、电源电压原因:测试电压正确,再用示波器查看电源纹波,查询器件资料,确认纹波要求是否适合。
随着转换精度要求的不断提高,A/D 转换芯片的位数不断提高。一方面高精度并行 A/D 转换芯片引脚数不断增加,价格攀升,一定程度上限制了用户的选用;另一方面,由于模拟量 和数字量之间需要考虑隔离,在数字端隔离具有技术成熟、稳定,无误差等一系列优点,被广 泛使用,但是随着并行A/D 位数增加,数字隔离代价太大,不现实;此外引脚增加也无形中增 大了印制板的面积,增加了成本,限制了某些场合的使用。 随着芯片集成度和工艺水平的提高,串行 A/D(尤其是高精度串行 A/D)转换芯片正在被 广泛地采用。串行A/D 转换芯片以其引脚数少(常见的8 引脚或更少),集成度高(基本上无需 外接其他器件),价格低,易于数字隔离,易于芯片升级(例如10 位串行A/D MAXl243 和12 位 串行A/D MAX187/189 都是DIP8 封装且引脚完全对应一致,再如14 位串行A/D MAXl94 和16 位串行A/D MAXl95 都是DIPl6 封装且引脚完全对应一致),廉价等一系列优点,正逐步取代 并行 A/D 转换芯片,其代价仅仅是速度(主要是数据串行逐位传送的速度,而非转换速度)略 微降低。 串行A/D 转换芯片的型号较多,例如,MAXl71 是带光电隔离的12 位串行A/D 芯片,MAXl47 是8 通道的12 位串行A/D 芯片等等。 串行A/D 转换器的生产厂商很多,例如著名的厂商有:ADI、NS(国家半导体)、TI(德州 仪器)等。由于串行A/D 转换器的基本结构功能相似,本书以MAXIM 公司的MAXl87/189 为例 介绍。 1.MAXl87/189 芯片引脚及功能 MAXl87/189 是 MAXIM 公司的具有 SPI(Serial Peripheral Interface)总线接口的 12 位逐次逼近型(SAR)A/D 转换芯片。DIP8 引脚封装,外接元件简单,使用方便。具有1 个模拟 量通道,单一+5 V 供电,转换速度为 75 kHz,转换时间为 8.5μ s,内建采样/保持器 (Track/Hold),可转换0~5V 模拟电压。 MAXl87/189 的不同在于:MAXl87 具有内部基准,无需外部提供基准电压;MAXl89 则需 外接基准电压。 MAXl87/189 内部结构如图1 所示,芯片引脚如图2 所示。 图1 MAXl87/189 内部结构 图2 5.25 MAXl87/189 芯片引脚 MAXl87/189 芯片引脚及功能如下: (1)与电源相关的引脚(共4 脚) .VDD:工作电源,为+5V±5%。 .GND:模拟和数字地。 .REF:参考电压输入。对于内含基准电压的MAXl87;只需外接一个4.7μ F 的退耦电容 “激活”内部基准,使其产生4.096V 的输出即可;对于MAXl89 需外接2.5V 到VDD 的精密电 压,并增加0.1μ F 的退耦电容(外接基准电压也适用于禁止内部基准电压的MAXl87)。 .AIN:模拟电压输入范围为0~ REF 或0~4.096V(MAXl87)。 (2)与控制和数据相关的引脚(共4 脚) .SHDN(Shut Down):关闭控制信号输入,提供三级关闭方式。当SHDN 输入低电平时,表 示芯片处于待命低功耗状态,此时电流仅10μ Α ;当SHDN 输入高电平时,允许使用内部基准; 当SHDN 悬浮时,禁止使用内部基准,只能使用外部参考电压。 .DOUT:串行数据输出,串行脉冲SCLK 的下降沿数据变化。 .CS:片选输入,低电平有效。CS 信号下降沿启动A/D 转换,A/D 转换期间CS 应保持低电 平。CS 变高时,DOUT 呈高阻态。 .SCLK:串行时钟输入,最大允许频率5MHz。 MAXl87/189 具有内部的采样保持器(T/H),待转换模拟电压(范围在0~REF 之间)经T/H 与 DAC 转换的结果比较,比较结果影响 12 位移位寄存器,移位寄存器数据再送入 DAC 转换, 再比较,直至转换结束。 使用MAXl87/189 进行A/D 转换时应分两步走。 第一步,启动A/D 转换,等待转换结束。当CS 蝇输入低电平时,启动A/D 转换,此时DOUT 引脚输出低电平,充当传递“转换结束”信号的作用。当DOUT 输出变高电平时,说明转换结 束(在转换期间,SCLK 不允许送入脉冲)。 第二步,串行读出转换结果。此时,从 SCLK 引脚输入读出脉冲,SCLK 每输入一个脉 冲,DOUT 引脚上输出一位数据,数据输出的顺序为先高位后低位,在 SCLK 信号的下降沿数据 改变,在SCLK 的上升沿数据稳定。因此,读出12 位数据需要13 个SCLK 下降沿。可以在SCLK 信号为高电平期间从DOUT 引脚上读数据。 2.接口与编程 (1)硬件连接 MAXl87与MCS-51 的连接如图3所示。其中,P1.7 控制片选,P1.6 输入串行移位脉冲,P1.5 取出串行数据。MAXl87 外接 4.7μ F 退耦电容激活内部电压基准,SHDN 接+5V 允许使用内部 基准。 图3 MAXl87 与MCS-51 的连接 与其他器件片选不同的是,MAXl87/189 的片选在转换和读出数据期间始终保持低电平, 不能采用前面章节介绍的写P2.7 之类的做法。 (2)程序设计 工作流程:清P1.7,启动MAXl87 开始A/D 转换。读P1.5 直至变高,等待转换结束。从 P1.6 引脚发串行脉冲,从P1.5 引脚逐位读取数据。 由于MCS-51 单片机外接晶振最大不超过12 MHz,即便是执行一条单周期指令也需1μ s, 所以发送SCLK 时无需延时。 例如,将MAX187 转换结果存入31H、30H 单元,右对齐,31H 存高位(高4 位补0)。程序清 单如下: HIGH EQU 31H LOW EQU 30H MOV HIGH,#00 MOV LOW,#00 ;将转换结果单元清除 CLR P1.6 CLR P1.7 ;启动A/D 转换 JNB P1.5,$ ;等待转换结束 SETB P1.6 ;XLK 上升沿 MOV R7,#12 ;置循环初值12 LP: CPL p1.6 ;发SCLK 脉冲 JNB P1.6,LP ;等待SCLK 变高 MOV C,P1.5 ;将数据取到C MOV A,LOW RLC A MOV LOW,A MOV A,HIGH RLC A MOV HIGH,A ;将取到的数据位逐位移入结果保存单元 DJNZ R7,LP SETB P1.7 ;结束 RET 在实际应用场合中,通常需要电气隔离。图4 给出了采用电气隔离的电路原理图。由于 读取 A/D 转换结果的速度较慢,对光耦的要求也不是很高,使用 TLP521-4 也是可行的,


