工程实践与科技创新-第7组设计报告组长陈曦东(电子版)内容摘要:

igit[1]和 digit[2]始终为零,而 digi[2] =(test_counter)/10+20 digi[3] = (test_counter%10),再通过函数 unsigned char NUMTOSEG7(unsigned char DATA) 来确定输出。 2. digi_scaner,变量类型 unsigned char 储存类型 xdata 该变量为 数码管扫描驱动指针,变量的四个取值( 1,2,3,4)分别代表 这四个数码管,通过 digi_scaner变量来轮流驱动四个数码管显示增益。 2. 扩展任务 3. form , 变量类型 unsigned char 储存类型 xdata 该变量作为拓展任务中单片机四种工作模式的状态的储存变量,即当 form=1时,单片机作为音乐播放器,播放喀秋莎,当 form=2 第 20页 上海交通大学 电子信息与电气工程学院 时,单片机作为函数发生器,在输出端产生方波,当 form=3时,单片机在输出端产生锯齿波,当 form=4时,单片机在输出端产生正弦波。 form接收来自。 4. fre ,变量类型 unsigned char 储存类型 xdata 该变量用于控制函数发生器产生波形的频率,即当 form=2或 3或4时,当 fre分别等于 1,2,3时,函数发生器将分别产生 3个不同频率的信号。 fre接收来自。 5. /* 播放乐曲功能变量 */ audio_frequency 变量类型 unsigned int // 播放中,当前的音频频率 audio_ptr 变量类型 unsigned int audio_ptr,audio_dura。 audio_dura 变量类型 unsigned int // 辅助读谱指针、持续时间计数变量 bit buzzer_flag。 // 辅助状态标志 这四个变量用于音乐播放器播放喀秋莎,用于根据音乐中的各个音符的参数来确定 ,以在蜂鸣器处得到喀秋莎音乐。 第 21页 上海交通大学 电子信息与电气工程学院 流程逻辑 基础部分 图 main()函数程序流程图 对 P1 的四个按键的信号的接收及对 test_counter 的赋值在主函数中进行,而具体的显示工作将在 T0 的中断程序中进行。 图 第 22页 上海交通大学 电子信息与电气工程学院 图 为基础部分 T0 计时器中断服务程序流程图 图 下面将给出驱动数码管显示的具体过程 T0 计时器中断程序每各 5ms 运行一次。 四个数码管无法同时显示,只能按照顺序在 T0 终端服务程序每运行一次时驱动一个七段管,由于每秒钟 第 23页 上海交通大学 电子信息与电气工程学院 T0 中断程序运行 200 次,每个七段管被驱动 50 次,由于视觉暂留效果,人脑将认为四个七段管同时亮。 T0驱动程序每运行到需要驱动数码管时,首先判断 digi_scaner的值 ,digi_scaner= 4分别对应着四个七段管,即该次执行驱动的那个七段管。 然后对 output_sel的四个位赋值选定指 定七段管并执行 ADDR_8SEG = NUMTOSEG7(digi[])和 ADDR_SEL = output_sel语句,驱动数码管并显示相应的数字。 第 24页 上海交通大学 电子信息与电气工程学院 拓展部分 图 为拓展任务 main()函数程序流程图 图 第 25页 上海交通大学 电子信息与电气工程学院 图 为拓展任务 T0 计时器中断服务程序流程图 图 其中喀秋莎音乐播放关于音符参数问题较为复杂,下面将给出详细解释。 第 26页 上海交通大学 电子信息与电气工程学院 程序中,整个喀秋莎的音乐是由一个二维数组储存,即由一个 2*n 的矩阵储存( n 为音符的总数目),这个数组的每一行的两个数据,反别代表着一个音符的频率和音符持续长度。 例如 music_data[1][]= {440,600},440 代表频率值, 600 代表持续时间即节拍值。 当程序运行到该音符时,首先对其频率值进行计算,利用 audio_frequency=0xffff460800/music_data[audio_ptr][0]+15 来确定定时器 T1 的初值,而以后每次执行 T1 的中断程序时时, 的输出都会发生改变,由 1 变为 0 或由 0 变为 1。 由于不同的音符, T1计时 器所对应的初值不同,即工作频率不同,就使得 0 间的变换频率不同,产生不同频率的交流电,通过蜂鸣器即能发出相应的音符。 而 600 需用 来 保 证 该 音 符 持 续 的 时 间。 在 执 行 该 音 符 时 , 利 用 语 句audio_dura=music_data[audio_ptr][1]/5,之后每次执行 T0 计时器中断程序时,若 audio_dura 不为零,则程序将运行 audio_dura,而跳过复杂的对音符的处理部分,在这段时间内,定时器 T1 将一直以根据这个音符已确定的初值进行工作,直到 audio_dura=0,程序将进入下一个音符。 也就是这个频率在 audio_dura 不为零的时间内被保持,而 T0计时器工作频率不变,又保证了 audio_dura 改变相同值时的时间间隔相同,最终实现,该音符被执行的时间和 audio_dura 的初值成正比关系。 图 为拓展任务 T1 计时器中断服务程序流程图 由图易知,该终端服务的任务为根据 fre 和 form两个变量对 P1和 P3进行赋值,已达到所需输出。 第 27页 上海交通大学 电子信息与电气工程学院 图 拓展任务 定时器 T1 的中断程序 描述 功能描述 当作为函数发生器时,根据 form 以及 fre 的值来确定定时器 T1的初值及相应输出 P1和 P3 的值,已完成方波、正弦波、锯齿波的输出。 输入输出项描述 中断函数并不需要输入,其输出为相应的 P1和 P3的值, P1和 P3分别为两个 8 位的二进制数,每个位都对应着单片机的一个输 出端口,例如 当=1 时, 端口输出 +5v 电压,反之,若 =0, 端口输出电压为 0伏。 相关算法的描述 第 28页 上海交通大学 电子信息与电气工程学院 本作品拓展任务所涉及的函数发生均采用逐点赋值法,未使用位运算,所以并未能归纳出算法。 采用逐点赋值的原因 1. 若采用位运算,必然会产生关于四舍五入的误差,这样输出正弦波时,波形的偏差可能会比较大,比如正弦波的波峰和波谷处会出现直线而非平滑曲线。 2. 本小组电路中只连入了 6 个 CD4066 的开关,能够实现的最小倍率为 ,相比之下精度仍显不足,所以为避免误差,人为为点赋值。 基础任务 main()函数描述 功能描述 Main 函数主要功能为初始化单片机,接收 4 个按键的输入信号,并改变电压增益 相关调用函数 main()函数中主要涉及 的 2个函数的调用 void delay(void) 该函数用于按键的去抖。 具体实现过程为使程序对某个变量进行空加操作,例如从 1 加到10000,此过程中按键的一切输入信号都将被忽略,因此可以达到去抖效果。 使用此函数后,若长时间按住按键,则会发现,晶体管上的显示数字将在一定时间后改变,间 隔相同时间后,数字会发生下一次改变。 第 29页 上海交通大学 电子信息与电气工程学院 关于 delay函 数在主函数中调用而非在中断函数中调用的解释:中断函数直接关系数码管的显示,若中断函数的工作频率改变,则会使四个七段数码管显示处于不稳定的状态,即如果在中断函数中调用 delay 函数,在delay 函数执行的较长时间中,中断函数不执行,七段管将会产生闪烁效果,直到 delay函数执行过后,七段管才恢复正常。 void foutput(void) 该函数用于根据 test_counter 的值来确定 P1和 P3 的输出值,以达到电压产生增益的效果。 第 30页 上海交通大学 电子信息与电气工程学院 5. 系统 功能及技术指标测试 测试项目 基础任务:当按下 P1 的四个按键时改变 运放输出端的放大增益,并在七段管上显示当前增益大小。 拓展任务:播放喀秋莎,并以三种频率输出正弦波、锯齿波、和方波。 同时七段管上显示相对应的数字。 测试的资源 测试所需电源三个,分别为 +5V和 +1V和 5V。 需万用表一个 电源引线三双 示波器探头一个 测试时在实验室中,并在电脑上进行少量的工作,例如,向单片机中 拷入程序 测试方法 基础任务的调试 图5-3.1 第 31页 上海交通大学 电子信息与电气工程学院 使用的电路大板上的接线方法为:从左到右 +5V,5V,+1V 万用表一端接地,一端接我们的测量引脚,并调至 直流电压档。 通过调节单片机上的四个按钮,实现控制功能。 第一个键为 + 倍,第二个键位 ,第三个键位到 0倍,第四个键为到。 拓展部分 图5-3.2 使用的电路大板上的接线方法为:从左到右 +5V,5V,+1V 示波器一端接地,一端接我们的测量引脚。 调节第二个键为下一个函数信号,第三个键位上一个函数信号,第四个键为切换频率。 函数信号列表为:方波,三角,锯齿,正弦波。 测试结果及分析 基础部分,测试数据及结果如表 , 由表可知,单片机基 础任务完成较好,各电压增益误差都小于 1%,且测试数据都大于理论值。 根据上文中已给出的计算增益的公式,可知,基础电阻 Rf=8kohm,选取稍大,若在其两端并联一较大电阻,则能够更小的减小误差。 表 基础部分测试结果 序列号 输入电压 (V) 输出电压 (V) 显示增益 实测增益 误差 (%) 1 % 2 % 3 % 4 % 5 % 6 % 7 % 第 32页 上海交通大学 电子信息与电气工程学院 8 % 9 % 10 % 11 % 12 % 13 % 14 % 15 % 拓展任务的测试结果见图 ( 1), ( 2), ( 3)(方波,三角波,正弦波的三种换频输出)。 第 33页 上海交通大学 电子信息与电气工程学院 6. 致谢 首先感谢指导老师袁焱对我们的指导。 由于我们是完全的新手,之前也没有使用单片机的经验,所以一开始全要靠老师带领我们入门。 老师给的ppt 与上课的讲解大大简化了我们自己探索的步骤,让我们少走了很多弯路。 我记得一开始时我们完全不知怎么办,但是看到老师的电路设计图纸后,我们对我们的任务有了感性上的认识。 于是我们慢慢的解出了电阻值,考虑了去除内阻的干扰等等问题。 老师告诉我们理解放大器时要把它想成那种 理想中的物理模型,于是我们更好的理解了虚短,虚断,虚地的概念。 在我们困惑的时候,老师的课程常常让我们有灵感。 感谢检测的老师,感谢你耐心的等待我们完成检测,并给出指导意见。 我们的检测并不是一帆风顺的。 犹豫我们组的万用表有些问题,检测的过程中出现了故障,老师在一旁等待我们排除故障,很有耐心。 另外,我们的示波器在检测中也出了问题,后来不得不换一个工作台进行测试。 在整个过程中,老师都很和蔼,是我们放松了原来紧张的心情。 最后测试比较圆满的完成了。 我们认为,如果不是检测老师的耐心,我们可能会因为急躁而做错事情。 我们组 都十分感谢老师。 最后是器材室的负责人。 在整个课程中,我们更换了不少器件,每次去更换时,器材室的老师都能准确地找到我们的部件。 虽然说起来惭愧,但是我们几次零件换下来,也和那边的老师混熟了,想想这件事也丰富了我们的实验过程。 总之,一个项目的完成,有很多人的帮助。 包括哪些管理实验室的老师们,那些我们没有提到的人。 没有你们,我们的项目不会如此顺利的做出来。 在这里,。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。