ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:155.97KB ,
资源ID:10763263      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10763263.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(频率计报告课程设计doc.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

频率计报告课程设计doc.docx

1、频率计报告课程设计doc数字频率计内容提要:本系统以单片机为控制核心,由信号发生模块、单片机最小系统模块、显示模块组成。测量时,将被测信号送给单片机,通过程序控制计数,所得结果由单片机P0口和P2驱动LED数码管显示频率值。信号发生电路由电容充放电再经非门整形得到一个频率为7100Hz的矩形波信号,作为测试信号送入单片机的P3.4口,再由单片机检测与计算,送入数码管显示。该频率计具有电路结构简单、成本低、测量方便、精度较高等特点,适合测量低频信号。关键字:单片机 数码管 动态扫描 定时器 二十进制转换一、 系统功能论述1、本次设计的意义在电子技术中,频率是最基本的参数之一,并且与许多电参量的测

2、量方案、测量结果都有十分密切的关系,因此频率计在教学、科研、测量仪器、工业控制等方面都有较广泛的应用。测量频率的方法有多种,其中电子计数测量频率具有精度高、使用方便、测量迅速,以及便于实现测量自动化等优点,是频率测量的重要手段之一。本设计就是用计数的方法,以单片机AT89C51为控制核心,充分利用其软硬件资源,设计并制作了频率计的计数、显示部分。它能精确测量低频信号的频率,这就是本次设计的意义。2、系统功能题目技术指标要求如下:输入脉冲幅度:05V频率测量范围:100100000Hz测量精度:1%显示方式:四位数字显示根据题目要求分析如下:由于使用电源电压最大不超过5V,而且经74LS00接成

3、的非门整形,所以第一个要求必能满足。信号发生电路要产生频率范围为100100000Hz的矩形波信号,根据公式只要使电阻电容满足一定的要求即可。测量精度1%,由于正负1误差的存在,所以最小频率不得低于100Hz,上限频率可以扩大,但也不是无限扩大,根据后面的计算待测信号的频率测量范围可扩大为10050000Hz。另外显示方式为四位数字显示,所以要将测量频率划分为两段为1009999Hz和1000050000Hz。前面一段四位数码管就可以显示了,但后面一段不够显示,就必须进行处理,去掉最后一位,在次高位上加一个小数点,以10000Hz为例,处理后就是10.00,单位变为KHz。本系统功能就是测量频

4、率,并满足上述指标要求。3,系统结构框图图1 系统结构框图4,工作分配此次课程设计我主要负责软件的编写与调试。第一个星期主要是收集资料、焊街电路板和熟悉LCA51仿真软件的使用。电路板的焊接工作主要由我同伴负责,电路板的调试是由我们共同完成的,然后共同熟悉软件。第二个星期,我负责写程序,并且各自练习编写一些小程序。经过两个星期的努力,我们终于完成了数字频率计的设计。二、 硬件电路设计1, 硬件电路图图2 硬件管脚图 1)其具体连接方法如下: P34口(即T0)接输入脉冲信号。 XTAL1与XTAL2管脚接两个20pF电容和12 MHz晶振构成时钟电路。 RST管脚接510电阻,10 F电容及复

5、位开关构成人工复位电路。P2.4P2.1接驱动7407的四个输入端,四个输出端接数码管的位选通端。P0.0P0.7接数码管的段选线。2)元件参数如下R1=R2=510,C1=C2=10uf,C3=C4=20pf。一片74ls00接成非门使用,用于整形。一片7407用于驱动数码管。四个共阴极数码管,一个8路排阻,阻值为330。2, 各模块电路的实现及其功能1) 信号发生模块参考图2可知,利用电容的充放电,产生近似矩形波的波形,再经非门整形,就可以得到标准的矩形波,若波形不够标准,可多接入几个非门。频率计算公式为:f=1/2.2*R2*C2 (1)上述取R2=510, C2=10uf,计算得到f=

6、8900Hz,但由于元件本身并不标准,且有较大误差,以及接入电路后存在的一些干扰,从示波器实测得到的频率为7100Hz。2) 单片机系统模块选择单片机是因为有编程灵活、易调试的特点,而且它的引脚较多,利于电路的设计。它内部集成了CPU,RAM,ROM,定时器计数器和多功能I0口等一台计算机所需的基本功能部件。晶振由外部接入,各个并行口可直接使用,故直接接数码管的段选线,使得硬件设计易于实现,且简化了程序。单片机的主要功能就是定时一秒钟,统计被测信号的周期个数,在转换、存储、送给单片机的并行口和驱动7407。3) 数码管显示模块LED显示器采用动态显示方式。显示时将所有位的段选线相应的并联在一起

