信号发生器功能程序设计微机原理课程设计报告.doc
《信号发生器功能程序设计微机原理课程设计报告.doc》由会员分享,可在线阅读,更多相关《信号发生器功能程序设计微机原理课程设计报告.doc(42页珍藏版)》请在三一办公上搜索。
1、微机应用系统设计与综合实验 微机原理课程设计报告课题名称: 信号发生器功能程序设计学 院: 姓 名: 指导老师: 日 期: 目录目录1第一章概要21.1 设计目的21.2 课程设计内容及要求21.3 所需芯片及硬件简介21.3.1 8255A 特性简介21.3.2 D /A0832功能简介31.3.3A /D0809功能简介31.3.4唐都小键盘简介4第二章总体设计方案52.1 设计思想论述52.2 程序流程图62.3 电路原理图7第三章典型模块分析83.1 波形产生模块83.1.1 方波93.1.2 三角波93.1.3 锯齿波103.1.4 正弦波123.2 小键盘模块133.3 调幅调频模
2、块14第四章系统调试过程及结果16第五章收获与体会17参考文献18附录1 汇编语言源程序代码19附录2 C语言源程序代码33第一章 概要1.1 设计目的 信号发生器的功能设计结合了软硬件的知识,这样的一个课程设计促使我们主动去找寻资料,自主学习更多的知识。尤其重要的是设计本身是一种实践,将课本知识应用到设计中,验证并且进一步熟悉它从而获得新的领悟,这是只啃书本所不能达成的好处。信号发生器的设计尤其加深我们对信号发生的理解,对以8086cpu为中心的各芯片功能的了解以及对微机原理和汇编语言编程有了更深的体会。1.2 课程设计内容及要求(1)、分别用C语言和汇编语言编程完成硬件接口功能设计;(2)
3、、硬件电路基于80x86微机的接口电路;(3)、程序功能要求:小键盘给定、数码管或屏幕显示,并产生对应信号波形(D/A)输出(信号波形包括正弦波、三角波、方波、锯齿波)、输出信号波形幅度、频率可调。(按键数量尽量少)。1.3 所需芯片及硬件简介1.3.1 8255A 特性简介(1)具有24条输入/输出引脚、可编程的通用并行输入/输出接口电路。它是一片使用单一+5V电源的40脚双列直插式大规模集成电路。8255A的通用性强,使用灵活,通过它CPU可直接与外设相连(2)8255A在使用前要写入一个方式控制字,选择A、B、C三个端口各自的工作方式,共有三种。方式0 :基本的输入输出方式,即无须联络就
4、可以直接进行的 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.2 D /A0832功能简介DAC0832是采用CMOS工艺制成的单
5、片电流输出型8位数 / 模转换器。DAC0832的引脚功能说明如下:D0D7 :数字信号输入端CS:片选信号,低电平有效WR:写信号1,低电平有效OUT:DAC电流输出端图1.1 唐都实验箱D /A0832接线图1.3.3 A /D0809功能简介ADC0809是采样频率为8位的、以逐次逼近原理进行模数转换的器件。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。当地址ABC=000时,IN0通道被选通。图1.2 唐都实验箱A /D0809接线图1.3.4 唐都小键盘简介唐都实验箱中提供了4行4列16个按键,列选择信号X1-X4,行扫描
6、信号Y1-Y4。图1.3 唐都实验箱小键盘接线图第二章 总体设计方案2.1 设计思想论述(1)波形产生:通过汇编语言编写各个波形子程序,其中方波和三角波参考了唐都的参考程序。锯齿波由三角波修改而来,正弦波事先用MATLAB仿真存入各点数据,产生波形时依次输出各个数据即可。波形子程序中主要是各个波形一个周期的代码,循环执行,由此产生连续波形并通过D /A0832将数字量转换成模拟量输出,即可得各种波形。具体方案见第三章3.1节。(2)波形切换:用小键盘输入进行波形的选择,按键03分别对应方波、三角波、锯齿波和正弦波。每个波形周期输出后,调用键盘查询子程序,判断有无按键按下,没有则继续输出下一周期
7、,否则转到相应的波行子程序上。可随时进行波形间的切换。具体方案见第三章3.2节。(3)无极调频:改变波形子程序中的各个数据输出延时时间,就可改变整个波形的频率,延时越短频率越高。而延时时间长短可由外部输入决定,通过A/D0809将电位计(05V)的模拟量转化成数字量(00FF)作为延时时间长短。调节电位器即可调节延时,进而调节频率。ADC0809芯片分辨率为8位,即可将延时分为256个等级,实现无极调频。具体方案见第三章3.3、3.4节。(4)无极调幅:改变波形子程序中DA输出值的大小即可改变幅值,可以在原数据基础上乘以一个增益。而增益可由外部输入,原理与调频相似,通过A/D0809输入一个数
8、字量(00FF)。按键4用于调频/调幅的切换。当判断当前为调幅状态时就将这个数字量存入幅值增益变量中,如果判断是调频状态则存入频率延时变量中。从而实现只用一个电位器分别调节频率和幅度的功能。具体方案见第三章3.3、3.4节。(5)开始结束:通过扫描小键盘,按下5键则退出。2.2 程序流程图开始NYNY结束初始化8255调用ccscan子程序并判断,无键按下则循环等待,有键按下则消抖键盘扫描子程序,键值keyKey=5?Key=0?Key=1?Key=2?Key=3?YYYYNNN方波子程序,出口参数:波形标志位=0三角波子程序,出口参数:波形标志位=1锯齿波子程序,出口参数:波形标志位=2正弦
9、波子程序,出口参数:波形标志位=3Key=4?键盘扫描子程序,键值keyNFLAG_FUPIN取反Key=波形标志位显示调频/调幅状态显示波形信息显示波形信息显示波形信息显示波形信息图2.1 主程序流程图2.3 电路原理图图2.2 硬件连接电路图第三章 典型模块分析3.1 波形产生模块四个波形子程序结构类似,当子程序被调用后,进行以下步骤:(1)通过8255的C7位输出一个低电平来启动AD0809,并从8255的B口读入AD输入的数字量(00HFFH)。(2)判断幅频标志位FLAG_FUPIN,为0则把AD输入的数字量存入频率值空间FRE,否则存入幅值空间AMP。(3)输出波形的一个周期。(4
10、)调用子程序CCSCAN,判断小键盘有无按键按下,无则继续步骤(1),有则返回主程序。流程图如图3.1所示。子程序调用启动AD0809,读入数据到ALFlag_fupin=0?保存到频率,FreAL保存到幅值,AmpAL输出一个周期波形小键盘有键按下?YNYN延时消抖小键盘有键按下?NY子程序返回图3.1 波形子程序流程图3.1.1 方波 方波的产生先向DA0832输出一个低电平(00H),并延时一段时间。再输出一个高电平(此处直接用AMP的值作为高电平,AMP是外部AD输入的幅值增益),延时一段相同时间,就是矩形波的一个周期。 (1)一个周期波形的代码: NEXT1_1: MOV DX,DA
11、0832 ;写00H,输出低电平 MOV AL,00H OUT DX,AL CALL DELAY1;延时 MOV DX,DA0832 ;写 AMP,输出高电平 MOV AL,AMP ;AMP=00HFFH,默认值 7FH OUT DX,AL CALL DELAY1;延时(2)延时子程序代码: DELAY1 PROC NEAR ;软件延时子程序 PUSH CX PUSH AX MOV CH,FRE ;读取频率值,FRE=00HFFH AND CH,0F0H ADD CH,0FH ;CH的值受FRE的控制,改变FRE则改变延时时间 MOV CL,0FFH DD1: MOV AX,0FF00H DD
12、2: DEC AX JNZ DD2 LOOP DD1 POP AX POP CX RET DELAY1 ENDP3.1.2 三角波三角波从最小值开始逐渐上升,到达最大值之后再逐渐减小到最小。因此先将最小值(00H)放到BL,输出并延时,对BL加一,再输出并延时,达到最大值后就对BL依次减一,输出并延时,直到BL=00H,则为一个周期波形。因此三角波有两个过程。一个周期波形的代码如下: NEXT1_2: MOV BL,00H ;BL赋最小值00H UP1: MOV AL,AMP ;AL幅值增益AMP, AMP=00HFFH AND AL,0F0H SHR AL,4 ; AL=00H0FHMUL
13、BL ; ALBL*AL MOV DX,DA0832 ;启动D/A转换 OUT DX,AL ;输出AL CALL DELAY2 INC BL ;BL加一 CMP BL,25H ;判断BL是否加到最大值了 JNE UP1 DOWN: MOV AL,AMP ;AL幅值增益AMP ,AMP=00HFFH AND AL,0F0H SHR AL,4 ; AL=00H0FHMUL BL; ALBL*ALMOV DX,DA0832 OUT DX,AL CALL DELAY2 DEC BL ;BL减一 CMP BL,00H;判断BL是否减到最小值了 JNE DOWN延时子程序与方波类似,此处不再赘述。局部流程
14、图如图3.2所示。3.1.3 锯齿波 锯齿波与三角波类似,只是锯齿波到达最大值之后,直接跳到最小值。因此锯齿波只有对BL依次加一的过程。一个周期波形的代码如下:NEXT1_3: MOV BL,00H ;BL赋最小值00H UP2: MOV AL,AMP ;AL幅值增益AMP, AMP=00HFFH AND AL,0F0H SHR AL,4 ; AL=00H0FH MUL BL; ALBL*AL MOV DX,DA0832 ;启动D/A转换 OUT DX,AL;输出AL CALL DELAY2 INC BL;BL加一 CMP BL,25H;判断BL是否加到最大值了 JNE UP2 MOV BL,
15、00H;BL加到最大之后直接赋给最小值00H MOV AL,AMP AND AL,0F0H SHR AL,4 MUL BL; ALBL*AL MOV DX,DA0832 OUT DX,AL CALL DELAY2延时子程序与方波类似,此处不再赘述。局部流程图如图3.3所示。BL已到最大?延时BL*增益AL,输出ALBL=00HBL加一NYBL已到最小?延时BL*增益AL,输出ALBL减一NY图3.2 三角波一周期流程图BL=00H延时BL*增益AL,输出ALBL*增益AL,输出ALBL=00H延时BL加一BL已到最大?NY图3.3 锯齿波一周期流程图3.1.4 正弦波正弦波是利用正弦表(见附录
16、 代码段)输出的,即将正弦表中的数值一一输出并延时。一个周期波形的代码: NEXT1_4: LEA SI,SIN ;指向正弦表中的第一个数据 MOV CX,255 UP: MOV BL,AMP ;BL幅值增益AMP, AMP=00HFFH AND BL,0F0H SHR BL,4 ;AMP=00HFFH ,BL=00H0F MOV AL,SI ;读取正弦表中的一个数据 SHR AL,2 MUL BL ; AL AL* BL MOV DX,DA0832 ;启动D/A转换 OUT DX,AL ;输出AL CALL DELAY3 INC SI ;指向表中的下一个数据 LOOP UP延时子程序与方波类
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 信号发生器 功能 程序设计 微机 原理 课程设计 报告
链接地址:https://www.31ppt.com/p-4142899.html