多功能智能函数发生器的设计毕业设计正文(编辑修改稿)内容摘要:

某个事件(程序自身或外界的原因)作出的一种反应: CPU 暂停正在执行的程序,保留现场后自动转去处理相应的事件,处理完该事件后,到适当的时候返回断点,继续完成被打断的程序。 (如有必要,被中断的程序可以在后来某时间恢复,继续执行。 )。 特点: 1) 中断随机的 2) 中断是可恢复的 3) 中断是自动进行处理的 本设计利用 p3 口按键中断 控制波 形, 如图 所示是中断流程图, 每按一次调用一次中断,并 设置一个参数 进行 计数,开启定时器,并调用对应的波形显示子程序显示波形种类和频率。 中断 进入 开定时器,显 示波形和频率 重新给定 时器赋值 中断 返回 南昌航空大学士学位论文 17 递增斜波流程图 递增斜波在软件设计中设为模式 0,因为 DA0832 处于直通模式下,所以 不需要先选中 DA0832进行工作,首先 要 先开启定时器 ,设计中 选择的是 1ms的定时,选用的 T0 定时器, 设计数器的最大值为 M,计数值为 N,初值为 X, X的计算方法如下: 计数状态: X= M – N 定时状态: X= M – 定时 时间 /T 而 T= 12 / 晶振频率 选用的是 12MHZ 的晶振,所以计数脉冲周期 T=1us,模式 3 下计数最大值 M为 256,通过计算的初值 X=FC18H,再通过程序的编写,便得到了 1ms 定时, 要选择单片机工作模式定时器为工作模式 3即 TMOD赋值 0x11,定时器寄存器 TH0,TL0构成计数器 T0,定时器寄存器 TH1,TL1 构成计数器 T1,寄存器之间都是通过内部总线和控制逻辑电路连接起来的, 1ms 的定时,要将 0xfc 送 TH0, 0x18 送 TL0,这样就可以得到 1ms 的定时。 递增斜 波的实现通过赋一个计数初值 0, 送给 0832 输出,然后 进行自加 送出显示 ,到 256 再溢出,又从 0开始循环,通过 DA0832 进行数模转换形成递增斜波, 递增斜波流程图 如下: N Y 图 递增斜波流程图 开始 model_count赋初值 0 送数给 0832 输出 model_count=ffh。 model_count+1=model_count 南昌航空大学士学位论文 18 递减斜波流程图 递减斜波和递增斜波刚好相反,递增斜波是通过自加的方式,而递减斜波则是通过从 ffh 一直自减到 00h 送数, 本设计中递减斜波计数选用的是 下面mode2_count 是 递减斜波的程序流程图 所示 : N Y 图 递减斜波流程图 方波流程图 方波和递 增递减类的波形不一样,思路是不一样的,要实现一个方波的输出,要把 256 个点的一半送一个数,表示高电平,另外 128 个数字全部再送一个数,在这本设计中高的送 ffh,低的赋值 00h, 这就实现了方波的输出, 计数选用的是 mode3_count,下面是部分程序, mode3_count 初值赋 值 00h,通过 if 语句实现所要的功能。 方波的流程框图 如下: 开始 mode2_count赋初值 ffh 送数给 0832 输出 mode2_count=00h。 mode2_count1=mode2_count 南昌航空大学士学位论文 19 N Y 图 方波流程图 三角波流程图 三角波和方波,递增、递减斜波的思路差不多,算是递增、递减斜波合在一起的波形,三角波在左半边上升部分和递增斜波一样选用从 00h 自加到 ffh,右半边波形和递减斜波一样,从 ffh 自减到 00h,然后再进行大的循环 从而形成了开始 mode3_count赋初值 00h 送数 ffh 给 0832输出 mode3_count〉 =80h。 mode3_count+1=mode3_count 送数 00h 给 0832 输出 mode3_count+1=mode3_count 溢出 南昌航空大学士学位论文 20 三角波,在这里不能选择溢出自动重复,设计中另外设置了一个参数,run_mode4_fx,代表三角波上升下降的方向 ,计数使用 mode4_count, 三角波流程图如图 : N Y 图 三角波流程图 开始 mode4_count赋初值 00h 送数给 0832 输出 mode4_count=ffh。 mode4_count+1=mode4_count 送数给 0832 输出 mode4_count1=mode4_count 到 0 溢出 南昌航空大学士学位论文 21 正弦波流程图 正弦 波在本设计中波形的显示采用的是查表法,通过事先建立好的表格数据进行查询送数给 DA0832 显示,也尝试了调用函数法进行计算正弦值,在尝试过后,发现调用函数法对单片机的影响很大,不能及时处理中断指令,故而在最后采用了查表法, 把表值赋给 mode5_count, 正弦波程序流程图如图 所示: Y N 图 正弦波流程图 阶梯波流程图 阶梯波等于是一小段一小段方波的集合体, 只不过不是向方波那样高低电平交替输出,而是一小段一小段不断的波形,就像阶梯一样, 在本设计中 上升 计数用 mode6_count 处理 ,采 用 = 用 mode6_count 对 20 进 行模 运算 , 对mode6_count%20==0 进行判断, 每 20 个数全取一个值送 0832,也是一直自加到ffh溢出然后重复送,形成阶梯波, 可以改变模的数字达到不同的效果,达到 设计 需要的阶梯波 ,如图 为阶梯波流程图: 开始 查 表格 值 mode5_count送 0832 mode5_count+1=mode5_count mode5_count 赋值 00h mode5_count〈 360。 南昌航空大学士学位论文 22 N Y N Y Y 图 阶梯波流程图 按键消抖和动态显示 在使用按钮选择各个波形时还需要有延时子程序 ,达到按键消抖的作用,要不然会导致无法判断按键情况或者按一次被误判为多次按下的现象, 而要动态显示也是需要延时的,本设计中按键消抖模块设置的时 10ms 的延时,当按下一次键后, 10ms 后再进行检测一次标志位状态,以达到按键消抖的作用, 而动态显示由于要肉眼辨别不出来,设计中取了 1ms 的延时进行扫描显示,这样就可以达到动态显示的效果。 开始 mode6_count 送 0832 输出 mode5_count+1=mode5_count mode6_count 赋值 00h mode5_count%20=0。 mode5_count〈 ffh。 南昌航空大学士学位论文 23 第五章 Proteus软件仿真 仿真电路图 在 想好设计方案后,就需要 proeus 软件进行仿真设计,验证自己想法的正确性,由于软件可以加载程序进单片机进行调试 ,所以仿真是必不可缺的一部分内容,在仿真时要熟悉 proteus 软件的一些基本操作方法,常用元器件的名称,及连线方法的使用,例如电阻是 RES,电容是 CAP,也要善于使用软件的搜索功能,找到自己需要的一些软件 ,如图 是硬件仿真图: 图 硬件仿真图 由上图可以知道,下面那部分是 4 位共阳数码管显示模块,用 4 个 pnp 三极管驱动,这样的做法好处是连线简单,选通状态由单片机的 IO 口直接控制, 左上角是电源指示灯,用来指示电源是否连接上了,单片机左边分别是晶振电路和复位电路, p0口外接上拉电阻接数码管断选, p2口接 DA0832 的 8位数据输入端,D0D7,然后 DA0832 模拟电流输出端 2 接双极性放大电路,把电流信号转换为电压信号,然后 口外接一个 button 按键 ,每按下一次, 口变为低电平,从而相应的改变波形。 波形仿真 在完成波形仿真图后,检查无误后,把在 uv2 中编译好的程序生成的 .hex南昌航空大学士学位论文 24 后缀的文件加载进仿真图中的 52 单片机中 ,运行仿真调试,调试中,正弦波用了两种方法实现 波形,查表和调用函数,调用函数的话反应比较慢,从正弦波变换成别的波形,考虑再三换成查表法产生正弦波。 下面是仿真现象: 递增斜波 仿真 如图 所示: 图 递增斜波仿真图 递减斜波仿真如图 所示 : 图 递减斜波仿真图 南昌航空大学士学位论文 25 方波仿真如图 所示: 图 方波仿真图 三角波仿真如图 所示: 图 三角波仿真图 正弦波仿真如图 所示: 南昌航空大学士学位论文 26 图 正弦波仿真图 阶梯波仿真如图 所示: 图 阶梯波仿真图 南昌航空大学士学位论文 27 第六章 PROTEL 画原理图和 PCB 图 PROTEL 原理图 在仿真完成后,就要开始为 PCB 板做好准备工作了,制作 PCB 版需要的软件是 PROTEL,在绘制 一个 PCB 板之前,需要这个电路的原理图, 下载了 PROTEL 99se 软件安装后,开始做准备工作,有些芯片和元器件是没有相对应的原理图封装的,在这要学会自己制作与实物管脚一致的元件封装,像 52 单片机和 DA0832 芯片的库文件 就需要自己进行制作了, 把需要的元器件摆放好后,按照仿真图进行连线,在连线完毕后,要进行电气法则检测,排除掉一些连线错误和网络标号问题。 画好的 PROTEL 原理图如图 所示: 图 PROTEL 原理图 南昌航空大学士学位论文 28 PCB图。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。