接口技术课程设计

更新时间:2024-01-24 13:58:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

接口技术课程设计论文

(2009~2010学年第 2 学期)

论文题目:函数发生器1的设计

姓 名 王迎迎 专业年级 学 号 学 院 指导教师 设计日期

07级计算机科学与技术(2)班 20507206 职业教育学院 蒲攀

2010年5月28日

目 录

一、引言................................................ - 0 -

二、设计目的与意义 ...................................... - 0 -

三、设计环境 ............................................ - 0 -

四、设计要求 ............................................ - 0 -

五、总体设计 ............................................ - 1 -

六、背景知识 ............................................ - 1 -

6.1函数发生器 ..................................................... - 1 -

6.2 D/A转换器DAC0832简介: ....................................... - 1 -

6.2.1 DAC0832的引脚及功能: ............................................ - 1 - 6.2.2 DAC0832三种数据输入方式: ................................. - 4 -

6.3 8279键盘/LED显示器简介: ................................... - 4 -

6.3.1 8279的引脚及功能: .............................................. - 4 -

6.3.2 8279的编程命令 .................................................. - 5 -

七、硬件连线 ............................................ - 7 -

八、软件编程实现及流程图 ................................. - 7 -

九、设计中出现的问题及解决方法 ........................... - 8 -

I

十、总结与体会 .......................................... - 8 -

致 谢 ................................................. - 9 -

参考文献............................................... - 10 -

附 录 ................................................ - 11 -

II

函数发生器1的设计

一、引言

当今世界在以电子信息技术为前提下推动了社会跨跃式的进步,科学技术的飞速发

展日新月异带动了各国生产力的大规模提高。由此可见科技已成为各国竞争的核心,尤其是电子信息技术更显得尤为重要,在国民生产各部门电子信息技术得到了广泛的应用。

漫步在繁华的现代化的大都市的大街上,随时都可以看到街上有很多可以用卡取钱的机器(ATM自动柜机),十字路口的交通灯。我们的手机,我们家里数码电视机、数码音响、遥控器、空调、智能玩具..... 这些“高科技”看上去是如此的神秘,它到底是怎样构成的,它是通过什么样的程序和什么样的方式来完成这一系列指令的呢?让我们取钱更方便、避免城市的交通混乱和交通阻塞??给我们生活带来了处处方便。其实这也是用单片机来控制的,单片机在我们生活中触手可及,它是如此地贴近我们的生活,单片机给我们的生活带来的有如此多的便利。

目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。科技越发达,智能化的东西就越多,使用的单片机就越多。看来学单片机是社会发展的需求。

据统计,我国的单片机年容量已达1-3亿片,且每年以大约16%的速度增长,但相对于世界市场我国的占有率还不到1%。特别是沿海地区的玩具厂等生产产品多数用到单片,并不断地辐射向内地, 这说明单片机应用在我国才刚刚起步,有着广阔的前景。培养单片机应用人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。

二、设计目的与意义

1、通过本次实验了解STAR ES598PCI的内部结构与基本实现方法 2、掌握8位D/A转换器DAC0832的工作原理及编程方法,了解0832与8088的接口

逻辑

3、掌握8279键盘/LED控制器的使用

三、设计环境

STAR ES598PCI试验仪一套、PC机一台、示波器一台

四、设计要求

利用STAR ES598PCI 试验仪设计一个具有多种波行输出的函数信号发生器,能分

—3—

引言

别产生三角波、阶梯波(每阶梯1V)、正弦波和方波,通过不同按键选择输出波形并在数码管上显示按键

五、总体设计

硬件设计与软件设计两方面。硬件是实现连线,软件编程实现通过不同按键选择输出波形并在数码管上显示按键:“0”键,三角波输出;“1”键,阶梯波输出;“2”键,正弦波输出(幅度频率可调,3个可选频率,3个可选幅度);“4”键,方波输出。

六、背景知识

6.1函数发生器

函数发生器是一种多波形的信号源。它可以产生正弦波、方波、三角波、锯齿

