微机原理实验报告(数码显示)

合集下载

微机原理实验报告2

微机原理实验报告2

广东工业大学实验报告信息工程学院通信工程专业班成绩评定_______ 学号姓名(合作者_ _号____) 教师签名实验3题目显示程序设计实验第9 周星期二第5-8节显示程序实验设计1一.实验目的1,学习显示器I/O程序设计方法;2,了解系统功能中断的设计方法;3,了解键盘光标键是如何公职;二.实验内容和要求1,用键盘上的上下左右键控制光标的移动.2,按行号*列号的形式给方块字符(ACS2码为0BDH)在屏幕上定位,按上下左右光标键使光标在屏幕上移动,光标的移动由方块字符组成的图形而在屏幕上保留下轨迹.三.实验主要仪器设备和材料计算机四.实验方法,步骤及结构测试1,源程序如下:TITLE DRA W---Program to draw on screen withread_c equ 0key_rom equ 16hup equ 48hdown equ 50hright equ 4dhlift equ 4bhblock equ 0dbhesc1 equ 1bhvideo segment at 0b800h ;define extra segwd_buff label wordv_buff db 25*80*2 dup(?)video endspro_nam segment ;define code segmentMain proc farAssume cs:pro_nam,es:videoStart:push ds ;set up stack for returnsub ax,axpush axmov ax,videomov es,axmov cx,80*25 ;clear screen by writing zeros to it mov bx,0Clear:mov es:[wd_buff+bx],0700hinc bxinc bxLoop clearmov ch,12d ;set screen pointer to center of screenmov cl,40dGet_char:mov ah,read_cint key_romcmp al,esc1jz exitmov al,ahcmp al,upjnz not_updec chNot_up:cmp al,downjnz not_downinc chNot_down:cmp al,rightjnz not_rightinc clNot_right:cmp al,liftjnz lite_itdec clLite_it:mov al,160dmul chmov bl,clrol bl,1mov bh,0add bx,axmov al,blockmov es:[v_buff+bx],aljmp get_charExit:retMain endpPro_nam endsEnd start五,实验报告要求1,显示器是如何定义窗口的大小的?显示器根据数据显示的单元数,v_buff d b 25*80*2 dup(?)定义窗口大小的.2,在文本方式下,什么是属性值?block equ 0dbh是定义的属性值,v_buff+bx+1,是放每个单元(一共25*80个)属性值的地方,即每个单元的高字节。

微机原理——数码管显示

微机原理——数码管显示

微机原理与接口技术实验报告实验名称:数码管显示数字的原理姓名:学号:专业班级:指导老师:实验日期:2012年11月一:实验目的掌握数码管显示数字的原理二:实验内容动态显示:按图23连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255 C 口的PC1,PC0。

编程在两个数码管上显示“56”三:硬件电路四:源程序ioport equ 0d400h-0280h io8255a equ ioport+28ah io8255b equ ioport+28bh io8255c equ ioport+288h led db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6f h ;段码buffer1 db 5,6 ;存放要显示的个位和十位bz dw ? ;位码data endscode segmentassume cs:code,ds:data start: mov ax,data mov ds,ax movdx,io8255b ;将8255设为A 口输出mov al,80hout dx,almov di,offset buffer1 ;设di 为显示缓冲区loop2: mov bh,02lll: mov byte ptr bz,bh push di dec di add di, bz movbl,[di] ;bl 为要显示的数pop dimov al,0mov dx,io8255a out dx,al mov bh,0mov si,offset led ;置led 数码表偏移地址为SIaddsi,bx ;求出对应的led数码mov al,byte ptr [si]movdx,io8255c ;自8255A 的口输出out dx,almov al,byte ptr bz ;使相应的数码管亮mov dx,io8255aout dx,almov cx,3000delay: loopdelay ;延时mov bh,byte ptr bzshr bh,1jnz lllmov dx,0ffhmov ah,06int 21hjeloop2 ;有键按下则退出mov dx,io8255amoval,0 ;关掉数码管显示out dx,almovah,4ch ;返回int 21hcode endsend start五:实验难点与重点实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。

单片机实验报告动态数码显示设计

单片机实验报告动态数码显示设计

微机原理与接口技术实验报告实验题目:动态数码显示设计指导老师:朱铭琳班级:计算机科学与技术系1201班姓名:王丹(2012100141)2014年 12月3日实验十三动态数码显示设计一、实验目的1.掌握动态数码显示技术的设计方法。

