system: [SYSTEM]

user: 3. 设计方案选择 3.1. 相关方案简要原理 3.1.1. PIC18F452单片机 PIC18F452是一款哈弗结构的高性能精简指令集单片机，其具有16位宽度指令和8位宽度数据，指令兼容PIC16系列和PIC17系列单片机 [ 3 ]。内部自带32 K大小的FLASH以及1.5K大小的RAM，且其支持最大40 MHz的时钟频率，最大指令执行速度为10 MIPS [ 4 ]。其内部自带8通道10位A/D，采样速率高(可编程)，同时具有上电复位，电压跌落侦测复位(可编程)，上电延时，SPI，I2C，USART等功能。其内部FLASH典型可擦写10万次，内部EEPROM典型可擦写100万次，FLASH和EEPROM的数据可保存至少40年 [ 3 ]。除此之外，其内部自带4个8位或16位定时器，且部分I/O口具有外部中断功能。其最小系统电路如图2所示。 图2. PIC18F452最小系统电路图 3.1.2. TLP250光耦驱动电路(正弦波信号整型为方波信号) 图3. TLP250光耦驱动电路图 TLP250是由日本东芝公司生产的一款光耦隔离芯片，包含一个Ga Al As光发射二极管和一个集成光探测器，可直接驱动功率IGBT，其驱动电流可1.5 A。TLP250光耦隔离芯片主要特点：输入阈值电流IF = 5 mA (max)；电源电流ICC = 11 mA (max)；电源电压VCC = 10~35 V；输出电流IO = ±0.5 A (min)；开关时间tp LH /tp HL =0.5 us (max) [ 4 ]。其光耦驱动电路如图3所示。因为一般输入信号是比较小的，也即输入信号驱动TLP250的电流很小，故在中间级加一个三极管放大输入信号。电路正常工作时，当输入信号为正幅值输入，光耦内部的光发射二极管会立即通电而发光，对应的集成光探测器因此会检测到光信号，使得TLP250的6号管脚输出VCC，反之当输入信号为负幅值输入时，则6脚输出0 V。 3.1.3. 普通4 × 4按键原理 图4. 普通4 × 4按键示意图 如图4所示，RD0~RD3端口用来进行列扫描，RD4~RD7端口用来进行行扫描。RD4~RD7各自通过一个上拉电阻接到电源上，并分别与RD0~RD3端口通过一个按键连接起来。 当一个按键按下时，对应的行输入口的电平变为通过按键连接的列输入端口的电平。普通状态下，4条列端口的电平全为高。当开始进行按键扫描时，4条列端口的电平依次变低(有且只有一条列端口为低电平)，每次变低的同时还检测行端口电平，如果行端口电平为低，则可以确定是哪一个按键按下。 3.1.4. TM1638八位数码管16按键原理 图5. 所使用的TM1638模块电路图 TM1638是带键盘扫描接口的LED驱动控制专用芯片。该芯片内部集成MCU数字接口、数据锁存器、LED高压驱动和键盘扫描等电路。TM1638可以同时驱动8个共阴极数码管，可扫描24个矩阵式按键 [ 5 ]。TM1638典型电路如图5所示，该模块与PIC单片机使用软件模拟SPI通讯的方式进行通信，并且要特别注意其DIO端口要外接一个10 k欧姆的上拉电阻到电源。其通信时序如图6所示。特别注意的是读取数据的时候，从串行时钟CLK的第8个上升沿开始设置指令到CLK下降沿读数据之间需要一个等待时间Twait(最小1 μs)。 图6. TM1638通信时序图 3.1.5. LCD1602显示原理 液晶显示器在控制显示面板中应用非常广泛，英文名是Liquid Crystal Display，简称LCD。液晶显示器具备显示器件体积小、重量轻、功耗低，性价比高等优点，所以LCD日渐成为各种便携式电子产品的理想显示器。1602液晶也叫1602字符型液晶，它是一种专门用来显示字母、数字、符号等的点阵型液晶模块，它有若干个5 × 7或5 × 11点阵字符位组成，每个点阵字符位都可以显示一个字符。 LCD1602可以显示2行16个字符，有8位数据总线D0-D7，和RS、R/W、EN三个控制端口，工作电压为5V，并且带有字符对比度调节和背光。除此之外，LCD1602液晶显示模块可以只用D4-D7端口作为两次四位数据传送。这样的话，可以节省MCU的I/O口资源。其典型应用如图7所示。 图7. 单片机与LCD1602连线示意图 3.1.6. USART通信原理 USART接口一般通过三个引脚与其他设备连接在一起，并且任何USART双向通信至少需要两个脚：接收数据输入(RX)和发送数据输出(TX)。 RX：接收数据串行输入。通过采样技术来区别数据和噪音，从而恢复数据。 TX：发送数据输出。当发送器被禁止时，输出引脚恢复到它的I/O端口配置。 当发送器被激活，并且不发送数据时，TX引脚处于高电平，并且总线在发送或接收前应处于空闲状态。一帧数据结构一般为1个起始位，一个数据字(8或9位，最低有效位在前)和1或2个停止位。 传送速率用于说明数据传送的快慢。在串行通信中，数据是按位进行传送的，因此传送速率用每秒钟传送格式位的数目来表示，称之为波特率(band rate)。每秒传送一个格式位就是1波特。常用的波特率有：4800、9600、19，200、115，200波特。1波特 = 1 bps (位/秒)。USART的数据发送与接受过程如图8所示。 图8. USART串口通信原理图 3.1.7. USART多机通信原理 1) 硬件方案 在多机通信中，主机必须要能对多个从机进行识别，在PIC18F452单片机中可以通过修改RCSTA2寄存器的ADDEN位与RX9位来实现。当RX9为1时，串口接收的每一帧数据信息都是9位，其中第9位是数据可编程位，通过给ADDEN置1或置0来区别地址帧和数据帧，当该位为1时，接收地址帧；该位为0时，接收数据帧。在多机通信过程中，主机先发送某一从机的地址，再等待从机的应答。当所有的从机接收到地址帧后与本机地址进行比较，若相同，则从机将ADDEN置0准备接收数据；若不同，则丢弃当前数据，ADDEN位不变。 2) 软件方案 通过软件中设置主机发送数据前的不同标志位与发送数据后的截止位，再在从机接收软件当中设定数据接收判断语句，如果判断到接收到的第一个标志位与该从机的标志位相同，则接收该帧数据截止位前的所有数据，否则丢弃该数据。并且不同的从机，其标志位均不同。 3.1.8. 外部硬件分频电路 1) CD4017 CD4017是一种十进制计数器/脉冲分配器。CD4017是5位Johnson计数器，具有10个译码输出端，CP、CR、INH输入端。时钟输入端的斯密特触发器具有脉冲整形功能，对输入时钟脉冲上升和下降时间无限制。其典型电路如图9所示。 图9. CD4017电路图 2) CD4040 CD4040是12位二进制串行计数器，所有计数器位为主从触发器。计数器在时钟下降沿进行计数，CR为高电平时，对计数器进行清零。其典型电路如图10所示。 3.1.9. 测频方法 1) 测频法原理 若某一周期信号在时间间隔T内，计得重复变化了N次，则根据频率的定义，该信号的频率为 f x = N T #(1) 图10. CD4040电路图 T——通常取1 s或其它十进时间，如10 s，0.1 s，0.01 s等。 2) 测周法原理 把被测信号的周期Tx作为闸门时间，把标准频率脉冲作为计数脉冲，测出Tx。该信号的周期为 T X = N T 0 #(2) 则利用信号与频率的换算公式，测出信号频率为 [ 6 ] f x = 1 T X #(3) 3.2. 方案讨论 3.2.1. 测频方法比较 测频法测频在实际测试当中比测周法测频具有更高的精确度。因为测周法适合测量频率较低的频率，而本系统需测量较高频率的信号，并且受限于PIC18F452单片机性能与中断运行所需时间，测周法测得的周期误差比较大，并且在STM32F334C8T6上进行测周法测频与测频法测频两种不同方法的验证时，无论是在测量低频还是在测量高频情况下，测频法的误差基本上都是±1测量分辨率。而测周法在被测信号频率高于500 Hz时开始出现较为明显的偏差。 3.2.2. LCD1602显示 LCD1602显示字符方便，易控制，成本低，并且网上资料教程也多，数据手册不是很厚，易查阅。但是LCD1602显示的字体有大小限制，不能显示图形和曲线，并且占用较多I/O口。 3.2.3. 16按键方案比较 普通的4 × 4矩阵键盘具有成本低，编程资料多，易控制的优点，但是其占用了8个I/O口。 TM1638模块只需占用3个I/O口，并且还带有8位数码管显示，能够实现按键按下的提示，方便用户使用，但是其编程较为复杂，且数码管刷新显示时，会对供电电源产生一定的噪声干扰，需要独立对其供电，以消除对单片机电源的噪声影响。 3.2.4. 多机通信 硬件方案的多机通信具有易控制，稳定性最优的特点，但是网上资料与教程很少，编程与相关寄存器配置较为复杂。 软件方案的多机通信相较于硬件方案，只是在原有的USART主从通信的基础上添加了1个标志位与一个截止位，其实现判断的代码很简单，并且测试时的效果也很好。 3.3. 最终方案 综合上面原理与方案的对比讨论，最终选择了所有量程全都使用测频法测频，使用LCD1602进行数据显示，使用TM1638模块提供16按键功能和使用软件方案实现多机通信。