波,甚至任意波形。有的函数发生器还具有调制的功能,可以进行调幅、调频、调相、脉宽调制和VCO控制。 6.2 D/A转换器DAC0832简介:

DAC0832当今世界在以电子信是8位分辨率的D/A转换集成芯片,与微处理器完全兼容,这个系列的芯片 以其价格低廉、接口简单、转换控制容易等优点,在单片机应用系统中得到了广泛的应用。这类D/A转换器由8位输入锁存器,8位DAC寄存器,8位DA转换电路及转换控制电路构成。

6.2.1 DAC0832的引脚及功能:

DAC0832芯片是一种具有两个输入数据寄存器的8位DAC,它能直接与单片机接口,其主要特性参数如下: 分辨率为8位; 电流稳定时间1us;

可单缓冲、双缓冲或直接数字输入; 只需在满量程和下调整其线性度; 单一电源供电(+5V~+15V)

- 1 -

背景知识

低功耗,200mW。

为便于DAC0832的使用,特将其应用特性总结如下:

DAC0832是微处理器兼容型D/A转换器,可以充分利用微处理器的控制能力实现对D/A转换的控制。这种芯片有许多控制引脚,可以和微处理器控制线相连,接受微处理器的控制,如ILE、/CS、/WR1、/WR2、/XFER端。

有两级锁存控制功能,能够实现多通道D/A的同步转换输出。 DAC0832内部有参考电压源;无须外接参考电压源。

DAC0832为电流输入型D/A转换器,要获得模拟电压输出时,需要外加转换电路。 DAC0832的引脚图及逻辑结构如下图:

图 1 DAC0832结构框图及引脚排列 DAC0832各引脚的功能如下:

—3—

背景知识

DI0~DI7: 数据输入线。

ILE : 数据允许锁存信号,高电平有效;

/CS: 输入寄存器选择信号,低电平有效。/WR1为输入寄存器的写选通信号。输入寄存器的锁存信号/LE1由ILE 、/CS、/WR1的逻辑组合产生。当ILE 为高电平、/CS为低电平、/WR1输入负脉冲时,在/LE1产生正脉冲;/LE1为高电平,输入锁存器的状态随数据输入线的状态变化,/LE1的负跳变将数据线上的信息锁入输入寄存器。 /XFER: 数据传送信号,低电平有效。/WR2为DAC寄存器的写选通信号。DAC寄存器的锁存信号/LE2,由/XEFR、/WR2的逻辑组合产生。当/XFER为低电平,/WR2输入负脉冲,则在/LE2产生正脉冲;/LE2为高电平是时,DAC寄存器的输出和输入寄存器的状态一致,/LE2负跳变,输入寄存器的内容打入DAC寄存器。 VREF : 基准电源输入引脚 。

Rfb : 反馈信号输入引脚,反馈电阻在芯片内部。

IOUT1、IOUT2 : 电流输出引脚。电流IOUT1、IOUT2 的和为常数,IOUT1、IOUT2 随DAC寄存器的内容线性变化。

VCC: 电源输入引脚。 AGND: 模拟信号地 DGND: 数字地。

- 3 -

函数发生器1的设计 6.2.2 DAC0832三种数据输入方式: (1)双缓冲方式:即数据经过双重缓冲后再送入D/A转换电路,执行两次写操作才能完成一次D/A转换。这种方式可在D/A转换的同时,进行下一个数据的输入,可提高转换速率。更为重要的是,这种方式特别适用于要求同时输出多个模拟量的场合。此时,要用多片DAC0832组成模拟输出系统,每片对应一个模拟量。 (2)单缓冲方式:不需要多个模拟量同时输出时,可采用此种方式。此时两个寄存器之一处于直通状态,输入数据只经过一级缓冲送入D/A转换电路。这种方式只需执行一次写操作,即可完成D/A转换。 (3)直通方式:此时两个寄存器均处于直通状态,因此要将、、和端都接数字地,ILE接高电平,使LE1、LE2均为高电平,致使两个锁存寄存器同时处于放行直通状态,数据直接送入D/A转换电路进行D/A转换。这种方式可用于一些不采用微机的控制系统中或其他不须0832缓冲数据的情况。 6.3 8279键盘/LED显示器简介: 6.3.1 8279的引脚及功能: DS2912SEGA11SEGBSEGC74abcdefgdpagbcdpGND4GND3feagbcdpGND2feagbcdpGND1feagbcdpLG4041AHSEGA11SEGBSEGC74DS30abcdefgdpagbcdpGND4GND3feagbcdpGND2feagbcdpfeLG4041AHagbcdpGND1B3SEGD24SEGE15SEGF106SEGG57SEGH38ddddSEGD2SEGE1SEGF10SEGG5SEGH3ddddJP421212JP41123456781234567812345678JP47JP92986986C11213141516171811222324252627282DA 图 2 8279键盘&LED结构框图及引脚排列 A: 按键的列线 B: - 4 - 数码管段码

