单片机原理及应用课程设计数字音频测试仪_第1页
单片机原理及应用课程设计数字音频测试仪_第2页
单片机原理及应用课程设计数字音频测试仪_第3页
单片机原理及应用课程设计数字音频测试仪_第4页
单片机原理及应用课程设计数字音频测试仪_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机原理及应用课程设计报告题 目:数字音频测试仪 目录一、课程设计要求1软硬件设计要求1二、设计思路2.1.程序设计基本思路12.2.使用his输入并测量信号周期12.3.测量结果处理和显示部分1三、硬件和软件设计21.硬件部分21.1硬件部分21.2程序流程图32.软件部分(程序清单)42.1程序运行结果92.2误差分析92.3调试过程102.4验收结果10四总结与设计心得10五参考资料11一、课程设计要求题目:数字音频频率测试仪:能测试频率范围2020000hz的信号,误差小于0.1%,实时在led显示测试结果(保留五位有效数据)。具体设计要求1.完成规定的设计内容,包括相应的硬件电路原

2、理图和设计的软件。2.在规定时间验收并回答指导教师的提问。验收时,先在仿真机的led上显示自己学号的后8位,再进行相应内容验收。设计目的:能够获得一个精确的声频信号频率测量软件。二、设计思路1. 程序设计基本思路根据设计的要求,首先进行学号后八位的显示,然后进行频率测量。在学号显示程序段中设计读键子程序,判断是否有键按下,一旦扫描出有按键被按下,则程序立即跳转到频率测量程序段。在程序测量过程中,由于要保留5位有效数字,因此对于小频率便涉及到小数点及小数点后有效位的计算和显示,在设计中为了使程序有较为强的逻辑性,我首先对频率测量范围(20hz20000hz)进行了分段处理,即分为20 hz99h

3、z,100hz999hz,1000hz9999hz,10000hz20000hz,对于四个频率段,每次测量结果都用六位数码管进行显示(包括5位有效数字和1位小数点)。对于不同的测量范围,都进行不同的运算处理(当然处理的原理是相似的,只是存储的路径不同)。2.使用his高速输入测量信号周期本设计中的主要是应用高速输入his进行周期(频率)测量,设置his.1端口每发生一次正跳变触发一个事件,同时his时间寄存器记下该正跳变事件的触发时间,根据两次触发事件之间的触发时间的差值计算出被测周期信号一个周期内所经历的状态周期个数(当然此处要考虑定时器的溢出,即若两次的测量结果的差值小于零,说明两次测量之

4、间发生了定时器溢出,需重新进行测量)。再根据单片机的主频(已给定)计算出一个状态周期的时间,进而计算出被测周期信号的周期,进一步转化为频率。3.测量结果处理和显示部分接下来是对所得频率的处理和显示,根据设计要求,无论是高频率段还是低频率段,最终的显示结果均要保持5为有效数字。因此对于低频段的测量,便涉及到了小数点后有效数字的计算。那么该如何对小数点后数字进行有效处理呢?我们都知道,整数部分相除,所得余数部分与被除数相除即为整个除法运算的小数部分,由于本设计中并不需要完全地显示测量结果,而是仅需要显示小数点后1位到3位数字,这样我们便可以采用简单的算法。即让整数部分相除所得余数部分乘以10再除以

5、被除数,所得商即为第一位小数;让第二次相除所得余数再乘以10再除以被除数,所得商即为第二位小数以此类推便可得到测量结果的小数部分。最后将所得六位数值(包括一位小数点)放到固定的存储单元,在显示部分测量结果的每位数值都作为偏移量叠加到表格首地址上,读取表格相应存储单元,并输出到接口芯片的相应端口进行段选,显示相应位的测量结果,用循环控制数码管的位选,便可显示完整的测量结果(包括5位有效数字和一位小数点)。本次设计程序中也有使用短时的延时子程序,设计简单,方便调用。三、硬件和软件设计1、 硬件部分根据软件设计要求,将硬件实现部分分为学号显示、键盘扫描并跳转、his测量、对测量结果进行处理并显示测量

6、结果。1.1硬件电路设计:本设计中硬件电路主要由mcs-51单片机、接口芯片和仿真机(包括数码管)构成,本实验中根据测量要求只需要在his.1端口与地之间加上被测量信号即可实现设计要求。具体硬件电路及连线如下图所示:1.2程序流程图:start学号循环显示及扫描键盘n判断是否有键按下y进行频率测量频率99hzf=999hz判断频率范围频率999hzf=9999hz 频率20hzf9999hz 结果处理4结果处理1结果处理2结果处理3循环显示测量结果end2、 软件部分(程序清单);-c8255 equ 0c006h ;8255命令口地址p8255a equ 0c000h ;8255 pa口地址

