电子工程设计Ⅱ实验报告 120231班14组
2.2.3电路主要参数计算
(1) 转换精度:
A/D转换器也采用分辨率和转换误差来描述转换精度。
分辨率是指引起输出数字量变动一个二进制码最低有效位(LSB)时,输入模拟量的最小变化量。他反映了A/D转换器对输入模拟量微小变化的分辨能力。在最大输入电压一定时,位数越多,量化单位越小,分辨率越高。
转换误差通常用输出误差的最大值形式给出,常用最低有效位的倍数表示,反映A/D转换器实际输出数字量和理论输出数字量之间的差异。
(2) 转换时间:
转换时间是指转换控制信号(vL)到来,到A/D转换器输出端得到稳定的数字量所需要的时间。转换时间与A/D转换器类型有关,並行比较型一般在几十个纳秒,逐次比较型在几十个微秒,双积分型在几十个毫秒数量级。
实际应用中,应根据数据位数、输入信号极性与范围、精度要求和采样频率等几个方面综合考虑A/D转换器的选用。
(3) 8位数模转换电路主要技术指标:
分辨率 --- 8位:表示能够分辨的最小电压变化
VrefVi?V??Data?8
2
DATA 为 1 时的 Vi 表示最小电压变化
误差 --- ±1LSB
转换时间 --- 100微秒
为便于各模块协调一致的工作,电路设计统一接口模式,方便调试与查错,模数装换模块安装接口如图2.8所示。
10
电子工程设计Ⅱ实验报告 120231班14组
图2. 8 模数转换电路安装结构图
2.2.4 模数转换电路模块的调试
改变设置温度,运行A/D测试程序,检查模/数转换结果。一般为0~5伏特之间改变,相应数为0~255.
调试源程序为: #include \#include \#include \
#define CS1 XBYTE[0x2000] #define TIMER 0x8000 #include \void delay(void); void main(void) {
unsigned char x; Init_Device(); }
11
while(1) { CS1=x; delay(); x=CS1; delay(); }
电子工程设计Ⅱ实验报告 120231班14组
void delay(void) {
unsigned int i; for(i=0;i 一般故障检测方法为: 查数据线是否漏接, 若A/D转换结果数值不随设置温度正比变化检查数据线是否错接;查Vin(-)是否接GND;查 Vin(+) 是否有变化,如无变化,逆向检查直至变送器输出。 若电源连接正常,查CLK-IN引脚是否有锯齿波信号输出,若没有输出检查相关元件连接是否正确,若频率过高(正常约为640KHz)检查元件参数是否有误。如果元件连接及元件参数无误仍无信号输出,则ADC0804损坏。 若CLK-IN引脚有正常的锯齿波信号输出,可修改测试程序,将延时子程序或延时函数去掉,加快程序循环的时间,检查转换控制信号、和数据读取控制信号WR/RD是否正常。 若上述控制信号正常,则可能是ADC0804损坏。 2.3显示与键盘控制电路设计与实现 2.3.1基本要求: 1、4 位7 段数码显示,前 3 位含小数点 2、0 ~ 9数字输入键及若干功能设置按键控制 3、独立电路板安装结构 2.3.2设计方案: 单片机与LED显示器有两种接口方法。 动态显示电路方案:电路简单,成本低,控制程序复杂,适用于显示位数较多的场合。可使用智能芯片8279完成。 本阶段我们用74LS273 设计显示数据输出电路,然后用74LS244设计键盘状态读入电路,最后设计出总的实验电路图,显示模块的电路原理图如图2.9所示。 12 电子工程设计Ⅱ实验报告 120231班14组 图2. 9 显示模块电路原理图 矩阵键盘电路方案:按键较多时,成本低,控制程序较直读电路复杂,适用于显示位数较多的场合。键盘电路的电路图如图2.10所示。 图2. 10 键盘模块电路图 键盘模块工作的时序图如图2.11所示。 图2. 11键盘模块工作时序图 13 电子工程设计Ⅱ实验报告 120231班14组 为便于各模块协调一致的工作,电路设计统一接口模式,方便调试与查错,键盘显示模块安装接口如图2.12所示。 图2. 12 键盘显示模块安装结构图 2.3.3显示模块模块的调试 (1)显示电路模块调试源程序: #include \#include \#include \ #define DP1 XBYTE[0x0000] #define DP2 XBYTE[0x0001] #define DP3 XBYTE[0x0002] #define DP4 XBYTE[0x0003] #define TIMER 0x8000 #include \ unsigned char table[ ]={0xC0,0xF9,0xA4,0xB0,0x99, 0x92,0x82,0xF8,0x80,0x90}; void delay(void); void display(unsigned char x,y); void main(void) { 14