背景知识

C: 数码管选择脚

D: 按键的行线 采用单±5V电源供电,40脚封装。

DB0~DB7:双向数据总线,用来传送8279与CPU之间的数据和命令。 CLK:时钟输入线,用以产生内部定时的时钟脉冲。

RESET:复位输入线,8279复位后被置为字符显示左端输入,二键闭锁的触点回弹型式,程序时钟前置分频器被置为31,RESET信号为高电平有效。

CS:片选输入线,低电平有效,单片机在CS端为低时可以对8279读/写操作。 A0:缓冲器低位地址,当A0为高电平时,表示数据总线上为命令或状态, 当为低电平时,表示数据总线上为命令或状态,当为低电平时,表示数据总线上为数据。 RD:读信号输入线,低电平有效,将缓冲器读出,数据送往外部总线。

WR:写信号输入线,低电平有效,将缓立器读出,将数据从外部数据总线写入8279的缓冲器。

可按其功能分为:键盘功能块;显示功能块;控制功能块;与CPU接口功能块控制功能块包括控制和定时寄存器,定时和控制,扫描计数器三部分,它主要用来控制键盘和显示功能块工作.

控制和定时寄存器:用于存贮来自CPU的编程命令,CPU对8279编程以确定键盘与显示器工作方式和其它工作条件时,先把命令控制数据放到数据总线上,然后使A0=1,WR=0CS=0,并在WR上升沿把命令键存在控制和定时寄存器中,并经译码,建立适当的功能.

定时和控制:它含基本的定时计数器,第一个计数器是一个分频系数为2-31的前置定时器,分频系数可由程序预置,使内部频率为100KHz,从而能给出5. 1ms键盘扫描时间和10.3ms反跳时间,其它计数器将此基本频率分频后,提供适当的按键扫描.行扫描.键盘阵列扫描.以及显示器扫描次数.

扫描计数器:扫描计数器有两种工作方式,在编码工作方式时,计数器提供一种二进制计数,通过管脚SL0-SL3输出后经外部译码才能提供给键盘和显示器的扫描作用,在译码工作方式时,扫描计数器对最低二位进行译码,SL0-SL3输出4选1的译码信号,作为显示器和键盘的译码扫描.。

6.3.2 8279的编程命令

8279可适应各种键盘和显示器的不同工作方式,这是由于8279内的各功能块的工作是可程控的,用户可根据自己的要求,利用向8279写命令字的方法对8279的工作方式等进行编程,只要同时使CS=0 WR=0A0=1,则可向8279写命令字,并在wR的上升沿把命令打入8279.对CPU而言,8279只有两个口地址,一个用于读写命令和状态(CS=0,A0=1),一个用于读写数据(CS=0,A0=0)但用于编程命令字却有多种,在8279中用于区别各种不同命令字的方法是命令字代码的高3位(D7,D6,D5,)编码而低5位是命令字的真正内容 a.键盘/显示器方式设置 最高位 最低位

命令代码 0 0 0 D D K K K

其中DD为显示方式,KKK为键盘方式 DD

- 5 -

函数发生器1的设计

00 8个8位字符显示--左端传入 01 16个8位字符显示--左端送入 10 8个8位字符显示--右端送入 11 16个8位字符显示--右端送入

