基于单片机的数字频率课程设计任务书1.docx

上传人:b****1 文档编号:2285152 上传时间:2023-05-03 格式:DOCX 页数:38 大小:375.52KB
下载 相关 举报
基于单片机的数字频率课程设计任务书1.docx_第1页
第1页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第2页
第2页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第3页
第3页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第4页
第4页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第5页
第5页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第6页
第6页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第7页
第7页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第8页
第8页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第9页
第9页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第10页
第10页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第11页
第11页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第12页
第12页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第13页
第13页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第14页
第14页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第15页
第15页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第16页
第16页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第17页
第17页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第18页
第18页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第19页
第19页 / 共38页
基于单片机的数字频率课程设计任务书1.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于单片机的数字频率课程设计任务书1.docx

《基于单片机的数字频率课程设计任务书1.docx》由会员分享,可在线阅读,更多相关《基于单片机的数字频率课程设计任务书1.docx(38页珍藏版)》请在冰点文库上搜索。

基于单片机的数字频率课程设计任务书1.docx

基于单片机的数字频率课程设计任务书1

课程名称:

单片机技术课程设计任务书设计题目:

基于单片机的频率计的设计

1.绪论

一、设计任务

数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,它是一种用十进制数字显示被测信号频率的数字测量仪器,它的基本功能是测量正弦信号、方波信号及其他各种单位时间内变化的物理量。

本设计以51单片机为核心,设计一个能够对方波信号频率进行测量的频率计。

二、设计目的

通过本次课程设使学生掌握:

1)微机接口技术与I/O通道电路的设计及实现方法;2)控制程序的设计及实现方法;3)微机控制系统的实际调试技巧。

提高对微机实时控制系统的设计和调试能力。

三、设计要求

1、方波信号频率范围:

1Hz~15KHz;

2、数码管显示频率

四、设计内容

1、硬件电路原理图;

2、软件流程图及程序;

3、Protues仿真及运行结果。

五、设计报告要求

1、目录

2、正文

(1)课程设计任务书;

(2)总体设计方案;

(3)硬件原理图;

(4)程序流程图及清单;

(5)Protues仿真运行及其结果。

3、收获、体会

4、参考文献

 

2.总体设计方案

2.1方案比较

方案一:

本方案主要以单片机为核心,利用单片机的计数定时功能来实现频率的计数并且利用单片机的动态扫描把测出的数据送到数字显示电路显示。

其实原理框图如2.1所示

2.1方案一原理图

方案二:

本方案主要以数字器件为核心,主要分为时基电路,逻辑控制电路,放大整形电路,闸门电路,计数电路,锁存电路,译码显示电路七大部分。

其原理框图如图2.2所示

2.2方案二原理框图

2.2方案论证

方案一:

本方案主要以单片机为核心,被测信号先进入信号放大电路进行放大,再被送到波形整形电路整形,把被测得正弦波或者三角波为方波。

利用单片机的计数器和定时器的功能对被测信号进行计数。

编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。

方案二:

本方案使用大量的数字器件,被测量信号放大整形电路变成计数器所要求的脉冲信号,其频率于被测信号的频率相同。

同时时基电路提供标准时间基准信号,其高电平持续时间1s,当1s信号来到时,闸门开通,被测脉冲信号通过闸门,计数器开始计数,直到1s信号结束闸门关闭,停止计数。

若在闸门时间1s内计数器计得的脉冲个数为N,则被测信号频率FX=NHZ。

逻辑控制电路的作用有两个:

一是产生锁存脉冲,是显示器上的数字稳定;二是产生清零脉冲,使计数器每次测量从零开始计数。

2.3方案选择

比较以上两种方案可以知道,方案一得核心是单片机,使用的元器件少,原理电路简单,调试简单只要改变程序的设定值则可以实现不同频率范围的测试能自动选择测试的量程。

与方案一相比较方案二则使用了大量的数字元器件,原理电路复杂,硬件调试麻烦。

如要测量高频的信号还需要加上分频电路,价格相对高了点。

基于上述,所以选择了方案一。

3.系统硬件设计

3.1一般数字式频率计的原理

数字式频率计是测量频率最常用的仪器之一,其基本设计原理是首先把待测信号通过放大整形,变成一个脉冲信号,然后通过控制电路控制计数器计数,最后送到译码显示电路里进行显示,其基本构成框图如图3.1所示待测信号

3.1频率计原理框图

3.2频率计方案的概述

