北邮通信工程微机原理硬件实验报告.docx
《北邮通信工程微机原理硬件实验报告.docx》由会员分享,可在线阅读,更多相关《北邮通信工程微机原理硬件实验报告.docx(46页珍藏版)》请在冰豆网上搜索。
北邮通信工程微机原理硬件实验报告
信息与通信工程学院
微机原理软件实验报告
班级:
2011***
姓名:
小小丹
学号:
2011***
日期:
2013年11月
实验一双边带抑制载波调幅(DSB-SCAM)
一、实验目的
1.了解DSB-SCAM信号的产生及相干解调的原理和实现方法。
2.了解DSB-SCAM信号的波形及振幅频谱特点,并掌握其测量方法。
3.了解在发送DSB-SCAM信号加导频分量的条件下,收端用锁相环提取载波的原理及其实现方法。
4.掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波的调试方法。
二、DSB-SCAM信号的产生及相干解调原理
1.DSB信号的表达式、频谱及带宽
在幅度调制的一般模型中,若假设滤波器为全通网络(H(w)=1),调制信号m(t)中无直流分量,则输出的已调信号就是无载波分量的双边带调制信号,或称抑制载波双边带(DSB-SC)调制信号,简称双边带(DSB)信号。
DSB调制器模型如图所示。
可见DSB信号实质上就是基带信号与载波直接相乘,其时域和频域表示式分别为
DSB信号的包络不再与m(t)成正比,故不能进行包络检波,需采用相干解调;除不再含有载频分量离散谱外,DSB信号的频谱与AM信号的完全相同,仍由上下对称的两个边带组成。
故DSB信号是不带载波的双边带信号,它的带宽与AM信号相同,也为基带信号带宽的两倍,即
式中,Bm=fH为调制信号带宽,fH为调制信号的最高频率。
2.DSB信号的解调
采用相干解调,其模型如下图。
此时,乘法器的输出为
经低通滤波器滤除高次项,得
即无失真地恢复出原始电信号。
抑制载波的双边带幅度调制的好处是,节省了载波发射功率,调制效率高;调制电路简单,仅用一个乘法器就可实现。
缺点是占用频带宽度比较宽,为基带信号的2倍。
三、实验步骤
(一)DSB-SCAM信号的产生
1.将音频振荡器输出的模拟音频信号及主振荡器输出的100kHz模拟载频信号分别连入乘法器的两个输入端。
2.用示波器观看音频振荡器输出信号的信号波形的幅度及振荡频率,调整音频信号的输出频率为10kHz,作为均值为0的调制信号m(t)。
3.用示波器观看主振荡器的输出信号波形的幅度及振荡频率。
4.用示波器观看乘法器输出信号波形,并注意已调信号波形的相位翻转与调制信号波形的关系。
5.测量已调信号的振幅频谱,注意其振幅频谱的特点。
6.将DSB-SCAM信号及导频分别连接到加法器的输入端,观看加法器的输出波形及振幅频谱,给别调整加法器的增益G和g,具体方法如下:
(1)首先调整增益G:
将加法器的B输入端接地,A输入端接已调信号,用示波器观看加法器A输入端的信号幅度与加法器输出信号的幅度。
调节旋钮G,使得加法器输出幅度与输入一致,说明此时G=1。
(2)再调整增益g:
加法器A输入端仍接已调信号,B输入端接导频信号。
用频谱仪观看加法器输出信号的振幅,调节增益g旋钮,使导频信号振幅频谱的幅度为已调信号的边带频谱幅度的0.8倍。
此导频信号功率约为已调信号功率的0.32倍。
(二)DSB-SCAM信号的相干解调及载波提取
1.锁相环的调试
单独测量锁相环的性能。
在VCO的Vin输入端不接信号时,用示波器观看VCO的输出波形及工作频率f0,并使其频率范围约为70kHz~130kHz。
然后将可变直流接入VCO。
当直流电压为零时,调节使VCO的中心频率为100kHz。
从-2V~+2V改变直流电压,观察VCO的频率及线性工作范围。
当直流电压为±1V时的VCO频率偏移为±10kHz。
单独测量锁相环中的相乘、低通滤波器的工作是否正常。
测量锁相环的同步带及捕捉带。
将信号源VCO的中心频率调到比100kHz小很多的频率,使锁相环处于失锁状态。
调节信号源VCO的频率由低往高缓慢变换,当信号波形由交流信号变为直流信号时,说明锁相环由失锁状态进入了锁定状态,纪录f2。
继续往高调节频率,当信号波形由直流突变为交流信号,说明锁相环失锁,纪录f4。
再从f4开始由高往低调节,纪录f3及f1。
可计算:
同步带△f1=f4-f1,捕捉带△f2=f3-f2。
2.恢复载波
用示波器观察锁相环中的LPF输出信号是否为直流信号,以此判断载波提取PLL是否处于锁定状态。
调节f0旋钮,使LPF输出的直流电压约为0电平。
在确定锁相环提取载波成功后,调节移相器模块中的移相旋钮,达到移相90°,使输入于相干解调的恢复载波与发来的导频信号不仅同频,也基本同相。
3.相干解调
将相干解调的相乘、低通滤波器模块连接上,并将发送来的信号与恢复载波分别连接至相干解调的乘法器的两个输入端。
用示波器观察相干解调相乘、低通滤波后的输出波形。
四、硬件接线图
Y4/IO地址接CLK/D触发器
Y5/IO地址接CD/D触发器
D/D触发器接SD/D角发器接+5V
Q/D触发器接L7(LED灯)或逻辑笔
五、程序流程图
六、实验结果
当cpu执行I/O指令且地址在280H~2BFH范围内,译码器选中后输出负脉冲控制L7闪烁发光。
可以从实验板上观察到第七个发光二极管按照0.5s左右的延时不断地闪烁。
当键盘上有输入时,发光二极管停止闪烁。
七、实验总结
本次实验比较简单,主要是熟悉I/O地址译码的基本原理。
在编代码的过程中要注意会算出经过译码电路后所获得的各个端口的地址信息,要求对于电路图掌握清晰。
对于子程序的调用以及顺序、循环结构的理解到位即可。
当键盘有输入时,学会调用dos命令结束程序。
八、实验收获与心得体会
作为本学期微原实验的第一个硬件实验,虽然不是很难,但是实验过程中也遇到了不少这样或者那样的问题,主要问题还是集中在硬件方面。
程序方面,在上机之前我们组就已经完成了程序的编写,在实验室用了近二十分钟进行调试,如加了地址转换等等。
但是进行编译运行后,发光二极管始终无法正常亮灭,准确的说就是根本不亮或者亮几下就灭。
在确定了程序无误的情况下,我们只能逐一排查没有正确显示结果的原因。
我们检查了硬件接线,并且基本上重新接了实验线路,但是还是未能得到正确的结果。
最后,我们将自己的程序拷到了有一个好的实验箱的电脑,终于得到了正确结果。
实验结束后,我们分析了本次实验出现这个问题的原因,我觉得可能是与实验箱相连的扁平接线有问题才导致数码管始终无法正确显示。
经过本次实验,我基本掌握接口芯片的编址方法和I/O地址译码的基本原理,一定程度上理解了段控及位控的概念,尤其是在实验过程中遇到的问题,加深了我们分析问题解决问题的能力。
实验二简单并行接口
一、实验目的
掌握简单并行接口的工作原理及使用方法。
二、实验原理和内容
1、按下面左图简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。
74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。
2、编程从键盘输入一个字符或数字,将其ASCII码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。
3、按下面右图简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。
74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。
4、用逻辑电平开关预置某个字母的ASCII码,编程输入这个ASCII码,并将其对应字母在屏幕上显示出来。
三、硬件接线图
1)输出
按图4-2-1接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)
2)输入
按图4-2-2接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)
四、程序流程图
五、源程序代码
ls244equ2a0h
codesegment
assumecs:
code
start:
movdx,ls244;从A0输入一数据
inal,dx
movdl,al;将所读数据保存在DL中
movah,02
int21h
movdl,0dh;显示回车符
int21h
movdl,0ah;显示换行符
int21h
movah,06;是否有键按下
movdl,0ffh
int21h
jnzexit
jestart;若无,则转start
exit:
movah,4ch;返回
int21h
codeends
endstart
六、实验结果
本程序的功能是在键盘上键入字符后,8个LED灯成功显示对应的ASCII(‘1’亮,‘0’灭),键入“ESC”后程序成功退出。
七、实验总结
本次实验同样十分基础,是在第一次实验课的结果基础上做的,也比较简单,主要是熟悉了简单并行接口的工作原理及使用方法,用的芯片业非常简单。
在编代码的过程中要注意会算出经过译码电路后所获得的各个端口的地址信息,要求对于电路图掌握清晰,在实验一已经有所了解。
而本人认为本实验的难点在于接线复杂,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7,要保证大量的接线正确而且逻辑清晰。
八、实验收获与心得体会
这一次实验比较简单,前面刚刚完成了微原软件实验,微原硬件实验和软件实验有一定的差别,需要考虑硬件的状态以及实际的效果。
主要体现在硬件需要去读取硬件状态,然后采取相应的控制方案,另外要向接口输出数据和控制信息,驱动硬件正常工作,但是由于有之前微原软件的基础,所以比较顺利的写出了程序。
所以,这一次实验让自己熟悉了微原硬件实验的环境,为以后实验打下了基础。
实验中的实验板是老师连接好了电路板和接口芯片,这样可以简化实验过程,也使得大家的硬件平台一致。
但这样存在的问题是,我们对芯片的地址和连线失去了动手实践的机会,而这个恰恰是北邮学生的一大弱点,硬件接触过少,不熟悉,而软件相对掌握熟练。
建议给学生更多的空间去自己布线,更加熟悉硬件和接口。
实验四七段数码管
一、实验目的
掌握数码管显示数字的原理:
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位,存放在8255控制寄存器中。
最高位D7为标志位,D7=1表示控制寄存器中存放的是工作方式选择字,D7=0表示控制寄存器中存放的是C口置位/复位控制字。
向8255控制寄存器写入“方式选择控制字”,从而预置端口的工作方式。
)
如下图,方式控制字应为:
10000000B,即80H。
8255控制寄存器端口地址--28BH,A口的地址--288H,B口的地址--289H,C口的地址--28AH。
8255方式控制字
三、硬件接线图
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接地。
)
接线图
接线:
PA7~PA0/8255接dp~a/LED数码管
PC3~PC0/8255接S3~S0/LED数码管
CS/8255接Y1/IO地址
2)实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中。
七段数码管的字型代码表如下表:
数码管字型代码
四、程序流程图
五、源程序代码
CODESEGMENT
ASSUMECS:
CODE
;-------------------------------------------------------------
START:
MOVAL,80H
MOVDX,28BH
OUTDX,AL
LOOP1:
MOVDX,28AH;数码管清零
MOVAL,00H
OUTDX,AL
MOVDX,288H;送出段码
MOVAL,3FH;0的段码
OUTDX,AL
MOVDX,28AH;送出位码
MOVAL,08H;最高位显示
OUTDX,AL
MOVDX,28AH;数码管清零
MOVAL,00H
OUTDX,AL
MOVDX,288H;送出段码
MOVAL,4FH;3的段码
OUTDX,AL
MOVDX,28AH;送出位码
MOVAL,04H;次高位显示
OUTDX,AL
MOVDX,28AH;数码管清零
MOVAL,00H
OUTDX,AL
MOVDX,288H;送出段码
MOVAL,5BH;1的段码
OUTDX,AL
MOVDX,28AH;送出位码
MOVAL,02H;第3位显示
OUTDX,AL
MOVDX,28AH;数码管清零
MOVAL,00H
OUTDX,AL
MOVDX,288H;送出段码
MOVAL,6FH;1的段码
OUTDX,AL
MOVDX,28AH;送出位码
MOVAL,01H;第4位显示
OUTDX,AL
MOVAH,1;调用DOS功能,监视键盘是否有输入
INT16H
JZLOOP1;键盘有输入跳出循环,否则继续显示
MOVAH,4CH;返回DOS
INT21H
CODEENDS
六、实验结果
数码管正常稳定地显示自己的学号后四位“0597”,当程序检测到键盘按下时,程序退出。
一开始没有对七段数码管进行清零,导致数码管显示出现乱码;在对数码管进行清零设置后,问题解决。
七、实验总结
在实验中先用了I/O命令检测出了数码管的显示规律和段选规律。
在显示学号的实验中,由于数码管一次只能显示一个,所以只有靠扫描显示的方法,通过选位寄存器选择一个数码管,显示数字,接下来换下一个显示另一个数字,由于数字停留的时间特别短,所以一秒内数码管会显示很多次从人眼看就是几位数码管在同时显示。
但是实验中同样遇到了很多问题:
最主要问题是时间的控制,具体在单个数码管显示时间、状态间转换的等待时间控制方面。
由于循环较多,容易造成的问题是,外层循环次数设置过大,导致整个程序的循环过大,单次大循环时间太长,显示出现问题。
经过多次的调整才对时间的控制和配合找到了感觉。
其次,位码设置错误,数码管无显示(一开始设置为04H,03H,02H,01H)。
在上网进行调查后,改正位码设置(改为08H,04H,02H,01H),数码管显示正常。
同时要注意数码管清零,否则会导致数码管显示出现乱码。
八、实验收获与心得体会
实验进入第三次,开始真正地通过接口芯片8255A控制外设的动作,实现了更加复杂和精确的控制。
数码管的动态扫描需要多重循环,程序设计的时候需要有清晰的逻辑转移。
这次的实验里我学习了使用8255芯片进行并口接口的应用让我对它的工作原理更加熟悉,对如何控制数码管的显示有了更深一步的了解,尤其是知道了显示完毕以后的清零操作。
另外使用了8255芯片也也知道了应该如何通过方式控制字设置其工作方式。
关于实验的建议,我觉得老师可以多鼓励创新,并予以制度的保障,这里的制度保障一方面是予以鼓励,对于有创新的实验结果在分数上可以增加,另一方面,也是我认为更为重要的一方面,那就是创新是有风险的,如果学生没有创新成功,老师不要直接判为实验未完成,而是酌情处理。
实验五键盘显示控制实验
一、实验目的
1、掌握8255控制键盘及显示电路的基本功能及编程方法。
2、掌握一般键盘和显示电路的工作原理。
二、实验原理和内容
使得在小键盘上每按一个健,4位数码管上显示出相应字符,它们的对应关系如下:
小键盘显示小键盘显示
0—0C—C
1—1D—d
2—2E—E
3—3F—F
4—4
5—5
6—6
7—7
8—8
9—9
A—
B—b
三、硬件接线图
PC7~PC0/8255接行3~列0/4X4键盘
PA7~PA0/8255接dp~a/LED数码管
CS/8255接Y1/IO地址
PB3~PCB/8255接S3~S0/LED数码管
(或哪位数码管要显示则位选S接+5V即高电平,不想显示的数码管S接GND即低电平)图中用并行接口8255A作为微机与键盘间的接口,采用逐行扫描法识别键盘。
将键盘的列与PA0—PA3相连,A口为输出;将行与C口的PC0—PC1相连,C口为输入口;PB0—PB7与七段数码显示管连接,B口为输出。
程序执行过程如下:
识别是否有键按下,方法是使PA0一PA3输出为全0,读C口值(行值),其中只要有一位为0,就说明有键按下 ,在检测到有键按下后,延迟一段时间,根据找到的键号,转去执行七段数码显示管显示程序,这时七段数码显示管就显示与该键相同的数值。
四、程序流程图
五、源程序代码
DATASEGMENT
TABLE1DB0,4,8,12
TABLE2DB1,5,9,13
TABLE3DB2,6,10,14
TABLE4DB3,7,11,15
TABLE5DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,53H,79H,71H
DATAENDS
STACKSEGMENT'STACK'STACK
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVDX,SEGDATA
MOVDS,DX
MOVDX,OFFSETDATA
PUSHDX
LOOPS:
MOVDX,28BH;控制口地址
MOVAL,81H;控制字10000001
OUTDX,AL
MOVDX,28AH;C口
MOVAL,0FH;行赋0
OUTDX,AL
INAL,DX;读入列值在高4位
MOVCL,AL;保存列值
CALLDELAY;延迟函数
;MOVDX,28AH;再读一遍
;MOVAL,0FH;
;OUTDX,AL
INAL,DX;
CMPAL,CL;两次读入列值相同,说明不是抖动产生
JNZLOOPS
TESTAL,08H;按键是否在第一列
JZCOL1
TESTAL,04H
JZCOL2
TESTAL,02H
JZCOL3
TESTAL,01H
JZCOL4
;没有键值输入
;MOVDX,289H;位选第4个LED,B口地址
;MOVAL,0H
;OUTDX,AL;熄灭数码管
MOVAH,01H
INT16H
JNZENDD;有键输入则跳出
JMPLOOPS
COL1:
CALLJROW;返回行值在AL中
MOVBX,OFFSETTABLE1
JMPNEXT
COL2:
CALLJROW
MOVBX,OFFSETTABLE2
JMPNEXT
COL3:
CALLJROW
MOVBX,OFFSETTABLE3
JMPNEXT
COL4:
CALLJROW
MOVBX,OFFSETTABLE4
JMPNEXT
NEXT:
XLAT;AL中行值对应查列所在的表
MOVBX,OFFSETTABLE5
XLAT;根据下标查到数码管对应显示
MOVCL,AL;保存到CL中
MOVDX,289H;位选第4个LED,B口地址
MOVAL,0H
OUTDX,AL;熄灭数码管
MOVDX,288H;A口地址
MOVAL,CL;段选写CL
OUTDX,AL
MOVDX,289H;位选第4个LED,B口地址
MOVAL,08H
OUTDX,AL
MOVAH,01H
INT16H
JNZENDD;有键输入则跳出
JMPLOOPS
ENDD:
MOVAX,4C00H
INT21H
JROWPROCNEAR
PUSHAX;AL中为已产生的列值
MOVDX,28BH;控制口地址
MOVAL,88H;控制字10001000
OUTDX,AL
POPAX
ORAL,0F0H
MOVDX,28AH;把列值输入
OUTDX,AL
MOVDX,28AH;把列值输入
INAL,DX;读入行值,高四位
TESTAL,80H
JZROW0
TESTAL,40H
JZROW1
TESTAL,20H
JZROW2
MOVAL,3;都不满足则在第3行
JMPEXIT
ROW2:
MOVAL,2
JMPEXIT
ROW1:
MOVAL,1
JMPEXIT
ROW0:
MOVAL,0
EXIT:
RET
JROWENDP
DELAYPROCNEAR
PUSHCX
MOVCX,100H
LOOP1:
LOOPLOOP1
POPCX
RET
DELAYENDP
DELAY1PROCNEAR
PUSHCX
MOVCX,5H
LOOP2:
LOOPLOOP2
POPCX
RET
DELAY1ENDP
CODEENDS
ENDSTART
六、实验结果
运行程序后,在键盘上按任意键,可以看到数码管上显示按键,例如阿拉伯数字0~1在数码管上显示0~1,小写字母“a~z”显示“a~z”,大写字母A~Z显示“A~Z”。
七、实验总结
本次试验主要联系了对并行接口8255的操作,通过C口控制键盘,A口控制数码管实现了CPU与外设之间的通信。
在判断键值时采取行列反转法,通过改变控制字来实现C口高四位和低四位的输入输出方式的改变。
运行程序后,在键盘上按任意键,可以看到数码管上显示了按键的ASIIC码,对于小于10的数,显示30-39,而对于字母,小写时为60-63,大写时为40-43,而在按下F时,不显示数字,在按下一个字母时系一位的显示在4和6之间变化,实现大小写的转换。
程序通过对输入量的识别,跳转到不