7、,由一个8位IO口即P0口控制,形成段选线的多路复用。驱动器7407连接位选部分,由P2.4p2.1口控制。由于各位的段选线并联,段选码的输出对各位来说都是相同的。同一时刻,如果各个位选线都处于选通状态的话,四位的LED将显示相同的字符。要各位LDE能够显示出与本位相应的显示字符,就须采用扫描显示方式。即在同一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段选线上输出相应位要显示字型码,这样同一时刻,四位LED中只有选通的那一位显示出字符,而其他三位则是熄灭的。而在下一刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,在段选线上输出相应位将要显示

8、字符的字符码。 这样循环下去,就可以使各位显示出将要显示的字符,虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其他各位熄灭,但由于人眼有视觉残留现象,只要每位显示间隔足够短,则可造成多位同时亮的效果。所以数码管的作用就是动态显示频率值。三、 软件设计1、测频工作原理1)工作方式选择对一秒钟内的输入脉冲进行计数,计数的个数即为频率。由此可见首先要实现一秒定时。在采用12 MHz的晶体振荡器的情况下,一秒的定时已超过了定时器可提供的最大定时值。为了实现一秒的定时,采用定时和计数相结合的方法实现。选用定时器T1作定时器,工作于方式1产生5 ms的定时,再用软件计数方式对它计数200次,

9、就可得到一秒的定时。而将T0设为计数器工作方式,工作于方式1,所以待测输入信号从P3.4(定时器T0外部计数脉冲输入线)输入。2)定时器和计数器的初值计算 将定时器计数器的方式寄存器TMOD,用软件赋初值15H,即00010101B。这时定时器计数器1作为定时器,则方式选择位CT设为0,采用工作方式1,即16位定时器;定时器计数器0作为计数器,则方式选择位CT设为1,也采用工作方式1,最大可计到65536。计数器的初值必然设为0,重要的就是计算定时器T1 的初值。计算定时器T1初值:设计数初值为X,定时时间为5000us。根据公式:X=65536T*fosc/12 (2)式中T为定时时间,fo

10、sc为晶振频率。本设计采用12 MHz的晶振。则X=655365000*12/12=60536,所以计数初值为60536,用十六进制表示EC78H。则把ECH赋给TH1,把78H赋给TL1。3)待测信号频率范围计算及占空比要求 当定时器计数器T0设定为计数方式时,其计数脉冲的来源是T0端口的外部事件。内部硬件在每个机器周期采样外部引脚的状态,当一个机器周期采样到高电平,接着的下一个机器周期采样到低电平时计数器加1,也就是说在外部输入电平发生负跳变时加1。计算机需用两个机器周期来识别1次计数,因而最大计数速率为振荡频率的124。在采用12 MHz晶振的情况下,单片机最大计数速度为05 MHz即5

11、00 kHz。所以将待测信号的测量频率范围扩展为10050000Hz。 另外,此处对外部事件计数脉冲的占空比(即脉冲的持续宽度)无特殊要求,但必须保证所给出的高电平在其改变之前至少被采样1次,即至少保持1个完整的机器周期。2、计数所得数据处理1)二进制十进制转换单片机采集得到的数据是二进制数,要送入数码管显示,就必须转换为十进制。转换原理如下:一个整数的二进制表达式为: (3)根据多项式计算方法可改写为:初值:B=0;i=m-1 (4) (5)结束条件:i0。由这个公式可见,我们只要分别对部分和按十进制数运算方法进行乘2和加bi的运算,就可得到十进制的转换结果,但转换结果是压缩的BCD码。2)

12、压缩BCD码转换成非压缩BCD码压缩BCD码R4R5R6,以R5为例,首先赋给A,再将A的低四位清零,高四位保持不变,然后将高低四位调换,就得到了压缩BCD码的高四位,同理再将R5赋给A,A的高四位清零,低四位保持不变,就得到了压缩BCD码的低四位。以此类推,逐个转换为非压缩BCD码。3)数码管显示从图2中可看出,P0.0P0.7对应的分别是数码管的b、a、f、g、e、d、c、h,所以字型码和字符码的对应关系,如表1所示。表1字符码字型码字符码字型码077H0.F7H141H1.C1H23BH2.BBH36BH3.EBH44DH4.CDH56EH5.EEH67EH6.FEH743H7.C3H8

