微机原理课程设计报告.doc_第1页
微机原理课程设计报告.doc_第2页
微机原理课程设计报告.doc_第3页
微机原理课程设计报告.doc_第4页
微机原理课程设计报告.doc_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微机应用系统设计与综合应用实验(微机原理)课程设计报告专业班级学生姓名学生学号指导老师完成时间目录第一章 设计课题概述31.1 课程设计目的31.2 课程设计要求41.3课程设计用途41.4实现技术指标4第二章 设计思想和实施方案52.1 功能分析52.1.1波形产生52.1.2波形切换52.1.3 屏幕显示52.1.4小键盘控制52.1.5无极调频62.1.6无极调幅62.2 所需芯片功能简介62.2.1 8088功能简介62.2.2 8255A功能简介72.2.3 A/D0832功能简介82.2.4 D/A0809功能简介92.3 实施方案102.3.1 系统总体设计方案102.3.2系统设计方框图10第三章 典型程序模块及编程技巧分析123.1键盘扫描及逻辑判断模块123.2 键盘编码模块133.3 波形产生模块143.3.1方波143.3.2 锯齿波163.3.3 三角波183.3.4 正弦波203.4 波形切换及基本控制模块213.5 无级调频调幅判断及控制模块23第四章 遇到的问题及解决方法26第五章 程序清单和程序注释285.1 汇编源程序285.2 C语言源程序49第六章 课程设计收获与体会636.1 实验收获636.2 心得体会63第七章 参考文献65第八章 附录668.1 8088 最小模式的连接图6666第一章 设计课题概述1.1 课程设计目的微机应用系统设计与综合实验(实践)课程设计是自动化专业本科生必修的一门技术基础课。通过本课程设计,让学生对微机系统有一个较全面的理解,对典型数字接口电路的应用技术有一个较深入的掌握,并对应用系统进行硬件原理和软件编程进行分析、设计和调试,达到基本掌握简单微型计算机应用系统软硬件的设计方法,提高项目开发能力的目的。微型计算机原理与接口技术是一门专业基础课程,它的主 要内容包括微型计算机体系结构、8086 微处理器和指令系统、汇编 语言设计以及微型计算机各个组成部分介绍等内容。要求学生对微机 原理中的基本概念有较深入的了解,能够系统地掌握微型计算机的结构、8086 微处理器和指令系统、汇编语言程序设计方法、微机系统 的接口电路设计及编程方法等,并具有综合运用所学知识分析问题和 解决问题的能力。微机应用系统设计与综合实验课程是自动化专业本科生必修的一门技术基础课程。通过该课程的学习,可以使学生对微机系统 有一个全面的了解,掌握常规的芯片使用方法、掌握简单的微型计算 机应用系统软硬件的设计方法。课程中要求学生根据课程设计指导书来选择课题,并且独立完 成课题,写出课程设计说明书,画出电路原理图,说明工作原理,画 出电路板图,编写程序以及程序流程图。针对数字信号发生器及其控制这一课题,主要涉及到硬件 的连接(主要用到芯片有:8088CP U、DAC0832 、8255 等)以及硬件连 接原理图,程序的编写(主要涉及到显示波形以及通过开关来对波形 进行选择)以及各个子程序或程序段的程序流程等,具体详见各个小 节。通过课程设计不仅可以锻炼学生在微机应用方面的实际工作能力,将所学转化为所用,更是一个锻炼解决实际问题能力的很好机会。1.2 课程设计要求(1)、分别用C语言和汇编语言编程完成硬件接口功能设计;(2)、硬件电路基于80x86微机的接口电路;(3)、程序功能要求:小键盘给定、数码管(屏幕)显示,并产生对应信号波形(D/A)输出(信号波形包括正弦波、三角波、方波、锯齿波)、输出信号波形幅度、频率可调(注意:按键数量应尽量少)。1.3课程设计用途信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。各种波形曲线均可以用三角函数方程式来表示。能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波的电路被称为函数信号发生器。函数信号发生器在电路实验和设备检测中具有十分广泛的用途。例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的振荡器。本次设计的信号发生器主要能产生4种可调频的电压波形,它们是:三角波、锯齿波、矩形波(含方波)、正弦波,调频范围大致为几赫兹到一百多赫兹。1.4实现技术指标1) 正弦波、三角波、方波和锯齿波信号的产生。2) 用小键盘控制各波形间的切换。3) 屏幕同步显示当前工作状态。4) 小键盘区分调频、调幅和退出程序。5) 实现频率在指定范围内无极可调。6) 实现幅值在指定范围内无极可调。第二章 设计思想和实施方案2.1 功能分析2.1.1波形产生由于要求达到模拟信号波形发生,因此要由D/A转换芯片0832来来完成此项任务,由8253形成波形的主要做法是先输出一个下限电平,将其保持一个延时,然后输出一个稍高的电平,在保持t,然后重复此过程,通过汇编语言编写各个波形子程序,即各个波形的一个周期代码。通过主程序的循环调用,产生连续波形代码并通过A/D0832将数字量转换成模拟量输出,即可得各种波形。2.1.2波形切换用小键盘来控制波形的选择,即设计时对应的编码分别对应矩形波、锯齿波、三角波和正弦波。每个波形周期开始前,调用键盘扫描子程序,若无按键则继续产生第二个周期的波形;若有按键按下,延时消抖后,再次调用键盘扫描子程序,若真是有按键按下,就退出波形产生子程序,返回主程序,并调用键盘编码子程序对按键值进行编码,确定要产生的波形,并调用相应的波形产生子程序,实现可波形间的切换。2.1.3 屏幕显示当前工作状态的屏幕同步显示,通过对程序的编写,使用DOS显示功能的调用,在每次调用相应的子程序前,显示相应字符串,则屏幕就可以显示当前的工作状态,对应的字符串保存在内存中,DOS调用可以通过相对地址进行读取,这样就实现了屏幕同步显示当前工作状态的功能。同时,在键盘编码子程序之后,对幅频标志位进行判断,默认为调频,标志位为0,此时屏幕显示可调节频率调频的提示字符;若标志位不为0,则说明是调幅,此时屏幕显示可调节幅值调频的提示字符。2.1.4小键盘控制使用实验箱上44键盘,可以实现区分调频、调幅和退出程序的控制功能。唐都实验仪器提供的键盘属于机械式按键,扫描时还选通列,然后从端口处读取行数据,如果有按键则,则读取的数据肯定有一位为0,经过取反后,有一位为1,然后再根据选取的列和读取的行值,确定按的是哪一个键,当按下的是相应的编码控制键时,就能进行相应的控制。经过对唐都自带的小键盘程序进行研究和修改,将其分为键盘扫描、延时消抖、键盘编码等不同的模块,能够很好的嵌入在我们的程序中。2.1.5无极调频改变子程序中的各个数据输出时间,及延时,就可改变整个波形的频率。延时越短频率越高。而延时时间长短可由外部输入决定,通过A/D0809将电位计(05V)的模拟量转化成数字量(00FF)作为延时时间长短的控制因子。调节电位器即可调节延时,进而调节频率。ADC0809芯片分辨率为8位,即可将延时分为256个等级,实现无极调频。由于要和无级调频区分开,所以在每个波形产生子程序中,在产生一周期的波形前,对幅频标志位进行判断,若是调频,即为0,就将A/D0809输出的数字量移到频率单元中,用以产生相应频率的波形。2.1.6无极调幅和无级调频类似,无级调幅由于要和无级调频区分开,所以在每个波形产生子程序中,在产生一周期的波形前,对幅频标志位进行判断,若是调幅,即不为0,就将A/D0809输出的数字量移到幅值单元中,用以产生相应幅值的波形。2.2 所需芯片功能简介2.2.1 8088功能简介8088是一个Intel以8086为基础的微处理器,拥有16位单元暂存器和8位元外部资料总线。内部由两个独立的功能部件组成,分别为BIU和EU,EU负责指令的执行,并进行算术逻辑运算等。EU从BIU中的指令队列中取得指令。当指令要求将数据放在寄存器或输出到外部设备,或者要从寄存器或外部设备读取数据时,EU就向BIU发出请求,BIU根据EU发来的请求完成这些操作。它包括一个算术逻辑单元(ALU)、一组通用寄存器和标志寄存器组成,它们均是16位的。执行部件中含有8个16位的寄存器,这些寄存器属于CPU的专用寄存器,按其用途可将它们分成两组:数据寄存器组和指示器变址寄存器组。总线接口部件BIU包括一组段寄存器、一个指令指示器、指令队列(8086长6个字节,8088长4个字节)、地址产生器和总线控制器等。BIU根据执行部件EU的请求,完成CPU与存储器或I/O设备之间的数据传送。管脚图如下:2.2.2 8255A功能简介(1)具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连(2)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方式,只有A口可以工作在这种方式,该I/O线即可输入又可输出,此时C口有5条线被规定为A口和外围设备的双向联络线,C口剩下的三条线可作为B口方式1的联络线,也可以和B口一起方式0的I/O线。管脚图如下:2.2.3 A/D0832功能简介DAC0832是采用CMOS工艺制成的单片电流输出型8位数 / 模转换器。下图是DAC0832的逻辑框图及引脚排列。DAC0832的引脚功能说明如下:D0D7 :数字信号输入端ILE:输入寄存器允许,高电平有效:片选信号,低电平有效:写信号1,低电平有效:传送控制信号,低电平有效:写信号2,低电平有效IOUT1,IOUT2:DAC电流输出端RfB :反馈电阻,是集成在片内的外接运放的反馈电阻VREF :基准电压(10+10)VVCC :电源电压(515)V2.2.4 D/A0809功能简介ADC0809是采样频率为8位的、以逐次逼近原理进行模数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。下图是DAC0832的逻辑框图及引脚排列。 ADC0809芯片有28条引脚,采用双列直插式封装,如图1323所示。下面说明各引脚功能。 IN0IN7:8路模拟量输入端。2-12-8:8位数字量输出端。ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路ALE:地址锁存允许信号,输入,高电平有效。 START: AD转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 EOC: AD转换结束信号,输出,当AD转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。当AD转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。 REF(+)、REF(-):基准电压。 Vcc:电源,单一5V。 GND:地2.3 实施方案2.3.1 系统总体设计方案使用小键盘作为产生波形、调频调幅、程序退出的控制端口,8255芯片作为小键盘编码和读取A/D0809将模拟量转化成的数字量,通过A/D0832将数字量转换成模拟量输出,产生各种波形输出,再通过D/C0809将模拟的波形转换为数字信号,通过虚拟示波器显示出波形,通过小键盘可以控制相调频和调幅,再通过电位计进行幅值和幅度的无极调节。2.3.2系统设计方框图系统设计方框图如下图所示 第三章 典型程序模块及编程技巧分析3.1键盘扫描及逻辑判断模块键盘扫描模块可以判断是否有键按下,并且并根据逻辑设计进行相应操作。按在程序中的具体分布位置和实现功能可以分为两个功能相反的类型。一种为“无键按下则循环等待,有键按下则消抖”,用于在程序刚刚运行时进行判断;另一种为“无键按下则继续,有键按下则消抖”,用于在波形产生子程序的每个周期结尾处进行判断。具体的实现代码如下:1) 无键按下则循环等待,有键按下则消抖 KEYBEGIN: CALL CCSCAN ;扫描按键 JNZ GETKEY1 ;有键按下则跳置GETKEY1 JMP KEYBEGIN ;无按键则继续循环等待 GETKEY1: CALL DALLY_SCAN ;有键压下,延时消抖 CALL DALLY_SCAN CALL CCSCAN ;再次扫描按键 JNZ GETKEY2 ;有键按下则跳置GETKEY2 JMP KEYBEGIN ;否则跳回开始继续循环2) 无键按下则继续,有键按下则消抖KEYBEGIN_1: CALL CCSCAN ;扫描按键 JNZ GETKEY1_1 ;有键按下则跳置GETKEY_1 JMP GETKEY2_1 ;无按键则继续向下执行 GETKEY1_1: CALL DALLY_SCAN ;有键压下,延时消抖 CALL DALLY_SCAN CALL CCSCAN ;再次扫描按键 JNZ FANHUI1 ;有键按下则跳置GETKEY2 GETKEY2_1: JMP SQUARE1 ;否则跳回开始继续循环3.2 键盘编码模块如果有按键,就获取按键码的功能,44键盘的编码,从左到右,从上到下,依次编码为0F, 如果有按键, 则转入到按键处理子程序模块执行, 如果没有,则返回主程序循环。具体的实现代码如下:SCAN PROC NEAR ;键盘编码子程序 MOV CH,0FEH MOV CL,00H ;设置当前检测的是第几列 COLUM: MOV AL,CH ;选取一列,将X1X4中一个置0 MOV DX,MY8255_A OUT DX,AL MOV DX,MY8255_C ;读Y1Y4,用于判断是哪一行按键闭合 IN AL,DX L1: TEST AL,01H ;是否为第1行 JNZ L2 ;不是则继续判断 MOV AL,00H ;设置第1行第1列的对应的键值 JMP KCODE L2: TEST AL,02H ;是否为第2行 JNZ L3 ;不是则继续判断 MOV AL,04H ;设置第2行第1列的对应的键值 JMP KCODE L3: TEST AL,04H ;是否为第3行 JNZ L4 ;不是则继续判断 MOV AL,08H ;设置第3行第1列的对应的键值 JMP KCODE L4: TEST AL,08H ;是否为第4行 JNZ NEXT ;不是则继续判断 MOV AL,0CH ;设置第4行第1列的对应的键值 KCODE: ADD AL,CL ;将第1列的值加上当前列数,确定按键值 MOV BOXING,AL ;将AL中的按键值保存到指定内存单元 NEXT: INC CL ;当前检测的列数递增 MOV AL,CH TEST AL,08H ;检测是否扫描到第4列 JZ KERR ;是则退出子程序 ROL AL,1 ;没检测到第4列则准备检测下一列 MOV CH,AL JMP COLUM KERR: RET SCAN ENDP 3.3 波形产生模块3.3.1方波方波的产生只要用D/A0832输出一个最大值(此处用FFH),并延时一段时间。在输出一个最小值(此处用00F),延时一段相同时间,就是矩形波的一个周期。具体的实现代码如下: SQUARE PROC NEAR ;方波产生子程序 SQUARE1: MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,00001110B ;方式0,A口、C口高四位输出,B口、C口低4位输入 OUT DX,AL MOV DX,MY8255_B ;读8255B口数据 IN AL,DX MOV BL,FLAG_FUPIN ;判断幅频标志位,默认为0? CMP BL,0 JE PIN_1 ; 为0则存为频率值 MOV AMP,AL ; 不为0则存为振幅值 JMP NEXT1_1 PIN_1: MOV FRE,AL NEXT1_1: MOV DX,DA0832 ;写00H,输出低电平 MOV AL,00H OUT DX,AL CALL DALLY1 MOV DX,DA0832 ;写 AMP,输出高电平 MOV AL,AMP ;AMP=00HFFH,默认值 7FH OUT DX,AL CALL DALLY1 ;无键按下则继续,有键按下则消抖 KEYBEGIN_1: CALL CCSCAN ;扫描按键 JNZ GETKEY1_1 ;有键按下则跳置GETKEY_1 JMP GETKEY2_1 ;无按键则继续向下执行 GETKEY1_1: CALL DALLY_SCAN ;有键压下,延时消抖 CALL DALLY_SCAN CALL CCSCAN ;再次扫描按键 JNZ FANHUI1 ;有键按下则跳置GETKEY2 GETKEY2_1: JMP SQUARE1 ;否则跳回开始继续循环 FANHUI1: RET SQUARE ENDP3.3.2 锯齿波锯齿波是从最小值开始逐渐上升,到达最大值之后,跳到最小值循环。因此只要先将最小值(此处用00F)放到AL,输出,延时,在AL逐渐加一输出,延时,直到达到最大值。具体的实现代码如下: JUCHI PROC NEAR ;锯齿波产生子程序 JUCHI1: MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,00001110B ;方式0,A口、C口高四位输出,B口、C口低4位输入 OUT DX,AL MOV DX,MY8255_B ; 读8255B口数据 IN AL,DX MOV BL,FLAG_FUPIN ;判断幅频标志位,默认为0? CMP BL,0 JE PIN_3 ; 为0则存为频率值 MOV AMP,AL ; 不为0则存为振幅值 JMP NEXT1_3 PIN_3: MOV FRE,AL NEXT1_3: MOV BL,00H ;D/A转换起始值 UP2: MOV AL,AMP AND AL,0F0H SHR AL,4 ;AMP=00HFFH ,AL=00H07H,即 BL变为0到 7倍 。默认值AMP=7FH,BL乘 3倍 MUL BL MOV DX,DA0832 ;启动D/A转换 OUT DX,AL CALL DALLY2 INC BL CMP BL,25H JNE UP2 MOV BL,00H MOV AL,AMP AND AL,0F0H SHR AL,4 ;AMP=00HFFH ,AL=00H07H,即 BL变为0到 7倍 。默认值AMP=7FH,BL乘 3倍 MUL BL MOV DX,DA0832 OUT DX,AL CALL DALLY2 ;无键按下则继续,有键按下则消抖 KEYBEGIN_3: CALL CCSCAN ;扫描按键 JNZ GETKEY1_3 ;有键按下则跳置GETKEY_1 JMP GETKEY2_3 ;无按键则继续向下执行 GETKEY1_3: CALL DALLY_SCAN ;有键压下,延时消抖 CALL DALLY_SCAN CALL CCSCAN ;再次扫描按键 JNZ FANHUI3 ;有键按下则跳置GETKEY2 GETKEY2_3: JMP JUCHI1 ;否则跳回开始继续循环 FANHUI3: RET JUCHI ENDP3.3.3 三角波三角波与锯齿波类似,只是三角波达到最大后,在逐渐减小到最小,因此三角波有两个过程。具体的实现代码如下: SANJIAO PROC NEAR ;三角波产生子程序 SANJIAO1: MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,00001110B ;方式0,A口、C口高四位输出,B口、C口低4位输入 OUT DX,AL MOV DX,MY8255_B ; 读8255B口数据 IN AL,DX MOV BL,FLAG_FUPIN ;判断幅频标志位,默认为0? CMP BL,0 JE PIN_2 ; 为0则存为频率值 MOV AMP,AL ; 不为0则存为振幅值 JMP NEXT1_2 PIN_2: MOV FRE,AL NEXT1_2: MOV BL,00H ;D/A转换起始值 UP1: MOV AL,AMP AND AL,0F0H SHR AL,4 ;AMP=00HFFH ,AL=00H07H,即 BL变为0到 7倍 。默认值AMP=7FH,BL乘 3倍 MUL BL MOV DX,DA0832 ;启动D/A转换 OUT DX,AL CALL DALLY2 INC BL CMP BL,25H JNE UP1 DOWN: MOV AL,AMP AND AL,0F0H SHR AL,4 ;AMP=00HFFH ,AL=00H07H,即 BL变为0到 7倍 。默认值AMP=7FH,BL乘 3倍 MUL BL MOV DX,DA0832 OUT DX,AL CALL DALLY2 DEC BL CMP BL,00H JNE DOWN ;无键按下则继续,有键按下则消抖 KEYBEGIN_2: CALL CCSCAN ;扫描按键 JNZ GETKEY1_2 ;有键按下则跳置GETKEY_1 JMP GETKEY2_2 ;无按键则继续向下执行 GETKEY1_2: CALL DALLY_SCAN ;有键压下,延时消抖 CALL DALLY_SCAN CALL CCSCAN ;再次扫描按键 JNZ FANHUI2 ;有键按下则跳置GETKEY2 GETKEY2_2: JMP SANJIAO1 ;否则跳回开始继续循环 FANHUI2: RET SANJIAO ENDP3.3.4 正弦波正弦波是利用正弦表(见附录 代码段)输出的,即将正弦表中的数值一一输出并延时。具体的实现代码如下: SINE PROC NEAR ;正弦波产生子程序 SINE1: MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,00001110B ;方式0,A口、C口高四位输出,B口、C口低4位输入 OUT DX,AL MOV DX,MY8255_B ; 读8255B口数据 IN AL,DX MOV BL,FLAG_FUPIN ;判断幅频标志位,默认为0? CMP BL,0 JE PIN_4 ; 为0则存为频率值 MOV AMP,AL ; 不为0则存为振幅值 JMP NEXT1_4 PIN_4: MOV FRE,AL NEXT1_4: LEA SI,SIN MOV CX,255 UP: MOV BL,AMP AND BL,0F0H SHR BL,4 ;AMP=00HFFH ,BL=00H07H,即 AL变为0到 7倍。默认值AMP=7FH,AL乘 3倍 MOV AL,SI SHRAL,2 MUL BL MOV DX,DA0832 ;启动D/A转换 OUT DX,AL CALL DALLY3 INC SI LOOP UP ;无键按下则继续,有键按下则消抖 KEYBEGIN_4: CALL CCSCAN ;扫描按键 JNZ GETKEY1_4 ;有键按下则跳置GETKEY_1 JMP GETKEY2_4 ;无按键则继续向下执行 GETKEY1_4: CALL DALLY_SCAN ;有键压下,延时消抖 CALL DALLY_SCAN CALL CCSCAN ;再次扫描按键 JNZ FANHUI4 ;有键按下则跳置GETKEY2 GETKEY2_4: JMP SINE1 ;否则跳回开始继续循环 FANHUI4: RET SINE ENDP3.4 波形切换及基本控制模块波形切换是根据对小键盘的操作来实现的,对应编码的不同按键对应着不同的波形(0CH:方波,0DH:三角波,0EH:锯齿波,0FH:正弦波)和相应的控制(08H:调频调幅转换,0AH:退出系统)按下对应编码的键即可即可实现相应操作。具体的实现代码如下: GETKEY2: CALL SCAN LOOP1: MOV AL,KEY CMP AL,0CH JE A0 CMP AL,0DH JE A1 CMP AL,0EH JE A2 CMP AL,0FH JE A3 CMP AL,9H JE QUIT JMP KEYBEGIN A0: MOV DX,OFFSET MES1 ;show message MOV AH,09H INT 21H CALL SQUARE MOV FLAG_BOXING,0CH JMP GETKEY3 A1: MOV DX,OFFSET MES2 ;show message MOV AH,09H INT 21H CALL SANJIAO MOV FLAG_BOXING,0DH JMP GETKEY3 A2: MOV DX,OFFSET MES3 ;show message MOV AH,09H INT 21H CALL JUCHI MOV FLAG_BOXING,0EH JMP GETKEY3 A3: MOV DX,OFFSET MES4 ;show message MOV AH,09H INT 21H CALL SINE MOV FLAG_BOXING,0FH JMP GETKEY3 GETKEY3: CALL SCAN ;有键按下,调用键盘扫描子程序 MOV AL,KEY CMP AL,08H ;判断是否为调幅 /调频键 JNE LOOP1 ;不是则返回判断波形或退出 NOT BYTE PTRFLAG_FUPIN ;是调幅 /调频键,则改变幅频标志位 CMP FLAG_FUPIN,0 JNE TIAOFU MOV DX,OFFSET MES5 ;show message MOV AH,09H INT 21H JMP JIXU TIAOFU: MOV DX,OFFSET MES6 ;show message MOV AH,09H INT 21H JIXU: MOV BL,FLAG_BOXING MOV KEY,BL ;将波形对应的键值存回 KEY中 ,以便之后回到原波形 JMP LOOP1 ;返回判断波形 QUIT: MOV AX,4C00H ;返回到DOS INT 21H3.5 无级调频调幅判断及控制模块本次实验ADC 0809芯片的输出八位数据线以及CLOCK(1.1625MHz)已通过扁平电缆接到8088控制计算机的8255端口B和系统应用时钟OPCLK(1.1625MHz)上。模拟输入量Vin与数字输出量N的转换公式为Vin=(Vref+Vref-)/256N+Vref-,其中Vref+接5V,Vref-接0V。 改变波形产生子程序中的各个数据输出时间,及延时,就可改变整个波形的频率。改变波形产生子程序中的每次输出数值的大小,就可以改变整个波形的幅值。而实现无级变化的数值是0809读入的。由于要和无级调频区分开,所以在每个波形产生子程序中,在产生一周期的波形前,对幅频标志位进行判断。若是调频,即为0,就将A/D0809输出的数字量移到频率单元中,用以产生相应频率的波形;若是调幅,即不为0,就将A/D0809输出的数字量移到幅值单元中,用以产生相应幅值的波形。即每个循环启动一次D/A转换,启动信号可由C口输

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论