本频率计的设计以AT89S51单片机为核心,利用它内部的定时/计数器完成待测信号周期/频率的测量,单片机AT89S51内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时,计数和产生计数溢出时中断要求的功能。

在定时器工作方式下,在被测时间间隔内,每来一个机器周期,计数器自动加1,这样以机器周期为基准可以用来测量时间间隔。

在计数器工作方式下,加至外部引脚的待测信号发生从1到0的跳变计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。

外部输入在每个机器周期被采用一次,这样查测一次从1到0的跳变至少需要2个机器周期,所以最大计数速率为时钟频率1/24。

定时/计数器的工作有运行控制位TR控制,当TR置1,定时/计数器开始计数:

当TR清0,停止计数。

本设计终合考虑了频率测量精度和测量反应时间的要求。

例如要求频率测量结果为3位有效数字,这时如果待测信号的频率为1HZ,则计数闸门宽度必须大于1000S。

为了兼顾频率测量精度和测量反应时间的要求,把测量工作分为两种方法:

(1)当待测信号的频率>100HZ时,定时/计数器构成为计数器,以机器周期为基准,由软件产生计数闸门,计数闸门宽度>1S时,即可满足频率测量结果为3位有效数字。

(2)当待测信号的频率<100HZ时,定时/计数器构成为定时器,由频率计的处理电路把待测信号变成方波,方波宽度等于待测信号的周期。

这时用方波做计数闸门,当待测信号的频率=100HZ,周期为10ms,使用12HZ时钟的最小计数值为10000,完全满足测量精度的要求。

3.3单片机

