### 多路AD采集程序分析
#### 程序概述
本程序主要实现了对11路模拟信号的采集,并在数码管上进行显示。通过控制单片机的外设(如P1、P2口)及相关的外部硬件(如TLC1542 AD转换器),实现信号采集与数据显示的功能。
#### 核心功能与架构
- **程序名称**:多路数据采集。
- **完成时间**:2010年7月28日。
- **编写者**:江哥。
#### 关键变量定义
- **OutputEQUP1**:P1口被指定为段码输出口。
- **SelectEQUP2**:P2口被指定为位码选择口。
- **MSBEQU40H**:该内存位置用于存放转换数据的高八位。
- **LSBEQU41H**:该内存位置用于存放转换数据的低八位。
- **TempEQU42H**:用于存储临时数据。
- **ChannelEQU43H**:用于存储待转换的DA通道号。
- **DisstartEQU30H**:用于存储数据的起始地址。
- **NumEQU6**:表示待显示数据的位数。
#### 硬件接口定义
- **SDOBIT P3.0**:A/D转换的数据输出口。
- **ADDRBIT P3.1**:串行数据输出,用于选择待转换的模拟通道。
- **CSBIT P3.4**:片选信号,低电平有效。
- **CLKBIT P3.5**:时钟信号输入端。
- **EOCBIT P3.6**:数据转换完标志信号,低电平表示数据转换完毕。
#### 主程序流程
- **初始化**:设置堆栈指针SP,并开启外部中断0。
- **主循环**:
- 读取TLC1542内部数据(调用`Read_TLC1542`子程序)。
- 数据格式调整(调用`Date_Transform`子程序)。
- 选择通道(调用`Select_Channel`子程序)。
- 显示数据(调用`Display`子程序)。
- 延时30微秒(调用`Delay_30us`子程序)。
- 循环执行上述步骤。
#### 子程序详解
- **Date_Transform**(数据格式调整程序):
- 将转换后的数据(包括高低位)进行格式调整,以便于后续显示。
- 具体操作包括:将低位数据乘以5、高位数据乘以5并与临时值相加、除法运算获取十进制数值等。
- 重复上述操作直至所有位数处理完毕。
- **Read_TLC1542**(读取TLC1542内部数据程序):
- 初始化芯片并发送地址数据,选择转换通道。
- 等待数据转换完毕后,依次读取高低位数据。
- 高位数据读取两比特,低位数据读取八比特。
- 将读取的数据分别存入对应的内存位置(MSB和LSB)。
#### 工作原理
- **启动过程**:程序启动后首先进行初始化工作,设定堆栈指针,并开启外部中断0,以便响应外部触发事件。
- **数据采集**:通过调用`Read_TLC1542`函数实现对TLC1542 AD转换器的数据读取,完成模拟信号到数字信号的转换。
- **数据处理**:转换后的数字数据经过`Date_Transform`函数进行格式化处理,以适应数码管的显示需求。
- **显示控制**:通过`Display`函数控制数码管的显示,实现对采集数据的直观展示。
- **循环执行**:整个采集和显示的过程在一个无限循环中不断重复,确保实时更新显示数据。
#### 总结
本程序通过巧妙的设计实现了多路模拟信号的采集与显示,通过对硬件资源的有效利用,实现了较为复杂的信号处理与显示逻辑。对于理解AD转换器的基本工作原理以及如何在单片机平台上进行信号采集具有一定的参考价值。