2.掌握扫描在程序设计中的应用。

二、设计原理如图13.1所示,在单片机的P1端口接动态数码管的字形码笔段,在单片机的P2端口接动态数码管的数位选择端。

在单片机P3.0管脚处接一个开关,当开关连接高电平时,态数码管上显示“12345”字样;当开关连接低电平时,态数码管上显示“HELLO”字样。

三、参考电路图13.1 动态数码显示电路原理图四、电路硬件说明(1)在“单片机系统”区域中,把单片机的P1.0-P1.7端口连接到“动态数码显示”区域中的a-h端口上。

(2)在“单片机系统”区域中,把单片机的P2.0-P2.7端口通过8联拨动拨码开关JP1连接到“动态数码显示”区域中的S1-S8端口上。

(3)在“单片机系统”区域中,把单片机的P3.0端口通过8联拨动拨码开关JP2连接到拨动开关区域中的SW1端口上。

五、程序设计内容(1)动态扫描方法:动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出显示的闪烁现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。

(2)在进行数码显示的时候,要对显示单元开辟8个显示缓冲区,在每个显示缓冲区装有显示的不同数据即可。

(3)对于显示不同字形码的数据采用查表方法来完成。

六、程序流程图 (如图13.2所示)图13.2 动态数码显示程序流程图七、汇编源程序;;;;;;;;;;入口地址;;;;;;;;;;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIORG 0023HRETIORG 002BHRETI;;;;;;;;;;主程序入口;;;;;;;;;;ORG 0100H START: LCALL PANDUANLCALL XIANSHILJMP START;;;;;;;;;;判断开关的状态;;;;;;;;;;PANDUAN: JB P3.0,SWLCALL DELAY10MSJB P3.0,SWMOV DPTR,#TABLE2SJMP Q1SW: JNB P3.0,PANDUANMOV DPTR,#TABLE1 Q1: RET;;;;;;;;;;显示程序;;;;;;;;;;XIANSHI: MOV R0,#00HMOV R1,#7FH NEXT: MOV A,R0MOVC A,@A+DPTRMOV P0,AMOV A,R1MOV P2,ALCALL DELAYINC R0RR AMOV R1,ACJNE R1,#0FBH,NEXTRET;;;;;;;;;;10ms延时程序;;;;;;;;;;DELAY10MS: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RET;;;;;;;;;;200ms延时程序;;;;;;;;;;DELAY: MOV R5,#20LOOP: LCALL DELAY10MSDJNZ R5,LOOPRET;;;;;;;;;;共阴字母码表;;;;;;;;;;TABLE1: DB 76H,79H,38H,38H,3FH;;;;;;;;;;共阴数码表;;;;;;;;;;;TABLE2: DB 06H,5BH,4FH,66H,6DH;;;;;;;;;;结束标志;;;;;;;;;;;;;END八、C语言源程序#include<AT89X51.H>unsigned char code table1[]={0x06,0x5b,0x4f,0x66,0x6d};unsigned char code table2[]={0x76,0x79,0x38,0x38,0x3f};void main(void){ unsigned char i,j,k,m;while(1){ j=0x7f;for(i=0;i<5;i++) //运行5次取出表中的5个数//{ if(P3_0==0) //如果开关为0,则显示12345// { P0=table1[i]; } //送P1口显示//else //如果开关为1,显示HELLO//{ P0=table2[i]; } //送P1口显示//P2=j; //显示码送入P2口//j=0x7f; //重赋初值//k=j>>(i+1); //右移i+1位//m=j<<(7-i); //左移7-i位//j=k|m;for(k=4;k>0;k--) //每隔一段时间显示一次//for(m=248;m>0;m--);}}}九、注意事项(1)程序中要注意共阴极数码管显示和共阳极数码管显示的区别,本程序在共阴极数码管显示时,要把单排针接插件J4中的跳线帽加到OE和VCC上。

数码管显示数码符号实验报告(含源代码)

数码管显示数码符号实验报告(含源代码)

微机原理课程设计必做题目设计报告题目数码管显示数码符号学院专业电气工程及其自动化成员杜丽佳指导教师摘要根据题目要求,利用8253、8255等硬件和8086 CPU总线接口,以汇编语言为载体,完成利用中断的数据控制输出的设计,实现将以开关的状态表示的二进制数作为输入,经过数据处理后,最终通过数码管加以显示的功能。

