工程实践与科技创新-第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 与上课的讲解大大简化了我们自己探索的步骤,让我们少走了很多弯路。 我记得一开始时我们完全不知怎么办,但是看到老师的电路设计图纸后,我们对我们的任务有了感性上的认识。 于是我们慢慢的解出了电阻值,考虑了去除内阻的干扰等等问题。 老师告诉我们理解放大器时要把它想成那种 理想中的物理模型,于是我们更好的理解了虚短,虚断,虚地的概念。 在我们困惑的时候,老师的课程常常让我们有灵感。 感谢检测的老师,感谢你耐心的等待我们完成检测,并给出指导意见。 我们的检测并不是一帆风顺的。 犹豫我们组的万用表有些问题,检测的过程中出现了故障,老师在一旁等待我们排除故障,很有耐心。 另外,我们的示波器在检测中也出了问题,后来不得不换一个工作台进行测试。 在整个过程中,老师都很和蔼,是我们放松了原来紧张的心情。 最后测试比较圆满的完成了。 我们认为,如果不是检测老师的耐心,我们可能会因为急躁而做错事情。 我们组 都十分感谢老师。 最后是器材室的负责人。 在整个课程中,我们更换了不少器件,每次去更换时,器材室的老师都能准确地找到我们的部件。 虽然说起来惭愧,但是我们几次零件换下来,也和那边的老师混熟了,想想这件事也丰富了我们的实验过程。 总之,一个项目的完成,有很多人的帮助。 包括哪些管理实验室的老师们,那些我们没有提到的人。 没有你们,我们的项目不会如此顺利的做出来。 在这里,。工程实践与科技创新-第7组设计报告组长陈曦东(电子版)
相关推荐
晶显示。 80C51 控制的函数信号发生器暨电 子音乐合成与播放要求设计一种电路,可输出正弦、三角、锯齿、矩形(方波)等数学函数波形,要求波形尽量光滑,并提供人机界面,使操作者可以进行各种设计者自定义的可视交互式操作。 要求编程实现周期性动态连续地改变放大器增益。 设计音乐播放电路,要求能够通过扬声器播放音乐。 FPGA要求实现同 80C51 一样功能的函数发生器暨电子音乐合成与播放的功能
情况说明: 监理单位: 负责人: 审核人: 审核日期: 年 月 日 建 设 单 基建处审定意见: 建设单位: 负责人: 审核人:
;最高增益(绝对值)大于 ; ( 2)放大器的增益至少包括 15个等 级:从 ,以 15种; ( 3)各等级的实际增益值(绝对值)与标准值比较,误差应小于 3%,且越小越好; 第 8 页 上海交通大学 电子信息与电气工程学院 实现方式 核心器件介绍 CD4066 CD4066B 是一个为模拟 /数字信号的转换戒多路复用设计的四路双向开关。 它和 CD4016B 的引脚相兼容
倍至 ,以 为间隔共 15 种; (3)各等级的实际增益值与标准值比较,误差应小于 3%,且越精确越好。 拓展部分 80C51 控制的液晶显示要求显示 16x( 2 行)各种 ASCII 码字符,并提供人机界面,使操作者可通过按键改变液晶显示。 80C51 控制的函数信号发生器暨电 子音乐合成与播放要求设计一种电路,可输出正弦、三角、锯齿、矩形(方波)等数学函数波形,要求波形尽量光滑
可以得知 U+ = U- ; i+ = i_ = 0, Vo = ( Rf / R1 ) Vi 所 以,增益放大倍数为 G=xfio RRVV ,其中反相输入端接可变电阻 Rx,反向输入端与输出端之间皆负反馈电阻 Rf。 在上图中 Rf假设取为 8 千欧。 模拟开关集成块控制的可变电阻模块通过 4066 实现,控制信号对增益的控制是通过改变 Rx 的值实现的:输入不同的控制信号