所谓左端送入是显示器根据用户送的先后,从左端一位开始,向右逐位排列,到最右端一位之后,下一位再从最左端显示,在这种显示方式中,显示器的每个显示管和8279中的显示RAM单元一一对应,RAM中的O地址对应最左面的显示字符,而15号单元对应最右端的显示字符而右端送入方式是电子计算器中常用的显示方式,第一个送入的数在最右端的显示字符上,而以后每送 入一个新数,显示先左移一位然后把送入的数仍放在最右端显示字符上.

K K K

0 0 0 编码扫描键盘--2键连锁 0 0 1 译码扫描键盘--2键连锁 0 1 0 编码扫描键盘--N键巡回 0 1 1 译码扫描键盘--N键巡回 1 0 0 编码扫描传感器阵列 1 0 1 译码扫描传感器阵列 1 1 0 选通输入,编码显示扫描 1 1 1 选通输入,译码显示扫描

其中2键连锁和N键巡回是8279对键盘中被按下键的两种处理方式,编码扫描和译码扫描是 SL0-SL3 对链盘和显示器的两种扫描形式. b.程序时钟

命令代码 0 0 1 P P P P P

此命令确定定时和控制中的前置定标器的分频系数,代码PPPPP可形成2-31的数,前置定标器可对外部时钟分频,以得到内部基频,选基频为100KHZ,可得到前面规定的扫描和反跳时间,则分频系数为;外部时钟100KHZ复位脉冲过后若无代码送入则自动为31. c.读FIF0/传感器RAM

命令代码:0 1 0 AI X A A A X=任意

此命令用于确定CPU读操作的对象是8279中的FIF0/传感器 RAM,并确定8个 RAM 字节中哪一个被读,其中 AAA表示CPU要读的行,AI为自动加1特征位,在键盘扫描方式中这两者互不相干,对随后的每次读取8279都按照数据第一次进入的FIF0的同一顺序自动送出数据,所有随后发生的读,都是读自FIFO,直到写入新命令为止.

在传感器阵列方式中,AAA选择传感器RAM 8行中的一行若AI=1,则下一次读取便读自传感器RAM中的下一行. d.读显示器RAM

命令代码:0 1 1 AI A A A A

CPU对8279写此命令,则确定了 CPU 以显示器 RAM为数据源进行读操作,其中AAAA为显示器RAM的地址,AI 为自动加1特征位,若AI=1,则每读一行RAM之后,行地址自动加1

e.写显示器RAM

命令代码: 1 0 0 AI A A A A

CPU向8279写此命令,规定了下一步要对8279的显示RAM进行写,寻址方式和自动加1功能均与读显示器RAM相同 f.显示器写入禁止/空格

- 6 -

背景知识

命令代码: 1 0 1 X IW IW BL BL X=任意 A B A B

此命令用于屏蔽A或B端口输出及使显示器显示空格,如果显示器用作双排4位显示,则必须把其中一个4位屏蔽掉这样CPU送入显示器的信息就不会影响另一半,IW为屏蔽特征位,若对某一端口设置IW=1,则该端口就被屏蔽,有必要注意的是:B0与D0对应,BL为显示空格标志位,若某一端口的BL置1,则此端口显示空格.当要使一个单8位输出格式的显示器空格时,则必须使两个BL标志全都置位,以使显示完全空格.

