第3章 系统模块分析 表3-4 串口工作方式控制位
SM0 0 0 1 1 SM1 0 1 0 1 工作方式 方式0 方式1 方式2 方式3 SM0、SM1:串行口工作方式控制位。
SM2:多机通信控制位,主要用于方式2和方式3接收状态,当串行口工作方式2或3,SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接收到的数据放弃。当SM2=0时,不管第9位数据时0还是1,都将数据送入SBUF,并发出中断申请。
REN:允许接收位,用于控制数据接收的允许和禁止。TEN=1时,允许接收;REN=0时,禁止接收。
TB8:发送接收数据位8。在方式2和方式3中,TB8是要发送的,即第9位数据位。在多机通信中同样也要传输这一位,代表传输的地址还是数据。TB8=0为数据,TB8=1时为地址。
RB8:接收数据位8方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。
TI:发送中断标志位,可寻址标志位。方式0时,发送完第8位数据后,由硬件置位。其他方式下,在发送或停止位之前由硬件置位。TI=1表示帧发送结束,TI可由软件清“0”。
RI:接收中断标志位,寻址标志位。接收完第8位数据后,由硬件置位。其他工作方式下,该位由硬件置位,RI=表示帧接收完成。ES为串行中断允许控制位,ES=1循序串行中断,ES=0禁止串行中断[10]。
表3-5 中断允许寄存器
位符号 位地址 EA AFH — AEH — ADH ES ACH ET1 ABH EX1 AAH ET0 A9H EX0 A8H 21
燕山大学本科生毕业设计(论文)
TI 发送中断 发送SBUF(99H) TXD 串行输出 系统总线 移位 时钟 输入移位寄存器 RXD 串行输入 RI 接收中断 图3-7 串行口寄存器结构图 接收SBUF(99H) 3.4 整体电路图
本设计的电路图是应用Protel 2004绘制的,电路图中画出了本次设计所用到的所有模块。整体电路图附于附录5中。
3.5 本章小结
本章主要讲述三个模块:A/D转换模块、LCD1602显示模块和串口通信模块。在每个模块中都详细介绍了各模块所使用芯片的特性,引脚功能,工作原理以及本设计所使用的模块电路图,为进一步了解本设计做好充分的准备。
22
第4章 系统软件分析
第4章 系统软件分析
本章是从总体上分析我设计的多路信号采集器系统,包括系统的程序流程图、系统的仿真分析,在仿真分析中,我们将用Proteus软件画出电路并模拟实物下载程序来调试程序并观察结果。
4.1 程序流程图分析
本设计的主程序流程图如图4-1所示。
图4-1 主程序流程图 向串口发送A/D转换后的数据 向LCD1602发送A/D转换后的数据并显示 TLC2543进行A/D转换 初始化 开始 4.1.1 初始化程序
主程序开头的初始化过程包括对单片机I/O口、变量、TLC2543芯片的控制端口、液晶显示器LCD1602、串口控制的初始化。其中单片机的I/O口
23
燕山大学本科生毕业设计(论文)
和变量初始化不予说明,下面详细讲述一下TLC2543芯片的控制和液晶显示器LCD1602的初始化过程。
4.1.1.1 TLC2543初始化编程 根据TLC2543的工作时序,只有在片选/CS为低电平时才会发生A/D转换,所以,在初始化时必须要在TLC2543开始工作前将片选/CS置为低电平0。然后D3和D2选择TLC2543的数据格式为8位,12位还是16位,当D3和D2分别为0和1时数据格式为8位;当D3和D2分别为X和0时数据格式为12位;当D3和D2分别为1和1时数据格式为16位。本次设计所使用的数据格式为12位。然后将CLOCK控制输入输出的时钟置为0。定义一个变量来确定输出的通道号,再将存放采集数据的变量清0。最后,将片选/CS置0,A/D转换开始。
4.1.1.2 LCD1602初始化编程 写显示程序之前,必须进行初始化,否则模块无法正常显示,下面会介绍利用内部复位电路进行初始化的过程。首先需要将LCD1602显示器进行“清屏”。然后进行其功能的设置,功能设置指令如表4-1所示。
表4-1 功能设置指令表
指令编码 RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 0 0 0 1 DL N F X X 功能设定 0 指令功能 执行时间/us 40 DL=1时为8Bit接口数据。N=0时1行显示。F=0时为5×7dot字形。再进行显示开/关控制的设置:D=0时显示关,C=0时光标关。当B=0时消隐关。接着进行输入方式设置的初始化:I/D=1,S=0无移位。
4.1.2 A/D转换的实现
A/D转换模块是本设计的核心模块,本次设计主要考虑到数据通道的数量而采用了具有11路信号的TLC2543芯片。首先,当/CS=0时,TLC2543被选中,时钟由I/O CLOCK输入。控制字由DATA INPUT脚输入,高位在先。在每个时钟的上升沿,输入数据被串入DATA INPUT脚。控制字的前4位代表模拟通道的地址,在第4个时钟周期的下降沿,片选的多路开关将被选中的某个模拟通道连接到采样保持器上,直到A/D转换开始。控制字的第3位和第4位(D3~D2)决定输出数据的长度,同时也决定输入数据的时
24
第4章 系统软件分析
钟脉冲的个数,虽然控制字为8位,但D3~D2决定输入数据的时钟脉冲的个数可以有8,12,或16个。在12、16个时钟周期的情况下,输入数据除控制字的8位外,其他位可以是高电平或低电平,但为保证最佳的抗噪声性能,要求固定为高或低,知道EOC脚变高,转换结束。在向DATA INPUT脚写入数据同时,DATA OUT脚上输出的是上一次A/D转换的值。然后,在第8、12或1个时钟周期后,A/D转换器结束采样状态,进入转换状态。在最后一个时钟周期的下降沿,A/D转换器启动转换过程,在转换期间,转换器使用内部时钟进行转换,不在需要外部时钟的干预。当转换结束时,EOC脚变高,表示转换结束,转换结果被保存在输出数据寄存器中。最后,EOC脚的上升沿使得转换器和各引脚复位,输出数据寄存器的第一位卸载DATA OUT脚上。在随后的8、12或16个时钟周期里,每个时钟周期的下降沿将数据移出输出数据寄存器。TLC2543的工作过程分为两个周期,I/O周期和转换周期。
(1)I/O周期 I/O周期由外部提供的I/O CLOCK定义,延续8、12或16个时钟周期,决定于选定的数据长度。芯片进入I/O周期后进行两种操作。首先,在I/O CLOCK的前8个脉冲的上升沿,以MSB前导方式从DATA INPUT端输入8位数据流到输入寄存器。其中前4位为模拟通道地址,控制14通道模拟多路器从11个模拟输入和3个内部测试电压中选通一路送到采样保持电路,该电路从第4个I/O CLOCK脉冲的下降沿开始对所选信号进行采样,直到最后一个I/O CLOCK脉冲的下降沿。I/O周期的时钟脉冲个数与输出数据长度(位数)同时由输入数据的D3、D2位选择为8、12或16。当工作于12或16位时,在前8个时钟脉冲之后,DATA INPUT无效。其次,在DATA OUT端串行输出8位、12或16位数据。当/CS保持为低时,第一个数据出现在EOC的上升沿。若转换由/CS控制,则第一个输出数据发生在/CS的下降沿。这个数据串是前一次转换的结果,在第一个输出数据之后的每一个后续位均有后续的I/O时钟下降沿输出。
(2)转换周期 在I/O周期的最后一个I/O CLOCK下降沿之后,EOC变低,采样值保持不变,转换周期开始,片内转换器对采样值进行逐次逼近A/D转换,其工作由与I/O CLOCK同步的内部时钟控制。转换完成后EOC
25