本报告主要完成以下工作:1)简要介绍本设计的前言和要求;2)详细介绍本设计的硬件组成3)详细介绍汇编程序的运行流程;4)介绍步骤和现象。

关键词:数据控制输出数码管显示中断第一章绪论1.1 前言微型计算机原理及接口技术是普通高等教育重要的专业课,是电气类专业的平台课程,具有很强的实践性。

在微机实践的过程中开展必做题,使同学们巩固课本上学到的知识,掌握硬件电路走线的基本方法和规范,软件设计的基本方法和规范,提升同学们的团队精神和动手能力,为把学生培养成为卓越工程师打下良好基础。

《数码管显示数码符号》即为此次微机实践必做题,借助微型计算机实验开发板,通过汇编语言完成用数码管显示通过8255芯片输入的数据的功能。

1.2 题目要求图1 微机系统接口电路七段码显示器采用8255A作为接口,8255A的A端口接八个开关,8255A 的B端口控制数码显示器的阳极(七段码显示器为共阴极接法),利用74LS138作为地址译码器,利用8253定时中断控制。

微机系统接口电路如图1所示。

8253的CNT0和CNT1用来产生方波信号,OUT1连接到8259A中断控制器的IRO2端,通过8259A向CPU请求中断,每一秒中断一次。

在中断服务程序中从A端口输入数据到AL中,如果AL的内容是0EH或0FH,则在数码管上显示“H”(七段码76H),否则将AL的内容加2后输出到数码管上。

