中南大学微机原理实验报告信号发生器讲解Word文件下载.docx
《中南大学微机原理实验报告信号发生器讲解Word文件下载.docx》由会员分享,可在线阅读,更多相关《中南大学微机原理实验报告信号发生器讲解Word文件下载.docx(47页珍藏版)》请在冰豆网上搜索。
![中南大学微机原理实验报告信号发生器讲解Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-10/26/fa0f087e-88d7-4e50-9933-8895a3b853d0/fa0f087e-88d7-4e50-9933-8895a3b853d01.gif)
指导老师:
王击李志明
目录
一、课程设计概述
二、设计思想与实施方案
三、典型模块与编程分析
四、系统调试
五、课程设计收获与体会
六、参考文件
七、附录
一、课程设计概述
1.1课程设计目的
《微型计算机原理与接口技术》理论课程是一门专业基础课程,它的主要内容包括微型计算机体系结构、8086微处理器和指令系统、汇编语言设计以及微型计算机各个组成部分介绍等内容。
要求学生对微机原理中的基本概念有较深入的了解,能够系统地掌握微型计算机的结构、8086微处理器和指令系统、汇编语言程序设计方法、微机系统的接口电路设计及编程方法等,并具有综合运用所学知识分析问题和解决问题的能力。
本课程设计,旨在提高同学汇编语言的编程能力以及对外部硬件(8086,DC0832,74LS138,8255,数码管,矩阵键盘)的认识,掌握各芯片的用法,锻炼学生在微机应用方面的实际工作能力,将所学转化为所用。
同学们应该充分利用实验室现有资源以及微机原理与接口技术中的相关实验资料,以试验箱或proteus仿真软件为工具,以汇编语言或C语言为开发语言,实现多个模块的结合及软硬结合,独立完成给定的任务。
在完成任务的基础上,以提升能力为目标,各位同学可以尝试用其他的编程语言实现给定要求,并开动自己的脑经,完善功能并尽可能多的做到以较简单的方法实现较为困难的问题,以较少的器件实现较多的功能,并琢磨模块间的配合实现。
1.2课程设计的要求
(1)分别用C语言或汇编语言编程完成硬件接口功能设计;
(2)硬件电路基于80x86微机的接口电路;
(3)程序功能要求:
小键盘给定、数码管(屏幕)显示,并产生对应信号波形(D/A)输出(信号波形包括正弦波、三角波、方波、锯齿波)、输出信号波形幅度、频率可调。
(注意:
按键数量应尽量少)。
(4)实现远程控制
第二章设计思想和实施方案
2.1功能分析
2.1.1波形产生
结合微机原理实验中关于波形的显示,在TDPID平台上,因为涉及数字量与模拟量之间的相互转化,所以DAC0832和ADC0809要相互配合使用。
在本次课程设计中,由于在PROTEUS中仿真由数字信号转换为模拟信号来产生波形,所以结合一片DAC0832即可实现。
通过汇编语言编写各个波形子程序,由于要显示波形,控制每输出一个值,都进行一定时间的延时,然后扫描没有按键按下后再输出下一个值,直到形成一个周期的代码。
利用循环,就可产生连续波形代码,再通过8255输出给DAC0832,将数字量转换成模拟量输出,即可得各种波形。
2.1.2波形的切换
由于设计要求上提出,小键盘给定,所以结合该题目我们可以通过4*4小键盘来实现波形的切换。
第一列从上到下编码为0,1,2,3,分别对应方波、三角波、锯齿波、正弦波。
第二列第一个键的键值为4,对应退出波形,可以重新选择波形,实现波形切换。
当没有输出波形的时候,也就是输出为零,选择0到3就会进入相应的波形子程序。
进入波形子程序以后,每一个点输出之前都会调用扫描子程序,判断是否有键按下,有则跳转到相应的程序断去执行,无则继续。
由于小键盘扫描在程序总是存在的,因此可随时进行波形间的切换。
2.1.3数码管显示
数码管同步显示当前波形的幅值和频率。
硬件上由8086将数据输出给8255,8255再将输出送给数码管的A~Dp,显示相应字符。
写入8255的控制字,A,B端口输出,C端口输入,通过A和B端口进行段码和位码的选择,同时软件上定义一个缓冲区存放波形的幅值和频率,显示数码管时,利用缓冲区的数值查找数码管键值表再输出对应数值。
循环输出波形时也循环输出缓冲区内容对应的值,就可以同步显示波形的幅值和频率。
利用小键盘扫描得到的键值进行判断,对缓冲区内的幅值频率进行相应的改变,使数码管能显示不同的幅值和频率。
2.1.4小键盘给定
使用实验箱上4×
4键盘,可以实现切换波形,调频、调幅和退出波形的控制功能。
在Protues输入keypad关键字,找到虚拟键盘。
在扫描键盘时先在全部列通入低电平,扫描是否有行为低电平,若有,则表示有键按下,然后键盘矩阵扫描时轮流选通一行,然后从端口处读取列数据,如果有按键则读取的数据肯定有一位为0,经过取反后,应有一位为1,然后再根据选取的列和读取的行值,确定按的是哪一个键,调用保存函数将键值编码保存在一个名为key的存储单元里。
当有键按下时,从key内取出键值进行判断,就能转入相应的子程序进行控制,并且键盘扫描、获取键值等子程序也能够很好的嵌入在其他程序中,方便调用。
既方便程序的编写,也提高了可读性。
2.1.5有级调频
改变波形子程序中的各个数据输出的延时时间,就可改变整个波形的频率。
延时越短周期越长频率越高。
定义三个缓冲区来存放延时,其中一个存放初始值4,一个存放当前波形的延时,还有一个作为中间暂存用。
产生波形以后,取出延时初值存入中间暂存缓冲区,再扫描键盘:
0对应减小延时,1对应增大延时,无键则不改变延时。
对暂存区的数值进行相应操作后,将最后的值存入名为tiaopin的缓冲区内作为当前波形的延时。
也可利用ADC0809用定位器进行无级调节。
2.1.6有级调幅
和有级调频类似,有极调幅也是定义三个缓冲区,功能和有极调频类似。
幅值缓冲区存放的是输出点的值的放大倍数,调节放大倍数也就使幅值改变了。
产生波形以后,取出倍数初值存入中间暂存缓冲区,再扫描键盘:
2对应减小倍数,3对应增大倍数,无键则不改变倍数。
对暂存区的数值进行相应操作后,将最后的值存入名为tiaofu的缓冲区内作为当前波形的幅值放大倍数。
2.1.7结束退出
当键盘扫描到的键值等于4时,无论在什么时候,它就会无条件跳出程序,返回起始状态,等待选择波形,同时数码管显示零。
2.2所用芯片功能简介
2.2.18086功能简介
8086CPU是由总线接口部件BIU和执行部件EU这两大部分构成。
总线接口部件BIU是8086CPU在存储器和I/O设备之间的接口部件,负责对全部引脚的操作,即8086对存储器和I/O设备的所有操作都
是由BIU完成的。
所有对外部总线的操作都必须有正确的地址和适当的控制信号,BIU中的各部件主要是围绕这个目标设计的。
它提供了16位双向数据总线、20位地址总线和若干条控制总线。
其具体任务是:
负责从内存单元中预取指令,并将它们送到指令队列缓冲器
暂存。
CPU执行指令时,总线接口单元要配合执行单元,从指定的内存单元或I/O端口中取出数据传送给执行单元,或者把执行单元的处理结果传送到指定的内存6单元或I/O端口中。
执行单元EU中包含1个16位的运算器ALU、8个16位的寄存器、1个16位标志寄存器FR、1个运算暂存器和执行单元的控制电路。
这个单元进行所有指令的解释和执行,同时管理上述有关的寄存器。
EU对指令的执行是从取指令操作码开始的,它从总线接口单元的指令队列缓冲器中每次取一个字节。
如果指令队列缓冲器中是空的,那么EU就要等待BIU通过外部总线从存储器中取得指令并送到EU,通过译码电路分析,发出相应控制命令,控制ALU数据总线中数据的流向。
8086管脚图如下:
2.2.28255功能简介
8255A具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。
它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。
8255A的通用性强,使用灵活,通过它CPU可直接与外设相连。
8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种。
方式0:
基本的输入输出方式,即无须联络就可以直接进行的I/O方式。
其中A、B、C口的高四位或低四位可分别设置成输入或输出;
方式1:
选通I/O,此时接口和外围设备需联络信号进行协调,只有A口和B口可以工作在方式1,此时C口的某些线被规定为A口或B口与外围设备的联络信号,余下的线只有基本的I/O功能,即只工作在方式0;
方式2:
双向I/O方式,只7有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。
8255管脚分布如下:
2.2.3DAC0832功能简介
DAC0832是采用CMOS工艺制成的单片电流输出型8位数/模转换器。
它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。
电路有极好的温度跟随性,使用了COMS电流开关和控制逻辑而获得低功耗、低输出的泄漏电流误差。
集成电路内有两级输入寄存器,使DAC0832芯片具备双缓冲、单缓冲和直通三种输入方式,以便适于各种电路的需要.DAC0832有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。
输入可有2的8次方,即256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。
D/A转换结果采用电流形式输出。
若需要相应的模拟电压信号,可通过一个高输入阻抗的线性运算放大器实现。
运放的反馈电阻可通过RFB端引用片内固有电阻,也可外接。
DAC0832逻辑输入满足TTL电平,可直接与TTL电路或微机电路连接。
DAC0832管脚分布如下:
2.2.474LS273功能简介
地址锁存器就是一个暂存器,它根据控制信号的状态,将总线上地址代码暂存起来。
8086/8088数据和地址总线采用分时复用操作方法,即用同一总线既传输数据又传输地址。
当微处理器与存储器交换信号时,首先由CPU发出存储器地址,同时发出允许锁存信号ALE给锁存器,当锁存器接到该信号后将地址/数据总线上的地址锁存在总线上,随后才能传输数据。
地址锁存器74LS273是带清除端的八D触发器,只有清除端为高电平时才具有锁存功能,锁存控制端为11脚CLK,在上升沿锁存。
8086的ALE端输出的锁存控制信号必须经反相器后才能连到74LS273的CLK端,以满足CLK在上升沿锁存的要求。
74LS273的引脚1D~8D为数据输入端,1Q~8Q为数据输出端,WR:
主清除端,低电平触发,即当为低电平时,芯片被清除,输出全为0。
CP(CLK):
触发端,上升沿触发,即当CP从低到高电平时,D0~D7的数据通过芯片,为0时将数据锁存,D0~D7的数据不变。
由于8086有20位物理地址,所以需要用3片74LS273级联。
74LS273管脚分布如下图:
2.2.574LS138功能简介
(1)当一个选通端(E1)为高电平,另两个选通端((/E2))和/(E3))为低电平时,可将地址端(A0、A1、A2)的二进制编码在Y0至Y7对应的输出端以低电平译出。
比如:
A2A1A0=110时,则Y6输出端输出低电平信号。
(2)
(2)利用E1、E2和E3可级联扩展成24线译码器;
若外接一个反相器还可级联扩展成32线译码器。
(3)若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器。
(4)可用在8086的译码电路中,扩展内存。
74LS138管脚如下:
2.3实施方案
2.3.1系统总体方案
该设计包括硬件设计和软件设计两部分。
1.硬件上要求以8086CPU为核心进行电路设计。
完全用小键盘对波形进行控制。
小键盘作为产生波形、波形切换、调节频率,调节幅值、
退出波形的控制端口。
8255A芯片完成对小键盘扫描,获取键值编码以及输出到数码管。
通过D