七、硬件连线 1234 JP93ADU40SN74LS240PVCC2011924681113151710OE1OE2A1A2A3A4A5A6A7A8GNDY1Y2Y3Y4Y5Y6Y7Y818161412975312345678JP77VCCU39U37efg272625OUTA0OUTA1OUTA2OUTA3DB0DB1DB2DB3DB4DB5DB6DB7IRQCSRDWRA0CLKRESET8279RL0RL1RL2RL3RL4RL5RL6RL7SHIFTCNTL/SOUTB0OUTB1OUTB2OUTB3BDSL0SL1SL2SL331302928233233343538391256783637JP62119abcdefgdp24681113151710abcd123VCC645ABCOE1OE2AOE2BVCCY0Y1Y2Y3Y4Y5Y6GNDSN74LS138NY7VCC1615141312111097dp24D0D1D2D3D4D5D6D7BINT121314151617181948279(0F000H)CS1A0A0CLKRSTRDCSWR221011213912345678AC812345678U40SN74LS240POE1OE2A1A2A3A4A5A6A7A8GNDY1Y2Y3Y4Y5Y6Y7Y8VCCVCC20BA181614129753VCC1JP782345678B(B2)2MR12398765432110KC C图 3基本原理图 连线说明: DE5区:CS、A0 E5区:CLK E5区:A、B、C、D F3区:CS 示波器的探头接F3区的OUT。 —— —— —— —— A3区:CS5、A0 B2区:2M G5区:A、B、C、D A3区:CS1 TitleSizeADate:File:2006-4-11Sheet1.SchDocSheet of Drawn By:4NumberRevisionD八、软件编程实现及流程图 123系统软件由主程序和产生波形的子程序组成,软件设计主要是产生各种波形的子程序的编程,通过编程可得到各种波形。正弦波频率的改变可采用插入延时子程序的方法来实现。正弦波幅度的改变通过对整个波形数据的比例变换来实现。主程序和几种常用波形子程序的流程图见附录。

- 7 -

设计中出现的问题与解决方法

九、设计中出现的问题及解决方法

在此次课程设计中遇到了不少的问题,其中最显著的是怎样实现波形的中断与调幅调频,位置放不对完全没有头绪,最后在老师的指导与同学的帮助下顺利的解决了这些问题。

十、总结与体会

为期一个星期的课程设计已经结束,在这一星期的学习、设计过程中我感触颇深。使我对抽象的理论有了具体的认识。通过这次课程设计,我掌握了常用元件的识别和测试;熟悉了示波器的使用;了解了电路的连接、硬件编程的方法;以及如何提高电路的性能等等。

其次,这次课程设计提高了我的团队合作水平,使我们配合更加默契,体会了在接好电路后测试出波形的那种喜悦。

在实验过程中,我们遇到了不少的问题。比如:波形失真,甚至不出波形这样的问题。在老师和同学的帮助下,把问题一一解决,那种心情别提有多高兴啊。实验中暴露出我们在理论学习中所存在的问题,有些理论知识还处于懵懂状态,老师们不厌其烦地为我们调整波形,讲解知识点,实在令我受益匪浅。

还有值得我们自豪的一点就是我们的线路连得横竖分明,简直就是艺术啊,最后用一句话来结束吧。

“实践是检验真理的唯一标准”。

—9—

参考文献

致 谢

在这次课程设计的整个过程中,我得到了许多人的帮助。

首先我要感谢我的老师在课程设计上给予我的指导、提供给我的支持和帮助,这是我能顺利完成这次报告的主要原因,更重要的是老师帮我解决了许多技术上的难题,让我能把系统做得更加完善。在此期间,我不仅学到了许多新的知识,而且也开阔了视野,提高了自己的设计能力。

其次,我要感谢帮助过我的同学,他们也为我解决了不少我不太明白的设计上的难题。同时也感谢学院为我提供良好的做课程设计的环境。

最后再一次感谢所有在设计中曾经帮助过我的良师益友和同学

- 9 -

函数发生器1的设计

参考文献

1、《微机原理与接口》 主编:耿恒山 中国水利水电出版社

2、《微机原理与接口技术课程设计》 主编:宋杰、汪志宏、江敏 机械工业出版社 3、《IBM-PC》汇编语言程序设计 主编:沈美明 清华大学出版社

- 10 -

参考文献

附 录

流程图部分:

图 4 主流程图

图 5 锯齿波发生子程序流程图 图 6 三角波发生子程序流程

- 11 -

附录

图 7 方波发生子程序流程图 图 8 正弦波发生子程序流程图

程序如下:

主程序

.MODEL TINY

CMD_8279 EQU 0BF01H ;8279命令字、状态字地址 DATA_8279 EQU 0BF00H ;8279读写数据口的地址

ADDR_0832 EQU 0FF00H .STACK 100 .DATA

KEYCOUNT DB ?