7、p8255b equ 0c002h ;8255 pb口地址p8255c equ 0c004h ;8255 pc口地址;-ax equ 1ch al equ 1ch ah equ 1dhbx equ 1ehblequ1ehbhequ1fhcxequ20hclequ20hchequ21hdx equ 22hdl equ 22hdhequ23hexequ24hfxequ26hglequ28hel equ 30h;- org 2080h ld sp,#00c0h lcall delay ldb al,#82h ;pb口输入,pa,pc口输出 stb al,c82550 sh_no: ldb al,#0

8、0h ldb bl,#0e0hsh1: scall disp scall delay incb al ldb gl,#08h ;键盘扫描第一行 stb gl,p8255c0 skip skip ldb el,p8255b0 ;读键值 xorb el,#0ffh jne start cmpb al,#08h jne sh1 scall delay sjmp sh_no disp: stb bl,p8255c0 ;位选 ld cx,#no extb ax add cx,ax ldb dl,cx stb dl,p8255a0 ;段选 subb bl,#20h ret;-no: db 3fh,3fh,

9、07h,06h,5bh,4fh,5bh,6dh ;学号00712325;-start:ldb ioc0,#04h ;允许hsi.1输入ldb hsi_mode,#04h ;每次正跳变触发一个事件;-test: jbc ios1,7,test ldbx,hsi_timetest1: jbc ios1,7,test1 ldcx,hsi_timesubex,cx,bxjnctest ;定时器有溢出 ld 30h,ex ;8t=1.44678us, f=11.059mhz ext 30hmulu 30h,#0ffffh ;65535/45282 (原始0ffff/bof1) divu 30h,#0b0

10、e2h ld ex,30hld30h,#4240h ;1000 000=0f4240h ld32h,#000fh divu 30h,ex ;除法运算后,字30h中存储频率值整 数部分,要保留5位有效数字 cmp 30h,#270fh jnc loop1 divub 30h,#64h ;分别得到万千百位, 和十个位ldbze 36h,30h divub 36h,#0ah ldb42h,37h ;百位42h ldbze38h,36h divub38h,#0ah ld40h,38h ;万位40h ,千位41hldbze36h,31h divub36h,#0ah ldb43h,36h ldb44h,3

11、7h ;十位和个位值分别存43h和44h ldb45h,#10h ;显示小数点,存于45h sjmp sh_freqloop1: cmp 30h,#03e7h jnc loop2 divub30h,#64h ;分别得到千百位,和十个位 ldbze36h,30hdivub36h,#0ah ld40h,36h ;千位40h,百位41h ldbze36h,31h divub36h,#0ah ld42h,36h ;十位和个位值分别存42h和43h ldb44h,#10h ;显示小数点,存于44h mulub32h,#0ah ;乘以10除以除数,得到第一位小数 ld 34h,32h ext 34h di

12、vu34h,ex ldb 45h,34h ;小数点后第一位存于45h , 小数点 后需一位 sjmp sh_freq loop2: cmp 30h,#63h jnc loop3 divub30h,#64h ;分别得到百位,和十个位ldbze36h,30hdivub36h,#0ah ldb40h,37h ;百位40h ldbze36h,31h divub36h,#0ah ldb41h,36h ldb42h,37h ;十位和个位值分别存41h和42h ldb43h,#10h ;显示小数点,存于43h mulub 32h,#0ah ;乘以10,除以除数, 得到第一位小数 ld 34h,32h ext

13、 34h divu 34h,ex ldb44h,34h ;小数点后第一位存于44h mulub36h,#0ah ;乘以10,除以除数,得到第二位小数 ld 38h,36h ext 38h divu 38h,ex ldb45h,38h ;小数点后第二位存于45h , 小数点后需二位 sjmp sh_freqloop3: divub30h,#64h ;分别十个位 ldbze36h,31h divub36h,#0ah ld40h,36h ;十位和个位值分别 存40h和41h ldb42h,#10h ;显示小数点,存于42h mulub32h,#0ah ;乘以10,除以除数,得到第一位小数 ld 34

