北邮微原硬件实验报告
北京邮电大学微机原理硬件实验报告

北京邮电大学微机原理硬件实验报告实验报告一:I/0地址译码和简单并行接口——实验一&实验二一、实验目的掌握I/O地址译码电路的工作原理;掌握简单并行接口的工作原理及使用方法。
二、实验原理及内容a) I/0地址译码1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。
译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。
例如:执行下面两条指令MOV DX,2A0HOUT DX,AL(或IN AL,DX)Y4输出一个负脉冲,执行下面两条指令MOV DX,2A8HOUT DX,AL(或IN AL,DX)Y5输出一个负脉冲。
利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔经过软件延时实现。
2、接线: Y4/IO地址接 CLK/D触发器Y5/IO地址接 CD/D触发器D/D触发器接 SD/D触发器接 +5VQ/D触发器接L7(LED灯)或逻辑笔b) 简单并行接口1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。
74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。
2、编程从键盘输入一个字符或数字,将其ASCⅡ码经过这个输出接口输出,根据8个发光二极管发光情况验证正确性。
3、按下面图4-2-2简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。
74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。
4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。
北邮微机原理硬件实验报告

北邮微机原理硬件实验报告实验目的本次实验主要是通过对微机原理的学习,掌握多种硬件器件的基本使用,包括程序寄存器(PRG)、数据寄存器(DR)、累加器(AC)等,也希望能够初步了解微机系统的结构和工作原理。
实验内容1. 按以下程序编写汇编程序ORG 0HLOOP: MOV A,NUMADD BINC R5MOV MEM,R5SJMP LOOPENDNUM: DB 50HB: DB 35HR5: EQU 25HMEM: DS 1编写程序后,运行该程序,观察程序在8051微处理器上执行的情况。
2. 制作简易流水灯电路使用LED等元器件,制作一个简单的流水灯电路。
同时,编写相应的汇编程序,实现流水灯的基本效果。
3. 实现双向流水灯效果在完成流水灯电路的基础上,通过改变程序实现双向流水灯的效果。
在这个过程中,需要仔细分析程序的实现方式,并且结合8615芯片的具体情况,理解程序在底层机器中的工作方式。
4. 实现用数码管显示数字的功能使用7段数码管,将程序输出的结果显示在数码管上。
在这个过程中,我们需要灵活处理I/O端口和存储器的读写,以及处理各类中断信号。
实验过程1. 编写并调试汇编程序我们首先使用Keil软件编写了相应的汇编程序,并在8051单片机上运行。
在运行过程中发现,程序能够成功地对NUM与B进行加法运算,并将结果存储在MEM中。
2. 制作流水灯电路我们使用LED、电阻等元器件,制作了一个简单的流水灯电路,并测试了该电路的基本工作情况。
由于电路较为简单,因此没有出现特别明显的问题。
3. 实现双向流水灯效果为了实现双向流水灯效果,我们对程序进行了修改。
在这个过程中,初步出现了一些问题,包括倒计时初始值不正确、程序中断启动终止不及时等。
经过反复调试,我们成功地实现了这一功能。
4. 实现用数码管显示数字的功能最后,我们将流水灯程序变更为用数码管显示数字的程序。
在这个过程中,我们主要用到了表格查找和存储器读写等基本操作,成功将结果在数码管上显示。
微原硬件实验

