首页 微机原理课程设计_信号发生器的设计

微机原理课程设计_信号发生器的设计

举报
开通vip

微机原理课程设计_信号发生器的设计微机原理课程设计_信号发生器的设计 信号发生器的设计 1 第一章 课程设计的目的意义 1(1 课程设计的目的 微机应用系统设计与综合实验是对所学课程内容全面、系统的总结、巩固和提高的一项课程实践活动。根据汇编语言的特点,选择相应的题目,在老师的指导下,由学生独立完成。课程设计要求同学们熟悉汇编语言的编程,BIOS中断调用、系统功能调用、磁盘数据的查询、存取等相关知识。通过课程设计,一方面提高运用汇编语言编程解决实际问题的能力,另一方面使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定...

微机原理课程设计_信号发生器的设计
微机原理课程设计_信号发生器的设计 信号发生器的设计 1 第一章 课程设计的目的意义 1(1 课程设计的目的 微机应用系统设计与综合实验是对所学课程内容全面、系统的总结、巩固和提高的一项课程实践活动。根据汇编语言的特点,选择相应的题目,在老师的指导下,由学生独立完成。课程设计要求同学们熟悉汇编语言的编程,BIOS中断调用、系统功能调用、磁盘数据的查询、存取等相关知识。通过课程设计,一方面提高运用汇编语言编程解决实际问题的能力,另一方面使同学们更深入的了解计算机系统内部的有关知识,为以后的学习和系统开发奠定良好的基础。 1(2 设计的意义 通过课程设计要进一步锻炼同学们在微型计算机应用方面的实际工作能力。计算机科学在应用上得到飞速发展,因此,学习这方面的知识必须紧密联系实际:掌握这方面的知识更要强调解决实际问题的能力。同学们要着重学会面对一个实际问题,如何去自己收集资料,如何自己去学习新的知识,如何自己去制定解决问题的方案并通过实践不断地去分析和解决前进道路上的一切问题,最终到达胜利的彼岸。 第二章 设计任务 2(1 课程设计的题目 信号发生器软硬件设计: 以8088CPU为核心设计一个信号发生器,系统可产生正弦波和三角波信号。 2(2 设计的要求 该设计由一个人选做并独自完成,要求画出电路原理图,说明工作原理,编写程序及程序流程图。 2 2(3 设计的时间、地点 时间:2006年7月3日-7月14日地点:11112 第三章 总体设计方案 3(1 对信号发生器的认识 在我们日常生活中,以及一些科学研究中,锯齿波和正弦波、矩形波、三角波是常用的基本测试信号。此外,如在示波器、电视机等仪器中,为了使电子按照一定规律运动,以利用荧光屏显示图像,常用到锯齿波产生器作为时基电路。例如,要在示波器荧光屏上不失真地观察到被测信号波形,要求在水平偏转板加上随时间作线性变化的电压——锯齿波电压,使电子束沿水平方向匀速搜索荧光屏。而电视机中显像管荧光屏上的光点,是靠磁场变化进行偏转的,所以需要要用锯齿波电流来控制,对于三角波,方波同样有这不可忽视的作用而函数发生器是指一般能自动产生方波 正弦波 三角波以及锯齿波阶梯波等电压波形的电路或仪器。因此信号发生器是我们在学习,科学研究等方面不可缺少的工具。此外,信号发生器在教学、试验、测控等各个领域有十分广泛的应用,其输出信号的频率范围覆盖了各个频段,从甚低频到甚高频,操作方式也从手动旋钮到程控,产生的波形从传统的正(余)弦波和脉冲波形,发展到现在能产生各种任意波形。以前的信号发生器往往独占一个机箱,而现在的一些应用中,它只是一块插在计算机中的扩展卡,还有一些信号发生器设计成一个独立的小模块,通过RS-232C或RS-422,RS-485等串行总线和计算机连接。今天我们要设计一种能产生正弦波和三角波的信号发生器。 3(2 总体设计思路 该设计包括硬件设计和软件设计两部分。 1(硬件是基于PC机的设计,设计要求以8088CPU为核心,通常采用8284时钟产生器为CPU提供时钟信号。由于计算机产生的是数字信号,而信号发生器产生的是模拟量,所以必须把数字量转化成模拟量,因此设计中用到的一个主要硬件便是D/A转换器。信号发生器产生的信号又要经过示波器显示才能让我们知道产生的是什么波形,所以经D/A转换器转换后的电量要经运算放大电路放大后才能在示波器上显 3 示连续的波形,因此运算放大电路便成为连接D/A转换器和示波器的桥梁。D/A转换器的端口地址由片选端CS决定,因此,还需要译码器和一些逻辑门将D/A转换器的片选段和8088CPU连接起来。 2( 至于PC机何时要它产生三角波,何时产生正弦波,何时退出,这就属于软件方面的设计了,通过编程产生三角波和正弦波,并控制波形的幅值和频率。 三角波要分两段来产生,但因它的上升斜坡和下降斜坡都是线性关系,所以只要由数字量的增减来控制就可以了,产生上升斜坡时让输出值从零开始逐渐递增,其上升的最大值是从键盘输入的幅值,其频率是由输出点之间的延时来控制的;相反,产生下降斜坡时,让输出值从最大幅值逐渐递减到零。 而正弦波是三角函数关系,通常可以用以下两种方法产生:(1) 查表法:该方法的优点是速度快,但在精度高的情况下要求的存储器容量也要增大。此种方法应用在对精度要求不高的场合。(2) 泰勒级数展开法:在某些时候这是一种比查表法更为有效的方法。与查表法相比,这种方法需要的存储单元很少,而且精度高。其泰勒级数展开式如下: sin(x)=x(1-(1/6)*x^2*(1-(1/20)*x^2*(1-(1/42)*x^2*(1-(1/72)*x^2)))) 由于时间的原因,本实验中采用查表法,造一张正弦数字量表,即查函数表得到的值转换成十六进制数填表。D/A转换取值范围为一个周期,采样点越多,精度越高,本实验中采样点为256点/周期。正弦数字量表中的值为参考值,对于不同幅值的正弦波可以通过把表中的每个值乘以相同的倍数得到,其频率由改变输出点之间的延时来实现。 3(原理框图 信号发生器的原理框图如图3.1所示 4 D/A 时钟发8088 运算放 生器 CPU 转换器 大电路 键 译 示 码 波 盘 器 器 图3.1 信号发生器原理框图 3.3 总体设计流程图 1(总体设计流程图如图3.2所示 2(关于流程图的说明: 程序从初始化开始,首先让指针指向提示信息一,即在屏幕上显示: PLEASE ENTER 1 TO FORM SJB PLEASE ENTER 2 TO FORM ZXB PLEASE ENTER 3 TO EXIT! 当有键按下后,如果键是1,则转向执行产生三角波的程序;如果键不是1,则看键是否为2。如果键是2,则转向执行产生正弦波的程序;如果键也不是2,则看是否为3。如果是3,则退出;如果也不是3,则让指针指向信息2,即显示信息提示所输入的键为无效键,并回到显示提示信息1的地方,重新执行上述过程。 产生三角波的过程:首先调用AMPLITUDE子程序提示输入幅值,并把值转换为二进制值,然后调用CHANGE子程序判断输入的值是否为规定范围内的值,并把满足条件的值转换为十六进制的值;接下来提示输入频率的过程与输入幅值的过程类似。在 5 初始化 显示提示 等待有键按下 ,,键是,, N调用AMPLITUDE子程序键是,,输入幅值 Y N调用CHANGE子程序转化调用AMPLITUDE子程序键是3,成十六进制输入幅值 显示无效信息Y调用FREQUENCY子程序调用CHANGE输入频率子程序转化成十六进制调用CHANGE子程序转化调用FREQUENCY成十六进制子程序输入频率 调用CHANGE将,,置零子程序转化成十六进制将,,从端口输出CX计数,BX指TABLE表首址调用DELAY子程序延时上升AL清零斜坡 ,,加, 查表转换 产,生,,等于幅正值,产弦按相应的幅值输出生,波三角,,从端口输出波调用DELAY子程序延时 下降调用DELAY子程序延时斜BX指向表中下一个值,坡计数减1 ,,减, NY计数256次,,,,,等于,, NY有键按下,,有键按下, Y 结束 图 3.2 总体设计流程图 指针指端口地址后,将AL的值从零开始依次增加并从端口输出,各输出点之间的延 6 时便实现了对频率的控制,这是产生上升斜坡的过程。如果还没到最大幅值,则循环产生上升斜坡的过程;当AL等于最大幅值时,程序往下执行产生下降斜坡。产生下降斜坡的过程与上升斜坡类似,只是让AL从最大值依次递减并从端口输出,如果AL 不等于零,则循环产生下降斜坡,如果AL等于零,则返回到产生上升斜坡处循环,直到有键按下才结束。 产生正弦波的过程:开始提示要求输入幅值和频率的过程和产生三角波的相同,这里就不再赘述了。接着是查表法产生正弦波,让BX指表首址,AL清零,取采样点数256作为计数初值,通过XLAT指令将BX+AL的值送给AL,这就是查表转换的过程,由于表中给出的是固定的幅值,只要在表中各值得基础上乘以相应的倍数,便能得到需要的幅值的波形,计数小于256时,则在一个周期内循环查表,计数等于256次后,则从表首重新开始查表产生正弦波,直到有键按下才结束。 第四章 硬件设计 4(1 选用的芯片及其工作原理 4(1(1 选用的芯片 D/A转换器是把数字量变换成模拟量的线性电路器件,一做成集成芯片。由于实现这种转换的原理和电路结构及工艺技术有所不同,因而出现上百种D/A转换器,它们在转换速度、转换精度、分辨率以及使用价值上都具有特色。在分辨率上,14、16、18位的D\A转换器已投入市场,20位的D\A转换器已研制成功。在速度上,16位几百KHz,8位100MHz以上的产品都已成为商品。在各种各样的D\A转换芯片中我们选用8位的DAC0832芯片作为接口芯片。 4(1(2 选用芯片的工作原理 DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。输出的模拟量与输入的数字量成正比,这就实现了从数字量到模拟量的转换。一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。 7 输入可有256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。 DAC0832有单缓冲,双缓冲,直通三种工作方式。在应用系统中只有一路D/A转换,即不要求多个模拟输出通道同时刷新模拟输出时,通常采用单缓冲方式。本实验便采用了此工作方式。 DAC0832的内部包括两个8位寄存器、1个8位转换器和相应辅助电路。8位输入寄存器为第一级锁存器,它的锁存信号为ILE。当ILE为高电平、CS和WR1为低电平时,LE1为1,这种情况下,输入寄存器的输出随输入而变化。此后,WR1由低变高时,ILE变为低电平,此时,数据被锁存到输入寄存器中。8位DAC寄存器为第二级锁存器,它的锁存信号也称为通道控制信号。WR2和XFEB同时为低电平时,LE2为高电平,这时,8位的DAC寄存器的输出随输入而变化,此后,当WR2由低变高时,LE2变为低电平,将输入寄存器的信息锁存到DAC寄存器。正是由于DAC0832内部的这两种锁存器,故它可直接挂接在总线上,在需要进行D/A转换时,CPU通过片选信号和写控制信号将数据写至D/A变换器。 4(2 电路图及说明 4(2(1 电路图 设计的电路图如图 4.1所示 8 123456 DD GND U4C711AEN2RES3AEN16VCCRDY2416RDY1X217X110RESET1215OSCASYNC21PCLKCSYNC814CLKEFI513READYF/CCC8284U12122RESETREADYU21923CLKTEST11534SEL AY0 OUTSSO2142433SEL BY1 OUTINAQS1MN/MX3132530SEL CY2 OUTALEQS0HLDA6122831EN 1Y3 OUTS2IO/MHOLD4112729EN 2AY4 OUTS1DT/RWR/LOC5102632EN 2BY5 OUTGNDS0/DENRD9Y6 OUT7U335Y7 OUTA19/S6IOWDAC08323618A18/S5INTRLS138(16)1723717+12XferWR1A17/S4NMI11838CSWR248A16/S319ILEVCC13399R1 15KR2 15KmsbDI7A15AD7314210DI6A14AD61158311DI5Vref48A13AD5216412DI4A12AD4A1A49513DI3RfbA11AD3A2ALM35853614DI2A10AD26121715GNDDI1Iout2BBA9AD17112816R3 7.5K-12lsbDI0Iout120VccA8AD0U4A1LM35880883U6A2+5V174LS003U5A1237408274LS00 图 4.1 信号发生器电路原理图 AA4(2(2 关于电路图的说明 Title SizeNumberRevision1. 8088CPU与8284的连接: BDate:30-Dec-2004Sheet of 8088CPU由外界的时钟发生器8284提供时钟信号,在时钟控制下,一步步顺序的File:E:\ksq\MyDesign.ddbDrawn By:123456 执行指令。8284是用石英晶体或某一TTL脉冲发生器作为振荡源,除提供频率恒定的时钟信号外,还要对外界输入的“准备就绪”信号RDY和复位信号RES进行同步。外界的RDY输入8284,经时钟的下降沿同步后,输出READY信号作为8088的“准备就绪”信号;同样,外界的复位信号RES输入8284,经整形并由时钟的下降沿同步后,输出RESET信号作为8088的复位信号。本设计中采用晶体振荡器作为振荡源,这时,需将晶体振荡器的两端接到8284的X1和X2上,而F/C 接地。 2(8088CPU与DAC0832的连接: (1)由于8088CPU只有8位数据总线,因此8088CPU每次访问存储器或I,O端口只能读,写一个字节,通过8位的地址,数据复用线AD7-AD0传送,A15-A8不是复 9 用线,始终是地址线,根据前面的说明,DAC0832可直接挂接在总线上,因此应将8088CPU的AD7-AD0与DAC0832的DI7-DI0相连。 (2) 外设端口地址实际上是控制选通某一个外设或接口芯片的地址,一般通过译码电路及逻辑门电路来实现。在具体实现方案中,常见的是全译码和部分译码法,作为译码电路的输入,PC机只使用16根中的低10根地址(A9-A0),全译码方法中A9-A0均参与地址译码,相应的端口地址是唯一的。对接口芯片,地址译码的某一输出端一般直接连到芯片的片选端,以74LS138为译码器的全译码电路,欲使Y0输出低电平,EN 2B 、EN 2A、EN1、C、B、A引脚分别为1、0、0、0、0、0,A9-A0的组合应为1100000000。因而DAC0832的CS端接Y0时,其端口地址被唯一确定为300H。 (3) 8088CPU的PC/XT微机的控制信号AEN,经反相后作为译码电路的一个控制输入信号,这是任何I/O端口地址译码电路必须采用的,所以把AEN接到G1端。 3. DAC0832与运算放大电路的连接: 通过D/A转换芯片输出的是电流,而我们需要的是模拟电压,因此,要把D/A转换芯片输出的电流转换成电压,这就是在0832的输出端接运算放大电路的原因。如图4.1所示,运算放大电路A1的作用是把电流输出转换为电压输出,运算放大电路A2的作用是把运算放大电路A1的单极性输出转变为双极性输出。A2的反相输入端经电阻R1与参考电压Vref相连,Vref经电阻R1向A2提供一个电流I1,运放A1的输出Vout1经电阻R3向A2提供一个电流I2.由于Vout1与Vout2的极性相反,所以I1,I2的方向相反,而运放A2实际上是一个反向加法器,即: Vout=-((R2/R3)*Vout1+(R2/R1)*Vref) 因为R1:R2:R3=2:2:1,则有Vout=-2Vout1-Vref。当Vref=5V时,Vout在-5到5V范围内变化。 第五章 软件设计 5(1 程序的各功能模块流程图及其文字说明 1. 各个子程序的流程图如下 程序中用到的子程序主要有DELAY子程序,CHANGE子程序,AMPLITUDE子程 序,FREQUENCY子程序,其流程图分别如图5.1,5.2,5.3,5.4所示。 10 DELAY子程序CHANGE子程序 设计数初值为3计数器CX等于输入的频率 变换为ASCII码计数器减1 YAX大于0FFH?N计数器等于0,N Y显示溢出信息结果存入DL子程序结束 YN计数器等于0,返回 图 5。1 DELAY子程序流程图 图 5。2 CHANGE子程序流程图AMPLITUDE子程序FREQUENCY子程序 显示信息提示输入显示信息提示输入频率幅值 BX清零BX清零 输入一个字符输入一个字符 YY小于30H?小于30H, 返回N返回N YY大于9,大于9? NN结果存入BX结果存入BX 图 5。4 FREQUENCY子程序流程图图 5。3 AMPLITUDE子程序流程图 11 2. 关于流程图的说明 (1) AMPLITUDE子程序是通过屏幕显示提示信息输入小于四位数的幅值,并把输 入的字符逐个转换为二进制的代码,结果暂存入BX中。该子程序的目的是为了排除 数字以外的字符的干扰,如a,它不是数字,但其ASCII值为97,且在范围内,经过 AMPLITUDE子程序转换后就可知道它不是有效字符。 (2) FREQUENCY子程序是通过屏幕显示提示信息输入频率,其它的功能和 AMPLITUDE子程序相同。 (3) CHANGE子程序是把AMPLITUDE或FREQUENCY子程序转换后的二进制数进一 步转换成十六进制数,当输入值不为0-9的数字时显示出错信息,并且指定输入的数 值以数字9作为结束,转向执行下面的语句。 (4) DELAY子程序是用来控制输出点之间的延时的,因为波形的频率是由改变输 出点之间的延时来实现的,所以DELAY子程序的延时的时间也是随输入的频率而变化 的。 5(2 源程序 DATA SEGMENT TABLE DB 80H,83H,86H,89H,8DH,90H,93H,96H ;选取256个点,定义 DB 99H,9CH,9FH,0A2H,0A5H,0A8H,0ABH,0AEH ;正弦表 DB 0B1H,0B4H,0B7H,0BAH,0BCH,0BFH,0C2H,0C5H DB 0C7H,0CAH,0CCH,0CFH,0D1H,0D4H,0D6H,0D8H DB 0DAH,0DDH,0DFH,0E1H,0E3H,0E5H,0E7H,0E9H DB 0EAH,0ECH,0EEH,0EFH,0F1H,0F2H,0F4H,0F5H DB 0F6H,0F7H,0F8H,0F9H,0FAH,0FBH,0FCH,0FDH DB 0FDH,0FEH,0FFH,0FFH,0FFH,0FFH,0FFH,0FFH DB 0FFH,0FFH,0FFH,0FFH,0FFH,0FFH,0FEH,0FDH DB 0FDH,0FCH,0FBH,0FAH,0F9H,0F8H,0F7H,0F6H DB 0F5H,0F4H,0F2H,0F1H,0EFH,0EEH,0ECH,0EAH DB 0E9H,0E7H,0E5H,0E3H,0E1H,0DEH,0DDH,0DAH DB 0D8H,0D6H,0D4H,0D1H,0CFH,0CCH,0CAH,0C7H 12 DB 0C5H,0C2H,0BFH,0BCH,0BAH,0B7H,0B4H,0B1H DB 0AEH,0ABH,0A8H,0A5H,0A2H,9FH,9CH,99H DB 96H,93H,90H,8DH,89H,86H,83H,80H DB 80H,7CH,79H,78H,72H,6FH,6CH,69H DB 66H,63H,60H,5DH,5AH,57H,55H,51H DB 4EH,4CH,48H,45H,43H,40H,3DH,3AH DB 38H,35H,33H,30H,2EH,2BH,29H,27H DB 25H,22H,20H,1EH,1CH,1AH,18H,16H DB 15H,13H,11H,10H,0EH,0DH,0BH,0AH DB 09H,08H,07H,06H,05H,04H,03H,02H DB 02H,01H,00H,00H,00H,00H,00H,00H DB 00H,00H,00H,00H,00H,00H,01H,02H DB 02H,03H,04H,05H,06H,07H,08H,09H DB 0AH,0BH,0DH,0EH,10H,11H,13H,15H DB 16H,18H,1AH,1CH,1EH,20H,22H,25H DB 27H,29H,2BH,2EH,30H,33H,35H,38H DB 3AH,3DH,40H,43H,45H,48H,4CH,4EH DB 51H,55H,57H,5AH,5DH,60H,63H,66H DB 69H,6CH,6FH,72H,76H,79H,7CH,80H SEN1 DB 'PLEASE ENTER 1 TO FORM SJB',0DH,0AH DB 'PLEASE ENTER 2 TO FORM ZXB',0DH,0AH DB 'PLEASE ENTER 3 TO EXIT',0DH,0AH,'$' SEN2 DB 'YOU DID NOT ENTER THE RIGHT KEY,ENTER AGAIN!',0DH,0AH,'$' A DB 'INPUT AMPLITUDE VALUE :',0DH,0AH,'$' RESULT1 DB 4 DUP(?) F DB 'INPUT FREQUENCY VALU:',0DH,0AH,'$' RESULT2 DB 4 DUP(?) WRONG DB 'SORRY! THIS VALUE IS OUT OF RANGE!',0DH,0AH,'$' DATA ENDS 13 STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA AMPLITUDE PROC NEAR ;转化为机器识别码 LEA DX,A ;显示提示信息输入幅值 MOV AH,09H INT 21H MOV CX,3 MOV BX,0 ;BX清零 KEYIN:MOV AH,01H ;输入十进制数 INT 21H SUB AL,30H ;转化为二进制数 JL EXIT ;若小于零,则退出 CMP AL,09H ;是否大于9, JG EXIT ;是,退出 ADD BX,AX ;AX与BX相加,结果存入BX LOOP KEYIN ;获得下一个十进制数 RET EXIT: RET ;返回 AMPLITUDE ENDP CHANGE PROC NEAR MOV CH,3 ;设十进制位数为计数初值 ROTATE:MOV CL,4 ;设位循环制 ROL BX,CL ;左右字节交换 14 MOV AL,BL AND AL,0FH ;屏蔽高4位 ADD AL,30H ;转变成ASCII码 CMP DL,3AH ; 〉9, JG JOP ;是,转JOP CMP DL,30H ;〈 0, JL JOP ;是,转JOP MOV DL,AL ; 将结果存入DL DEC CH JNZ ROTATE ;计数不为零则循环 MOV AH,08H INT 21H CMP AL,'9' JE T T: RET ;返回 JOP : CALL NEWLINE LEA DX,WRONG ;显示信息提示溢出 MOV AH,09H INT 21H JMP QIT CHANGE ENDP FREQUENCY PROC NEAR LEA DX,F ;显示信息提示输入频率 MOV AH,09H INT 21H MOV CX,3 MOV BX,0 ;BX清零 REPEAT:MOV AH,01H 15 INT 21H SUB AL,30H JL EXIT1 CMP AL,9 JG EXIT1 ADD BX,AX LOOP REPEAT EXIT1: RET FREQUENCY ENDP NEWLINE PROC NEAR ;回车换行 PUSH AX ;AX入栈 PUSH DX MOV DL,0DH ;显示回车符 MOV AH,2 INT 21H MOV DL,0AH ;换行 MOV AH,2 INT 21H POP DX ;DX出栈 POP AX RET NEWLINE ENDP DELAY PROC NEAR ;延时子程序 MOV CL,[RESULT2] ;设输入的频率为计数初值 WAT: LOOP WAT ;不为零,循环 RET DELAY ENDP 16 START:MOV AX,DATA ;初始化DS MOV DS,AX MOV AX,STACK ;初始化SS MOV SS,AX MOV AX,TOP ;初始化SP MOV SP,AX BG:LEA DX,SEN1 ;显示基本信息 MOV AH,09H INT 21H MOV AH,01H ;等待有键按下 INT 21H CMP AL,'1' ;是否为1, JE SJB ;是,转入产生三角波 CMP AL,'2' ;是否为2, JE ZXB ;是,转入产生正弦波 CMP AL,'3' ;是否为3, JNE WX ;否,转入WX JMP QIT ;无条件转向QIT WX:LEA DX,SEN2 ;显示无效信息 MOV AH,09H INT 21H JMP BG ;转向BG SJB: ;产生三角波 CALL AMPLITUDE ;调用AMPLITUDE子程序 ;输入幅值 17 CALL CHANGE ;调用CHANGE子程序转化 ;为十六进制 MOV [RESULT1],DL ;将幅值存入[RESULT1]单元 CALL NEWLINE ;回车换行 CALL FREQUENCY ;调用FREQUENCY子程序 ;输入频率 CALL CHANGE MOV [RESULT2],DL ;将频率值存入[RESULT2]单元 TR0:MOV DX,300H ;DX指端口地址 MOV AL,0 ;AL赋初值零 TR1:OUT DX,AL ;将AL值从端口输出 INC DX ;端口值增加1 OUT DX,AL ;将AL的值再一次输出 DEC DX CALL DELAY ;延时 ADD AL,01H ;AL加1 CMP AL,[RESULT1] ;AL是否等于指定的幅值, JNE TR1 ;否,循环 TR2:OUT DX,AL INC DX OUT DX,AL DEC DX CALL DELAY SUB AL,01H ;AL减1 CMP AL,00H ;AL是否等于0, JNE TR2 ;否,循环 LOOP TR1 ;循环产生三角波 PUSH AX PUSH DX 18 MOV DL,0FFH ;等待有键按下 MOV AH,06H INT 21H JNZ BG1 ;有,转BG1 POP DX POP AX JMP TR0 BG1:JMP BG ZXB: ;产生正弦波 CALL AMPLITUDE CALL CHANGE MOV [RESULT1],DL CALL NEWLINE CALL FREQUENCY CALL CHANGE MOV [RESULT2],DL ZX0:MOV DX,300H MOV CX,0FFH ;设计数初值 MOV BX,OFFSET TABLE ;BX指表首址 ZX1:MOV AL,0 ;AL清零 XLAT ;查表转换 MOV BYTE PTR[SI],AL ;AL的值暂存SI字节单元 MOV AL,[RESULT1] MUL SI OUT DX,AL INC DX OUT DX,AL DEC DX 19 CALL DELAY INC BX JNZ ZX1 ;计数器不为零则循环 PUSH AX PUSH DX MOV DL,0FFH MOV AH,06H INT 21H JNZ BG2 POP DX POP AX JMP ZX0 BG2:JMP BG QIT:MOV AX,4C00H INT 21H CODE ENDS END START 第六章 软件系统的使用操作说明 在硬件条件满足的条件下,源程序经汇编,连接,运行后,屏幕上首先会显示如 下信息: PLEASE ENTER 1 TO FORM SJB PLEASE ENTER 2 TO FORM ZXB PLEASE ENTER 3 TO EXIT! 1. 当键入1后,屏幕上又将出现以下提示信息: INPUT AMPLITUDE VALUE : 若输入的数大于三位且不是以9结束,则出现提示: 20 SORRY!THIS VALUE IS OUT OF RANGE! 若输入的数值的第四位是9时,即代表确认此数值,则出现提示: INPUT FREQUENCY VALUE: 再输入一个数,若输入的数大于三位数且第四位不是数字9,又将出现提示: SORRY!THIS VALUE IS OUT OF RANGE! 若再输入的数仍在范围内,按9键确认后,则可以在示波器上观察到连续的三角波形,按键3则退出。 2. 当键入2后,屏幕上又将出现以下提示信息: INPUT AMPLITUDE VALUE : 若输入的数大于三位且不是以9结束,则出现提示: SORRY!THIS VALUE IS OUT OF RANGE! 若输入的数值的第四位是9时,即代表确认此数值,则出现提示: INPUT FREQUENCY VALUE: 再输入一个数,若输入的数大于三位数且第四位不是数字9,又将出现提示: SORRY!THIS VALUE IS OUT OF RANGE! 若再输入的数仍在范围内,按9键确认后,则可以在示波器上观察到连续的正弦波形,按键3则退出。 3. 按键3退出。 4(注意:输入数字时,如果是小于十的数字,如:3,则应输入003,然后按9键确认;如果是大于10小于100的数,如:22,则应输入022,然后按9键确认;如果是大于100小于1000的数,如:123,则应输入123,然后按9键确认,如果此时不是按9键,而是输入其它数字,如5,则表示输入的数为1235,这样便出现出错信息,而后退出程序。 第七章 收获、体会 7(1 课程设计中遇到的问题 由于以前对信号发生器了解太少,刚拿到题目不知从何下手,经过去图馆,上网查资料才懂得信号发生器主要就是数模转换的问题。 21 在设计硬件时,由于开始不熟悉Protel中8088CPU和DAC0832的引脚排布,导致了所设计的电路图过于复杂,线路交叉混乱,在熟悉了Protel的使用和芯片的引脚特性和排布后,经过对初稿的优化设计,使电路图得到了改善。 在软件设计时,用查表法产生正弦波看似简单,但要先造一张正弦表,去要花大量的功夫,一不小心算错的某几个数据都可能使全盘皆错,在同学的帮助下,问题才得以解决。 7(2 课程设计的收获、体会 通过本次课程设计,了解了Intel系列微型机的基本组成以及计算机中数和字符的表示方法;熟练掌握Intel8086指令系统及寻址方式,伪指令及汇编语言程序格式;掌握基本程序设计方法、I/O程序设计方法以及DOS调用;掌握宏汇编的基本概念和方法;了解汇编语言程序与高级语言程序的连接方法,熟悉上机操作和程序调试技术,初步具备软件设计的能力;并很好的了解了D/A转换器(DAC0832)的功能,以及用汇编语言进行程序设计的基本思想和方法。但在将计算机理论知识转化为计算机应用知识的同时,也发现了许多薄弱环节,比如说用汇编语言编程是我的弱项,对计算机领域各门学科的交叉应用还有待加强与提高。 参考文献 [1]潘名莲.微计算机原理.北京:电子工业出版社,2004.7 [2]李志民.计算机原理与汇编语言程序设计.长沙:中南大学出版社,2001.8 [3]许骏.微型计算机系统原理及应用.广州:华南理工大学出版社,1996.5 .微型计算机原理与应用基础教程.北京:机械工业出版社,1999.5 [4]宫云战 [5]廖炉霖.跟我学Protel 99.北京:冶金工业出版社,2000.1 [6]黄南志.Protel for Windows-Schematic使用技巧.科学出版社,1997 [7]杨恢先.单片机原理及应用.长沙:国防科技大学出版社,2002.7 [8]荀殿栋.微处理器应用技术与实例.北京:电子工业出版社,1997.11 [9]刘乐善.微型计算机接口技术.成都:电子科技大学出版社,1994.6 [10]朱仲英.微型计算机原理与应用.上海:上海交通大学出版社,1984.4 [11]张怀莲.宏汇编语言程序设计.北京:电子工业出版社,1987.1 22
本文档为【微机原理课程设计_信号发生器的设计】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_977556
暂无简介~
格式:doc
大小:49KB
软件:Word
页数:24
分类:生活休闲
上传时间:2018-09-03
浏览量:16