函数信号发生器设计.docx
《函数信号发生器设计.docx》由会员分享,可在线阅读,更多相关《函数信号发生器设计.docx(14页珍藏版)》请在冰豆网上搜索。
函数信号发生器设计
微机应用系统设计与
综合实验设计报告
设计题目信号发生器软硬件设计
指导老师
设计者
专业班级
设计日期
第一章信号发生器软硬件设计任务
1.1课程设计的内容及要求
内容:
以8088CPU为核心设计一个信号发生器,系统可以产生正弦波、三角波信号。
要求:
设计出电路原理图,说明工作原理,编写程序及程序流程图。
1.2实际完成技术指标
1.正弦波、三角波信号的产生。
2.用两个开关控制各波形间的切换。
3.实现频率从3Hz到100Hz无极可调。
4.实现幅值从2V到5V无级可调。
1.3系统使用
系统主要功能是产生方波,锯齿波,三角波和正弦波,频率从3Hz到100Hz。
具体使用方法如下:
(1).K1K0选择波形
10:
三角波
11:
正弦波
(2).电位计调频(3~100Hz)。
(3).K3开始结束程序。
第二章总体设计方案
2.1设计思想
总设计思路是由8088CUP控制8255、ADC0809和A/D0832;由-5V到+5V的电压输出旋钮实现无级调频;由两个开关实现两种波形转换。
2.2总体流程图
第三章硬件设计
3.1硬件电路设计系统原理图及其说明
K1
K0
K2
PB2
a.波形产生:
通过汇编语言编写各个波形子程序,即各个波形的一个周期代码。
通过主程序的循环调用,产生连续波形代码并通过A/D0832将数字量转换成模拟量输出,即可得各种波形。
b.波形切换:
用两个开关量K0,K1来控制波形的选择,即00~11分别对应三角波和正弦波。
每个波形周期开始前,查询这两个开关量,并转到相应的波子程序上。
因此可随时进行波形间的切换。
c.无极调频:
改变子程序中的各个数据输出时间,及延时,就可改变整个波形的频率。
延时越短频率越高。
而延时时间长短可由外部输入决定,通过A/D0809将电位计(-5~5V)的模拟量转化成数字量(00~FF)作为延时时间长短。
调节电位器即可调节延时,进而调节频率。
ADC0809芯片分辨率为8位,即可将延时分为256个等级,实现无极调频。
d.无极调幅:
软件调幅较难,可用外接比例运放和反相器来完成调幅。
e.开始结束:
通过K2可以随时开始或结束程序。
3.2所用到的芯片及其各自功能说明
3.2.1芯片列表
8088CPU1块
82551块
ADC08091块
A/D08321块
3.2.28088功能简介管脚图如下:
3.2.38255A功能简介
管脚图如下:
:
3.2.4A/D0832功能简介
DAC0832是采用CMOS工艺制成的单片电流输出型8位数/模转换器。
下图是DAC0832的逻辑框图及引脚排列。
DAC0832的引脚功能说明如下:
D0-D7:
数字信号输入端
ILE:
输入寄存器允许,高电平有效
:
片选信号,低电平有效
:
写信号1,低电平有效
:
传送控制信号,低电平有效
:
写信号2,低电平有效
IOUT1,IOUT2:
DAC电流输出端
RfB:
反馈电阻,是集成在片内的外接运放的反馈电阻
VREF:
基准电压(-10~+10)V
VCC:
电源电压(+5~+15)V
3.2.5D/A0809功能简介
ADC0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
下图是DAC0832的逻辑框图及引脚排列。
ADC0809芯片有28条引脚,采用双列直插式封装,如图13.23所示。
下面说明各引脚功能。
IN0~IN7:
8路模拟量输入端。
2-1~2-8:
8位数字量输出端。
ADDA、ADDB、ADDC:
3位地址输入线,用于选通8路模拟输入中的一路
ALE:
地址锁存允许信号,输入,高电平有效。
START:
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
EOC:
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
REF(+)、REF(-):
基准电压。
Vcc:
电源,单一+5V。
GND:
地
第四章软件设计
4.1波形产生
1.三角波
三角波与锯齿波类似,只是三角波达到最大后,在逐渐减小到最小,因此三角波有两个过程。
(1).部分代码如下:
UP:
CALLDELAY
OUT00H,AL
INCAL
CMPAL,0FFH
JNZUP
DECAL
DOWN:
CALLDELAY
OUT00H,AL
DECAL
CMPAL,00H
JNZDOWN
(2)流程图如下:
2.正弦波
正弦波是利用正弦表(见附录代码段)输出的,即将正弦表中的数值一一输出并延时。
(1).流程图如下:
(2).部分代码:
MOVCX,128
MOVAL,00H
MOVBX,OFFSETTABLE1
S1:
PUSHAX
XLAT
OUT00H,AL
POPAX
INCAL
CALLDELAY
LOOPS1
4.2波形切换
波形切换是根据K0,K1来实现的,开关不同的状态对应着不同的波形
(00:
矩形波,01:
锯齿波,10:
三角波,11:
正弦波)。
改变开关的状态即可选着波形。
K0,K1从PB0,PB1读入,如下图所示:
程序代码如下:
MOVDX,P8255_B;选择波形
INAL,DX
ANDAL,00000011B
CMPAL,00H
JEL1
CMPAL,01H
JEL2
CMPAL,02H
JEL3
CMPAL,03H
JEL4
L1:
CALLFANGBO
L2:
CALLJUCHI
L3:
CALLSANJIAO
L4:
CALLZHENGXIAN
4.3无极调频
本次实验ADC0809芯片的输出八位数据线以及CLOCK(1.1625MHz)已通过扁平电缆接到8088控制计算机的8255端口A和系统应用时钟OPCLK(1.1625MHz)上。
模拟输入量Vin与数字输出量N的转换公式为Vin=(Vref+——Vref-)/256×N+Vref-,其中Vref+接+5V,Vref-接-5V。
改变子程序中的各个数据输出时间,及延时,就可改变整个波形的频率。
延时时间是0809读入的。
即每个循环启动一次D/A转换,启动信号可由C口输出,将读入的数据放到一个特定的存储单元,供延时时使用。
由于电位计可无级调(-5~5V),读入的数据从00H到FFH,即可实现无级调。
程序代码如下:
P3:
MOVAL,00000000B;启动A/D转换,并读取数据
OUT63H,AL
MOVAL,00000001B
OUT63H,AL
INAL,60H
MOVSHU1,AL
…
DELAYPROC
PUSHCX
MOVCL,SHU1
DEL1:
LOOPDEL1
POPCX
..硬件接线图如下:
第五章系统调试
5.1系统调试
此项常用波形发生器是我们在学习汇编以来接触到的比较大的程序。
无论用何种程序书写,理清思路是关键。
因此,从拿到题目开始,我们花了很多时间来对设计波形发生器的硬件和软件进行了分析与思考,从中选出最好的解决方法。
最终我选取了8255A的B口来输出波形,因为实验台上的8255芯片的A端口已和0809相连,恰好用来实现无极调速。
因为无法使用DOS调用,对于波形的转换用两开关来实现。
在系统调试的过程中,我们用到的一个很重要的分析过程就是先易后难,先局部后整体,先将各个波形的子程序写出来,一一进行测试。
无误后再写主程序将各个子程序整合起来。
整个过程中最难的是无级调频,开始时一致无法调频,经过对各个部位的仔细调试分析,是0809模数转换的问题。
0809需要一个启动信号,且转换需要一定时间。
于是我们用C口每周期输出一启动信号进行转换。
最终达到理想效果。
5.2不足及改进
1.所产生的频率范围较窄。
应尽量减少延时拓宽频率。
2.幅值调节范围太小。
3.产生的波形不是理想状态。
特别是方波,上下跳变时,总会有断点。
4.由于波形每周期之后要读端口,与下一个周期之间有一定延时误差。
第六章心得体会
开始的时候由于没有经验,不知如何下手,所以就去图书管找了一些书看,尽管有许多的设计方案,可是总感觉自己还是有许多的东西弄不太清楚,于是就请教我们专业的学长。
他们做过这些设计,有一些经验。
经过他们的解释分析各方案之后,决定用主程序循环来做。
这样可以降低一些设计的难度,初次设计应切合自己的水平。
然后我们从理论上把整个过程设计出来,但在实验室中出现了很多意想不到的问题,如波形跳转时总有一些断点,由此看来,理论与实际还是有很大的区别,很多东西理论上是对的,但在实际中却行不通。
所以不能只看理论,还要联系实际去分析问题。
在设计过程中我们分工合作,首先大家在查阅资料后确定设计总思路,然后分成四块:
硬件连接,软件主程序,软件子程序,检查程序和连线。
在本设计中我具体负责编写软件子程序。
在编写正弦波子程序时我发现256个数据组成的一个表竟然不能正常运行,在检查几片程序后才找到症结所在:
然来是超过了表的上限。
后来我就把一个表分成两个,果然运行成功。
另外,在课程设计的过程中,我们自主独立的完成各自的课程任务,在遇到技术瓶颈时大家一起讨论解决,我们每一个同学都是团队中独立的一员,期间我看到了自身不足,也发现了团队的优势所在!
参考文献
[1]刘乐善.微机原理接口技术及应用.武汉:
华中科技出版社,2004.7
[2]周荷琴.危机计算机原理与接口技术.合肥:
中国科学技术大学出版社,2004.12