13、7FH8.FFH96FH9.EFH共有四个数码管,用扫描的方式显示,每一个时刻只选通一个数码管。P2.4P2.1分别驱动一个数码管,所以驱动电路的字型码为EFH、F7H、FBH、FDH。定时器每中断一次,就显示一位数码管,但这短暂的时间人眼是无法识别的,所以人眼看到的是静态显示。3、软件程序框图1)主程序框图主程序中包含初始化,二十进制转换程序和压缩BCD码转换成非压缩BCD码程序。其中二十进制转换程序和压缩BCD码转换成非压缩BCD码程序是循环调用的。图3 主程序框图2)数码管显示的调用函数框图当频率低于10KHz时,调用函数有四个,QIANW调用函数、BAIW调用函数、SHIW调用函数、G

14、EW调用函数,分别对应数码管的从左到右四位。当频率不低于10KHz时,调用函数也有四个,QIANW1调用函数、BAIW1调用函数、SHIW1调用函数、GEW1调用函数,分别对应数码管的从左到右四位。TAB和TAB1是供查表用的。TAB:DB 77H,41H,3BH,6BH,4DH,6EH,7EH,43H,7FH,6FHTAB1:DB 0F7H,0C1H,0BBH,0EBH,0CDH,0EEH,0FEH,0C3H,0FFH,0EFH图4 频率低于10KHz时的数码管显示调用框图图5 频率不低于10KHz时的数码管显示调用框图3)中断函数结构框图动态扫描显示时间是由定时器1决定的,每中断一次,则显

15、示一个数码管,依次从左往右显示。中断函数主要负责调用显示程序和存储计数得到的频率值。图6 中断函数结构框图四,软件源程序代码数字频率计的程序和解释说明如下:ORG 0000H ;程序复位入口地址AJMP MAIN ORG 001BH ;计时器T0的中断入口AJMP PTF0 ;跳转到中断程序中ORG 0033H ;主程序入口地址MAIN:MOV SP, #60H MOV TH1, #0ECH MOV TL1,#78H ;定时5MS SETB EA ;开放CPU中断 SETB ET1 ;开放定时器中断 MOV TH0,#0 MOV TL0,#0 ;给计数器T0赋初值0 MOV TMOD,#15H

16、 ;计时器T1工作在方式1定时模式,计数器T0工作在方式1 计数模式 MOV 30H,#0C8H ;循环200次,共定时1S MOV 40H,#0 ;用于判断显示数码管哪一位 SETB TR0 ;启动计数器0 SETB TR1 ;启动定时器1LOOP1:ACALL ZHUANH ;将二进制数转换为压缩BCD码 ACALL CHAIF ;将压缩BCD码转换为非压缩BCD码 AJMP LOOP1 ; 循环处理计数器T0采集得到的数据 PTF0:MOV TH1, #0ECH MOV TL1,#78H ;给定时器T1重新赋值 INC 40H ;数码管判断位加1 MOV A,50H CJNE A,#00

17、H,DAY ;判断50H单元是否为零,若为0继续往下执行,若不为0,则跳转到子程序DAY中 MOV A,40H ;每5ms显示一位,从最高位开始,到最低位时,返回高位 CJNE A,#1,LOP1 ACALL QIANW AJMP TIAO LOP1:CJNE A,#2,LOP2 ACALL BAIW AJMP TIAO LOP2:CJNE A,#3,LOP3 ACALL SHIW AJMP TIAO LOP3:ACALL GEW MOV 40H,#0 AJMP TIAO DAY: MOV A,40H CJNE A,#1,LP1 ACALL QIANW1 AJMP TIAO LP1:CJNE

18、A,#2,LP2 ACALL BAIW1 AJMP TIAO LP2:CJNE A,#3,LP3 ACALL SHIW1 AJMP TIAO LP3:ACALL GEW1 MOV 40H,#0 TIAO:DJNZ 30H,PTFR ;判断是否到1S MOV 20H,TH0 MOV 21H,TL0 ;将计数器T0中的数转移到20H,21H中 MOV TH0,#0 MOV TL0,#0 ;将计数器T0重新赋0 MOV 30H,#0C8HPTFR:RETIZHUANH:MOV R2,20H ;将计数得到的值存入R2和R3中 MOV R3,21H CLR A MOV R4 ,A ;将R4、R5、R6清