微原硬件实验报告实验一:跑马灯一、实验目的:实现跑马灯实现以下功能:1、依次点亮,同时只点亮一个灯,循环2、依次点亮,同时点亮两个灯,循环3、变速4、可选择跑马灯方向5、随时退出程序二、实验原理:1、通过读入端口状态,选择工作模式(灯的闪烁方式、速度等)2、通过输出端口控制灯的工作状态硬件连接图:三、源代码:data segmentswstate db 0 ;键盘ldstate db 0fehbuffer db 0data endsstack segment stack 'stack'db 100h dup(0)stack endscode segmentassume ds:data,ss:stack,cs:codemain proc ;主函数push dsxor ax,axpush axmov ax,datamov ds,ax ;初始化数据段mov ldstate,0feh ;初始化程序,首先点亮1号灯call endlessrepeatret ;返回main endpendlessrepeat proc ;多进程不断执行各个程序,实现跑马灯现象endlessloop :call proctorepeatjmp endlessloopretendlessrepeat endpproctorepeat proc ;不断被调用call readsw ;call excutedirection ;方向选择call excuteodd ;设置跳跃闪烁call excutemode ;设置模式,选择1个还是2个灯一起亮call excutepause ;在这个进程里,可以反复执行readswcall excutereturntodoscall excutespeed ;嵌套调用借用delay模块实现retproctorepeat endpdivfreq proc ;分频模块push cxmov cx,1000hmyloop: push cxmov cx,8000h ;分频为1000h*8000h=134.2M mynestedloop: dec cxjnz mynestedlooppop cxdec cxjnz mylooppop cxretdivfreq endpreadsw proc ;读取8位拨码开关的状态push axpush dxmov dx,0e8e0hin al,dxmov swstate,alpop dxpop axretreadsw endpwriteld proc ;led灯显示程序push dxpush axmov al,ldstatemov dx,0e8e0hout dx,alpop axpop dxretwriteld endpexcutereturntodos proc ;退出dos系统,结束程序运行test swstate,01h ;第一位表示退出dos系统jz exitexcutereturntodoscall returntodosexitexcutereturntodos:retexcutereturntodos endpreturntodos procmov ax,4c00hint 21hreturntodos endpexcutedirection proc ;选择跑马灯的方向call readswtest swstate,02h ;检测第2位,1则是向右移动jz shiftleftror ldstate,01hror ldstate,01hshiftleft: rol ldstate,01hexitexcutedirection: retexcutedirection endpexcutepause proc ;使跑马灯暂停beginexcutepause: call readswtest swstate,04h ;检测第3位,1则进入暂停jnz beginexcutepauseretexcutepause endpexcutespeed proc ;设置速度call divfreqtest swstate,08h ;检测第4位,1表示慢速模式jz exitexcutespeedcall divfreqcall divfreqexitexcutespeed: retexcutespeed endpexcuteodd proc ;设置跳跃显示test swstate,20h ;检测第6位,1产生跳跃jz returncall excutedirectionreturn: retexcuteodd endpexcutemode proc ;设置显示模式push word ptr ldstatetest swstate,10h ;测试第5位,1代表同时亮两盏灯jz simplemodepush axpush bxmov al,ldstatemov bl,alrol bl,1and al,blmov ldstate,alpop bxpop axsimplemode: call writeldexitexcutemode: pop word ptr ldstateretexcutemode endpcode endsend main四、实验总结在这次试验中,我主要学会使用debug环境下的I/O命令,利用该命令点亮了LED灯,并且读取了拨码开关的状态,并知道了如何利用键盘检测返回DOS,在跑马灯实验中,我学会了写延时子程序,在一开始只用了一层循环,导致速度过快而无法观察到跑马灯的效果,在同学的帮助下我编写了二层循环才达到了应有的效果。
北邮 通信原理硬件实验报告

实验一:双边带抑制载波调幅(DSB-AM)一、实验目的:(1)了解DSB-SC AM信号的产生以及相干解调的原理和实现方法;(2)了解DSB-SC AM信号波形以及振幅频谱特点,并掌握其测量方法;(3)了解在发送DSB-SC AM 信号加导频分量的条件下,收端用锁相环提取载波的原理及其实现方法;(4)掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波的调试方法。
二、实验系统框图:DSB-SC加导频的产生测量VCO压控灵敏度的框图DSB-SC加导频分量的相干解调及载波提取框图三、实验步骤:SC-DSB 信号的数学表达式为s(t)=Acm(t)cos(Wct),这个实验产生SC-DSB 的方法很简单,就是用载波跟调制信号直接相乘,其中载波是由主振荡器产生为幅度为1V,频率为100KHZ的正弦波,而调制信号由音频振荡器产生的正弦信号再经缓冲放大器组成,幅度为1V,频率为1KHZ。
1、DSB-SC AM 信号的产生1)按照图连接,将音频振荡器输出的模拟音频信号及主振荡器输出的100KHz模拟载频信号分别用连接线连至乘法器的两个输出端;2)用示波器观看音频输出信号的信号波形的幅度以及振荡频率,调整音频信号的输出频率为10kHz,作为均值为0的调制信号m(t);3)用示波器观看主振荡器输出信号的幅度以及振幅频谱;4)用示波器观看乘法器的输出波形,并注意已调信号波形的相位翻转与已调信号波形;5)测量已调信号的波形频谱,注意其振幅频谱的特点;6)调整增益G=1:将加法器的B 输出端接地,A 输入端接已调信号,用示波器观看加法器的输出波形以及振幅频谱,使加法器输入与加法器输出幅度一致;7)调整增益g;加法器A 端接已调信号,B 接导频信号。
用频谱仪观看加法器输出信号的振幅频谱,调节增益g 旋钮,使导频信号振幅频谱的幅度为已调信号的边带频谱幅度的0.8倍。
此导频信号功率为已调信号功率的0.32倍。
2、DSB-SC AM 信号的相干解调及载波提取1)锁相环的调试1 单独测量VCO的性能将VCO 模板前面板的频率开关拨到HI 载波频段的位置,VCO 的Vin 输入端暂不接信号。
北邮通原硬件实验报告

