单片机数字频率计.docx

上传人:b****4 文档编号:4416796 上传时间:2022-12-01 格式:DOCX 页数:13 大小:127.37KB
下载 相关 举报
单片机数字频率计.docx_第1页
第1页 / 共13页
单片机数字频率计.docx_第2页
第2页 / 共13页
单片机数字频率计.docx_第3页
第3页 / 共13页
单片机数字频率计.docx_第4页
第4页 / 共13页
单片机数字频率计.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

单片机数字频率计.docx

《单片机数字频率计.docx》由会员分享,可在线阅读,更多相关《单片机数字频率计.docx(13页珍藏版)》请在冰豆网上搜索。

单片机数字频率计.docx

单片机数字频率计

单片机课程设计

题目:

数字频率计

班级:

姓名:

学号:

指导教师:

设计时间:

评语:

 

成绩

目录

1.绪论1

1.1数字频率计概述1

1.2任务分析与设计思路1

1.3基本设计原理1

2.硬件系统设计2

2.1系统硬件的构成2

2.2系统硬件各模块简介2

2.2.1晶振电路和复位电路2

2.2.2AT89C51单片机3

2.2.3译码显示3

2.2.4系统硬件电路图3

3.系统的软件设计4

3.1程序流程图4

3.2初始化程序部分4

3.3频率计算5

3.4十六进制转为十进制算法6

4.仿真调试6

4.1仿真结果6

4.2仿真结果分析7

5.总结8

5.1设计小结8

5.2心得体会8

致谢9

参考文献9

附录程序清单9

1.绪论

1.1数字频率计概述

数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。

它是一种用十进制数字显示被测信号频率的数字测量仪器。

它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。

在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。

本数字频率计将采用定时、计数的方法测量频率,采用4个七段显示数码管动态显示频率的数值。

测量范围从1Hz~10kHz的正弦波、方波、三角波,时基宽度为1us,10us,100us,1ms。

用单片机实现自动测量功能。

基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。

它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。

1.2任务分析与设计思路

频率的测量实际上就是在1s时间内对信号进行计数,计数值就是信号频率。

在本次设计使用的AT89C51单片机,本身自带有定时器和计数器,单片机的T0、T1两个定时/计数器,一个用来定时,另一个用来计数,定时/计数器的工作由相应的运行控制位TR控制,当TR置1,定时/计数器开始计数;当TR清0,停止计数。

在定时1s里,计数器计的脉冲数就是频率数,但是由于1s超过了AT89C51的最大定时,因此我们采用50ms定时,在50ms内的脉冲数乘以14就得到频率数,再转换为十进制数出即可。

1.3基本设计原理

本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。

它以测量周期的方法对方波的频率进行自动的测量。

单片机在采用了12MHz的晶体振荡器,采用定时和计数相结合的方法,选用定时/计数器TO作定时器,工作方式1产生50ms的定时,再用软件计数方式对它计数20次,就可得到一秒的定时,然后通过74HC4511译码器将显示管驱动以显示初测量结果。

2.硬件系统设计

2.1系统硬件的构成

本频率计的数据采集系统主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果显示等功能,外部还要有分频器、显示器等器件。

可分为以下五个模块:

晶振电路、复位电路、译码转换、单片机系统、数码显示模块。

各模块关系图如图1所示。

图1系统组成框图

2.2系统硬件各模块简介

2.2.1晶振电路和复位电路

XTAL1与XTAL2管脚接两个22pF电容和12MHz晶振构成时钟电路。

RST管脚接10kΩ电阻,20μF电容上电复位电路。

2.2.2AT89C51单片机

本设计采用的是AT89C51单片机,它提供下列标准特征:

4K字节的程序存储器,128字节的RAM,32条I/O线,2个16位定时器/计数器,一个5中断源两个优先级的中断结构,一个双工的串行口,片上震荡器和时钟电路。

设计中主要用到P2端口与74HC4511译码器连接输出待显示的个位与十位的数据,P1端口与74HC4511译码器连接输出频率计的百位和千位,P3端口连接信号输入电路。

P3是一带有内部上拉电阻的8位双向的I/O端口,它的输出缓冲能驱动4个TTL逻辑门电路。

当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。

作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。

2.2.3译码显示

74HC4511译码器是4线七段译码驱动器,在设计中用它来译码并且驱动数码显示管来显示数值,共需要4个74HC4511和4个七段显示数码管。

89C51单片机P2端口与74HC4511译码器连接输出待显示的个位与十位的值,P1端口与74HC4511译码器连接输出频率计的百位和千位的值。