14、h,32h ext 34h divu 34h,ex ldb43h,34h ;小数点后第一位 存于43h mulub36h,#0ah ;乘以10,除以除数,得到第二位小数 ld 48h,36h ext 48h divu 48h,ex ldb44h,48h ;小数点后第二位存于44h mulub4ah,#0ah ;乘以10,除以除数,得到第三位小数 ld 4ch,4ah ext 4ch divu 4ch,ex ldb 45h,4ch ;小数点后第三位存于45h , 小数点后需三位 ;- sh_freq: ldbal,#00h ldbbl,#0a0h ld 50h,#40h sh2: scalldi

15、sp1 ;可以增加延时 lcall delay incbal cmpbal,#06h jnesh2 ljmpsh_freq disp1: stbbl,p8255c0 ;位选 ldcx,#datao clrb 1bh ldb 1ah,50h addcx,1ah ldbdl,cx ;段选 stbdl,p8255a0 incb 50h subb bl,#20h ret ;- delay: ld dx,#00ffh ;延时子程序 delay1: dec dx jne delay1 ret ;- datao: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h ;0,1,2,3,4,5

16、,6,7 db 7fh,6fh,77h,7ch,39h,5eh,79h,71h,80h ;8,9,a,b,c,d,e,f,. ;- end1. 程序运行结果:测量结果显示,该软件设计能够有效的对低频信号进行测量,且测量误差较小,满足设计要求(即误差小于0.1%);而在进行大频率测量时,存在着较为明显测量误差,误差范围在1%左右,结果不十分理想。2. 误差分析:经过分析不难发现,误差来源主要有以下三个方面。1.首先是算法的问题。由于程序在进行除法运算时,不能能够直接得到小数位,要想得到小数位,则必须对做商后的余数进行再次运算,由此带来的运算误差和相关存储位数据的丢失时均会给测量结果带来运算误差。

17、2.其次是单片机的主频误差。由于主程序的编写,特别是频率处理部分的运算的准确度和主频的精确度紧密相关。若单片机实际主频率与给定频率存在较大的实际偏差,就会给运算部分带来较为严重的误差,最终的显示结果误差便不可消除。3.另外一个较大的误差因素是,信号发生器本身显示频率的准确度。若信号发生器产生的信号本身的频率测量存在误差,那么单片机的测量结果与其进行对比,便显得没有可比性了,误差也变得难以度量。3. 调试过程:本次课程设计我选择的题目和之前的单片机课程实验有一定的相似之处,难点主要在于五位有效数字的获得和测量精度的保证。因此在调试过程中并没有遇到较大的困难,特别是在进行小频率测量时,测量精度很高

18、,达到了设计要求。而在进行高频率测量时,却出现了较大的误差,在调试过程中,这个问题困扰了我较长的时间,一直在通过调节算法进行修改和矫正,但最后结果却只能是差强人意。我仔细检查了自己的程序算法,发现问题并不在于算法,误差的来源可能来自其他方面,具体分析见上述误差分析部分。4. 验收结果:老师的验收结果是“低频误差较大,且不能进行连续频率测量”。这样的结果着实让我郁闷,本来低频测量是很准确的,结果老师过来测量时测量20hz的方波信号,测量结果却显示19.618,误差确实较大;而进行20000hz的高频测量时却十分准确,这样的验收结果,当时确实有点让我难以接受。但老师却说以验收结果为准!不过频率的连

19、续测量确实是我之前没有想到的,在进行测量时,对不同的频率进行测量,总要对程序重新加载和运行,确实比较不方便。这也是本次设计的不足之处。四、总结与设计心得 本课程设计总的来说还是较为辛苦的,特别是5位有效数字保留和0.1%的测量精度要求,一开始着实难住了我,为此自己查了很多的资料,花了很多的时间去编写程序,然后去调试。尝试了很多方法去实现,调试失败了修改程序,再调试再修改就这样反反复复了很多次,最后才终于找到了合适的解决方法。但即便这样却还是在进行高频测量时出现了较大的误差,面对出现的高频误差,自己不断调整算法,但最终的结果却只能差强人意。最让人感到意外的是,老师的验收结果却与我平时的调试结果刚好相悖,低频不准确高频却相当准确。这样的结果很让我一时难以接受。不过后来想通了,这恰好说明了实验中的误差的随机性和误差出现的偶然性,正是因为不同单片机之间的固有差异和主频误差,使我的测量变的具有一定的随机性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论