学院: 信息与通信工程 班 级: 姓 名: 学 号:班内序号:通信原理硬件实验实验报告实验一:双边带抑制载波调幅(DSB-SC AM )一、实验目的1、了解DSB-SC AM 信号的产生以及相干解调的原理和实现方法。
2、了解DSB-SC AM 信号波形以及振幅频谱特点,并掌握其测量方法。
3、了解在发送DSB-SC AM 信号加导频分量的条件下,收端用锁相环提取载波的原理及其实现方法。
4、掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波的调试方法。
二、实验原理DSB 信号的时域表达式为()()cos DSB c s t m t t ω=频域表达式为1()[()()]2DSB c c S M M ωωωωω=-++其波形和频谱如下图所示将均值为零的模拟基带信号m(t)与正弦载波c(t)相乘得到DSB —SC AM 信号,其频谱不包含离散的载波分量。
DSB—SC AM信号的解调只能采用相干解调。
为了能在接收端获取载波,一种方法是在发送端加导频。
收端可用锁相环来提取导频信号作为恢复载波。
此锁相环必须是窄带锁相,仅用来跟踪导频信号。
在锁相环锁定时,VCO输出信号错误!未找到引用源。
与输入的导频信号错误!未找到引用源。
的频率相同,但二者的相位差为错误!未找到引用源。
度,其中错误!未找到引用源。
很小。
锁相环中乘法器的两个输入信号分别为发来的信号s(t)与锁相环中VCO的输出信号,二者相乘得到在锁相环中的LPF带宽窄,能通过错误!未找到引用源。
分量,滤除m(t)的频率分量及四倍频载频分量,因为错误!未找到引用源。
很小,所以错误!未找到引用源。
约等于错误!未找到引用源。
LPF的输出以负反馈的方式控制VCO,使其保持在锁相状态。
锁定后的VCO输出信号错误!未找到引用源。
经90度移相后,以错误!未找到引用源。
作为相干解调的恢复载波,它与输入的导频信号同频,几乎同相。
相干解调是将发来的信号s(t)与恢复载波相乘,再经过低通滤波后输出模拟基带信号,经过低通滤波可以滤除四倍载频分量,而错误!未找到引用源。
推荐-北邮—微原软件实验报告 精品

