1、微机应用系统设计与综合实验微机原理课程设计报告课题名称: 信号发生器功能程序设计学 院: 姓 名: 指导老师: 日 期: 2目录目录 .1第一章 概要 .21.1 设计目的 .21.2 课程设计内容及要求 .21.3 所需芯片及硬件简介 .21.3.1 8255A 特性简介 .21.3.2 D /A0832 功能简介 .31.3.3 A /D0809 功能简介 .31.3.4 唐都小键盘简介 .4第二章 总体设计方案 .52.1 设计思想论述 .52.2 程序流程图 .62.3 电路原理图 .7第三章 典型模块分析 .83.1 波形产生模块 .83.1.1 方波 .93.1.2 三角波 .93
2、.1.3 锯齿波 .103.1.4 正弦波 .123.2 小键盘模块 .133.3 调幅调频模块 .14第四章 系统调试过程及结果 .16第五章 收获与体会 .17参考文献 .18附录 1 汇编语言源程序代码 .19附录 2 C 语言源程序代码 .333第一章 概要1.1 设计目的 信号发生器的功能设计结合了软硬件的知识,这样的一个课程设计促使我们主动去找寻资料,自主学习更多的知识。尤其重要的是设计本身是一种实践,将课本知识应用到设计中,验证并且进一步熟悉它从而获得新的领悟,这是只啃书本所不能达成的好处。信号发生器的设计尤其加深我们对信号发生的理解,对以 8086cpu 为中心的各芯片功能的了
3、解以及对微机原理和汇编语言编程有了更深的体会。1.2 课程设计内容及要求(1) 、分别用 C 语言和汇编语言编程完成硬件接口功能设计;(2) 、硬件电路基于 80x86 微机的接口电路;(3) 、程序功能要求:小键盘给定、数码管或屏幕显示,并产生对应信号波形(D/A)输出(信号波形包括正弦波、三角波、方波、锯齿波) 、输出信号波形幅度、频率可调。 (按键数量尽量少) 。1.3 所需芯片及硬件简介1.3.1 8255A 特性简介(1)具有 24 条输入/输出引脚、可编程的通用并行输入 /输出接口电路。它是一片使用单一+5V 电源的 40 脚双列直插式大规模集成电路。8255A 的通用性强,使用灵
4、活,通过它 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 线即可输入又可输出,此时
5、C 口有 5 条线被规定为A 口和外围设备的双向联络线,C 口剩下的三条线可作为 B 口方式 1 的联络线,也可以和 B 口一起方式 0 的 I/O 线。本次设计只用到了三个端口的方式 0。41.3.2 D /A0832 功能简介DAC0832 是采用 CMOS 工艺制成的单片电流输出型 8 位数 / 模转换器。DAC0832 的引脚功能说明如下:D0D7 :数字信号输入端CS:片选信号,低电平有效WR:写信号 1,低电平有效OUT: DAC 电流输出端图 1.1 唐都实验箱 D /A0832 接线图1.3.3 A /D0809 功能简介ADC0809 是采样频率为 8 位的、以逐次逼近原理进
6、行模数转换的器件。其内部有一个 8 通道多路开关,它可以根据地址码锁存译码后的信号,只选通 8 路模拟输入信号中的一个进行 A/D 转换。当地址 ABC=000 时,IN0 通道被选通。图 1.2 唐都实验箱 A /D0809 接线图51.3.4 唐都小键盘简介唐都实验箱中提供了 4 行4 列 16 个按键,列选择信号 X1-X4,行扫描信号 Y1-Y4。图 1.3 唐都实验箱小键盘接线图6第二章 总体设计方案2.1 设计思想论述(1) 波形产生:通过汇编语言编写各个波形子程序,其中方波和三角波参考了唐都的参考程序。锯齿波由三角波修改而来,正弦波事先用 MATLAB 仿真存入各点数据,产生波形
7、时依次输出各个数据即可。波形子程序中主要是各个波形一个周期的代码,循环执行,由此产生连续波形并通过 D /A0832 将数字量转换成模拟量输出,即可得各种波形。具体方案见第三章 3.1 节。(2) 波形切换:用小键盘输入进行波形的选择,按键 03 分别对应方波、三角波、锯齿波和正弦波。每个波形周期输出后,调用键盘查询子程序,判断有无按键按下,没有则继续输出下一周期,否则转到相应的波行子程序上。可随时进行波形间的切换。具体方案见第三章 3.2 节。(3) 无极调频:改变波形子程序中的各个数据输出延时时间,就可改变整个波形的频率,延时越短频率越高。而延时时间长短可由外部输入决定,通过 A/D080
8、9将电位计(05V )的模拟量转化成数字量( 00FF)作为延时时间长短。调节电位器即可调节延时,进而调节频率。ADC0809 芯片分辨率为 8 位,即可将延时分为256 个等级,实现无极调频。具体方案见第三章 3.3、3.4 节。(4) 无极调幅:改变波形子程序中 DA 输出值的大小即可改变幅值,可以在原数据基础上乘以一个增益。而增益可由外部输入,原理与调频相似,通过 A/D0809输入一个数字量(00FF) 。按键 4 用于调频/调幅的切换。当判断当前为调幅状态时就将这个数字量存入幅值增益变量中,如果判断是调频状态则存入频率延时变量中。从而实现只用一个电位器分别调节频率和幅度的功能。具体方
9、案见第三章3.3、3.4 节。(5) 开始结束:通过扫描小键盘,按下 5 键则退出。72.2 程序流程图开始NYNY结束初始化 8255调用 ccscan 子程序并判断,无键按下则循环等待,有键按下则消抖键盘扫描子程序,键值 keyKey=5?Key=0?Key=1?Key=2?Key=3?YYYYNNN方波子程序,出口参数:波形标志位=0三角波子程序,出口参数:波形标志位=1锯齿波子程序,出口参数:波形标志位=2正弦波子程序,出口参数:波形标志位=3Key=4?键盘扫描子程序,键值 keyNFLAG_FUPIN 取反Key=波形标志位显示调频/调幅状态显示波形信息显示波形信息显示波形信息显示
10、波形信息图 2.1 主程序流程图892.3 电路原理图图 2.2 硬件连接电路图10第三章 典型模块分析3.1 波形产生模块四个波形子程序结构类似,当子程序被调用后,进行以下步骤:(1)通过 8255 的 C7 位输出一个低电平来启动 AD0809,并从 8255 的 B 口读入AD 输入的数字量(00HFFH) 。(2)判断幅频标志位 FLAG_FUPIN,为 0 则把 AD 输入的数字量存入频率值空间FRE,否则存入幅值空间 AMP。(3)输出波形的一个周期。(4)调用子程序 CCSCAN,判断小键盘有无按键按下,无则继续步骤(1) ,有则返回主程序。流程图如图 3.1 所示。子程序调用启动 AD0809,读入数据到 ALFlag_fupin=0?保存到频率,FreAL 保存到幅值,Amp AL输出一个周期波形小键盘有键按下?YNYN延时消抖小键盘有键按下?NY子程序返回