单片机频率计课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

贵州大学课程设计

任务要求

运用所学单片机原理、、模拟和数字电路等方面的知识,设计出一个数字频率计。数字频率计要求如下:

1)能对0~50kHz的信号频率进行计数;

2)频率测量结果通过4位数码管显示(十进制)。

二、课程设计应完成的工作

1)硬件部分包括微处理器(MCU)最小系统(供电、晶振、复位)、频率测量和数码管显示部分;

2)软件部分包括初始化、频率计算、显示等;

3)用PROTEUS软件仿真实现;

4)画出系统的硬件电路结构图和软件程序框图;

内容摘要

1.数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。

2.采用12 MHz的晶体振荡器的情况下,一秒的定时已超过了定时器可提供的最大定时值。为了实现一秒的定时,采用定时和计数相结合的方法实现。选用定时/计数器TO作定时器,工作于方式1产生50 ms的定时,再用软件计数方式对它计数20次,就可得到一秒的定时。

贵州大学课程设计

第1节引言

本应用系统设计的目的是通过在“单片机原理及应用”课堂上学习的知识,以及查阅资料,培养一种自学的能力。并且引导一种创新的思维,把学到的知识应用到日常生活当中。在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。

1.1数字频率计概述

数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。

1.2任务分析与设计思路

频率的测量实际上就是在1s时间内对信号进行计数,计数值就是信号频率。在本次设计使用的AT89C51单片机,本身自带有定时器和计数器,单片机的T0、T1两个定时/计数器,一个用来定时,另一个用来计数,定时/计数器的工作由相应的运行控制位 TR 控制 ,当 TR 置 1 ,定时/ 计数器开始计数 ;当 TR 清 0 ,停止计数。在定时1s里,计数器计的脉冲数就是频率数,但是由于1s超过了A T89C51的最大定时,因此我们采用50ms定时,在50ms 内的脉冲数在乘以14就得到了频率数,在转换为十进制输出就可。

第2节硬件系统设计

2.1 系统组成框图

2.2晶振电路和复位电路

XTAL1与XTAL2管脚接两个22pF电容和12 MHz晶振构成时钟电路。RST管脚接10 kΩ电阻,20 μF电容上电复位电路。

2.3 单片机与译码显示

选择单片机AT89C51是因为有编程灵活、易调试的特点,而且AT89C51的引脚较多,利于电路的展。它集成了CPU,RAM,ROM,定时器/计数器和多功能I/0口等一台计算机所需的基本功能部件,有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含两个外中断口,两个16位可编程定时计数器,两个全双工串行通信口。还提供了对程序进行加密保护的功能。

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

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

数码管是由若干发光二极管组成显示的字段,当二极管导通时相应的一段发光,控制不同组合的二极管导通,就可以显示出各种字符。对于共阴级显示管,将所有二极管的阴极连接在一起,公共端3、8接低电平,当某个字段的阳极接高电平时,对应的字段就点亮。设计中需要用到4个七段显示数码管,用来显示频率的数值

2.3 输入信号

为验证本设计的频率计的准确性与快速性,采用三个不同频率的信号源。

第3节系统的软件构成

3.1 程序流程图

3.2 初始化

ORG 0000H

AJMP START

ORG 0600H

START: MOV TMOD , #51H

MOV TH0 , #3CH

MOV TL0 , #0B0H

MOV IE ,#82H

MOV TH1 , #00H

MOV TL1 , #00H

SETB TR0

SETB TR1

采用12 MHz的晶体振荡器的情况下,一秒的定时已超过了定时器可提供的最大定时值。为了实现一秒的定时,采用定时和计数相结合的方法实现。选用定时/计数器TO作定时器,工作于方式1产生50 ms的定时,再用软件计数方式对它计数20次,就可得到一秒的定时。

将定时器/计数器的方式寄存器TMOD,用软件赋初值51H,即01010001B。这时定时器/计数器1采用工作方式1,方式选择位C/T设为1,即设T1为16位计数器。定时器/计数器O采用工作方式1,C/T设为0,即设TO为16位定时器。

=

TC16=

-

=us

—,所以T0初值为3CB0H.

M

=

2

3

CB0H

T/T

15536

1/

ms

50

计数

3.3 频率计算

LOOP:SJMP $ ;等待中断

ORG 000BH ;入口地址

AJMP BTR0

ORG 0080H

BTR0:CLR TR1 ;停计数

CLR TR0

MOV A,TH1

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

SJMP NEXT2

NEXT1:JC BEGIN

JNC NEXT4

NEXT2:MOV A,TL1

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

SJMP NEXT4

NEXT3:JC BEGIN

JNC NEXT4

NEXT4:MOV A,#99H ;大于01F4H则输出9999

MOV P1,A

MOV P2,A

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

相关文档
最新文档