微机原理软件实验报告学院:信息与通信工程学院班级:班内序号:姓名:学号:实验二分支,循环程序设计一.实验目的:1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的DOS 功能调用.二.实验内容:1.安排一个数据区(数据段),内存有若干个正数,负数和零.每类数的个数都不超过9.2.编写一个程序统计数据区中正数,负数和零的个数.3.将统计结果在屏幕上显示.三.预习题:1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来?答:0—9对应的ASCII 码是30H—39H;在屏幕上显示0—9,需要将对应字符的ASCII 码赋给DL,并进行DOS的2号功能调用,0—9的ASCII 码正是其本身的数值加上30H。
2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法?答:①用CMP命令和0比较,如果ZF为1,则该数为零;再用该数和8000H相与,取出符号位判断,可区分正负;②用CMP命令和0比较,结果不小于0时用JGE命令进行跳转,否则为负数;用JGE 命令跳转后,如果为0再用JZ命令跳转,否则为正数。
四.选作题:统计出正奇数,正偶数,负奇数,负偶数以及零的个数.五.实验过程1.流程图2.源代码DATA SEGMENTNUM DW 0,0,1,2,3,4,5,101,-6,-7,-8,-8,-9 ;有2个0,6 个正数,5 个负数N DW ($-NUM)/2 ;该组数据的个数Z DB 0 ;0 的个数P DB 0 ;正数的个数PO DB 0 ;正奇数的个数PE DB 0;正偶数的个数M DB 0 ;负数的个数MO DB 0;负奇数的个数ME DB 0 ;负偶数的个数STR0 DB 'number of zeros : $' ;STR0-4为用于显示的字符串STR1 DB 0DH, 0AH, 'number of positive numbers : $'STR2 DB 0DH, 0AH, 'number of negative numbers : $'STR3 DB 0DH, 0AH, ' odd : $'STR4 DB ' even : $'DATA ENDSSTACK SEGMENT STACKDW 100 DUP(?)STACK ENDSCODE SEGMENTASSUME DS:DATA, SS:STACK, CS:CODESTART: MOV AX, DATAMOV DS, AXMOV AX, STACKMOV SS, AX ;初始化DS、SSLEA BX, NUM ;将NUM 中第一个数字的地址送入BXMOV CX, N ;将数据个数送入CXAGAIN: MOV AX, [BX] ;取出NUM 中的第一个数字CMP AX, 0 ;和0比较JGE PLU ;大于等于0时转PLUINC M ;负数的个数加1TEST AX, 1 ;检测该数据最低位是否为1,即是否为负奇数JNZ MINODD ;ZF为0时转MINODD,该数为负奇数INC ME ;负偶数个数加1JMP NEXTMINODD: INC MO ;负奇数个数加1JMP NEXTPLU: JZ ZER ;等于0时转ZERINC P ;正数个数加1TEST AX, 1 ;检测该数据最低位是否为1,即是否为正奇数JNZ PLUODD ;ZF为0时转PLUODD,该数为正奇数INC PE ;正偶数个数加1JMP NEXTPLUODD: INC PO ;正奇数个数加1JMP NEXTZER: INC Z ;零的个数加1NEXT: ADD BX,2 ;偏移地址加2,指向下一数字LOOP AGAIN ;CX自减,CX≠0时继续循环DISPLAY: ;在屏幕上显示统计结果MOV AH, 09H ;9号功能调用,显示字符串MOV DX, OFFSET STR0 ;将字符串的首地址的偏移地址送到DX,DS已;是其段基址INT 21HMOV AH, 02H ;2号功能调用,显示单个字符MOV DL, Z ;将零的个数送到DLADD DL, 30H ;0—9数字本身加上30H即为其ASCII 码INT 21HMOV AH, 09H ;正数部分统计结果显示,原理同上MOV DX, OFFSET STR1INT 21HMOV AH, 02HMOV DL, PADD DL, 30HINT 21HMOV AH, 09HMOV DX, OFFSET STR3INT 21HMOV AH, 02HMOV DL, POADD DL, 30HINT 21HMOV AH, 09HMOV DX, OFFSET STR4INT 21HMOV AH, 02HMOV DL, PEADD DL, 30HINT 21HMOV AH, 09H ;负数部分统计结果显示,原理同上MOV DX, OFFSET STR2INT 21HMOV AH, 02HMOV DL, MADD DL, 30HINT 21HMOV AH, 09HMOV DX, OFFSET STR3INT 21HMOV AH, 02HMOV DL, MOADD DL, 30HINT 21HMOV AH, 09HMOV DX, OFFSET STR4INT 21HMOV AH, 02HMOV DL, MEADD DL, 30HINT 21HMOV AX, 4C00H ;返回DOSINT 21HCODE ENDSEND START3.运行结果数据为:0,0,1,2,3,4,5,101,-6,-7,-8,-8,-9运行结果:zero表示零的个数,为2;positive number表示正数的个数,为6,其中奇数odd为4个,偶数even为2个;negative number表示负数的个数,为5,其中奇数odd为2个,偶数even 为3个。
北邮微原硬件实验

