单片机原理及应用课程设计-基于stc89c52的信号发生器内容摘要:

0832 单缓冲方式是控制输入寄存器和 DAC 寄存器同时接收资料 ,或者只用输入寄存器而把 DAC 寄存器接成直通方式。 此方式适用只有一路模拟量输出或几路模拟量异步输出的情形。 波形产生过程 1)方波产生过程 方波的实现只需开始 的时候设置一个初值然后直接输出这个值就行了 ,输出一段时间后 ,然后再重新置一个数据 ,然后再输出这个数据一段时间 ,但是此时的时间一定要等于前面那段时间。 这样才是一个方波。 由此可以调节两个电压维持的时间 ,产生占空比不同的方波 ,相比于模拟电驴 ,这样的方式输出的方波占空比更加精确 ,且电压更加稳定。 2)三角波产生过程 三角波的输出的基础是锯齿波 ,将锯齿波的产生当作是三角波的前半部分 ,然后再相反的举行减法 ,逐渐减为零 ,如此循环 ,即可产生三角波。 类似的 ,通过改变延时时间可以改变输出的频率 ,通过改变最大值 ,可以改变输 出的电压。 输出的波形连续性好 ,且波形很光滑。 3)正弦波产生过程 正弦波的实现实际上是一个查表过程 ,所查的每一个值都对应着一个电压 ,并且对应着的电压汇成图形即为正弦波 ,然后重复这样一个过程即可产生连续的正弦波 .产生的正弦波 ,波形光滑且频率可调。 Protues 仿真 1 仿真连接图 图 8 仿真连接图 2 仿真波形图 图 9 三角波仿真图 图 10 方波仿真图 图 11 正弦波仿真图 调试及实验结果 1 开始时 ,我们并未接低通滤波电路。 因此所得到的波形误差很大 ,但是基本形状大致一样。 图 12 实际方波图 1 图 13 实际三角波图 1 图 14 实际正弦波图 1 最终 ,我们加入低通滤波电路之后 ,所得到的波形图得到了很大的改善 ,但是由于我们设计的波形频率范围在 1000Hz 以下 ,所以还是有一些误差。 图 15 修改后的实际三角波 图 16 修改后的实际方波 图 17 修改后的实际正弦波 实验中遇到的问题 错误 1) 最初 LCD1602 显示错误 ,总是一排黑方块。 后来通过搜索 ,终于知道是因为初始化程序有问题 ,改正之后正常显示。 2) 在实验室调试波形时 ,最开始因为没有加低通滤波器 ,导致输出波形失真严重。 后来加了低通滤 波电路后 ,效果大大改善。 3) 开始复位电路不起作用 ,后来经检查是因为线路连接时出现问题 ,最后复位电路正常。 不足 1)由于我们设计的低通滤波电路截止频率为 1500Hz,而信号发生器的频率范围在 1000Hz 以下 ,因此还是有噪声的影响。 2)由于运放的参数是理想值 ,实际有差距 ,因此幅度误差比较大。 3)本设计只能频率可调 ,幅度无法调整。 心得体会 通过这次课程设计 ,令我们对单片机有了更好的掌握 ,锻炼了我们的编程能力 ,在课程设计中 ,我们遇到的最大的挑战 ,就是对程序的调试 ,我们收获最大的地方也 在于此 ,我们需要逐条运行每一小段调试程序 ,逐段逐句进行编程调试 ,我们尝试用汇编和 C 语言两种语言进行编程 ,将课上的学习的知识进行了运用。 在此次试验中 ,我们还深刻体会到了理论与现实的差别。 在 Protues 仿真中 ,只要将线路连接好后 ,所得的仿真结果便是理想中的波形 ,而现实中还必须考虑到电路中的噪声 ,电磁干扰等。 通过此次课程设计 ,我们真的学到了许多课堂上学不到的实战经验。 参考文献 《单片机原理与应用设计》 ,张毅刚 , 电子工业出版社 , 2020 年。 《单片微机原理及其接口技术》 ,胡汉才 ,清华大学出版社 ,2020 年。 《单片机原理与应用》 ,孙亟芳 ,北京航空航天大学出版社 ,2020 年。 《单片机程序设计基础》 ,周航慈 ,北京航空航天大学出版社 ,2020 年。 附录 程序清单 1 波形生成数组 () ifndef __PLTABLE_h__ define __PLTABLE_h__ /***********这两组数组很重要 ,需要根据波形来调试 ,选择合适的值 ,使输出波形达到频率要求 ************/ uchar code waveTH[] 0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xec,0xf6,0xf9,0xfb,0xfc,0xfc,0xfd,0xfd,0xfd,0xfe。 uchar code waveTL[]0x16,0x9a,0x20,0x5e,0x88,0xa3,0xb8,0xc3,0xce,0xd6, //正弦波频率调整中间值 0xbc,0xce,0x58,0x8a,0xa9,0xbf,0xcb,0xd8,0xe0,0xee, //三角波频率调整中间值 0x98,0x60,0xa0,0x42,0x44,0xce,0x5a,0xb3,0xf5,0x3c。 /*************************************************************************************************/ uchar code triangle_tab[] //每隔数字 8,采取一次 0x00,0x08,0x10,0x18,0x20,0x28,0x30,0x38,0x40,0x48,0x50,0x58,0x60,0x68,0x70,0x78, 0x80,0x88,0x90,0x98,0xa0,0xa8,0xb0,0xb8,0xc0,0xc8,0xd0,0xd8,0xe0,0xe8,0xf0,0xf8,0xff, 0xf8,0xf0,0xe8,0xe0,0xd8,0xd0,0xc8,0xc0,0xb8,0xb0,0xa8,0xa0,0x98,0x90,0x88,0x80, 0x78,0x70,0x68,0x60,0x58,0x50,0x48,0x40,0x38,0x30,0x28,0x20,0x18,0x10,0x08,0x00。 uchar code sine_tab[256] //输出电压从 0 到最大值 (正弦波 1/4 部分 ) 0x80,0x83,0x8。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。