19、零 MOV R5 ,A MOV R6,A MOV R7,#16 LOOP:CLR C ; 将16位二进制数逐位左移一位 ,移得的数据放入进位C中 MOV A,R3 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A MOV A,R6 ;(R4R5R6)+(R4R5R6)+C=(R4R5R6)*2+C ADDC A,R6 DA A MOV R6,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A DJNZ R7,LOOP RET CHAIF:MOV A,R5 ;将压缩BCD码R4R5R6

20、转换为非压缩BCD码 ,从高到低依次放于50H、51H、52H、53H、54H ANL A,#0F0H SWAP A MOV 51H,A MOV A,R5 ANL A,#0FH MOV 52H,A MOV A,R6 ANL A,#0F0H SWAP A MOV 53H,A MOV A,R6 ANL A,#0FH MOV 54H,A MOV 50H,R4 RETQIANW: MOV A,51H ;频率不超过10KHZ时,以HZ为单位,四位显示,最高位为千位,以此类推 MOV DPTR,#TAB ;千位上显示51H单元中的内容 MOVC A,A+DPTR MOV P0,A MOV P2,#0EFH

21、 RET BAIW:MOV A,52H ;百位上显示52H单元中的内容 MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A MOV P2,#0F7H RET SHIW:MOV A,53H ;十位上显示53H单元中的内容 MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A MOV P2,#0FBH RET GEW:MOV A,54H ;个位上显示54H单元中的内容 MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A MOV P2,#0FDH RET QIANW1:MOV A,50H ;频率大于10KHZ时,小数点放千位,以KHZ为

22、单位,省去个位,以四位显示 MOV DPTR,#TAB ;千位上显示50H单元中的内容 MOVC A,A+DPTR MOV P0,A MOV P2,#0EFH RET BAIW1:MOV A,51H ;百位上显示51H单元中的内容和显示小数点 MOV DPTR,#TAB1 MOVC A,A+DPTR MOV P0,A MOV P2,#0F7H RET SHIW1: MOV A,52H ;十位上显示52H单元中的内容 MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A MOV P2,#0FBH RET GEW1:MOV A,53H ;个位上显示53H单元中的内容 MOV D

23、PTR,#TAB MOVC A,A+DPTR MOV P0,A MOV P2,#0FDH RET TAB:DB 77H,41H,3BH,6BH,4DH,6EH,7EH,43H,7FH,6FH ;09 TAB1:DB 0F7H,0C1H,0BBH,0EBH,0CDH,0EEH,0FEH,0C3H,0FFH,0EFH ;0.9. NOP END 五、调试与结果分析1、硬件调试焊好电路后,首先检查是否有虚焊,如果没有,再上电检测。电源接好后,第一步检测各芯片是否得电;第二步检测信号源是否产生信号、信号是否标准以及频率是多大;第三步检测数码管是否管用以及连线是否正确。第一步和第二步很简单,只要用万用表

24、和示波器直接观测即可,重点是第三步。首先检测数码管的好坏,由于P2.4P2.1控制数码管的位选线,P0.0P0.7接数码管的段选线,而且数码管是共阴的,所以只要将+5V电源的地分别接P2.4P2.1口,若数码管显示8和小数点,说明是好的,四个都检测完后就检查数码管的接线。首先+5V电源的地接P2.4口,电源的正端接一个1K的电阻,分别点触P0.0P0.7,若点触到哪一个口,相对应的二极管熄灭,说明连线是正确的。检测完一个数码管,然后用相同的方法检测完四个数码管。2、软件调试本次设计采用的单片机是AEDK51HB仿真机,它具有使用方便灵活,易于调试等特点。所使用的编程软件是LCA51,操作步骤较

25、为简单。首先打开LCA51软件,测试串口,然后新建文件,在内部编程,编完程序,保存就可以了,后缀名为.ASM。接下来就是编译,若有错误,就点击错误提示,找到错误的地方,进行修改,修改完直到没有警告和错误时,在仿真机电源/运行的指示灯为绿色的情况下,点击确定。下载完成以后,点击全速运行,观察检测结果。一开始并不熟悉此软件,想当然的把频率计的程序全部写进去,但并没有得到想要的结果,由于程序太长,又不知道具体是哪出错,所以比较难检查。后来在老师的指导下,我们先编写一些小程序来熟悉此软件,并达到熟练使用的效果。然后将总程序分为四个部分分别检测。步骤如下:a) 第一步先编数码管显示程序,看看数码管能不能