LED_TAB DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H DB 080H,90H,88H,83H,0C6H,0A1H,86H,8EH

TAB_1 DB 7FH,8BH,96H,0A1H,0ABH,0B6H,0C0H,0C9H,0D2H

DB 0DAH,0E2H,0E8H,0EEH,0F4H,0F8H,0FBH,0FEH,0FFH,0FFH DB 0FFH,0FEH,0FBH,0F8H,0F4H,0EEH,0E8H,0E2H,0DAH,0D2H DB 0C9H,0C0H,0B6H,0ABH,0A1H,096H,08BH,07FH

DB 74H,69H,5EH,54H,49H,40H,36H,2DH,25H,1DH,17H,11H,0BH,7,4,2,0,0 DB 0,2,4,7,0BH,11H,17H,1DH,25H,2DH,36H,40H,49H,54H,5EH,69H,74H .CODE

—13—

附录

START: MOV AX,@DATA MOV DS,AX NOP

CALL INIT8279 ;初始化子程序 MOV KEYCOUNT,0

START1: CALL SCAN_KEY ;键扫描 JNC START3 PROC XCHG INC CMP JNZ MOV CALL JMP START2: XCHG CALL LEA XLAT

CALL CALL JMP START_EXIT: JMP START3 ENDP

;8279初始化子程序

INIT8279 PROC MOV MOV OUT MOV OUT CALL START1 ;没有按键 NEAR

AL,KEYCOUNT AL AL,9 START2

KEYCOUNT,0

INIT8279_1 ;8个数码块全有字符显示后,再按键,清除显示 START1

AL,KEYCOUNT

KEY_NUM ;键值转换为键号 BX,LED_TAB ;字型码表 WRITE_DATA KEY_C START1 $ NEAR

DX,CMD_8279 ;CMD_8279为写命令地址、读状地址 AL,34H ;可编程时钟设置,设置分频系数(20分频) DX,AL

AL,0 ;8*8字符显示,左边输入,外部译码键扫描方式 DX,AL

INIT8279_1

- 13 -

函数发生器1的设计

RET INIT8279 ENDP

INIT8279_1 PROC NEAR

CALL CLEAR ;清显示

MOV AL,90H ;从第一个数码管开始移位显示 OUT RET INIT8279_1 ENDP ;清除子程序

CLEAR PROC MOV MOV OUT WAIT1: IN TEST JNZ RET CLEAR ENDP

;判断有无键按下

SCAN_KEY PROC MOV IN READ_FIFO: AND JZ READ: MOV OUT MOV IN STC SCAN_KEY1: RET

NO_KEY: CLC DX,AL NEAR

DX,CMD_8279

AL,0DEH ; 清除命令 DX,AL AL,DX AL,80H

WAIT1 ; 显示RAM清除完毕吗? NEAR

DX,CMD_8279 AL,DX ;读状态 AL,7

NO_KEY ;是否有键按下 AL,40H

DX,AL ;读FIFO RAM DX,DATA_8279 AL,DX

;有键 ;无键按下,清CY

- 14 -

附录

JMP SCAN_KEY1 SCAN_KEY ENDP ;判断输出波形时是否有键下

SCAN_KEY2 PROC NEAR

MOV DX,CMD_8279 IN AL,DX ;读状态 READ_FIFO1: AND AL,7

JZ NO_KEY1 ;是否有键按下 READ1: MOV AL,40H

OUT DX,AL ;读FIFO RAM MOV DX,DATA_8279 IN AL,DX

STC ;有键 CALL START3

NO_KEY1: CLC ;无键按下,清CY RET SCAN_KEY2 ENDP

KEY_NUM PROC NEAR AND AL,3FH RET

KEY_NUM ENDP

;LED显示

WRITE_DATA PROC NEAR

MOV DX,DATA_8279 OUT DX,AL RET

WRITE_DATA ENDP

;按键选择波形

KEY_C PROC NEAR

CMP AL,0C0H ;0号键,三角波输出 JNZ A

JZ SANJIAO

- 15 -

函数发生器1的设计

A: CMP AL,0F9H ;1号键,阶梯波输出 JNZ B JZ A1