信息与通信工程学院微原硬件实验报告姓名:班级:20122111262014.12.21实验一熟悉实验环境及10的使用一,实验目的1.通过实验了解和熟悉实验台的结构,功能及使用方法。
2.通过实验掌握直接使用Debug的I、0命令来读写10端口。
3.学会Debug的使用及编写汇编程序二,实验内容1.学习使用Debug命令,并用I、0命令直接对端口进行读写操作,2•用汇编语言编写跑马灯程序。
(使用EDIT编辑工具)实现功能A.通过读入端口状态(0N为低电平),选择工作模式(灯的闪烁方式、速度等)。
B.通过输出端口控制灯的工作状态(低电平灯亮)三,实验步骤1.实验板的10端口地址为EEE0H在Debug下,I是读命令。
(即读输入端口的状态---拨码开关的状态)0是写命令。
(即向端口输出数据---通过发光管来查看)进入Debug后,读端口拨动实验台上八位拨码开关输入I端口地址回车屏幕显示xx表示从端口读出的内容,即八位开关的状态0N是O,0FF是1写端口输入0端口地址xx (xx表示要向端口输出的内容)回车查看实验台上的发光二极管状态,0是灯亮,1是灯灭。
2.在Debug环境下用a命令录入程序,用g命令运行C>Debug -amov dx,端口地址mov al,输出内容out dx, almov ah, Obhint 21hor al, aljzO1OOint 20h-g运行查看结果,修改输出内容再运行查看结果分析mov ah, Obhint 21hor al, aljzO1OOint 2Oh该段程序的作用:检测键盘有没有按键,有则返回DOS。
没有继续执行3.利用EDIT工具编写汇编写跑马灯程序程序实现功能A.通过读入端口状态(ON为低电平),选择工作模式(灯的闪烁方式、速度等)B.通过输出端口控制灯的工作状态(低电平灯亮)C>EDIT文件名.asm录入程序按Alt键打开菜单进行存盘或退出编译文件C>MASM 文件名.asm连接文件C>LINK 文件名.obj运行文件或用Debug进行调试。
北邮微机原理实验报告