26、从0显示到9,每一位都亮,如果对了,再编写测频的显示程序。利用动态扫描法,逐位显示。b) 第二步编写压缩BCD码拆为非压缩BCD码的程序,编好后可以先设定几个压缩BCD码,利用观察项来观察显示结果对不对,如果不对,就修改程序,改对以后再进行第三步。c) 第三步将二进制十进制转换程序加到第二步所得程序前面,先给定一个16位的二进制数,比如04B0H,转换为十进制数就是1200,观察拆分后单元内容是不是00H、01H、02H、00H、00H,如果正确说明第三步对了,若有错误,则肯定是转换程序有问题,修改正确以后,剩下的就是总程序的初始化和中断函数了。d) 第四步,初始化程序很简单,主要是中断函数。

27、调用主程序,若没有结果显示,先查看初始化有没有问题,再看中断函数,如果觉得有不对的地方,不妨改一下,在仿真看看,是否能测出结果,就这样一步一步调下去,还可以利用单步跟踪观察。我的程序问题就出在中断函数,因为存储单元没有用对。3、 测量结果误差分析测量结果与理论计算存在较大的差距,但与示波器的观测结果很相近。究其原因我认为有以下几点:1) 使用的信号发生电路的电阻和电容值,与标称值相差较大。2) 电源波动很大,使得波形不稳定。3) 原理上存在1误差。由于该设计是在计数门限时间一秒内的频率信号脉冲数,所以定时开始时的第一个脉冲和定时时间到时的最后一个脉冲信号是否被记录,存在随机性。4) 晶振的准确

28、度会影响一秒定时的准确度,从而引起测量结果误差。5) 当电路整合在一起时,由于后级电路的影响,存在系统误差。6) 定时一秒钟,是由定时器和计数共同完成的,定时5ms,计数200次,由于定时时间短,时间累加存在较大的误差。但由于硬件电路的要求,必须使用动态显示,且只有一个定时器可供使用,所以定时时间不能变长。4、测量结果误差补偿方法根据以上分析,由于晶振、电阻、电容无法改变,所以我们采用软件的方法来补偿误差。就是多次测量求平均值,我们采用的是8次相加,然后求平均值。 其程序如下:MOV 41H,#9 MOV 22H,#0 MOV 23H,#0 MOV 24H,#0DJNZ 41H,JIAF ;判

29、断是否采集满8次 MOV 41H,#9 ;重新赋值 AJMP YIWEI ;采集满8次,跳转到除8程序,即右移3位JIAf:MOV A,24H ;(24H)+(21H)赋给24H ADD A,21H MOV 24H,A MOV A,23H ;(23H)+(20H)赋给23H ADDC A,20H MOV 23H,A MOV A,22H ;(22H)+C赋给22H ADDC A,#0 MOV 22H,A AJMP PTFRYIWEI:MOV 25H,#3 ;22H23H24H连续三个单元,带进位位右3次 WWW:MOV A,22H RRC A MOV 22H,A MOV A,23H RRC A

30、MOV 23H,A MOV A,24H RRC A MOV 24H,A DJNZ 25H,WWW MOV 26H,23H MOV 27H,24H MOV 22H,#0 MOV 23H,#0 MOV 24H,#0PTFR:RETI此程序放在中断函数内,在定时满一秒钟后的地方。而初值的设定放在主程序的初始化中。从程序中可看出此时测量结果保存在26H、27H两个连续单元内,所以转换程序中 MOV R2,20H ; MOV R3,21H两条指令变为MOV R2,26H ; MOV R3,27H。其他地方基本不需要改动。5、测量结果根据示波器读出的频率为7100Hz,用单片机检测并由数码管显示的频率范围为70557143Hz,其误差在1%范围内。所以满足此项要求,其他项要求也已经满足。六,课程设计体会经过两个星期的练习,我觉得我的编程能力有了很大的提高,对单片机也有了更加深刻的了解。能够快速的编写一些小程序,对于比较复杂一点的程序,我也知道该如何简化,分步进行编写,不但编起来简单,而且易于检查。这次课程设计尽管只有两周的时间,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1