基于单片机的波形发生器的设计内容摘要:

LSB 1 1 1 1 1 1 1 1 +( 127/128) Vref 1 0 0 0 0 0 0 1 +( 1/128) Vref 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 ( 1/128) Vref 0 0 0 0 0 0 0 1 ( 127/128) Vref 0 0 0 0 0 0 0 0 ( 128/128) Vref 另一片 DAC0832( IC3)的参考电压接到 +5V 电源上,它和两个单运算放大器( IC5 和 IC6)组成的单极 性 D/A转换电路,其输出电压加到前一片 DAC0832的参考电压端 Vref。 当此片 DAC0832 输入 0~255 数字时,输出为 0~+5V,从而调节前一片 DAV0832 的输出电压为 — 5~+5V,达到改变输出波形幅值的目的。 这两片DAC0832 都结成单缓冲器输入方式。 3. 5 电源部分的设计 直流稳压电源一般由电源变压器、整流、滤波和稳压电路等四个部分组成。 电源变压器是将电网 220V 的交流电压变为所需要的电压值送入整流电路,整流电路再将交流电压变成脉动的直流电压。 由于此脉动的直流电压还含有较大的纹波,必须通过滤波 电路加以滤除。 滤波电路将脉动的直流电压的纹波滤除后得到平滑的直流电压。 稳压电路的作用是当电网电压波动,负载和温度变化时,能维持输出直流电压的稳定。 本课题通过 780 781 7912 稳压器将直流电压分别转换为 +5V、 +12V、 12V直流电压,然后直接和电路系统的电源接口相接。 其电路图 7所示 第 16 页 共 48 页 图 5 7805 稳压电源器的接口电路 图 6 7812 稳压电源器的接口电路 图 7 7912 稳压电源器的接口电路 3. 6 晶振电路的设计 为什么要用晶振电路。 单片机工作,是一条一条的从 ROM 中取指 令,然后一步一步地执行。 单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。 一个机器周期包括 12个时钟周期。 第 17 页 共 48 页 因为没有晶振,就没有时钟周期,没有时钟周期,就没有机器周期,没有机器周期,就无法执行程序代码,单片机就无法工作。 由此可见,若想单片机正常工作,必须得有晶振电路。 单片机的晶振电路是一种典型电路,晶振频率一般选择在 4MHz— 12MHz 之间,外接两个晶振电容,该电容的典型值为 30pf。 其图 8所示。 图 8 单片机的晶振电路 3. 7 复位电路设计 单片机的复位电路就和计算机的重启是一 样的概念。 一般的复位只需要 8us的时间。 如何进行复位。 电路图 9 所示 第 18 页 共 48 页 图 9 复位电路 只需要在单片机的 RST 引脚上加上高电平,时间不少于 8us 就可以了。 复位电路也是单片机系统的典型外围电路,如上图所示。 3. 8 输入电路键盘的接口设计 在单片机控制系统中,为了实现人对系统的操纵控制及向系统输入参数,都需要为系统设置按键或键盘,实现简单的人机会话。 键盘是一组(通常多于 8个)按键的集合。 键盘所使用的按键一般都是具有一对常开触点的按键开关,平时不按键时,触点处于断开(开路)状态,当按下按键时,触点才处于闭合 (短路)状态,而当按键被松开后,触点又处于断开状态。 第 19 页 共 48 页 根据键盘上闭合键的识别方法不同,键盘可分为非编码键盘和编码键盘两种。 非编码键盘上,闭合键的识别采用软件实现;编码键盘上,闭合键的识别则由专门的硬件译码器产生按键的编号(即键码),并产生一个脉冲信号,以通知CPU 接受键码。 编码键盘使用较为方便,易于编程,但硬件电路较为复杂,因此在单片机的控制系统中应用较少。 而非编码键盘几乎不需要附加什么硬件电路,因此在实际单片机控制系统中较多采用。 从键盘的结构来分,键盘可分为独立式和矩阵式两类。 当系统操作比较简单,所需键 盘较少时,可采用独立式非编码键盘;而当系统操作比较复杂,需要数量较多的按键时,可采用矩阵式非编码键盘。 在本课题设计中,采用的是独立式键盘。 其电路图 10所示。 图 10 键盘与单片机接口电路 输出波形种类、幅值和频率的设定由键盘输入。 由于单片机的 PI 口不作它用,可用它扩展一个 4 行 *4 列键盘。 键盘的 4 根行线接到单片机的 ~口线, 4 根列线接 ~ 口线。 16 个按键分别定义为数字 0~9 和功能键Enter(确认键 )、 Clear(清除键 )、 Wave(波形选择键 )、 Frequenency(改 变频率键 )、Amplitude(改变幅值键 )和(小数点键)。 3. 9 显示电路的设计 当前输出波形的种类、幅值和频率需要显示出来。 由于单片机的串行不作它用,可用它接 8 片串入并出移位寄存器来扩展 8 位 7 段 LED 显示器, L1~L4 用于第 20 页 共 48 页 显示输出波形的频率; L5~L7 用于显示输出波形的幅值, L6 的小数点接 +5V,常亮,则可显示 到 ; L8用于显示波形的种类, 1表示正弦波, 2表示方波, 3表示三角波, 4表示锯齿波,见下图。 图 11 显示电路 3. 10 运算放大器电路的设计 将得到的模拟信号量分别进 行放大,以利于对系统的信号量进行观察、读取等研究。 由于信号从 D/A 转换器出来的模拟信号量是比较微弱的,因而需要对所得到的信号量进行放大 3. 11 单元电路调试 一个单片机应用系统经过方案论证、硬件设计、印刷版的布局、加工和焊接包括软件的编制,通常不可能一次成功,不可避免地要出现一些错误,这就要靠调试来解决。 调试的次序一般是先易后难,后面的调试应尽可能采用以前已调好的电路,各单元电路(或称作单元模块)都调好以后,再进行系统总调。 对于本波形发生器,其硬件电路的调试可以按如下步骤进行。 1)硬件电路的总体检查 在一块电路试验板上,焊接好电路,按实际电路图插好元器件,连好线。 在接上电源之前,用万用表粗略检查电路的正确性,尤其是要检查电源和地之间的电阻。 对于本波形发生器来讲,电源和地之间的电阻应为 1k 欧以上,若太小,应检查电源和地之间是否有短路现象或电源接错现象或有不良元器件。 确保电源和地无故障之后,再通电,然后检查各电源 +5V、 +12V 和 — 12V 电压数值的正确性。 排除可能出现的故障后,再进行各单元电路调试。 2)单元电路调试 ①单片机最小系统调试 第 21 页 共 48 页 按照前面设计的单片机最小系统和电源,焊接并插上相应的元器件,连好线 ,检查正确无误后,接上电源,用示波器测试单片机的时钟波形。 若时钟波形和频率正确,则进行下一步检查。 切断电源,空出单片机 AT89C51 的位置,并在此位置上插入仿真器的 40 芯仿真头。 连好相应线,检查正确无误后,接上电源,然后启动仿真器,检查地址锁存等电路的正确性。 ②波形输出电路调试 按附图 1电路接线方法,我们可以知道 D/ A 转换器 IC3 和 IC4 的地址分别为 0FDH 和 0FEH,向着两个地址分别写入相应的数据后,若电路正确就启动了它们的 D/ A转换,若这时运放 IC6 和 IC8 输出的电压值和表 1相符,则说明波形输出电路 正确。 ③键盘扩展电路调试 断开电源,焊接好键盘,并将键盘接到 P1 口,然后接通电源,用仿真器是使 AT89C51 的 P1 口输出为 0F0H,即将键盘的 4根行线接 ~ 置为低电平,4根列线接 ~ 口线置为高电平。 接下来,依次按下各键,并用万用表测量对应 P1口的 ~ 口线,若所测的相应口线为低电平,则表示该键有效。 例如,按下 0,则应测的口线 为为低电平,说明键 0 有效。 测试所有 16个键都有效,则说明该键盘扩展电路正确。 ④显示电路调试 断开电源,焊接好相应电路,并插上器件 IC9~IC16 和 L1~L8,然后再接上电源。 用仿真器编写一段测试程序(参见后面显示模块软件)让 8 个 7 段 LED( L1~L8)分别显示数字 8。 再在仿真器上汇编该程序,并执行,若显示的结果一致。 则说明显示电路是正确的。 第 22 页 共 48 页 4 基于单片机的波形发生器的软件设计 4. 1 软件的功能定义 功能定义的作用是要明确所设计的软件需要完成的任务,确定输入和输出的形式,需要对各种数据进行何种处理以及判断处理结果等等。 [12] 在此系统中,要求软件实现的功能是:通过单片机 AT89C51 的 口输出方波,而方波的输出周期通过控制小键盘来实现,与单片机相连的数模转换模块DAC0832,它通过连一个 I/V 转换电路后输出正弦波和锯齿波,其波形的周期也是通过控制小键盘来实现的。 在该系统中,应有高可靠性、抗干扰性,在断电或出现故障时有保护、数据存储和复位功能。 4. 2 编程语言的选择 作者选择的是汇编语言,用助记符和标号地址编写的程序称为汇编语言源程序,其作用相当于人们直接用指令的机器码以及指令地址编写程序。 只是采用助记符和地址标号地址为程序的编写提供了方便,即不必记忆指令的机器码,也不必在编写程 序时进行地址的计算。 而将助记符翻译成机器码以及将标号地址换算成实际地址的工作都由计算机通过一种称为汇编程序的软件完成,这种翻译和换算的过程一般就称为汇编。 4. 3 各软件模块设计 按照波形发生器的功能,其应用程序必须有初始化、波形产生、键盘管理和显示等几部分,现将各主要软件模块介绍如下。 初始化模块 初始化程序模块主要进行设置定时器、串行口的工作方式,设置波形的类型、幅值和频率,并在显示器上显示提示字符 12345678 等工作。 这部分程序如下: MOV TMOD, 02H ;设置定时器 0 为方式 2工作 MOV TL0, 7FH ;置初值 MOV TH0, 7FH CLR TR0 ;不启动 MOV SCON, 00H ;将串行口初始化为方式 0 第 23 页 共 48 页 MOV DPTR, 0FFFDH ; IC3 的地址送 DPTR MOV A, 0FFH MOVX @DPTR, A ;输出波形的幅值初始化为 10V MOV DPTR, 0FFFEH ; IC4 的地址送 DPTR MOV A, 80H MOVX @DPTR, A ;输出设定为 0 MOV WAVKD, 01H ;波形类型初始化为 1,即正弦波 波形产生模块 前面讲过,采用定点法产生波形,将所要输出的波形按一个周期分成若干点,正弦波和三角波各 72 点。 按所需频率计算出两点间的时间间隔,用定时器 0 工作于方式 0 来定时该时间间隔。 每当定时时间到时,查表输出下一个波形数据,如此循环执行即可。 锯齿波的产生,只要从 00H 开始,每隔一定时间加 1开始 ,在历史上 00H 到 0FFH 之间循环输出 D/A 转换器 IC4 即可。 方波识要每隔每半个周期交替输出 00H 和 0FFH 即可。 ①正弦波产生程序 由于正弦波的对称性,可将其分为四个相同部分,在这里称为四个象限。 只要做第一个象限的数据即可,第二象限的数据表与第一个象限相同,但输出时要反向查表;第三、四象限输出只要将第一象了限和第二象限查表得的数据取反即可。 产生正弦波的程序流程图见图 12 所示 第 24 页 共 48 页 图 12 正弦波产生程序流程图 其程序清单如下: SETB TRO SINWAV: MOV RO, 00H ;查表指针初始化为 0 SINLP1: MOV DPTR, SINTAB ;正弦波函数表地址送 DPTR MOV A, R0 MOVC A, @A+DPTR ;查表 MOV DPTR, 0FFFEH ; IC4 地址送 DPTR MOVX @ DPTR, A ;输出数据给 D/A SINLP2: JNB TFO, SINLP2 ;由定时器控制频率 CLR TFO 第 25 页 共 48 页 INC RO CJNE RO, 13H, SINTAB ;第一象限输出完了吗。 SINLP3: MOV DPTR, SINTAB ;正弦波函数表表地址送 DPTR MOV A, RO MOVC A, @ A, RO MOVC A, @ A+DPTR ;查表 MOV DPTR, FFFEH ; IC4F 地址送 DPTR MOVX @DPTR, A SINLP4: JNB TFO , DINLP4 ;由定时器控制频率 CLR TFO DEC RO CJNE RO, OOH, SINLP3 ;第二象限输出完了。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。