A1: CALL JIETIBO

B: CMP AL,0A4H ;2号键,正弦波输出 JNZ C

JZ C: CMP JNZ JZ D: CMP JNZ JZ E1: CALL E: CMP JNZ JZ N: CALL EE: CMP JNZ JZ N1: CALL EF: CMP JNZ JZ N2: CALL ED: CMP JNZ JZ N3: CALL KEY_C1: RET KEY_C ENDP

;方波子程序

FANGBO PROC ZHENGXIAN

AL,0B0H ;3号键,锯齿波输出 D JUCHI

AL,99H ;4号键,方波输出 E E1

FANGBO

AL,92H ;5号键,正弦波频率1 EE N

ZHENGPIN2

AL,82H ;6号键,正弦波频率2 EF N1

ZHENGPIN3

AL,0F8H ;7号键,正弦波幅度1 ED N2

ZHENFU1

AL,080H ;8号键,正弦波幅度2 KEY_C1 N3

ZHENFU2 NEAR

- 16 -

附录

FG: MOV DX,ADDR_0832 MOV AL,00H OUT DX,AL CALL DELAY MOV AL,0FFH OUT DX,AL CALL DELAY

CALL SCAN_KEY2 JMP FG RET FANGBO ENDP ;三角波子程序

SANJIAO PROC NEAR

SANJIAO1: MOV DX,ADDR_0832 MOV AL,00H ;正向初值 Z: OUT DX,AL INC AL JNZ Z

MOV AL,0FFH ;负向初值 F: OUT DX,AL DEC AL JNZ F

CALL SCAN_KEY2 JMP SANJIAO1 RET SANJIAO ENDP

;锯齿波子程序

JUCHI PROC NEAR

JJ: MOV DX,ADDR_0832 MOV AL,00H J: OUT DX,AL INC AL

CMP AL,0FFH JNZ J

CALL SCAN_KEY2 JMP JJ RET

JUCHI ENDP

- 17 -

;0832寄存器地址 函数发生器1的设计

;正弦波子程序

ZHENGXIAN PROC NEAR MOV AX,@DATA MOV DS,AX NOP

START8: MOV LEA MOV START9: LODSB

OUT CALL LOOP CALL JMP ZHENGXIAN ENDP

;正弦波频率1子程序

ZHENGPIN2 PROC MOV MOV NOP

START82: MOV LEA MOV START92: LODSB

OUT CALL CALL ;CALL LOOP MOV C2: NOP

LOOP CALL JMP ZHENGPIN2 ENDP ;正弦频率2子程序

ZHENGPIN3 PROC MOV DX,ADDR_0832 SI,TAB_1 CX,72 DX,AL DELAY1 START9 SCAN_KEY2 START8 NEAR AX,@DATA DS,AX DX,ADDR_0832 SI,TAB_1 CX,72 DX,AL DELAY1 DELAY1 DELAY1 START92 CX,10 C2

SCAN_KEY2 START82 NEAR AX,@DATA

- 18 -

附录

MOV DS,AX NOP

START83: MOV DX,ADDR_0832 LEA SI,TAB_1 MOV CX,72 START93: LODSB

OUT DX,AL CALL DELAY1 CALL CALL CALL LOOP MOV C3: NOP

LOOP CALL JMP ZHENGPIN3 ENDP

;正弦波幅度1子程序

ZHENFU1 PROC MOV MOV NOP

START81: MOV LEA MOV START91: LODSB

SHR OUT CALL LOOP CALL JMP ZHENFU1 ENDP

;正弦波幅度2子程序

ZHENFU2 PROC MOV MOV NOP

START811: MOV DELAY1 DELAY1 DELAY1 START93 CX,10 C3

SCAN_KEY2 START83 NEAR AX,@DATA DS,AX DX,ADDR_0832 SI,TAB_1 CX,72 AL,1 DX,AL DELAY1 START91 SCAN_KEY2 START81 NEAR AX,@DATA DS,AX DX,ADDR_0832

- 19 -

本文来源:https://www.bwwdw.com/article/rauo.html

Top