2.2.4系统硬件电路图

图2系统硬件电路图

3.系统的软件设计

软件设计主要通过编写软件来控制硬件完成以下各模块的功能。

3.1程序流程图

图3程序流程图

3.2初始化程序部分

采用12MHz的晶体振荡器的情况下,一秒的定时已超过了定时器可提供的最大定时值。

为了实现一秒的定时,采用定时和计数相结合的方法实现。

选用定时/计数器TO作定时器,工作于方式1产生50ms的定时,再用软件计数方式对它计数20次,就可得到一秒的定时。

将定时器/计数器的方式寄存器TMOD,用软件赋初值51H,即01010001B。

这时定时器/计数器1采用工作方式1,方式选择位C/T设为1,即设T1为16位计数器。

定时器/计数器O采用工作方式1,C/T设为0,即设TO为16位定时器。

所以T0的初始值为3CB0H。

以下为程序代码。

ORG0000H

AJMPSTART

ORG0600H

START:

MOVTMOD,#51H

MOVTH0,#3CH

MOVTL0,#0B0H

MOVIE,#82H

MOVTH1,#00H

MOVTL1,#00H

SETBTR0

SETBTR1

3.3频率计算

由于定时50ms,采用4位显示,最大显示频率是9999,因此50ms里最大计数为500,否则显示不准确,500的十六进制为01F4H,当计数器的高八位大于01时,计数值大于500超过最大显示,即直接显示9999,当高八位等于01时,在判断第四位TL1与F4H的大小,大于或等于也直接显示频率9999,小于时在进行十进制转换,当高八位小于01时,在跳转到十六进制转换到十进制的程序中,再显示出来。

以下为程序代码:

LOOP:

SJMP$;等待中断

ORG000BH;入口地址

AJMPBTR0

ORG0080H

BTR0:

CLRTR1;停计数

CLRTR0

MOVA,TH1

CJNEA,#01H,NEXT1;判断TH1的计数是否大于01H,(500十六进制为01F4H)

SJMPNEXT2

NEXT1:

JCBEGIN

JNCNEXT4

NEXT2:

MOVA,TL1

CJNEA,#0F4H,NEXT3;等于则比较TL1的计数值和#0F4的大小

SJMPNEXT4

NEXT3:

JCBEGIN

JNCNEXT4

NEXT4:

MOVA,#99H;大于01F4H则输出9999

MOVP1,A

MOVP2,A

3.4十六进制转为十进制算法

设十六进制数为b4b3b2b1

(1)b4×6÷10=C1b3×6÷10=C2b2×6÷10=C3

(b1+C1+C2+C3)÷10=C4……d3(个位)

(2)(C1+C2+C3+C4+b2+b3×5+b4×9)÷10=e……d2(十位)

(3)(e+b3×2)÷10=f……d1(百位)

(4)b4×4+f=d0(千位)

最后转换成的十进制数为d0d1d2d3

4.仿真调试

4.1仿真结果

本次仿真是在Proteus平台上进行,仿真电路如下:

图4方波频率为10kHz显示结果

图5方波频率为800Hz显示结果

4.2仿真结果分析

本实验采用两个分别为10kHz,800Hz的信号源来验证所设计的频率计的准确性,分别模拟量程范围0~9999Hz外和量程范围0~9999Hz内的显示结果。

当开关打在10kHz时,数码管显示9999,与预期符合,当开关打在800Hz的信号源上时,显示800也符合。

5.总结

5.1设计小结

该频率计设计,实现了测被测信号的频率,周期和脉宽的功能。

在调测的过程中发现测量频率时,档位在1Hz~9999Hz,最终得到的结果的符合预期要求,测量结果在误差允许范围之内。

5.2心得体会

数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。

在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,会被经常使用到。

通过这次课程设计,不但加深我对在课程上所学到的单片机理论知识的认识和理解,重新让自己认识到了这门学科的在应用方面的广阔前景,并且通过知识与应用于实践的结合更加丰富了自己的知识。

扩展了知识面,不但掌握了本专业的相关知识,而且对其他专业的知识也有所了解,而且较系统的掌握单片机应用系统的开发过程,因而自身的综合素质有了全面的提高。

在本次课程设计中,发现了自己的不足之处,对以前所学过的知识理解得不够深刻,比如在硬件仿真时,由于对数电、模电的知识掌握得不够牢固,导致仿真结果一直不能实现,还有在进行编程的时候对单片机的寄存器、接口电路等不够了解,也遇到了很多问题,但最终通过查资料、同学的帮助解决了这些问题。