微原软件实验报告班级:序号:学号:姓名:实验二分支,循环程序设计一.实验目的:1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的DOS 功能调用.二.实验内容:1.安排一个数据区(数据段),内存有若干个正数,负数和零.每类数的个数都不超过9.2.编写一个程序统计数据区中正数,负数和零的个数.3.将统计结果在屏幕上显示.三.预习题:1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来?答:0—9对应的ASCII码是30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,将十进制数转换成相应的ASCII码并调用字符显示功能即能实现十进制数在屏幕上的显示。
2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法?答:将该数与0字符(ASCII码为30H)比较,根据比较的结果转入不同的分支。
四.流程图:开始初始化CX,BX,AH,DH,DL[BX] 0?[BX]=0?DH++DH 记录等于零的个数BX++BX++CX--AH++AH 记录小于零的个数DL++DL 记录大于零的个数CX 0?将AH,DH,DL 中的数转成ASCII 码并存储显示结束YES YES NOYESNO NO CX 是待处理的数的个数,BX 是这串数的首地址五.代码:六.运行结果:七.总结:第一次在DOS窗口下用汇编编程,一些基本的操作和以前的高级语言迥然不同,如建立文件,编译,链接,调试,这些操作都是要在DOS窗口中键入语言指令来完成的,不像高级语言的编译器只要按下相关的键就好了,用语言指令能更加明白编译,调试这些操作真正的含义。
更重要的是调试指令,通过这些指令,可以直接看到寄存器,内存中真真切切的变化,对硬件的工作机制特别是cpu的指令运行,内存的数据存储与读取,整个程序运行的本质过程有了更加透彻的了解和认识。
在本次实验中,主要对顺序结构,分支结构以及循环结构有了初步的运用,程序编写的关键是流程图,当对题目有了分析并且设计出了条理清晰,步骤较为详细的流程图之后,只要对照图写就很快:顺序执行下来的地方用顺序结构,有判断的地方用分支结构,有循环执行的地方用循环结构,整个程序的框架就构建完成,剩下的就是变量、寄存器以及内存空间的读写了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2014—2015学年第一学期《微机原理硬件》实验报告专业电子信息工程班级 2012211103姓名申宇飞学号 2012210064班内序号 03报告日期 2015年1月目录实验一I/O地址译码 (3)一、实验目的 (3)二、实验内容及原理,实验硬件接线图 (3)三、程序流程图及源代码 (6)1、程序流程图: (6)2、源代码: (6)四、实验结果 (8)五、实验收获与心得体会 (8)实验二简单并行接口 (9)一、实验目的 (9)二、实验内容及原理,实验硬件接线图 (9)三、程序流程图及源代码 (11)1、程序流程图: (11)2、源代码: (11)四、实验结果 (12)五、实验收获与心得体会 (12)实验四七段数码管 (13)一、实验目的 (13)二、实验内容及原理,实验硬件接线图 (13)三、程序流程图及源代码 (16)1、程序流程图: (16)2、源代码: (17)四、实验结果 (20)五、实验收获与心得体会 (20)实验八可编程定时器/计数器(8253/8254) (21)一、实验目的 (21)二、实验内容及原理,实验硬件接线图 (21)三、程序流程图及源代码 (24)四、实验结果 (36)五、实验收获与心得体会 (36)实验十六串行口8251A实验 (37)一、实验目的 (37)二、实验内容及原理,实验硬件接线图 (38)三、程序流程图及源代码 (49)1、程序流程图 (49)2、源程序: (49)四、实验结果 (54)五、实验收获与心得体会 (54)实验一I/O地址译码一、实验目的1.通过实验了解和熟悉实验台的结构,功能及使用方法。
2.掌握I/O地址译码电路的工作原理。
二、实验内容及原理,实验硬件接线图图1-1 实验硬件接线图1、硬件接线提示:Y4/IO地址接CLK/D触发器Y5/IO地址接CD/D触发器D/D触发器接SD/D角发器接+5VQ/D触发器接L7(LED灯)或逻辑笔2、实验内容及原理:实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。
译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。
根据图1-1,我们可以确定A9~A3,AEN,IOW,IOR的值。
要使译码电路正常工作,必须使处于低电平有效。
因而可以确定A6=A8=0,A7=A9=1,AEN=0,IOW与IOR不可同时为1(即不能同时读写)。
当要从Y4输出低脉冲时,A5A4A3=100;从Y5输出时,A5A4A3=101。
综上所述,Y4输出时,应设置值2A0H(A9~A0=1010100000B);Y5输出时,应设置值2A8H(A9~A0=1010101000B)。
执行下面两条指令MOV DX,2A0HOUT DX,AL(或IN AL,DX)Y4输出一个负脉冲到D触发器的CLK上,因为D=1(接了高电平+5V),所以Q被赋值为1.延时一段时间(delay);执行下面两条指令;MOV DX,2A8HOUT DX,AL(或IN AL,DX)Y5输出一个负脉冲到CD,D触发器被复位,Q=0。
再延时一段时间,然后循环上述步骤。
利用这两个个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
三、程序流程图及源代码1、程序流程图: 开始在Y4端口输出一个负脉冲延时在Y5端口输出一个负脉冲延时是否有键盘输入?结束YN图 1-2 程序流程图2、源代码:outport1 equ 2a0h ;预置,方便修改outport2 equ 2a8hcode segmentassume cs:codestart:mov dx,outport1 ;根据原理图设定A9~A0的值(Y4)out dx,al ;让译码器Y4口输出一个负脉冲call delay ;延时mov dx,outport2 ;根据原理图设定A9~A0的值(Y5)out dx,al ;让译码器Y5口输出一个负脉冲call delay ;延时mov ah,1 ;调用1号DOS功能,等待键盘输入int 16hje start ;若有键盘输入则退出程序,否则继续循环mov ah,4chint 21hdelay proc near ;延时子程序mov bx,200 ;时延长度(200)a: mov cx,0b: loop bdec bxjne aretdelay endpcode endsend start四、实验结果LED 灯处于闪烁状态,键盘有输入后,成功退出。
五、实验收获与心得体会遇到的问题:需要合理设置时延值。
本次是第一次进入微原硬件实验室,熟悉了将要使用的实验仪器、系统,学习了最基本I/O地址译码的方法,学会了在实验的环境下进行单步调试,对接口的地址、LED灯的控制有了初步的了解。
为后续实验做了准备。
实验二简单并行接口一、实验目的掌握简单并行接口的工作原理及使用方法。
二、实验内容及原理,实验硬件接线图1、按下面图2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。
74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。
2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。
图2-1 实验电路图三、程序流程图及源代码1、程序流程图:图2-2 流程图2、源代码:CODE SEGMENTASSUME CS:CODESTART:MOV AH,1 ;调用一号DOS命令,等待键盘输入INT 21HCMP AL,1BH ;是否键入“ESC”JZ FINNAL ;当键入“ESC”则退出程序MOV DX,288H ;288H为端口地址OUT DX,AL ;向该端口输出对应的ASCII码JMP START ;循环FINNAL:MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START四、实验结果键盘输入一个字符,LED 灯显示相应的ASCII 码。
键入ESC 后成功退出。
五、实验收获与心得体会本次实验让我对实验有了更深的了解,硬件实验需要经常读取硬件的状态,根据其状态采取相应的控制方案,同时需要向接口输出数据和控制信息,驱动硬件正常工作。
通过键盘的输入还记下了一些字符的ASCII 码。
实验四七段数码管一、实验目的1、通过实验,掌握8255工作方式0以及设置A口为输出口,C口为输入口的方法。
2、掌握数码管显示数字的原理二、实验内容及原理,实验硬件接线图1、8255芯片工作原理:1)8255的工作方式:一片8255内部有3个端口,A口可以工作在方式0、方式1或方式2,B口可以工作在方式0、方式1,C口可以工作在方式0。
方式0是基本型输入/输出。
这种方式和外设交换数据时,8255端口与外设之间不使用联络线。
方式1为选通型输入/输出。
用这种方式和外界交换数据时,端口和外设之间要有联络信号。
方式2是双向数据传送,仅A口有这项功能。
当A口工作在方式2时,B口仍可以工作在方式0或方式1,但此时B口方式1只能用查询方式与CPU交换信息。
2 )工作方式选择字8255工作方式选择字共8位(如图3-1),存放在8255控制寄存器中。
最高位D7为标志位,D7=1表示控制寄存器中存放的是工作方式选择字,D7=0表示控制寄存器中存放的是C口置位/复位控制字。
根据上图,方式控制字应为:10000000B,即80H。
8255控制寄存器端口地址--28BH, A口的地址--288H, B口的地址--289H,C口的地址--28AH。
2、七段数码管及接线图:1)静态显示:按3-2连接好电路,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0、S1 、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示自己的学号的后四位。
(或编程在数码管上循环显示“00-99”,位码驱动输入端S0、S1 接PC0、PC1;S2、S3接地。
)图3-2 接线图接线:PA7~PA0/8255 接dp~a/LED数码管PC3~PC0/8255 接S3~S0/LED数码管CS/8255 接Y1/IO地址2)实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
七段数码管的字型代码表如下表:图3-1 8255方式控制字(向8255控制寄存器写入“方式选择控制字”,从而预置端口的工作方式。
)图3-3 数码管字型代码三、程序流程图及源代码1、程序流程图:开始初始化8255数码管清零送0的段码到数码管送位码到数码管(第1位)数码管清零送3的段码到数码管送位码到数码管(第2位)数码管清零送0的段码到数码管送位码到数码管(第3位)数码管清零送5的段码到数码管送位码到数码管(第4位)是否有按键按下?结束YN图3-4 程序框图2、源代码:CODE SEGMENTASSUME CS:CODESTART:MOV AL,80HMOV DX,28BHOUT DX,ALLOOP1:MOV DX,28AH ;数码管清零MOV AL,00HOUT DX,ALMOV DX,288H ;送出段码MOV AL,3FH ;0的段码OUT DX,ALMOV DX,28AH ;送出位码MOV AL,08H ;最高位显示OUT DX,ALMOV DX,28AH ;数码管清零MOV AL,00HOUT DX,ALMOV DX,288H ;送出段码MOV AL,4FH ;3的段码OUT DX,ALMOV DX,28AH ;送出位码MOV AL,04H ;次高位显示OUT DX,ALMOV DX,28AH ;数码管清零MOV AL,00HOUT DX,ALMOV DX,288H ;送出段码MOV AL,5BH ;1的段码OUT DX,ALMOV DX,28AH ;送出位码MOV AL,02H ;第3位显示OUT DX,ALMOV DX,28AH ;数码管清零MOV AL,00HOUT DX,ALMOV DX,288H ;送出段码MOV AL,6FH ;1的段码OUT DX,ALMOV DX,28AH ;送出位码MOV AL,01H ;第4位显示OUT DX,ALMOV AH,1 ;调用DOS功能,监视键盘是否有输入INT 16HJZ LOOP1 ;键盘有输入跳出循环,否则继续显示MOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START四、实验结果数码管上静态显示我的学号后四位0064 。