(已知8259A中断屏蔽寄存器地址为21H,共阴极显示器的0`F的七段码分别为3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、67H、77H、7CH、39H、2EH、79H、71H、73H。

微机原理实习报告

微机原理实习报告

目录1.实验题目、目的、要求及内容 (2)2.设计过程 (3)2-1. A/D采集电压模块 (3)2-2.数码管显示电压模块 (4)2-3.D/A转换与电机控制模块 (8)3.附录 (9)3-1.系统硬件 (9)3-2.系统软件 (10)4.实习心得 (14)5.参考资料 (15)实验题目:数字电压表实验目的:通过本次实习,能够掌握各个芯片与8086的接口方法及工作原理,了解ADC0809转换器的性能、编程及8086采集数据的过程,了解数码管动态显示的原理,学会D/A转换的基本原理和D/A 转换芯片的性能和编程方法,学习各芯片在硬件电路中的连接,实现模数转换、数模转换、数码管显示等过程并最终完成整个数字电压表系统。

在实验中要熟悉对一般模拟、数字电路的实际设计过程,充分掌握对小型系统的设计能技巧,同时巩固以往的学习内容,达到灵活运用的能力。

实验要求:完成对系统硬件的设计,分析出各个芯片的地址及功能,并进行编程调试使硬件与软件相结合。

实验内容:(1)利用A/D转换器检测模拟电压(2)利用8255将检测的电压在数码管上显示(3)利用D/A转换器将电压输出,控制直流电动机的运行设计过程:1) A/D 采集电压模块硬件部分:CSEG SEGMENTASSUME CS:CSEGSTART:DO:MOV DX,9000H ;选择地址为9000H 的通道OUT DX,AL ;将AL 的内容在该通道中输出MOV CX,200 ;设置循环次数DELAY:DEC CXJNE DELAY ;延时IN AL,DX ;读入转换结果JMP DO ;无条件转向DO ,实现对电压值不断测量和转换 JMP $CSEG ENDSEND START2)数码管显示电压模块七段数码管的字型代码表如下表:位选通信号(0x002H)段码输出 (0x004H) 数据总线软件部分:①将A/D转换的数据按位分配DSGE SEGMENTWAN DB 0THA DB 0HUN DB 0TEN DB 0ONE DB 0DSGE ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART:MOV AX,DSEGMOV DS,AXMOV BL,196MUL BLMOV DX,0MOV CX,10000DIV CXMOV WAN,AL ;取出万位数赋给WANMOV AX,DXMOV DX,0MOV CX,1000DIV CXMOV THA,AL ;取出千位数赋给THAMOV AX,DXMOV CL,100DIV CLMOV HUN,AL ;取出百位数赋给HUNMOV AL,AHMOV AH,0MOV CL,10DIV CLMOV TEN,AL;取出十位数赋给TENMOV ONE,AH ;取出个位数赋给ONE CSEG ENDSEND START②在数码管上显示数字DSEG SEGMENTDUAN DB 3FH,06H,5BH,4FH,66H,6DH ;设置段选WEI DB 20H,10H,08H,04H,02H,01H ;设置位选DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART:MOV AX,DSEGMOV DS,AXDO:CALL XS ;调用子程序XSJMP DOXS PROCLEA SI,WEI ;将数据段WEI的首地址赋给SIMOV DX,8002H ; 将8002H赋给DXMOV AL,[SI] ;将地址SI里的内容赋给ALOUT DX,AL ; 第一个数的位选LEA DI,DUAN ;将数据段DUAN的首地址赋给DI MOV DX,8004H ;将8004H赋给DXMOV AX,[DI] ;将地址DI里的内容赋给AXOUT DX,AX ; 显示第一个数CALL DELAY ;调用延时子程序DELAYLEA SI,WEIMOV DX,8002HMOV AL,[SI+1]OUT DX,AL ;第二个数的位选LEA DI,DUANMOV DX,8004HMOV AL,[DI+1]OUT DX,AL ;显示第二个数CALL DELAYLEA SI,WEIMOV DX,8002HMOV AL,[SI+2]OUT DX,AL ;第三个数的位选LEA DI,DUANMOV DX,8004HMOV AL,[DI+2]OUT DX,AL ;显示第三个数CALL DELAYLEA SI,WEIMOV DX,8002HMOV AL,[SI+3]OUT DX,AL ;第四个数的位选LEA DI,DUANMOV DX,8004HMOV AL,[DI+3]OUT DX,AL ;显示第四个数CALL DELAYLEA SI,WEIMOV DX,8002HMOV AL,[SI+4]OUT DX,AL ;第五个数的位选LEA DI,DUANMOV DX,8004HMOV AX,[DI+4]OUT DX,AL ;显示第五个数CALL DELAYLEA SI,WEIMOV DX,8002HMOV AL,[SI+5]OUT DX,AL ;第六个数的位选LEA DI,DUANMOV DX,8004HMOV AL,[DI+5]OUT DX,AL ;显示第六个数CALL DELAYRETXS ENDPDELAY PROC ;延时子程序MOV BL,25NEXT1: MOV CX,10W10MS1:LOOP W10MS1DEC BLJNZ NEXT1RETDELAY ENDPCSEG ENDSEND START ;程序结束3)D/A转换与电机控制模块CS0软件部分:CSEG SEGMENTASSUME CS:CSEGSTART:MOV DX,0A000H ;选择通道口CALL DELAYOUT DX,AL ;在该通道输出模拟量DELAY PROC ;延时子程序MOV BL,25NEXT1: MOV CX,20W10MS1:LOOP W10MS1DEC BLJNZ NEXT1RETDELAY ENDPCSEG ENDSEND START;程序结束附录:1)系统硬件:2)系统软件:DSEG SEGMENTDUAN DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,80H WEI DB 20H,10H,08H,04H,02H,01HWAN DB 0THA DB 0HUN DB 0TEN DB 0ONE DB 0 ;设置不同位DSEG ENDSSSEG SEGMENTZZ DB 10 DUP(0) ;设置堆栈保护段SSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEG,SS:SSEGSTART:MOV AX,DSEGMOV DS,AXDO:CALL AD ;调用子程序ADPUSH AX ;入栈保护CALL DA ;调用子程序DAPOP AX ;AX出栈CALL NUMBER ;调用子程序NUMBERCALL XS ;调用子程序XSJMP DOAD PROC ;A /D转换子程序MOV DX,9000HOUT DX,ALCALL DELAY1IN AL,DXRETAD ENDPDA PROC ; D/A转换子程序MOV DX,0A000HCALL DELAYOUT DX,ALRETDA ENDPNUMBER PROC ; 取出不同位的数值MOV BL,196MUL BLMOV DX,0MOV CX,10000DIV CXMOV WAN,ALMOV AX,DXMOV DX,0MOV CX,1000DIV CXMOV THA,ALMOV AX,DXMOV CL,100DIV CLMOV HUN,ALMOV AL,AHMOV AH,0MOV CL,10DIV CLMOV TEN,ALMOV ONE,AHRETNUMBER ENDPXS PROC ; 数码管显示子程序LEA SI,WEI ; 取位选偏移首地址给SIMOV DX,8002H ; 数码管位地址8002HMOV AL,[SI]OUT DX,AL ; 输出AL数据LEA DI,DUAN ; 取段选偏移首地址给DIMOV DX,8004H ; 数码管段地址8004HMOV BL,WANMOV BH,0 ; 将BX寄存器高位置零,低位取万位数据MOV AX,[DI+BX]OR AL,80H ; 将DI+BX地址所对应数据给AX,并与80H相或显示小数点OUT DX,AL ; 输出AL数据CALL DELAY ; 调用延时函数LEA SI,WEIMOV DX,8002HMOV AL,[SI+1]OUT DX,AL ;选取通道输出万位数的位选LEA DI,DUANMOV DX,8004HMOV AL,[DI+10]OUT DX,AL ;输出万位的数值CALL DELAYLEA SI,WEIMOV DX,8002HMOV AL,[SI+2]OUT DX,AL ;选取通道输出千位数的位选LEA DI,DUANMOV DX,8004HMOV BL,THAMOV BH,0MOV AL,[DI+BX]OUT DX,AL ;输出千位的数值CALL DELAYLEA SI,WEIMOV DX,8002HMOV AL,[SI+3]OUT DX,AL ;选取通道输出百位数的位选LEA DI,DUANMOV DX,8004HMOV BL,HUNMOV BH,0MOV AL,[DI+BX]OUT DX,AL ;输出百位的数值CALL DELAYLEA SI,WEIMOV DX,8002HMOV AL,[SI+4]OUT DX,AL ;选取通道输出十位数的位选LEA DI,DUANMOV DX,8004HMOV BL,TENMOV BH,0MOV AX,[DI+BX]OUT DX,AL ;输出十位的数值CALL DELAYLEA SI,WEIMOV DX,8002HMOV AL,[SI+5]OUT DX,AL ;选取通道输出个位数的位选LEA DI,DUANMOV DX,8004HMOV BL,ONEMOV BH,0MOV AL,[DI+BX]OUT DX,AL ;输出个位的数值CALL DELAYRETXS ENDPDELAY PROC ;延时子程序DELAYMOV BL,25NEXT1: MOV CX,20W10MS1:LOOP W10MS1DEC BLJNZ NEXT1RETDELAY ENDPDELAY1 PROC ;延时子程序DELAY1MOV BL,2NEXT2: MOV CX,5W10MS2:LOOP W10MS2DEC BLJNZ NEXT2RETDELAY1 ENDPCSEG ENDSEND START ;程序结束实习心得:在为期一周的实习过程中,我学到了许多书本上学不到的知识,本以为十分枯燥的设计过程却让我得到了很多乐趣,同时也让我懂得了团队合作的力量,为今后的进一步学习奠定了基础。

微机原理与接口技术实验3报告

微机原理与接口技术实验3报告

微机原理与接口技术实验报告实验三实验名称:数码管显示实验实验代码:代码一:数码管动态显示0-9;Io-8.asm;数码管显示示例程序1;动态显示0-9IOY0 EQU 3000H ;片选IOY0对应的端口始地址DA TA1 SEGMENT;定义数码管显示0-9的值NUM DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H DA TA1 ENDSSTACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA1START:;载入数据段MOV AX,DATA1MOV DS,AXMOV DX,IOY0LEA SI,NUMMOV CX,10XOR AX,AXNEXT:MOV AL,[SI] ;低八位确定要显示的数值MOV AH,1FH ;高八位确定选择的数码管OUT DX,AX ;将值输出到外设CALL DALL YINC SI ;显示下一数值LOOP NEXTJMP STARTDALL Y PROC NEAR ;软件延时子程序PUSH CXPUSH AXMOV CX,0FFFHD1: MOV AX,0FFFFHD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALL Y ENDPCODE ENDSEND START运行结果:六位数码管动态显示0-9代码二:数码管动态显示0-99;数码管动态显示0-99IOY0 EQU 3000H ;片选IOY0对应的端口始地址DA TA1 SEGMENT;定义数码管显示0-9的值NUM DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H DA TA1 ENDSSTACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA1START:;载入数据段MOV AX,DATA1MOV DX,IOY0LEA SI,NUMLEA DI,NUMMOV CX,10XOR AX,AXMOV CX,100MOV BX,0ADD DI,BXNEXT1:;---------SW----;MOV CX,10;----------GW-------;NEXT:PUSH CXMOV CX ,0FFHNEXT3:MOV AL,[SI] ;低八位确定要显示的数值MOV AH,2FH ;高八位确定选择的数码管OUT DX,AXCALL DALL YMOV AL,[DI]MOV AH,1FHOUT DX,AXCALL DALL YLOOP NEXT3INC SIPOP CX;JMP MYLOOP ;显示下一数值LOOP NEXTINC DILEA SI,NUMJMP NEXT1DALL Y PROC NEAR ;软件延时子程序PUSH CXMOV CX,0FFHD1: MOV AX,0FFFHD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALL Y ENDPCODE ENDSEND START运行结果:数码管后两位动态显示0-99。

微机原理实验报告

微机原理实验报告

微机原理实验报告一、实验目的本实验旨在通过实际操控和操作微型计算机,深入了解微机系统的组成和工作原理,加深对计算机硬件结构以及基本操作的理解,培养实际动手能力。

二、实验内容1.熟悉微机系统组成部分:主机、显示器、键盘等。

2.掌握微机系统的基本操作:开机、关机、复位、重启等。

3.了解微机系统的工作原理:运行机制、输入输出等。

4.实践运用微机系统进行一些简单的应用操作。

三、实验步骤1.开机操作:按下主机电源按钮,等待主机启动。

2.系统自检:主机启动后会进行自检操作,检查硬件是否正常。

如果发现问题,主机会发出蜂鸣声。

3.输入输出设备准备:连接好显示器和键盘,并检查是否正常连接。

4.系统登录:按照屏幕上的提示,输入用户名和密码进行系统登录。

5.系统操作:根据实验要求,进行相应的系统操作。

6.关机操作:在操作完成后,选择关机选项进行关机。

四、实验结果与分析通过本次实验,我掌握了微机系统的基本操作,并对其工作原理有了更深入的了解。

通过实际操作,我可以熟练地开机、关机、复位等操作,并可以进行一些简单的应用操作。

同时,我也了解到了微机系统由主机、显示器、键盘等多个组成部分组成,不同组成部分的协作工作实现了系统的正常运行。

五、实验心得通过本次实验,我对微机系统的组成和工作原理有了更深入的了解。

这对我后续学习计算机原理和操作系统提供了基础。

在实验过程中,我也发现了一些问题,比如操作系统选择界面的选择问题,我没有选择正确的操作系统,导致后续实验操作遇到一些困难。

这些问题提醒我在实际操作中需要格外注意,仔细阅读提示并选择正确的操作选项。

总结来说,本次实验对我深入理解微机系统的组成和工作原理提供了良好的机会。

通过实际操控和操作微型计算机,我对计算机硬件结构以及基本操作有了更直观的认识,掌握了一些基本操作技能。

在未来的学习和应用中,我将更加注重细节,提高自己的操作技能,并不断深入学习和了解更多关于微机系统的知识。

微机原理键盘扫描及显示完整实验报

微机原理键盘扫描及显示完整实验报

实验9键盘扫描及显示实验
实验时间2019年12月18日
实验类型■验证性□设计性□综合性
1.实验目的
了解键盘扫描及数码显示的基本原理,熟悉8255的编程。

2.实验内容及过程(主要内容、操作步骤)
将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。

键盘采用4X4键盘,每个数码管显示值可为0~F 共16个数。

实验具体内容如下:将键盘进行编号,记作0~F,当按下其中-一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近4次按下的按键编号。

3.测试数据及实验结果
4.实验分析及总结(主要考察内容)
通过本次实验,我理解了键盘扫描及数码显示的基本原理,通过理解分析程序,自己对程序进行了一些总结和修改,并进行了验证,进一步掌握了微机接口的学习方法。

教师评阅
评价指标:实验目的、操作步骤、设计、算法、程序结构、实验结果、实验分析、实验总结
1/ 1。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三8255并行接口实验
一、实验目的
1、学习并掌握8255的工作方式及其应用。

2、学习在系统接口实验单元上构造实验电路。

二、实验设备
TDN86/51或TND86/88教学实验系统。

三、实验内容与实验步骤
1、基本输入输出实验。

编写程序,使8255的A口为输入,B口为输出,完成波动开
关到数据灯的数据传输。

要求只要开关拨动,数据灯的显示就发生相应改变。

实验原理:
并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。

8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。

8255的内部结构及引脚如图3-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图3-2所示。

图3-1 8255的内部结构和外部引脚
(a)工作方式控制字(b)c口按位置位/复位控制字
图3-2 8255控制字格式
8255实验单元电路图如下图所示:
图3-3 8255实验单元电路图
实验步骤
1. 基本输入输出实验
本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。

用一组开关信号接入端口A,端口B输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。

(1)按图连接实验线路图;
8255基本输入/输出实验接线图
SSTACK SEGMENT STACK
DW 64 DUP(?)
SSTACK ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV AL,82H
OUT 63H, AL
A1: IN AL, 61H
OUT60H, AL
JMPA1
CODE ENDS
END START
(2)编写实验程序,经编译、连接无误后装入系统;
(3)运行程序,改变拨动开关,同时观察LED显示,验证程序功能。

(4)点机“调试”下拉菜单中的“固定程序”项,将程序固化到系统存储器中。

实验二 数制转换实验
一、实验目的
1. 掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解。

2. 熟悉程序调试的方法。

3. 熟悉键盘使用方法
二、实验设备
TDN86/51或TND86/88教学实验系统。

三、实验内容及步骤
计算机输入设备输入的信息一般是由ASSII 码或BCD 码表示的数据或字符,CPU 一般均用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII 码、BCD 码或七段显示码等。

因此,在应用软件中,各类数制的转换是必不可少的。

计算机与外设间的数制转换关系如图所示。

数制转换关系
1. 将ASCII 码表示的十进制数转换为二进制数
十进制表示为:
Di 代表十进制数0,1,2, (9)
上式转换为:
由此可归纳十进制数转换为二进制数的方法:从十进制数的最高位Dn 开始作乘10加次位的操作,依次类推,则可求出二进制数的结果。

键盘 数据开关 光电机 拨码开关 主 机 CRT 显示
位显示 多段显示 打印机 ASCII 码 BCD 码 ASCII 码 BCD 码 ASCII 码 ASCII 码 二进制 二进制
参考流程:
实验程序:
PUBLIC SADD
SSTACK SEGMENT STACK
DW 64 DUP(?)
SSTACK ENDS
DATA SEGMENT
SADD DB 30H,30H,32H,35H,36H ;十进制数:00256 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: MOV AX, DATA
MOV DS, AX
MOV AX, OFFSET SADD
MOV SI, AX
MOV BX, 000AH
MOV CX, 0004H
MOV AH, 00H
MOV AL, [SI]
SUB AL, 30H
A1: IMUL BX
MOV DX, [SI+01]
AND DX, 00FFH
ADC AX, DX
SUB AL, 30H
INC SI
LOOP A1
A2: JMP A2
CODE ENDS
END START
实验步骤:
(1)编写实验程序,经编译、链接无误后装入系统;
(2)待转换数据存放于数据段,根据自己要求输入;
(3)用D3510(回车)查看结果C;
(5)反复试几组数据,验证程序的正确性。

实验截图如下:
2.编程实现如下功能:
计算首地址为STR1的100个有符号字变量数组的平均值,并将它存在CX中。

实验程序:
data segment
str dw 1000h,2100h,3200
dw 1101h,2012h
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
lea bx,str
mov cx,100
mov ax,0
mov dx,0
lp: add ax,[bx]
adc dx,0
inc bx
inc bx
loop lp
mov bx,100
idiv bx
mov cx,ax
mov ah,4ch
int 21h
code ends
end start
实验步骤:
(1)编写实验程序,经编译、链接无误后装入系统;
(2)待转换数据存放于数据段,根据自己要求输入;
(3)用D3510(回车)查看结果C;
(5)反复试几组数据,验证程序的正确性。

实验截图如下:
3、按如下要求编程
编程实现将数据段中地址的STR1开始的200个数组拷贝到STR2开始的区域中去,传递过程中需要剔除其中为0的数。

程序如下:
data segment
str1 dw 1000h,2100h,3200h
str2 dw 1101h,2012h
data ends
code segment
assume cs:code ,ds:data
start:mov ax,data
mov ds,ax
lea si, str1
lea di, str2
mov cx,200
lp:mov ax,[si]
cmp ax,0
jz next
mov [di],ax
add di,2
next:add si,2
loop lp
mov ah,4ch
int 21h
code ends
end start
实验步骤:
(1)编写实验程序,经编译、链接无误后装入系统;
(2)待转换数据存放于数据段,根据自己要求输入;
(3)用D3510(回车)查看结果C;
(5)反复试几组数据,验证程序的正确性。

实验截图如下:。

相关文档
最新文档