1、微机原理与接口技术实验讲稿(PPT),实验项目,实验箱简介 基于 EPP接口的LED显示8255并行接口原理及编程8253计数器原理及分频实验8253计数器在测频中的应用双积分式A/D 转换器7109 的原理及编程逐次比较式A/D转换器0809的原理及编程D/A转换器0832的原理实验DAC0832在程控信号源中的应用LED点阵显示基本并行输入/输出口在键盘接口中的应用8250串行通信电子称实验,实验箱简介,实验箱的组成原理 实验主板的原理 实验主板是由并行I/O、定时器/计数器、A/D转换器、D/A转换器及LED显示器等接口部件构成,采用了总线结构,各功能部件均通过内部总线进行连接,如下图所
2、示。,实验主板的内总线结构,实验主板的布局,EPP接口原理 EPP信号特性,其引脚定义如下图, EPP端口寄存器 端口地址如表下图所示。表中BASE为并口基地址,,状态寄存器和控制寄存器各位具体定义如下图所示。, EPP接口初始化 在使用EPP之前应将并口置于正向传输模式(输出),即将控制寄存器的方向位(Bit5)置0。可编写EPP初始化函数epp_init()如下: void epp_init(void) outportb(0x37a,0x04); , EPP时序 数据/地址写周期时序,数据/地址读周期时序, EPP端口读写 计算机要同外设实验箱通信,就要通过EPP接口来读写数据,因此,首先
3、应向EPP地址端口(BASE+3)写入欲访问的外设地址,然后从EPP数据端口(BASE+4)读写数据,每次读写1个字节,EPP端口写函数epp_write_data() void epp_write_data(unsigned char paddr,unsigned char data) outportb(0x37b,paddr); epp_check_clear(); outportb(0x37c,data); epp_check_clear();,EPP端口读函数epp_read_data() void epp_read_data(unsigned char paddr,unsigned
4、char *data) outportb(0x37b, paddr); epp_check_clear(); *data = inportb(0x37c); epp_check_clear(); ,EPP接口与本实验平台的连接 ,如下,扩展接口扩展接口的原理及管脚定义如下图所示。,键盘、点阵实验扩展板 ,原理框图如下:,串口实验扩展板 ,原理框图如下:,端口地址 为了方便同学们的在实验中更快,更方便的找到实验板上各个芯片的端口地址,在实验指导书上详细列出了各个端口的地址及其简要的功能描叙。,头文件 在本实验指导书的附录里,列举了部分实验的参考源程序,以便同学们在学习的过程中参考。为了使程序更简
5、化、直观,将常用的地址端口和函数定义成头文件的形式,其头文件有: paddr.h 对实验板内地址进行了宏定义。 eppinit.h EPP接口初始化。 epprw.h EPP端口的读/写。 displed.h LED数字显示函数。,实验一 EPP接口驱动LED显示,实验目的1熟悉EPP接口的输入/输出及读/写操作。2掌握七段LED显示驱动原理及接口方法。3熟悉C语言。,实验任务 1分析实验主板电路,指出输入/输出口地址。 2编写LED显示程序,使实验主板上的四个LED显示任意四位数字和任意一位的小数点,并通过调试。,实验原理 LED显示器原理 7段LED显示器的结构和8位字节数的对应关系如下图
6、:, LED显示实验电路 实验箱主板上带有的四位LED显示器采用四片CD4511(BCD七段锁存译码器)来驱动 。其原理图如下:, 4位LED显示的端口操作为:,本实验共用到的端口地址及其功能介绍00H(2Y0):输出口,用作后两位显示译码驱动器4511 的锁存使能信号。01H(2Y1):输出口, 用作前两位显示译码驱动器4511 的锁存使能信号。03H(2Y3):输出口, 用作4位小数点锁存器74LS273的 控制CLK信号。,编程与调试 程序说明 该程序设计功能为: 先从最高位开始依次显示1,2,3,4,显示时只有一位显示,其它位熄灭。 从高到低轮流点亮小数点。 依次显示0000,1111
7、,2222,3333,.一直到9999。, 编程思路, 编程步骤 调用自定义头文件 #include paddr.h #include epprw.h #include displed.h #include eppinit.h EPP端口初始化 epp_init(); LED的数字显示 在LED上显示某个数,只要在对应的字节上写入这个数即可,例如:要在第二位LED上显示1,第一位LED上显示5,只要先向EPP地址端口写入这两位的地址0x00(D_LED) ,再向EPP数据端口写入相应的数据。 epp_write_data(D_LED, 0x15);如果想要熄灭某个LED,只要在相应的位上写入1
8、0到15的任意一个数。程序中利用此方法循环点亮LED。,思考和练习题 若不对EPP接口进行初始化,会发生什么现象?为什么?编写循环点亮四位小数点的程序。 可以同时点亮四位的小数点吗?如果可以,应怎样设置其端口控制字?,实验二 8255并行接口原理及编程,实验目的 1.熟悉8255内部结构和外部引脚定义。 2.熟悉8255并行接口的原理和接口方法。 3.掌握8255的简单应用编程。,实验任务 1编写出8255的初始化程序。 2编写出循环控制发光二极管的显示程序,并运行通过 3编写出交通灯控制模拟程序。 4理清8255的一些与实验板上其他芯片相连接的I/O端口电路。 5掌握对8255PC口的位操作
9、。,实验原理 8255工作原理 8255有8条数据引脚D0D7,它们全部是双向、三态,用来与数据总线相连接;另外,还有6条输入控制引脚,分别是: RESET: 复位输入信号,高电平有效。当RESET有效时,将梭鱼哦内部寄存器,包括控制寄存器清零,而且把A、B、C三个都设为输入方式,对应的PA7PA0、PB7PB0、PC7PC0引脚均为高阻态。 CS:芯片选中信号,输入低电平有效。只有当它为低电平时,8255才被CPU选中。 A0和A1:芯片内部寄存器的选中信号。当有效时,8255被选中,再由A0、A1的编码决定选中通道A、B、C,还是控制寄存器。 RD:读信号。输入低电平有效。当它为低电平时,
10、由CPU读出8255的数据或者状态信息。 WR:写信号。输入低电平有效当它为低电平时,由CPU将数据或命令写到8255。CS、A0、A1、WR、五根引脚的电平与8255操作的关系,详见下表,8255通道选择和基本操作表, 8255控制字 8255方式选择控制字,方式0基本输入/输出方式1选通输入/输出方式2双向数据传送, 8255按位置位/复位的控制字 通道C的每一位都可以通过向控制寄存器写入置位/复位控制字,而使它相应位置位(即输出为1)或复位(即输出为0)。通道C置位、复位控制字的具体格式下图所示。, 实验电路图,本实验用到的端口地址:23H(1Y1):输出口,8255的控制端口20H(1
11、Y1):输出口,8255端口A的地址21H(1Y1):输入口,8255B端口B的地址22H(1Y1):输入/输出口,8255端口C的地址,编程与调试(一)交通灯实验1程序说明 通过对8255的A口读/写命令,来循环点亮与A口相 连接的红、黄、绿三个发光二级管。在点亮的过程中, 同时在LED上显示时间,从60秒开始倒计时,60秒到6 秒红灯亮,5秒到1秒黄灯亮,然后再从从60秒开始倒 计时,60秒到6秒绿灯亮,5秒到1秒黄灯亮。依次循环。,2编程思路,3编程步骤 调用自定义头文件(同上实验一)。 EPP端口初始化(同上实验一)。 初始化8255。 在本实验中设计为方式0、A口输出、B口输入,故向
12、控制寄存器写入的数据为0x82。在交通灯的实验中,我们就用到A口的输出。8255的片选由1Y1来控制,其控制寄存器的地址为0x23(CW_8255)。 epp_write_data(CW_8255,0x82); 向8255的A口写数据。 由指示灯的硬件电路可知,与其相连的端口输出为低电平,指示灯亮;输出为高电平,指示灯灭。 在本实验中我们要依次点亮红色、黄色、绿色、黄色。 epp_write_data(PA_8255, 0xfe); /*点亮红色指示灯*/ delay(10000); /*延时*/ epp_write_data(PA_8255, 0xfd); /*点亮黄色指示灯*/ delay
13、(10000); epp_write_data(PA_8255, 0xfb); /*点亮绿色指示灯*/ delay(10000); epp_write_data(PA_8255, 0xfd); /*点亮黄色指示灯*/, 点亮实验板上的LED。 在点亮指示灯的同时,要在LED上显示点亮时间,这个数字显示程序可直接调用上面介绍过的LED数字显示程序。 epp_write_data(PA_8255, 0xfe); /*点亮红色指示灯*/ for( i=60;i5;i- ) /* 点亮时间55秒*/ displed(i,0); /*调用LED数字显示函数*/ for( j=0;j100;j+ ) de
14、lay(1000); if(kbhit() exit(0); 4源程序清单 参考指导书附录I-2。,(二)A、B并行口实验1程序说明 该程序为通过操作与8255的B口相连的开关键,来控制与8255的A口相连的发光二极管的亮和灭。2编程思路,3编程步骤 调用自定义头文件(同上)。 EPP端口初始化(同上)。 初始化8255(同上)。 读取8255的B端口的数据 与8255的B端口相连接的是8个开关控制器,通过操作这些开关可以使与其相连的B端口呈现高电平“1”或者低电平“0”。 epp_read_data(PB_8255, 向A端口写数据 epp_write_data(PA_8255, data)
15、 4源程序清单 参考实验指导书附录I-3。,思考和练习 1交通灯实验中如何同时点亮多个指示灯。2. 能否从A口输出C口的获取量。3在不同的工作方式下,考虑I/O口的外设连接。,实验三 8253计数器原理及分频实验,实验目的1.熟悉8253定时器/计数器的功能及接口方法。2.熟悉8253的分频原理。 3.掌握8253的分频应用编程。,实验任务 1分析本实验主板上8253的硬件电路原理。 2熟悉8253的工作原理后,编写出8253的 初始化程序。 3编写出8253分频程序,观察实验显现。,实验原理 8253的引脚 8253有3个独立的16位减计器通道,每一个通道有三条引线: CLK、GATE和OU
16、T。 CLK: 输入时钟, 8253规定,加在CLK引脚的输入时钟周期不能小于380ns。 GATE:门控信号输入引脚。这是控制计数器工作的一个外部信号。当GATE引脚为低时,通常都是禁止计数器工作的;只有 GATE为高时,才允许计数器工作。 OUT:输出引脚。当计数到“0”时,OUT 引脚上必然有输出,输出信号波形取决于工作方式。,8253内部端口的选择及每个通道的读/写操作的选择如下表所示, 8253的端口控制子, 8253的工作方式和输出波形,实验电路组成原理框图,本实验共用到六个端口地址:23H(1Y1): 输出口,8255的控制端口22H(1Y1): 输出端口(PC3),发出计数器0
17、的闸门信 号(0为关,1为开)A0H(1Y5): 输入/输出端口,8253计数器0 的读写口A1H(1Y5): 输入/输出端口,8253计数器1的读写口A3H(1Y5): 输出端口,8253的控制寄存器的端口,编程与调试1.程序说明 对8253的计数器0和1写入初值,使计数器1输出一定频率的方波,从而使得与计数器1输出端相连接的指示灯循环亮和灭。 2.编程思路,3.编程步骤 调用自定义头文件(同上实验一)。 EPP端口初始化(同上实验一)。 初始化8255。 8255的控制字应该定义C口的低位为输出口,工作方式为方式0。 epp_write_data(CW_8255,0x8a); PC3口置“
18、0”,阻止脉冲输入。 初始化8253前,要阻止脉冲输入,就要向PC3口置0,8255的C口的各个端口可以直接置位和复位。 epp_write_data(CW_8255,0x06); 初始化8253。 8253的计数器0、计数器1,工作方式分别为方式2和方式3,都是先写低字节再写高字节和BCD码计数。向计数器0置入初值是1000,向计数器1置入的初值也是1000。,/*8253的0口初始化,写1000进去*/epp_write_data(CW_8253,0x35); epp_write_data(CT0_8253,0x00);epp_write_data(CT0_8253,0x10);/ *82
19、53的1口初始化,设置时间为1s*/epp_write_data(CW_8253,0x77); epp_write_data(CT1_8253,0x00);epp_write_data(CT1_8253,0x10); PC3置“1”,允许脉冲输入。epp_write_data(CW_8255,0X07); 4.源程序清单 参考实验指导书附录I-4。,思考和练习题 1向计数器0和计数器1写入不通的值,指示灯 会出现什么现象?2计数器0和1采用不同的工作方式,指示灯有 什么现象。38253的初始化要在一个脉冲的作用下才能完 成,这对实验中计数器输出信号的频率有没 有影响?,实验四 8253计数器在
20、测频中的应用,实验目的 1了解频率测量原理。 2.掌握8253的应用编程。实验任务 1.进一步理解8253的硬件电路原理。 2.根据测频原理,编写出8253的测频程序,并运行通过。,实验原理 频率测量原理 所谓“频率”,就是周期性信号在单位时间变化的次数。若在一定时间间隔T内,计得这个周期信号得重复变化次数为N,则其频率可表达为: fN/T。电子计数器就是严格按照该定义进行测频得。其原理方框图和工作时间波形下图所示。, 8253的工作原理。自激振荡电路,图中将滑动变阻器Rw左边的阻值设为Rx,令R=RxR1。 当R=R2时,当RR2时,,本实验主板上设计的是第二种情况,通过调节滑动变阻器Rw可
21、获得不同频率的信号源。,电路原理, 输入单元:输入的待测信号fx有以下三种来源: a. AO2是自D/A0832(程控信号源)输出的信号,详见实验六。 b. FX是外界直接输入的信号。 c. 实验主板上自带的振荡电路源。 计数部分:被测频率信号由8253的计数器2计数, 时基信号产生与变换单元 逻辑控制单元开门信号由8255的PC3控制。计数器0的输出(OUT0)和计数器1的时钟(CLK1)直接相连,计数器1的OUT1通过反相器,控制计数器2的CLK2的信号输入,完成硬件方面的控制。实验波形如下图4所示(计数器0、1、2的工作方式依次为方式2、0、2,闸门信号全部为高),闸门时间 在本实验中初
22、始化8253时,设定计数器0、1、2的工作方式分别为0方式2、0、2,向计数器0、1、2中置入的数据一次为为N0、N1、N2。定义计数器0的时钟输入频率为F。闸门(PC3)打开后,信号F进入计数器0,计数器0工作在方式2经N0分频后输出的波形信号频率f0为:,(1),计数器0输出的频率为f0的信号作为计数器1时钟信号(CLK1),计数器1工作在方式0,经 N1分频后输出的波形信号频率f1为:,由式(1)、(2)得:,(2)(3),计数器1输出的频率为f1的信号作为被测信号fx的门控信号,则信号f1的周期即为闸门时间T,由式(3)得:,(4),本实验共用到六个端口地址: 23H(1Y1):输出端
23、口,8255的控制端口 22H(1Y1):输出端口(PC3),发出计数器0的闸门信号(0为关,1为开) 输入端口(PC6),读取计数器2的闸门信号(0为开,1为关) A3H(1Y5):输出端口,8253计数器的控制寄存器的端口 A0H(1Y5):输入/输出端口,8253计数器0 的读写口 A1H(1Y5):输入/输出端口,8253计数器1的读写口 A2H(1Y5):输入/输出端口,8253计数器2的读写口,编程步骤1.程序说明 本程序是利用8253计数器,实现对未知频率信号的测频。实验过程中,可以通过探测点TP9、TP10、TP11分别查看计数器0、1、2的输出情况,通过测试点TP12、TP1
24、3测量经过74LS74输出的1Mhz、5KHz的波形信号。2.编程思路,4.编程步骤 调用自定义头文件(同上实验一)。 EPP端口初始化(同上实验一)。 初始化8255。epp_write_data(CW_8255,0x8a); /*8255写控制字*/ PC3置0,阻值脉冲输入(同实验三)。 初始化8253。/*8253的0口初始化,写1000进去*/epp_weite_data(CW_8253,0x35); epp_weite_data(CT0_8253,0x00);epp_weite_data(CT0_8253,0x01);/*8253的1口初始化,设置时间为1s*/epp_weite_
25、data(CW_8253,0x71); epp_weite_data(CT1_8253,0x00);epp_weite_data(CT1_8253,0x10);/*8253的2口初始化,写ff进去*/ epp_weite_data(CW_8253,0xb4); epp_weite_data(CT2_8253,0xff);epp_weite_data(CT2_8253,0xff);, PC3置1,允许脉冲输入(同实验三) 读取计数器1的输出量(PC6)。do epp_read_data(PC_8255, /*在实验主板上显示测频结果 */,4. 源程序清单 参考实验指导书附录I-5。 思考和练习
26、题1为什么计数器1要工作在方式0能否工作在其余的工作 方式下?2图中计数器1和计数器0级联,计数器1是对计数器0的 溢出计数,其目的是什么?3不通的闸门时间对测频结果是否有影响?如何影响?48253的初始化要在一个脉冲的作用下才能完成,这对 用软件打开闸门的测频结果有什么影响?应该怎样降 低这种影响?,实验五 双积分式A/D 转换器7109 的原理及应用,实验目的1.熟悉双积分式A/D转换器7109的工作原理和外围接口设计。 2.深化理解双积分A/D转换器及数字电压表的工作原理。 3.了解双积分式A/D转换器7109的简单应用程序。4.掌握利用A/D转换器进行电压测量的基本方法。,实验任务1.
27、编写利用A/D转换器进行电压测量的程序,并通过运行。2.分析测量数据的误差及其来源。,工作原理 其主要端口端定义如下:(1)B1B12:12bit的数据输出端(2)OR:溢出判别,输出高电平表示过量程;反之,数据有效。(3)POL:极性判别,输出高电平表示测量值为正值;反之,负值。(4)MODE:方式选择, 当输入低电平信号时,转换器处于直接输出工作方式。此时可在片选和字节使能的控制下直接读取数据;当输入高电平时,转换器将在信号信号握手方式的每一转换周期的结尾输出数据(本实验选用直接输出工作方式)。(5)REF:外部参考电压输入(本实验用其典型值:2.048V)。(6)INL,INH:输入电压
28、端口(有效范围是参考电压的2倍)。(7)OO,OI:外部时钟输入(本实验用其典型值:3.579MHz)。(8)RUN/:运行/保持输入, 当输入高电平时,每经8192时钟脉冲完成一次转换;当输入低电平时,完成正在进行的转换,并停在自动调零阶段(9)STATUS:状态输出,输出高电平,表明芯片处于积分和反向积分阶段;输出为低电平,表明反向积分结束,数据被锁存,模拟部分处于自动返回零态阶段。,(10)CE/:片选,当其为低电平时,数据正常输出;当其为高电平时,所有数据输出端(B1B12、POL、OR)均处于高阻状态。(11)LBEN:低字节使能,输出低电平时,数据线输出低位字节B1B8。(12)H
29、BEN:高字节使能,输出低电平时,数据线输出当高位字节B9B12以及POL、OR的状态值。A/D转换时序(ICL7109直接接口方式),测量放大电路,如图选择不通电阻其增益分别为: 引脚“1”脚断开,增益选择为1倍。 引脚“1”和“10”相连,增益为10倍; 引脚“1”和“100”相连,增益为100倍; 引脚“1”和“200”相连,增益为200倍; 引脚“1”和“300”相连,增益为300倍;, A/D转换器7109实验原理图, 数据及控制信号接口,本实验共用到五个端口:80H(1Y4):输出口,7109低位字节输出口。60H(1Y3):输出口,7109高位字节输出口。 22H(1Y1):输入
30、/输出端口,D2控制7109起停(R/H), D4位读取7109的状态(STATUS)信号(1正 在转换;0转换完毕)。23H(1Y1):输出口,8255的控制端口,校准测量原理 参见实验指导书。,编程与调试1.程序说明 本程序是利用实验主板上的7109A/D测量输入电压,输入电压有4种选择,测量前必须将输入电压端口的跳线选择到需要测量的那个端口。增益也有五种选择(1,10,100,200,300),可根据实验需要选择某一档,并将其跳线连接好。实验测得的电压值同时在PC机的CRT和实验主板内的LED上显示出来。 实验过程中,可以通过测试点TP2查看7109的工作状态,通过探测点TP3查看710
31、9芯片的启动状态。,2.编程思路,3.编程步骤 1调用自定义头文件(同上实验一)。2EPP接口初始化(同上实验一)。3初始化8255(同上实验二)。epp_write_data(CW_8255, 0x8a); /*初始化8255*/4PC2置“1”。8255的端口PC2与芯片7109的启动端口()直接相连,将PC2置“1”,则启动芯片7109让它开始工作。epp_write_data(CW_8255,0x05);/*PC2置1,启动芯片7109的转换 */ 5读PC4的状态。 do epp_read_data(PC_8255, /*判断status值:为1正在转换;为0转换完*/,6PC2置“
32、0”。epp_write_data(CW_8255,0x04); /*PC2置0,R/=停止转换 */ 7读取7109转换完毕的数字量,并将其转化成电压值。 epp_read_data(H_7109,9电压值显示在实验主板内的LED上。,源程序清单 参考实验指导书附录I-6。,思考和练习题1. 双斜积分式A/D转换器7109芯片包括哪几个工作过程?2. 7109的输入参考电压对A/D转换结果有何影响?如A/D转换结果 偏大,应如何调节参考电压?3. 记录10组对2.048V的标准电压由7109A/D转换结果。如测量结果 偏大,可能是什么原因造成的?4. 若输入电压的范围是0204.8mV,则参
33、考电压应调节在多大? 此时电压测量的分辨率是多大?5根据校准原理,试用校准方法测量(AIN+)输入的被测电压,并 显示结果。,实验六 逐次比较式A/D转换器0809的原理及编程,实验目的1.熟悉逐次逼近式A/D转换器芯片的工作原理。 2.了解A/D转换芯片0809的接口设计方法。 3.掌握A/D转换器0809简单的应用编程。,实验任务 1.分析本实验板的电路原理。 2.编写出逐次逼近式A/D转换器芯片0809的转换与显示的控制 程序,测量通道0-7的输入的信号。,实验原理 0809工作原理 ADC0809是8路输入的8位逐次逼近A/D转换器,其转换时间为16个外部时钟周期。其主要端口端定义如下
34、: IN7IN0:八个模拟量输入端。 D7D0:数字量输出端。 ENABLE:输出允许信号。当此信号被选中时,允许从A/D转换器的锁存器中读取数字量。高电平有效。 START:启动A/D转换,当START为高电平时,A/D转换开始。 ALE:地址锁存允许,高电平有效。当ALE为高电平时,允许C、B、A所示的通道被选中,并把该通道的模拟量接入A/D转换器。 EOC:转换结束信号。当A/D转换结束后,发出一个正脉冲,表示A/D转换完毕。此信号可用作A/D转换是否完成的检测信号。 ADDA、ADDB、ADDC:通道号选择端,C为最高位,A为最低位。 CLOCK:外部时钟(本实验采用500KHz的时钟
35、频率)。 Vref(),Vref():参考电压端,用来提供D/A转换器权电阻的标准电平(本实验采用典型值:Vref()=5V,Vref()=0V)。,A/D转换时序, 被测电压与A/D转换结果关系,式中: Vin 0809A/D转换器输入电压。 NADC 0809A/D转换结果的8bit数字量; Vr 0809A/D转换器外部参考输入电压,Vr5.00V;, 数据及控制信号接口, A/D转换器0809实验电路图,本实验共用到三个端口:40H47H(1Y2):输入/输出端口,0809的地址,控制 字任意。 23H(1Y1):输出端口,8255的控制端口。 22H(1Y1):输入端口,查询0809
36、转换状态信号(“0”正 在转换;“1”转换完毕)。,编程与调试 (一)0通道测量电压 1程序说明 输入电压有4种选择,测量前,在实验主板上必须将跳线选择到需要测量的那个端口。增益也有五种选择(1,10,100,200,300),可根据实验需要选择一档,并在实验板上将其跳线连好。实验测得的电压值显示在PC机的CRT和实验主板的LED上。2编程思路,3编程步骤 调用自定义头文件。 EPP端口初始化。 初始化8255。epp_write_data(CW_8255, 0x8a); 启动芯片0809。epp_write_data(AD_0809,0x00); /*启动0809进行转换*/ 读取转换状态量
37、 void eoc(void) unsigned char status; do /*读8255的pc5的值,为1时转换完毕*/ epp_read_data(PC_8255, /*状态为0时,继续读取状态转换量*/, 读取A/D转换完毕的数字量,放入firstdata中。epp_read_data(AD_0809, 在LED上的显示被测电压值。4源程序清单 参考实验指导书附录I-7。,(二)测量17通道电压 测量17通道电压的编程思路和测量0通道的输入电压一样,所不通的只是要根据信号的输入通道来确定其输入端口的地址,通道不同其端口地址也不同。下面就仅介绍如何获取通道地址,其余部分参见上面的0通
38、道测量电压实验。 程序的开始要输入当前实验所采用的输入通道(cha),如: printf(Please input the channel which you will measure(int 1-7) :); scanf(%d,/*输入值是被测信号输入的那个通道*/ 芯片0809的基地址为:0x40(AD_0809),选择通道后,该通道的地址就为:0x40cha(AD_0809cha)。即程序中对端口地址的读写就不再是0x40,而是0x40cha。 参考程序实验指导书附录I-8。,思考和练习题 1用AD0809采集交流正弦波形,调节信号频率从100Hz增加,观察显示波形的变化。当多高频率时,
39、显示波形异常,解释此现象? 2.利用实验五介绍的校准方法,思考如何进行校准测量? 3.编写0通道的有校准测量的实验程序,电压输入端选择04.096V,调节其输入电压值,比较有无校准的测量结果,参考源程序见实验指导书附录I-9) 。,实验七 D/A转换器0832的原理实验,实验目的 1.了解典型D/A转换器DAC0832的工作原理。 2.掌握芯片0832的接口设计方法。,实验任务 1.找出本实验中芯片0832的地址。 12.编写实验程序,向0832输入不通的数字电压以获得其相应的模拟电压输出,并运行通过。3.记录实验中电压的输出值。,实验原理 DAC0832工作原理 主要引脚定义如下: DI0-
40、DI7:8条数据输入线。 ILE、CS、WR1:三条为输入锁存器的选通线,其中ILE为输入锁存器允许信号输入线(高电平有效),为片选信号输入线(低电平有效),为写信号输入线(低电平有效)。只有当三条线同时有效时,输入数据锁存器才被选通。 XFER和WR2:二条为DAC锁存器选通线,其中XFER为传送控制信号输入线(低电平有效), WR2为写信号输入线(低电平有效),只有当二条线同时有效时,DAC锁存器才被选通。, D/A电流输出表达式,式中, Io1 DAC0832输出电流;(Io1Io2常数); NDAC DAC0832数字输入量; Vr DAC0832外部参考输入电压; R DAC0832
41、内部固定电阻,恒为5K。, DAC0832数/模电压转换实验电路,芯片0832的数字电压输入端口(DI7DI0)与实验主板上的八位双向数据总线(D7D0)相连;与地址线2Y5相连,则其地址为05H;参考电压有以下两种选择: AO1来自实验主板上的信号源(参见实验八)。 Vr5V来自实验主板上的参考电压源,实验电路原理如下图。,Vr5V实验电路, 输出电压值的计算 DAC0832直接得到的转换输出信号是模拟电流,为得到电压输出,实验电路加了一个运算放大器,得到单极性的电压输出。其中,R=5k;Rfb=15k是固定的内部电阻。则,D/A转换后的输出电压,在本实验中参考电压Vref选择实验主板上的参
42、考电压源Vr5V,其理论值为5V,则D/A转换后的输出电压就为:,本实验只用到一个端口地址: 05H(2Y5):输出口,DAC0832(IC35)的地址。,编程与调试 (1)程序说明 向实验主板上的DAC0832(IC35)写入不同的数字(0256),在其输出端测量其相应的电压值,因实验主板上测试点AO2与其输出端口直接相连,只要测量测试点AO2,就可获取经DAC0832的转换电压。程序中在PC机的CRT上还将显示对应的理论电压值,以便实验者参考。,(2)编程思路,(3)编程步骤 1调用自定义头文件(同实验一)。2EPP接口初始化(同实验一)。3启动芯片DAC0832(实验主板上的IC35)。
43、 epp_write_data(DA2_0832,0x00); /*启动0832(IC35)芯片*/ 4向0832写入数据。 DAC0832是8位的D/A转换器,故写入的数据应该在0256之间。epp_write_data(DA2_0832,number); 5在PC机的CRT上显示转换电压。 volt=(float)(number*5.00/256);/*电压转换*/ printf(n%.2f,volt); /*输出模拟电压值*/,思考和练习题 1.为什么测得的电压值和理论值有区别? 2.数字输入“0”时,其输出电压为什么不为0?3.测量电压时,万用表的负极分别和实验主板上的模拟地和数字地相连接,其测得的结果是不是一样?如不一样,为什么?4.测得的电压值与输入数字0时获得的电压值的差值与其相应的理论电压有什么关系?,(4) 源程序清单 参考程序见实验指导书附录I-10,实验八 DAC0832在程控信号源中的应用,实验目的1.了解数字式信号波形合成的原理和方法。2.掌握程控信号源的工作原理及实现方法。,实验任务1.根据本实验的电路原理图确定各端口的地址。 2.通过EPP接口控制相应端口,使之产生不同波形、不同频率和幅度的信号。,实验原理 波形的数字合成原理 在波形的数字合成中,通常是向D/A转换器输入端提供特定的数据流,则在输出端便可获得相应函数波形的信号电压。,