《微机原理与接口技术》实验内容提要.doc
专业:信息工程(光电系)姓名: 王钊 学号: 3070801185 日期: 2009-12-28 地点: 东4-606 实验报告课程名称: 微机原理与接口技术实验 指导老师: 齐杭丽 成绩:_实验名称: 并行AD、DA实验 实验类型:_ _同组学生姓名:_无_1. 实验目的 掌握采用并行接口实现外部器件的扩展方法; 掌握ADC0809模/数转换芯片与单片机的接口设计及ADC0809的典型应用; 掌握DAC0832模/数转换芯片与单片机的接口设计及DAC0832的典型应用。2. 预习要求 理解内存与IO统一编址的外设端口地址的映射及控制; 理解用查询方式、中断方式完成模/数转换程序的编写方法; 理解DAC0832直通方式,单缓冲器方式、双缓冲器方式的编程方法。3. 实验设备计算机 1台; ZDGDTH-1型80C51实验开发系统 1套;2号导线、8P数据线 若干条;万用表 1个;4. 基础型实验内容 图4-1为ADC0809的扩展电路图,用8P数据线将D2区80C51/C8051F020 MCU模块的 JD0(P0口)、JD8分别与C5区并行A/D转换模块的JD1C5、JD2C5相连;用二号导线将D2区80C51/C8051F020 MCU模块的WR、RD、P2.0、CLK、P3.3分别与C5区并行A/D转换模块的WR、RD、CS、ALE、EOC相连;并行A/D转换模块的Vref接5V, AIN0接D6区可调电源模块的05V端。说明AD转换的过程,并在Keil环境设置断点运行以下程序,可调电源分别调至两个极端,观察寄存器及内存单元的变化。 图4-1 ADC0809的扩展电路图 ORG 0000H MAIN:CLR A SETB P3.3;设定与EOC接口IO处于接收状态 MOV DPTR,#0FEF8H ;选择A/D端口地址 NOP MOVX DPTR,A;启动AD转换WAIT: JB P3.3,WAIT MOVX A,DPTR ; 读入结果 NOP LJMP MAIN 图4-2为DAC0832的扩展电路图,用8P数据线将D2区80C51/C8051F020 MCU模块的 JD0(P0口)与C4区并行DA转换模块的JD1C4相连,用二号导线将D2区80C51/C8051F020 MCU模块的P2.0、WR分别与C5区并行D/A转换模块的CS、WR模块,用万用表测量“-Vref”端的电压,手动调节电位器RW1C4,把-Vref电压调到-5V,万用表监测并行D/A转换的OUT与GND输出引脚。填写下列程序中的空白处,说明DA转换的过程,并在Keil环境运行设置断点运行该程序,调节RW1C4,观察寄存器的变化与万用表输出值的变化。图4-2 DAC0832的扩展电路图ORG 0100HSTART: MOV DPTR,#0FEFFH ;置DAC0832的地址LP: MOV A,#0FFH ;设定高电平MOVX DPTR,A ;启动D/A转换,输出高电平 LCALL DELAY ;延时显示高电平 MOV A,#00H ;设定低电平 MOVX DPTR,A ;启动D/A转换,输出低电平 LCALL DELAY ;延时显示低电平 SJMP LP ;连续输出方波DELAY: MOV R3,#18 ;延时子程序D1: NOP NOP NOP DJNZ R3,D1 RET END5. 设计型实验内容 采用中断法设计ADC0809数据采集程序,并将采集到的十六进制结果显示在LED显示模块上。源代码:DBUF EQU 30HDAT EQU P3.0CLK EQU P3.1ORG0000HLJMPMAINORG0013HLJMPINDATAORG0030HMAIN: SETBP3.3MOVDPTR,#0FEF8HSETBIT1CLRASETBEX1SETBEASTART: MOVXDPTR,ALCALL DELAYMOVB,AANLA,#0FHDISP: ;静态显示程序 MOV DBUF,#00H MOV DBUF+1,#00H MOV DBUF+2,#00H MOV DBUF+3,#00H MOV DBUF+5,AMOVA,BANLA,#0F0HSWAPAMOV DBUF+4,AMOV R0,#DBUF MOV R5, #6 MOV DPTR,#TAB DP12:MOV R2, #8 MOV A, R0 MOVC A,A+DPTR DP13:RLC A MOV P3.0,C ;DIN, C CLR P3.1 ;CLK SETB P3.1 ;CLK DJNZ R2, DP13 INC R0 DJNZ R5, DP12LCALL DELAYLJMP MAINTAB:DB 3FH,06H,5BHDB 4FH,66H,6DHDB 7DH,07H,7FHDB 6FH,77H,7CHDB 58H,5EH,79HDB 71HINDATA: MOVXA,DPTR;中断服务程序RETIDELAY: MOVR0,#00DELAY1:NOP NOP DJNZ R0,DELAY1RETEND 用中断方式编写A/D转换程序,每秒以100ms的间隔采集8次,求8次结果的平均值,保存到内部RAM40H开始的单元,共采集30秒钟。由于不但包含本题的要求,而且将采集到的数据送至静态数码管上,因此源代码省略,详见 要求同,计算出每秒的平均值并显示在静态数码管上。 源代码: DBUF DATA 060H ORG 0000H LJMP MAIN ORG 0003H LJMP INDATA ORG 0100HMAIN:MOV R1,#40H MOV R4,#30MAIN1: MOV R2,#00H MOV R3,#00H MOV R7,#08H CLR A MOV R0,#DBUF MOV DPTR,#0FEF0H ;启动A/D转换器 SETB IT0 SETB EX0 SETB EA NOP NOPNOPLOOP:SETB F0 MOVXDPTR,A WAIT: JB F0,WAIT ;A/D转换结束信号LCALL DELAY DJNZ R7,LOOPLCALL DELAYLCALL DELAY MOV R7,#03HNEXT: CLR C ;求平均值 MOV A,R3 RRC A MOV R3,A MOV A,R2 RRC A MOV R2,A DJNZ R7,NEXT MOV A,R2 MOV R1,A INC R1ANL A,#0FHMOV DBUF+5,AMOV A,R2ANL A,#0F0HSWAP AMOV DBUF+4,A LCALL DISP DJNZ R4,MAIN1RETINDATA:MOVX A,DPTR ;A/D转换结果读入 ADD A,R2 MOV R2,A CLR A ADDC A,R3 MOV R3,A CLR A CLR F0 RETIDISP: ;静态显示程序 MOV DBUF,#00H MOV DBUF+1,#00H MOV DBUF+2,#00H MOV DBUF+3,#00H MOV R0, #DBUF MOV R5, #6 MOV DPTR,#TAB DP12:MOV R2, #8 MOV A, R0 MOVC A,A+DPTR DP13:RLC A MOV P3.0,C ;DIN, C CLR P3.1 ;CLK SETB P3.1 ;CLK DJNZ R2, DP13 INC R0 DJNZ R5, DP12 RET TAB:DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH,77H,7CH DB 58H,5EH,79H,71H,00H,40HDELAY:MOV R5,#2S1:MOV TMOD,#01HMOV TL0,#0B0HMOV TH0,#3CHSETB TR0JNB TF0,$CLR TF0DJNZ R5,S1RETEND6. 实验扩展及思考 采用ADC0809的8个通道采集8个模拟量信号,并将实际电压值分通道、分时地显示在LED上。 根据基础型实验的步骤、,由DAC0832输出模拟量,ADC0809采集数据。分配端口实现的硬件连接,画出流程并设计程序实现该过程,比较输出的数据跟采集到的数据是否一致,如不一致分析一下产生误差的原因。 采用DAC0832设计一简易的信号发生器,设计流程并编写程序实现50Hz的方波、锯齿波。7. 心得、体会由于前面听说实验报告随便写写就行了,于是也没写这部分,只是把当时的源代码粘到实验报告里了。在此,我也只能通过一点印象写了,望谅解。这次实验感觉接线很多,我觉得真正需要对课本上80C51与A/D转换器的接线理解了,将实验教材上的电路基本看懂了,将各个控制信号的工作方式以及启动顺序弄明白了,才更有利于编写程序。另外就是当自己长时间实在是调试不对时,应当主动去问老师,看是否有接线的问题或是实验电路板的问题;如果没有问题并且长时间没做出来时,可以请教同学,看自己问题出在什么地方毕竟课本上有些理论知识在自己理解时都难免会发生偏差的,如果不能正确地理解,仅仅靠自己的理解、长时间地调试、摸索去编写程序,是很费时间的。当自己实在做不出来时,要及时请教同学,看自己问题出在什么地方,是哪点理解得不好还是别的原因。 阅 10.1.11