ATC89C51[可以完成ISP在线编程功能,ATC89C51内部有EEPROM,可以在程序中修改,断电不丢失。

还增加了两级中断优先级,STC推出的系列51单片机芯片是全面兼容其它51单片机的,而且51单片机是主流大军。

3.3.189C51芯片介绍

1.许多由关硬件设计中都使用到单片机89C51,其功能[7]比以往的单片机强大的多。

89C51引脚图如图3.2所示。

图3.289C51引脚图

芯片引脚功能:

主电源引脚Vcc和Vss

•Vcc(40脚):

接+5V电压;

•Vss(20脚):

接地。

89C51晶振接法如图3.3。

图3.389C51晶振接法图

选用6MHz频率的晶体,允许输入的脉冲频率为250kHz。

电容的大小范围为20pF~40pF,本设计选用30pF电容。

2.单片机复位状态

单片机的复位都是靠外部电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟震荡脉冲(2个机器周期)以上的高电平,单片机便实现初始化状态复位。

为了保证应用系统可靠地复位,在设计复位电路时,通常使RST引脚保持10ms以上的高电平。

只要保持高电平,则MCS-51单片机就循环复位;当RST从高电平变为低电平以后,MCS-51单片机从0000H地址开始执行程序。

在复位有效期间,ALE、引脚输出高电平。

89C51上电复位电路图。

图3.489C51上电复位电路图

 

单片机复位状态表。

表3.1单片机复位状态表

专用寄存器

复位状态

专用寄存器

复位状态

PC

0000H

TMOD

00H

ACC

00H

TCON

00H

B

00H

TH0

00H

PSW

00H

TL0

00H

SP

07H

TH1

00H

DPTR

0000H

TL1

00H

P0~P3

FFH

SCON

00H

IP

XXX00000B

SBUF

XXXXXXXXB

IE

0XX00000B

PCON

0XXXXXXXB

注:

XXX不定

复位后,P0口~P3口输出高电平,且使这些准双向口皆处于输入状态,并且将07H写入栈指针SP(即设定堆栈底为07H),同时,将程序计数器PC和其余的特殊功能寄存器清为0(不定的位除外)。

但复位不影响单片机内部的RAM状态

3.3.274HC164

74HC164是8位串入并出移位寄存器,引脚排列图和逻辑功能示意图如下图所示:

图3.5引脚图图3.6逻辑功能示意图

Ds=Da*Db是数码串行输入端,/CR是清零端,Q0~Q7是数据并行输出端,CP是时钟脉冲——移位操作信号。

其逻辑功能表如下:

图3.7逻辑功能表图

图3.7所示是74HC164状态表,由表可知,74HC164具有下列功能:

(1)清零功能

当/CR(/Reset)=0时,移位寄存器异步清零。

(2)保持功能

当/CR(/Reset)=1、CP(Clock)不处于上升沿时,移位寄存器保持状态不变,

(3)送数功能

当/CR(/Reset)=1时,CP(Clock)上升沿将加在Ds=Da*Db端的二进制数码依次送入移位

寄存器中。

状态方程为

Ds=Da*Db

Q0n+1=Ds

3.3.374LS145

74LS145是一个BCD—十进制译码器/驱动器(OC),用于驱动发光二极管、继电器或MOS电路;能吸收80mA电流,LS145典型功耗为35mW;耐压15V,引脚图(图3.8)和逻辑功能表如下:

图3.8引脚图表3.2逻辑功能表

3.4显示电路

3.9显示电路原理图

由于AT89C51的I/O口较少,本电路采用特殊的显示方式---由P1.6(数据端)和P1.7(时钟端)

组成模拟串行通信口,单片机将要显示的数据用模拟串口发送到74HC164后,由74HC164转换为并行数据控制数码管显示的数字,实现显示数据的传送,由单片机提供位选的BCD码经74LS145译码后控制每位数码管的选通与消隐,并由两个发光二极管做为Hz及KHz的指示。

3.5硬件设计简介和系统整体原理图

3.5.1硬件设计简介

采用外接插头输入脉冲信号,经过1N4538B(1N4538B的稳压值为5V,稳压保护,防止输入电压过高损伤电路)后经过两级74hc14传输将脉冲信号转换为方波信号,输入到4040的时钟计数输入端,4040对输入的脉冲进行计数分频,每4040每输入4096个外出,Q12输出一个脉冲。

单片机的T1工作在计数状态,在单位时间内计数值除以单位时间即是脉冲的频率,单片机所测量的频率的范围内是1~100MHZ,分两档测量,256K~100MHZ,256K以下~1HZ。

单片机测量后将测量结果转换成六位BCD码,通过单片机的串行口发送到数码管显示,数码管显示电路采用74ls164驱动共阴极数码管,采用静态显示。

数据的传送采用串行移动方式,即单片机将六个显示码从低到高逐位通过串行口以方式0发送到数码管显示,数码管的显示为6位,即显示单位为1HZ和1KHZ。

通过两个发光二极管分别指示,P1.0驱动显示1HZ单位指示灯,低电平点亮;P1.1驱动显示1KHZ单位指示灯,低电平点亮。

3.5.2系统整体原理图

3.10系统整体原理图

4.系统软件设计

4.1测频软件实现原理

测频软件的实现是基于电路系统来进行设计的。

本次设计采用的是脉冲定时

测频法,所以在软件实现上基本遵照系统的设计原理,进行测频。

本次软件设计语言采用汇编语言,在电脑上编译通过后即可下载到电路上的实际电路中,即可实现频率的测量。

 

4.2软件流程图

4.1软件流程图

 

4.3程序设计

ORG0000H

AJMPMAIN

ORG000BH

LJMPTIME0

ORG001BH

LJMPTIME1

DA4EQUP1.2

DA3EQUP1.3

DA2EQUP1.4

DA1EQUP1.5

CLKEQUP1.7

DATEQUP1.6

DSPLA_ADD1EQU30H

DSPLA_ADD2EQU31H

DSPLA_ADD3EQU32H

DSPLA_ADD4EQU33H

DSPLA_ADD5EQU34H

DSPLA_ADD6EQU35H

DSPLA_ADD7EQU36H

TX_TIMEEQU50H

MOS_BZEQU51H

BZ2EQU52H

LDBZBIT10H

LD1HZEQU7BH

JSQ3EQU53H

JSQ2EQU54H

JSQ1EQU55H

BCD1EQU60H

BCD2EQU61H

BCD3EQU62H

BCD4EQU63H

CXEQU64H

HUANC1EQU65H

HUANC2EQU66H

HUANC3EQU67H

HUANC4EQU68H

MAIN:

LCALLSETUP;调用初始化程序

MAIN1:

LCALLDSPLA;调用显示子程序

LJMPMAIN1;循环调用显示子程序

DSPLA:

NOP;显示子程序

DSPLATEMP:

MOVR7,#7;R7为每轮扫描还需显示数据位数

MOVR0,#DSPLA_ADD1;取显示缓冲区首地址

MOVDPTR,#TAB;显示码表格指针

DSP1:

MOVA,@R0;取显示缓冲区数值

MOVCA,@A+DPTR;查表取显示缓冲区数值对应的显示码

DENG:

CLRCLK;将每位显示值串行打入74HC164。

CLRC

RLCA

MOVDAT,C;

SETBCLK

NOP

CLRCLK

RLCA

MOVDAT,C;

SETBCLK

NOP

CLRCLK

RLCA

MOVDAT,C;

SETBCLK

NOP

CLRCLK

RLCA

MOVDAT,C;

SETBCLK

NOP

CLRCLK

RLCA

MOVDAT,C;

SETBCLK

NOP

CLRCLK

RLCA

MOVDAT,C;

SETBCLK

NOP

CLRCLK

RLCA

MOVDAT,C;

SETBCLK

NOP

CLRCLK

RLCA

MOVDAT,C;

SETBCLK

NOP

CLRCLK

LCALLWAY;调用位显示驱动程序

LCALLDELAY10;调用延时子程序,每位延时显示

CLRDA1;关闭显示

SETBDA2

CLRDA3

SETBDA4

DSP2:

INCR0;扫描显示下一位

DJNZR7,DSP1;扫描显示下一位

DSPLAEND:

RET

TAB:

DB0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7d,0x07,0x7F,0x6F;显示缓冲区数值对应的显示码表

DB0x0BF,0x01,0x02

;----------位显示驱动子程序---------

WAY:

MOVA,R7

CJNEA,#7,WAY1

SETBDA1

CLRDA2

CLRDA3

CLRDA4

RET

WAY1:

CJNEA,#6,WAY2

CLRDA1

CLRDA2

SETBDA3

CLRDA4

RET

WAY2:

CJNEA,#5,WAY3

CLRDA1

SETBDA2

CLRDA3

CLRDA4

RET

WAY3:

CJNEA,#4,WAY4

SETBDA1

CLRDA2

SETBDA3

CLRDA4

RET

WAY4:

CJNEA,#3,WAY5

SETBDA1

SETBDA2

CLRDA3

CLRDA4

RET

WAY5:

CJNEA,#2,WAY6

CLRDA1

SETBDA2

SETBDA3

CLRDA4

RET

WAY6:

CJNEA,#1,WAY7

SETBDA1

SETBDA2

SETBDA3

CLRDA4

WAY7:

RET

;-------定时计数器初始化子程序------

SETUP:

CLRTR0

CLRTR1

CLRLDBZ

MOVMOS_BZ,#1

MOVLD1HZ,#10

CLRDA1

SETBDA2

CLRDA3

SETBDA4

MOVTX_TIME,#50

MOVJSQ1,#0

MOVTMOD,#51H

MOVTH0,#63H;20mS

MOVTL0,#0c0H

MOVTH1,#00H

MOVTL1,#00H

SETBET0

SETBET1;

SETBEA

CLRES;

CLREX1;

CLREX0;

SETBTR0

SETBTR1;

RET

DELAY10:

NOP

DELAY5:

MOVR6,#0FFH

DJNZR6,$

RET

TIME0END1:

LJMPTIME0END

;--------频率小于1Hz数据处理子程序-----

LDSJ:

MOVTX_TIME,#50;

DJNZLD1HZ,TIME0END1;判断是否定时到10s

CLRTR1;停止计数器

MOVA,TH1

MOVJSQ2,A

MOVA,TL1

MOVJSQ3,A

MOVA,JSQ1

JNZPY1

MOVA,JSQ2

JNZPY1

MOVA,JSQ3

CLRC

SUBBA,#10

JNCPY1

LCALLBMBCD;

MOVR0,#BCD1

MOVA,@R0;

ANLA,#0FH;

MOVDSPLA_ADD6,A

MOVDSPLA_ADD1,#0

MOVDSPLA_ADD2,#0

MOVDSPLA_ADD3,#0

MOVDSPLA_ADD4,#0

MOVDSPLA_ADD5,#10

MOVDSPLA_ADD7,#11

SETBLDBZ

MOVLD1HZ,#10

LJMPTIME07

PY1:

CLRLDBZ

LJMPTIME0END

;---------T0中断子程序------------

TIME0:

PUSHPSW;保护现场

PUSHACC

MOVA,MOS_BZ;

CJNEA,#1,TIMJS;查看计数通道,如果T0计数,则转移;

MOVTH0,#63H;如果T0定时,重置定时器T0初值

MOVTL0,#0c0H

DJNZTX_TIME,TIME0END

JBLDBZ,LDSJ

MOVTX_TIME,#50

CLRTR1

MOVA,TH1

MOVJSQ2,A;

MOVA,TL1

MOVJSQ3,A;

MOVA,JSQ1

JNZPY

MOVA,JSQ2;

JNZPY

MOVA,JSQ3

JNZPY

SETBLDBZ

MOVLD1HZ,#10

PY:

LCALLJSPD2

MOVA,BZ2;

CJNEA,#0,KTR

PPPTR:

LCALLBMBCD

LCALLBCDZH

MOVDSPLA_ADD7,#11

TIME07:

MOVTH1,#00H

MOVTL1,#00H

MOVJSQ1,#0

TIME0END:

POPACC

POPPSW

SETBTR1

SETBTR0

RETI

TIMJS:

MOVTH0,#00H

MOVTL0,#00H

INCJSQ1;

TIMJSEDN:

POPACC

POPPSW

RETI

KTR:

LCALLSETUP1

POPACC

POPPSW

RETI

JSPD2:

MOVA,JSQ1

CLRC

SUBBA,#0cH

JCZ2

MOVA,JSQ2

JNZB2

CLRC

SUBBA,#35H

JCZ2

JNCB2

MOVA,JSQ3

CLRC

SUBBA,#00H

JCZ2

JNCB2

Z2:

MOVBZ2,#0

RET

B2:

MOVBZ2,#0

RET

;-----------T1中断子程序-------------

TIME1:

PUSHPSW

PUSHACC

MOVA,MOS_BZ

CJNEA,#1,TIM1DS

MOVTH1,#00H

MOVTL1,#00H

INCJSQ1

TIME2END:

POPACC;恢复现场,中断返回

POPPSW

RETI

TIM1DS:

MOVTH1,#63H;初始化定时器初值

MOVTL1,#0C0H

DJNZTX_TIME,TIME1END;判断定时中断次数达到50次,即定时1s完成

MOVTX_TIME,#51;如果完成1s定时,初始化定时中断次数寄存器

CLRTR0;停止定时计数器

MOVA,TH0;计数值高字节送至JSQ2

MOVJSQ2,A

MOVA,TL0;计数值高低节送至JSQ2

MOVJSQ3,A

LCALLSJPD

MOVA,BZ2

CJNEA,#1,DET

LCALLMUL4;如果频率大于750k,则将计数值乘128

LCALLBMBCD5;调用BCD码转换子程序

MOVDSPLA_ADD7,#12;显示单位为KHz

MOVTH0,#00H;测量一次后并将频率值送显示缓冲区后,将计数值清零

MOVTL0,#00H

MOVJSQ1,#0

TIME1END:

POPACC;恢复现场,启动定时计数器,中断返回

POPPSW

SETBTR0

SETBTR1

RETI

DET:

LCALLSETUP;调定时计数器初始化程序,换计数通道(量程),中断返回

POPACC

POPPSW

RETI

;-----------判断频率是否小于750k子程序---------

SJPD:

MOVA,JSQ1;

CLRC

SUBBA,#0

JCZ1

JNZB1

MOVA,JSQ2

CLRC

SUBBA,#16H

JCZ1

JNCB1

MOVA,JSQ3

CLRC

SUBBA,#0e3H

JCZ1

JNCB1

RET

Z1:

MOVBZ2,#0

RET

B1:

MOVBZ2,#1

RET

;-----------二进制转BCD码子程序----------

BMBCD:

MOVR0,#JSQ3;寄存器及指针设定

MOVR7,#3;计数值用三个字节来存储,转换成十进制有8位

MOVR1,#BCD1

MOVA,R0

MOVR5,A

MOVA,R1

MOVR6,A

MOVA,R7

MOVR3,A

INCR3;压缩BCD码用四个字节来存储,正好是8位十进制

CLRA

CLBCD:

MOV@R1,A;清BCD码寄存器区,共四个字节

INCR1

DJNZR3,CLBCD

MOVA,R7

MOVB,#08

MULAB;计数值的三个字节共24位

MOVR3,A

LP0:

MOVA,R5;BCD码转换

MOVR0,A

MOVA,R7

MOVR2,A

CLRC

LP1:

MOVA,@R0

RLCA;从高位移出待转换数的一位到CY中

MOV@R0,A

INCR0

DJNZR2,LP1

MOVA,R6

MOVR1,A

MOVA,R7

MOVR2,A

INCR2

LP2:

MOVA,@R1;

ADDCA,@R1;位权加法(BCD码带进位自身相加,相当于乘2)

DAA

MOV

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2