同时也熟练掌握了proteus、keil这两个软件,提高了自己的动手能力。

致谢

这次课程设计顺利完成离不开老师的指导和同学们的帮助,在设计中遇到了很多编程和仿真的问题,在老师的指引和教导下,克服了一个又一个的问题,最终完成了设计任务。

在老师那里我也学得到了很多实用的知识,在此向我的指导老师表示诚挚的感谢!

同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢!

参考文献

[1]胡汉才.单片机原理及其接口技术.清华大学出版社,1996.

[2]胡汉才.单片机原理及系统设计.清华大学出版社,2002.

[3]李朝青.单片机原理及接口技术.北京航空航天大学出版社,1994.

[4]徐惠民,安德宁.单片微型计算机原理、接口、应用.北京邮电大学出版社,1990.

[5]张友德,赵志英,涂时亮.单片微型机原理、应用与实验.复旦大学出版社,1992.

[6]proteus帮助文档.

[7]keil帮助文档.

[8]高海生,杨文焕.单片机应用技术大全.西南交通大学出版社,1996.

[9]E.A.Nichols,J.C.Nichols,K.R.Musson.微型计算机数据通信,1989.

[10]徐爱钧.智能化测量控制仪表原理与设计.北京航空航天大学出版社,1999.

附录程序清单

AJMPSTART

ORG0600H

START:

MOVTMOD,#51H;送方式字

MOVTH0,#3CH;T0赋初值

MOVTL0,#0B0H

MOVIE,#82H;开T0中断

MOVTH1,#00H;T1清零

MOVTL1,#00H

SETBTR0;开始计数

SETBTR1

LOOP:

SJMP$;等待中断

ORG000BH;入口地址

AJMPBTR0

ORG0080H

BTR0:

CLRTR1;停计数

CLRTR0

MOVA,TH1

CJNEA,#01H,NEXT1;判断TH1的计数是否大于01H,(500十六进制为01F4H)

SJMPNEXT2

NEXT1:

JCBEGIN

JNCNEXT4

NEXT2:

MOVA,TL1

CJNEA,#0F4H,NEXT3;等于则比较TL1的计数值和#0F4的大小

SJMPNEXT4

NEXT3:

JCBEGIN

JNCNEXT4

NEXT4:

MOVA,#99H;大于01F4H则输出9999

MOVP1,A

MOVP2,A

LJMPLAST;长转移

BEGIN:

MOVA,TL1;小于01F4H则转换为十进制,以下程序为十进制转换

MOVB,#14H

MULAB

MOVR2,B

MOVB,#10H

DIVAB

MOVR0,A

MOVR1,B

MOVA,TH1

MOVB,#14H

MULAB

ADDA,R2

MOVB,#10H

DIVAB

MOVR2,B

MOVR7,A

MOVB,#06H

MULAB

MOVB,#0AH

DIVAB

MOV40H,A

MOV41H,B

MOVB,#06H

MOVA,R0

MULAB

MOVB,#0AH

DIVAB

MOVR3,A

MOVR4,B

MOVA,R2

MOVB,#06H

MULAB

MOVB,#0AH

DIVAB

MOVR5,A

MOVR6,B

MOVA,R1

ADDA,R4

ADDA,R6

ADDA,41H

MOVB,#0AH

DIVAB

MOVR1,B

ADDA,R0

ADDA,R3

ADDA,R5

MOVR0,A

MOVA,R2

MOVB,#05H

MULAB

ADDA,R0

MOVR0,A

MOVA,R7

MOVB,#09H

MULAB

MOVB,#0AH

DIVAB

MOV42H,A

MOVA,B

ADDA,R0

ADDA,40H

MOVB,#0AH

DIVAB

MOVR0,B

MOVR3,A

MOVA,R2

MOVB,#02H

MULAB

ADDA,R3

ADDA,42H

MOVB,#0AH

DIVAB

MOVR4,A

MOVR5,B

MOVA,R7

MOVB,#04H

MULAB

ADDA,R4

MOVB,#01H

MULAB

ADDA,R5

MOVP1,A

MOVA,R0

MOVB,#10H

MULAB

ADDA,R1

MOVP2,A

LAST:

MOVTH0,#3CH;重装初值

MOVTL0,#0B0H

MOVTH1,#00H;停计数

MOVTL1,#00H

SETBTR1;开始计数

SETBTR0

RETI;返回

END;结束

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 人力资源管理

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

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