您好,欢迎访问三七文档
实验报告课程名称微机原理与接口技术实验项目实验三可编程并行接口实验实验仪器TPC-USB通用微机接口实验系统系别电子信息工程专业电子信息工程班级/学号学生姓名实验日期2011-5-19成绩_______________________指导教师___________-1-一、实验目的1.通过实验,掌握8255工作于方式0以及设置A、B、C口为输入或输出口的方法。2.掌握数码管数字显示和静态、动态驱动原理及编程设计实现。二.实验设备1.PC微机系统一套2.TPC-USB通用微机接口实验系统一套三.实验要求1.实验前要作好充分准备,包括程序框图、源程序清单、调试步骤、测试方法、对运行结果的分析等。2.熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)使用方法。在程序调试过程中,有意识地了解并掌握TPC-USB通用微机接口实验系统的软硬件环境及使用,掌握程序的调试及运行的方法技巧。3.实验前仔细阅读理解教材相关章节的相关内容,实验时必须携带教材及实验讲义。四.实验内容及步骤(一)8255初始化设置和简单输入/输出实验1.实验电路如图1,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。2.按上述要求对8255进行初始化设置,并编程从8255C口输入数据,再从A口输出。图1实验连接参考电路图和流程图之一(二)数码管动态显示驱动设计1.按图2连接好电路,将8255的A口PA0~PA6分别与七段数码管的段码驱动输入端a~g相连,位码驱动输入端S1,S0接8255C口的PC1,PC0。2.编程从键盘连续输入两个十进制数,分别在两个数码管上显示;编程实现数码管的动态显示驱动。3.(选作)从键盘连续输入两个任意数:若是ESC键输入,则程序退出运行;若是十六进制数键输入,则在数码管上显示十六进制数;若是上述键之外的输入,则不对数码管显示更新。【参考提示:请仔细分析、理解“七段数码管”实验之LED1.ASM和LED3.ASM】-2-图2实验连接参考电路图之二编程提示:1.8255控制寄存器端口地址为:28BH、A口的地址288H、B口的地址289H、C口的地址28AH2.实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。3.七段数码管的字型代码表如下表:五、实验程序设计和调试运行1.实验(一)程序设计如下:;*******************************;;*8255方式0的C口输入,A口输出*;;*******************************;io8255aequ288hio8255kequ28bhio8255cequ28ahcodesegmentassumecs:codestart:movdx,io8255k;设8255为C口输入,A口输出-3-moval,8bhoutdx,alinout:movdx,io8255c;从C口输入一数据inal,dxmovdx,io8255a;从A口输出刚才自C口outdx,al;所输入的数据movdl,0ffh;判断是否有按键movah,06hint21hjzinout;若无,则继续自C口输入,A口输出movah,4ch;否则返回int21hcodeendsendstart2.实验过程和实验结果说明【下面*用实际文件名替换】(1)按图1连接实验电路;(2)在TPC-IDE操作环境下,用文本编辑器编辑实验源程序(*.asm);(3)在IDE操作环境下,对源程序(*.asm)进行编译和连接,生成生成链接文件(*.obj)和可执行文件(*.exe);(4)运行IDE操作环境下的调式命令,调试可执行文件(*.exe);(5)运行IDE操作环境下的执行命令,运行可执行文件(*.exe),结果显示:当开关输入K0到K7拨向1(或0)时,对应的LED输出L0到L7相应变亮(或灭)。实验结果符合实验程序设计要求。3.实验(二)程序设计如下:;**************************************;*LED数码管实验*;*动态显示键盘输入“00-99”*;**************************************datasegmentio8255aequ288hio8255cequ28ahio8255kequ28bhleddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;段码bufferdb0,0;存放要显示的个位和十位bzdw?;位码dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovdx,io8255k;将8255设为A、C口输出moval,80houtdx,al-4-movdi,offsetbuffer;设di为显示缓冲区loop1:movcx,030h;循环次数loop2:movbh,02lll:movbyteptrbz,bhpushdidecdiadddi,bzmovbl,[di];bl为要显示的数popdimovbh,0movsi,offsetled;置led数码表偏移地址为SIaddsi,bx;求出对应的led数码moval,byteptr[si]movdx,io8255a;自8255A的A口输出outdx,almoval,byteptrbz;使相应的数码管亮movdx,io8255coutdx,alpushcxmovcx,100delay:loopdelay;延时popcxmoval,00h;灭LEDoutdx,almovbh,byteptrbz;显示下一位shrbh,1jnzllllooploop2;循环延时keyin:movah,01int16hjeloop1movah,01;从键盘接收字符int21hcmpal,1BH;是否ESCjzexit;若是则退出cmpal,'0';是否小于0jlloop1;若是则返回cmpal,'9';是否大于9jgloop1;若是则返回subal,30h;将所得字符的ASCII码减30Hmovdi,offsetbuffer;di为buffer起始地址mov[di+1],almovah,01;从键盘接收字符int21hcmpal,1BH;是否ESCjzexit;若是则退出-5-cmpal,'0';是否小于0jlloop1;若是则返回cmpal,'9';是否大于9jgloop1;若是则返回subal,30h;将所得字符的ASCII码减30Hmovdi,offsetbuffer;di为buffer起始地址mov[di],aljmpLOOP1;转LOOP1exit:movdx,io8255amoval,0;关掉数码管显示outdx,almovah,4ch;返回int21hcodeendsendstart4.实验过程和实验结果说明【下面*用实际文件名替换】(1)按图2连接实验电路;(2)在TPC-IDE操作环境下,用文本编辑器编辑实验源程序(*.asm);(3)在IDE操作环境下,对源程序(*.asm)进行编译和连接,生成生成链接文件(*.obj)和可执行文件(*.exe);(4)运行IDE操作环境下的调式命令,调试可执行文件(*.exe);(5)运行IDE操作环境下的执行命令,运行可执行文件(*.exe),结果显示:当从键盘连续输入两个十进制数后,分别在两个数码管上显示出这两个数;若输入的数发生变化,显示的数值也相应的发生变化。实验结果符合实验程序设计要求。5.问题和解决执行程序,根据四位二进制码的规律设置4个开关的开和关,便能实现数字由0变到F,当要实现两位十六进制数时用到8个开关,前四位控制高四位,后四位控制低四位,实现数字由00变到FF。这次实验让我加深了对8255的工作原理的理解。
本文标题:可编程并行接口实验
链接地址:https://www.777doc.com/doc-5098919 .html