精编完整版信号发生器功能程序设计微机原理毕业论文报告.docx
- 文档编号:45933
- 上传时间:2022-10-01
- 格式:DOCX
- 页数:41
- 大小:155.86KB
精编完整版信号发生器功能程序设计微机原理毕业论文报告.docx
《精编完整版信号发生器功能程序设计微机原理毕业论文报告.docx》由会员分享,可在线阅读,更多相关《精编完整版信号发生器功能程序设计微机原理毕业论文报告.docx(41页珍藏版)》请在冰豆网上搜索。
精编完整版信号发生器功能程序设计微机原理毕业论文报告
微机应用系统设计与综合实验
——微机原理课程设计报告
课题名称:
信号发生器功能程序设计
学院:
姓名:
指导老师:
日期:
目录1
第一章概要2
1.1设计目的2
1.2课程设计内容及要求2
1.3所需芯片及硬件简介2
1.3.18255A特性简介2
1.3.2D/A0832功能简介3
1.3.3A/D0809功能简介3
1.3.4唐都小键盘简介4
第二章总体设计方案5
2.1设计思想论述5
2.2程序流程图6
2.3电路原理图7
第三章典型模块分析8
3.1波形产生模块8
3.1.1方波9
3.1.2三角波9
3.1.3锯齿波10
3.1.4正弦波12
3.2小键盘模块13
3.3调幅调频模块14
第四章系统调试过程及结果16
第五章收获与体会17
参考文献18
附录1汇编语言源程序代码19
附录2C语言源程序代码33
第一章
概要
1.1设计目的
信号发生器的功能设计结合了软硬件的知识,这样的一个课程设计促使我们主动去找寻资料,自主学习更多的知识。
尤其重要的是设计本身是一种实践,将课本知识应用到设计中,验证并且进一步熟悉它从而获得新的领悟,这是只啃书本所不能达成的好处。
信号发生器的设计尤其加深我们对信号发生的理解,对以8086cpu为中心的各芯片功能的了解以及对微机原理和汇编语言编程有了更深的体会。
1.2课程设计内容及要求
(1)、分别用C语言和汇编语言编程完成硬件接口功能设计;
(2)、硬件电路基于80x86微机的接口电路;
(3)、程序功能要求:
小键盘给定、数码管或屏幕显示,并产生对应信号波形(D/A)输出(信号波形包括正弦波、三角波、方波、锯齿波)、输出信号波形幅度、频率可调。
(按键数量尽量少)。
1.3所需芯片及硬件简介
1.3.18255A特性简介
(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线。
本次设计只用到了三个端口的方式0。
1.3.2D/A0832功能简介
DAC0832是采用CMOS工艺制成的单片电流输出型8位数/模转换器。
DAC0832的引脚功能说明如下:
D0-D7:
数字信号输入端
CS:
片选信号,低电平有效
WR:
写信号1,低电平有效
OUT:
DAC电流输出端
图1.1唐都实验箱D/A0832接线图
1.3.3A/D0809功能简介
ADC0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
当地址ABC=000时,IN0通道被选通。
图1.2唐都实验箱A/D0809接线图
1.3.4唐都小键盘简介
唐都实验箱中提供了4行×4列16个按键,列选择信号X1-X4,行扫描信号Y1-Y4。
图1.3唐都实验箱小键盘接线图
第二章
总体设计方案
2.1设计思想论述
(1).波形产生:
通过汇编语言编写各个波形子程序,其中方波和三角波参考了唐都的参考程序。
锯齿波由三角波修改而来,正弦波事先用MATLAB仿真存入各点数据,产生波形时依次输出各个数据即可。
波形子程序中主要是各个波形一个周期的代码,循环执行,由此产生连续波形并通过D/A0832将数字量转换成模拟量输出,即可得各种波形。
具体方案见第三章3.1节。
(2).波形切换:
用小键盘输入进行波形的选择,按键0~3分别对应方波、三角波、锯齿波和正弦波。
每个波形周期输出后,调用键盘查询子程序,判断有无按键按下,没有则继续输出下一周期,否则转到相应的波行子程序上。
可随时进行波形间的切换。
具体方案见第三章3.2节。
(3).无极调频:
改变波形子程序中的各个数据输出延时时间,就可改变整个波形的频率,延时越短频率越高。
而延时时间长短可由外部输入决定,通过A/D0809将电位计(0~5V)的模拟量转化成数字量(00~FF)作为延时时间长短。
调节电位器即可调节延时,进而调节频率。
ADC0809芯片分辨率为8位,即可将延时分为256个等级,实现无极调频。
具体方案见第三章3.3、3.4节。
(4).无极调幅:
改变波形子程序中DA输出值的大小即可改变幅值,可以在原数据基础上乘以一个增益。
而增益可由外部输入,原理与调频相似,通过A/D0809输入一个数字量(00~FF)。
按键4用于调频/调幅的切换。
当判断当前为调幅状态时就将这个数字量存入幅值增益变量中,如果判断是调频状态则存入频率延时变量中。
从而实现只用一个电位器分别调节频率和幅度的功能。
具体方案见第三章3.3、3.4节。
(5).开始结束:
通过扫描小键盘,按下5键则退出。
2.2程序流程图
2.3电路原理图
图2.2硬件连接电路图
第三章典型模块分析
3.1波形产生模块
四个波形子程序结构类似,当子程序被调用后,进行以下步骤:
(1)通过8255的C7位输出一个低电平来启动AD0809,并从8255的B口读入AD输入的数字量(00H~FFH)。
(2)判断幅频标志位FLAG_FUPIN,为0则把AD输入的数字量存入频率值空间FRE,否则存入幅值空间AMP。
(3)输出波形的一个周期。
(4)调用子程序CCSCAN,判断小键盘有无按键按下,无则继续步骤
(1),有则返回主程序。
流程图如图3.1所示。
图3.1波形子程序流程图
3.1.1方波
方波的产生先向DA0832输出一个低电平(00H),并延时一段时间。
再输出一个高电平(此处直接用AMP的值作为高电平,AMP是外部AD输入的幅值增益),延时一段相同时间,就是矩形波的一个周期。
(1)一个周期波形的代码:
NEXT1_1:
MOVDX,DA0832;写00H,输出低电平
MOVAL,00H
OUTDX,AL
CALLDELAY1;延时
MOVDX,DA0832;写AMP,输出高电平
MOVAL,AMP;AMP=00H~FFH,默认值7FH
OUTDX,AL
CALLDELAY1;延时
(2)延时子程序代码:
DELAY1PROCNEAR;软件延时子程序
PUSHCX
PUSHAX
MOVCH,FRE;读取频率值,FRE=00H~FFH
ANDCH,0F0H
ADDCH,0FH;CH的值受FRE的控制,改变FRE则改变延时时间
MOVCL,0FFH
DD1:
MOVAX,0FF00H
DD2:
DECAX
JNZDD2
LOOPDD1
POPAX
POPCX
RET
DELAY1ENDP
3.1.2三角波
三角波从最小值开始逐渐上升,到达最大值之后再逐渐减小到最小。
因此先将最小值(00H)放到BL,输出并延时,对BL加一,再输出并延时,达到最大值后就对BL依次减一,输出并延时,直到BL=00H,则为一个周期波形。
因此三角波有两个过程。
一个周期波形的代码如下:
NEXT1_2:
MOVBL,00H;BL赋最小值00H
UP1:
MOVAL,AMP;AL幅值增益AMP,AMP=00H~FFH
ANDAL,0F0H
SHRAL,4;AL=00H~0FH
MULBL;ALBL*AL
MOVDX,DA0832;启动D/A转换
OUTDX,AL;输出AL
CALLDELAY2
INCBL;BL加一
CMPBL,25H;判断BL是否加到最大值了
JNEUP1
DOWN:
MOVAL,AMP;AL幅值增益AMP,AMP=00H~FFH
ANDAL,0F0H
SHRAL,4;AL=00H~0FH
MULBL;ALBL*AL
MOVDX,DA0832
OUTDX,AL
CALLDELAY2
DECBL;BL减一
CMPBL,00H;判断BL是否减到最小值了
JNEDOWN
延时子程序与方波类似,此处不再赘述。
局部流程图如图3.2所示。
3.1.3锯齿波
锯齿波与三角波类似,只是锯齿波到达最大值之后,直接跳到最小值。
因此锯齿波只有对BL依次加一的过程。
一个周期波形的代码如下:
NEXT1_3:
MOVBL,00H;BL赋最小值00H
UP2:
MOVAL,AMP;AL幅值增益AMP,AMP=00H~FFH
ANDAL,0F0H
SHRAL,4;AL=00H~0FH
MULBL;ALBL*AL
MOVDX,DA0832;启动D/A转换
OUTDX,AL;输出AL
CALLDELAY2
INCBL;BL加一
CMPBL,25H;判断BL是否加到最大值了
JNEUP2
MOVBL,00H;BL加到最大之后直接赋给最小值00H
MOVAL,AMP
ANDAL,0F0H
SHRAL,4
MULBL;ALBL*AL
MOVDX,DA0832
OUTDX,AL
CALLDELAY2
延时子程序与方波类似,此处不再赘述。
局部流程图如图3.3所示。
3.1.4正弦波
正弦波是利用正弦表(见附录代码段)输出的,即将正弦表中的数值一一输出并延时。
一个周期波形的代码:
NEXT1_4:
LEASI,SIN;指向正弦表中的第一个数据
MOVCX,255
UP:
MOVBL,AMP;BL幅值增益AMP,AMP=00H~FFH
ANDBL,0F0H
SHRBL,4;AMP=00H~FFH,BL=00H~0F
MOVAL,[SI];读取正弦表中的一个数据
SHRAL,2
MULBL;ALAL*BL
MOVDX,DA0832;启动D/A转换
OUTDX,AL;输出AL
CALLDELAY3
INCSI;指向表中的下一个数据
LOOPUP
延时子程序与方波类似,此处不再赘述。
局部流程图如图3.4所示。
3.2小键盘模块
小键盘用到两个子程序(ccscan和scan)。
(1)ccscan子程序只是一个辅助程序,用于判断当前小键盘是否有键按下,有则全零标志位ZF=0(运算结果不为0),无键按下则ZF=1(运算结果为0)。
子程序代码如下:
CCSCANPROCNEAR;扫描是否有按键闭合子程序
MOVAL,0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精编 完整版 信号发生器 功能 程序设计 微机 原理 毕业论文 报告