AT89C51数字频率计的设计解读.docx

上传人:b****5 文档编号:7674755 上传时间:2023-01-25 格式:DOCX 页数:37 大小:1.02MB
下载 相关 举报
AT89C51数字频率计的设计解读.docx_第1页
第1页 / 共37页
AT89C51数字频率计的设计解读.docx_第2页
第2页 / 共37页
AT89C51数字频率计的设计解读.docx_第3页
第3页 / 共37页
AT89C51数字频率计的设计解读.docx_第4页
第4页 / 共37页
AT89C51数字频率计的设计解读.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

AT89C51数字频率计的设计解读.docx

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

AT89C51数字频率计的设计解读.docx

AT89C51数字频率计的设计解读

黄河科技学院课程设计任务书

工学院机械系机械设计制造及其自动化专业x级x班

学号xxxx姓名xxxx指导教师xxxx

题目:

AT89C51数字频率计设计

课程:

单片机课程设计

课程设计时间2013年10月28日至2013年11月10日共2周

课程设计工作内容与基本要求(设计要求、设计任务、工作计划、所需相关资料)(纸张不够可加页)

基本要求:

利用单片机AT89C51设计数字频率计,能将所测量的频率在LED显示器上显示。

创新设计:

可采用不同方法进行频率测量;具有键盘操作功能等。

2.设计任务与要求

2.1系统硬件电路设计

根据该系统设计的功能要求选择所用元器件,设计硬件电路。

要求用Proteus绘制整个系统电路原理图。

2.2软件设计

根据该系统要求的功能进行软件设计,绘制整个系统的软件流程图;根据流程图编写程序并汇编调试通过;列出软件清单,软件清单要求逐条加以注释。

2.3Proteus仿真

用Proteus对系统软硬件进行仿真调试并通过。

2.4编写设计说明书

内容包括任务书、设计方案分析、硬件部分设计、软件部分设计、调试结果整理分析、设计调试的心得体会等,字数不少于5000字;硬件部分设计要绘制整个系统电路原理图,对各部分电路设计原理做出说明;软件设计部分要(用visio2002画图软件)绘制整个系统及各部分的软件流程图,列出程序清单,逐条加以注释,并注明各程序功能块的功能。

3.工作计划

序号

设计内容

所用时间

1

布置任务及调研

4天

3

制作与调试

8天

4

撰写设计报告书

2天

合计

14天

4.主要参考资料

单片机课程设计指导书皮大能北京理工大学出版社2012.7

8051单片机实践与应用吴金戎清华大学出版社2003.8

单片机技术基础教程与实践夏路易电子工业出版社 2008.1

单片机原理及应用张毅刚高等教育出版社2012.11

基于Proteus的单片机系统设计与仿真实例蒋辉平机械工业出版社

2007.7

 

指导老师签字:

日期:

 

1绪论……………………………………………..…………………..…………….1

1.1课题背景及目的……………………………………………………………1

1.2国内外研究状况……………………………………………………………1

1.3课题研究方法………………………………………………………………1

2测量方案的论证与分析…………………………………………………………...2

2.1测量方法的分析…………………………………………………………..2

2.1.1直接测频法…………………………….…………………………...2

2.1.2间接测量法(测周期法)……….………………………………...2

2.1.3直接与间接相结合的方法………………………………………...3

2.2硬件电路设计方案分析……………….…….…………………………...3

2.2.1中小规模数字集成电路…………………………………………...3

2.2.2单片机AT89C51…………………………………………………4

3基于单片机的数字频率计的设计……………………...………………………...5

3.1系统硬件的构成…………………………………………………………...7

3.1.1AT89C51单片机及其引脚说明………………………………………8

3.1.2信号输入放大和整形电路……………………………………………9

3.1.3时基信号产生电路……………………………………………………10

3.2数字频率计软件设计……………………………………………………..11

3.2.1主程序设计………………………………………………………..11

3.2.2子程序设计………………………………………………………...12

4系统调试…………………………………………………………………………17

4.1硬件调试…………………………………………………………………..17

4.2软件调试…………………………………………………………………...17

4.2.1软件调试的步骤…………………………………………………...17

4.2.2调试过程中遇到的问题及解决方法………………………………..20

结论…………………………………………………………………………………20

致谢………………………………………………………………………………..20

参考文献…………………………………………………………………………….21

附录………………………………………………………………………………….21

附录A…………………………………………………………………………21

附录B…………………………………………………………………………30

1绪论

频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。

其最基本的工作原理为:

当被测信号在特定时间段T内的周期个数为N时,则被测信号的频率f=N/T。

频率计主要由四个部分构成:

时基(T)电路、输入电路、计数显示电路以及控制电路。

在一个测量周期过程中,被测周期信号在输入电路中经过放大、整形、微分操作之后形成特定周期的窄脉冲,送到主门的一个输入端。

主门的另外一个输入端为时基电路产生电路产生的闸门脉冲。

在闸门脉冲开启主门的期间,特定周期的窄脉冲才能通过主门,从而进入计数器进行计数,计数器的显示电路则用来显示被测信号的频率值,内部控制电路则用来完成各种测量功能之间的切换并实现测量设置。

1.1课题背景及目的

本次课程设计的内容是使用AT89C51单片机最小系统设计频率计系统,系统以单片机为主控单元,主要用于对方波频率的测量,51系列单片机是国内目前应用最广泛的一种8位单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用。

51系列及其衍生单片机还会在继后很长一段时间占据嵌入式系统产品的低端市场,因此,作为新世纪的大学生,在信息产业高速发展的今天,掌握单片机的基本结构、原理和使用是非常重要的。

本次课程设计的内容是使用AT89C51单片机最小系统设计频率计系统,系统以单片机为主控单元,主要用于对方波频率的测量

1.2国内外研究状况

在传统的电子测量仪器中,示波器在进行频率测量时测量精度较低,误差较大。

频谱仪可以准确的测量频率并显示被测信号的频谱,但测量速度较慢,无法实时快速的跟踪捕捉到被测信号频率的变化。

正是由于频率计能够快速准确的捕捉到被测信号频率的变化,因此,频率计拥有非常广泛的应用范围。

在传统的生产制造企业中,频率计被广泛的应用在产线的生产测试中。

频率计能够快速的捕捉到晶体振荡器输出频率的变化,用户通过使用频率计能够迅速的发现有故障的晶振产品,确保产品质量。

在计量实验室中,频率计被用来对各种电子测量设备的本地振荡器进行校准。

在无线通讯测试中,频率计既可以被用来对无线通讯基站的主时钟进行校准,还可以被用来对无线电台的跳频信号和频率调制信号进行分析。

1.3课题研究方法

本论文主要阐述了以AT89C51单片机为核心,利用它内部的定时/计数器完成待测信号频率的测量。

单片机AT89C51内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。

其基本模块包括输入、切换逻辑、计数、单片机控制及显示模块,采用汇编语言。

2测量方案的论证与分析

2.1测量方法的分析

测量方法通常有三种:

直接测量法、间接测量法、直接与间接测量结合法。

2.1.1直接测频法

这种方法的测量原理是:

由于频率是单位时间内信号发生周期变化的次数,使得我们可以在给定的单位时间1S内(称为闸门)对被测信号的脉冲数计数,得到的脉冲个数就是被测信号的频率。

经分析,本测量法在低频段的相对测量误差较大,即在低频段不能满足本设计的要求

2.1.2间接测量法(测周期法)

虽然直接测频法可以测出单位时间内脉冲的个数即频率,但是对于较低频率的信号其检测误差会大大增大,例如1.8Hz的信号,在通过1秒的闸门时间内其0.8会被淹没,这是在设计中所不允许的。

解决这种现象的办法就是改直接测频法为测周期法。

其原理是用被测信号的周期作为闸门,在该闸门时间内允许已知标准的短周期间隔的较高频率的信号通过,通过数字电路或微型计算机的运算,通过闸门的已知信号频率的个数越多,其被测频率就越低。

测周期法时序图

经误差分析,可得结论:

用该测量法测量时,被测信号的频率越高,测量误差越大。

2.1.3直接与间接相结合的方法

该方法的出发点是避开±1量化误差的影响较大的频段,寻找有利因素而产生的。

对信号不采用直接测频法,而是改为测周期,并通过切换求得频率。

该方法可以满足测量误差的要求。

由此可见,为了获得较高的测量精度,在高频段,宜采用直接测频法;在低频段,宜采用测周期法。

把测量工作分为两种方法:

  

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

  

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

2.2硬件电路设计方案分析

2.2.1中小规模数字集成电路

系统测频部分采用中小规模数字集成电路,用机械式功能转换开关换档,完成测频率、测周期及测脉宽等功能。

该方案的特点是中小规模集成电路应用技术成熟,能可靠的完成频率计的基本功能,但由于系统功能要求较高,所以电路过于复杂,而且多量程换档开关使用不便。

原理框图如2.1所示。

2.1原理框图

2.2.2单片机AT89C51

系统采用51系列单片机AT89C51作为控制核心,实现整个电路的测试信号控制、数据运算处理、键盘扫描和控制数码管的显示输出完成各种时序逻辑控制、计数功能。

系统组成框图如图2.2所示,所有信号包括基准频率信号、被测信号AT89C51单片机的控制下进行计数或定时,单片机将每次测试结果经运算处理后,以十进制的形式送到4位数码管显示电路显示。

按键接口电路,因为按键数量较少,所以采用独立式按键结构,实现测频、测周功能。

 

图2.2原理框图

显然,单片机AT89C51的电路简洁、新颖,数字集成电路从系统要实现的指标上看,要实现频率的测量范围10Hz~10KHz,实现比较困难,还要进行周期换算频率,因此采用单片机AT89C51系统。

3.基于单片机的数字频率计的硬件设计

3.1系统硬件的构成

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

放大整形模块、时钟脉冲产生模块、按键模块、单片机系统、LED显示模块。

各模块关系图如图2所示:

总电路图

3.1.1AT89C51单片机及其引脚说明

89C51是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:

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

引脚说明:

·VCC:

电源电压

·GND:

·P0口:

P0口是一组8位漏极开路型双向I/O口,作为输出口用时,每个引脚能驱动8个TTL逻辑门电路。

当对0端口写入1时,可以作为高阻抗输入端使用。

当P0口访问外部程序存储器或数据存储器时,它还可设定成地址数据总线复用的形式。

在这种模式下,P0口具有内部上拉电阻。

在EPROM编程时,P0口接收指令字节,同时输出指令字节在程序校验时。

程序校验时需要外接上拉电阻。

·P1口:

P1口是一带有内部上拉电阻的8位双向I/O口。

P1口的输出缓冲能接受或输出4个TTL逻辑门电路。

当对P1口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。

当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(IIL)。

·P2口:

P2是一带有内部上拉电阻的8位双向的I/O端口。

P2口的输出缓冲能驱动4个TTL逻辑门电路。

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

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

P2口在访问外部程序存储器或16位地址的外部数据存储器(例如MOVX@DPTR)时,P2口送出高8位地址数据。

在这种情况下,P2口使用强大的内部上拉电阻功能当输出1时。

当利用8位地址线访问外部数据存储器时(例MOVX@R1),P2口输出特殊功能寄存器的内容。

当EPROM编程或校验时,P2口同时接收高8位地址和一些控制信号。

·P3口:

P3是一带有内部上拉电阻的8位双向的I/O端口。

P3口的输出缓冲能驱动4个TTL逻辑门电路。

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

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

P3口同时具有AT89C51的多种特殊功能,具体如下表1所示:

端口引脚

第二功能

P3.0

RXD(串行输入口)

P3.1

TXD(串行输出口)

P3.2

(外部中断0)

P3.3

(外部中断1)

P3.4

T0(定时器0)

P3.5

T1(定时器1)

P3.6

(外部数据存储器写选通)

P3.7

(外部数据存储器都选通)

表1P3口的第二功能

·RST:

复位输入。

当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。

·ALE/

:

当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。

当在Flash编程时还可以作为编程脉冲输出(

)。

一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。

但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。

·

程序存储允许时外部程序存储器的读选通信号。

当AT89C52执行外部程序存储器的指令时,每个机器周期

两次有效,除了当访问外部数据存储器时,

将跳过两个信号。

·

/VPP:

外部访问允许。

为了使单片机能够有效的传送外部数据存储器从0000H到FFFH单元的指令,

必须同GND相连接。

需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。

当执行内部编程指令时,

应该接到VCC端。

·XTAL1:

振荡器反相放大器以及内部时钟电路的输入端。

·XTAL2:

振荡器反相放大器的输出端。

 

3.1.2信号输入放大和整形电路

放大整形系统包括衰减器、放大器、施密特触发器。

它将正弦输入信号Vx整形成同频率方波Vo,幅值过大的被测信号经过分压器分压送入后级放大器,以避免波形失真。

由运算放大器构成的射级跟随器起阻抗变换作用,使输入阻抗提高。

同相输入的运算放大器的放大倍数为(R1+R2)/R1,改变R1的大小可以改变放大倍数。

系统的整形电路由施密特触发器组成,整形后的方波送到闸门以便计数。

由于输入的信号幅度是不确定、可能很大也有可能很小,这样对于输入信号的测量就不方便了,过大可能会把器件烧毁,过小可能器件检测不到,所以在设计中采用了这个信号调理电路对输入的波形进行阻抗变换、放大限幅和整形,信号调理部分电路具体实现电路原理图和参数如下图4所示:

3.1.3时基信号产生电路

时钟是一切微处理器、微控制器内部电路工作的基础。

单片机内部有一个自激振荡电路,它是定时控制部件中的一部分,可以通过内部自激振荡或外部提供振荡源这两种方式,驱动内部时钟电路产生系统时钟信号。

内部方式:

在XTAL1、XTAL2跨接定时元件和两个电容就构成了自激振荡器。

C1、C2取5-30PF,起微调和稳定作用。

晶振频率:

f=1.2~12MHZ,常用频率为6、12、11.0592MHz。

外部方式:

外部振荡脉冲信号直接由XTAL2端输入,此时,XTAL1应接地,而片内振荡电路不起作用,。

常用于单片机同时工作,以便同步,要求信号低于12MHz。

时钟周期:

振荡器输出的时钟脉冲频率的倒数。

为单片机中最小、最基本的时间单位。

状态周期:

振荡信号经2分频后获得的信号周期,称S,显然,S为时钟周期的2倍。

机器周期:

12个时周钟期为一个机器周期,对应计算机执行一个基本操作所需的时间。

指令周期:

执行一条指令所需的时间,至少包含一个机器周期。

指令字节:

指令占用存储空间的字节数,有单字节、双字节、三字节三类。

当时钟频率为12MHz和6MHz时,时钟周期分别为1/12μs和1/6μs,机器周期分别为1μs和2μs。

这里使用12MHz晶振和两个电容就构成的自激振荡器。

3.2数字频率计软件设计

3.2.1主程序设计

程序要求:

要能实现量程切换,超量程指示,准确定时。

3.2.2子程序设计

子程序主要包括:

按键中断子程序、定时中断子程序、计数中断子程序、周期中断子程序、超量程判断子程序、除法子程序、二进制转BCD子程序、显示程子序。

3.2.2.1按键中断子程序

按键中断子程序流程图

 

3.2.2.2定时中断和计数中断子程序

 

 

3.2.2.3周期中断子程序

周期中断子程序流程图

3.2.2.4超量程判断子程序

判断大小,小于量程输出“0.”,大于量程输出“1.”。

3.2.2.5除法子程序

该子程序用于周期转换频率,因为周期为两到三字节,所以使用移位除法。

移位除法模拟手算方法:

1)从被除数高位开始对齐除数,比较。

2)若前者大于或等于后者,商位为1,并把被除数减除数,形成部分余数。

若前者小于后者,商位为0。

3)部分余数左移一位,商也左移一位。

4)整个余数若小于除数,则退出。

5)部分余数从高位开始与除数比较。

6)到第2)步。

若被除数大于或等于除数,则溢出。

 

3.2.2.6二进制转BCD子程序

二进制转BCD分为小数部分和整数部分。

 

二进制转BCD子程序流程图

 

3.2.2.7显示程子序

先进行查码,然后由串行口发送到移位寄存器中。

程序:

DISP:

JBALLOW,OUT;显示更新是否允许

MOVR2,#04H;位数

MOVR1,#40H;显示数据首地址

DL0:

MOVA,@R1

MOVDPTR,#TAB2

MOVCA,@A+DPTR

MOVSBUF,A;发送

JNBTI,$

CLRTI

INCR1

DJNZR2,DL0

RET

TAB2:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

4.系统调试

4.1硬件调试

硬件调试,由大到小,从整体到局部,进行调试。

本设计电路简单,所以不一一调试,就最复杂的显示电路进行调试。

先由仿真器连接显示电路,循环发送四位(1-9)显示编码,

如果四位都不能显示,检查信号传输电路,时钟电路,电源。

如果四位都能显示,但有的位显示不正确,检查LED与移位寄存器的连线顺序是否正确。

如果还显示不正确,与正常的位调换LED数码管。

调换后,正常的位显示不正常,则数码管坏了,换数码管。

调换后,不正常的位显示不正常,则移位寄存器坏了,换移位寄存器。

4.2软件调试

4.2.1软件调试的步骤

(1)源文件的建立:

使用菜单“File-New”或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打开一个新的文本编辑窗口,在该窗口中输入汇编语言源程序(4.2小节所示)。

保存该文件,加上扩展名(.asm或a51),这里将文件保存为examl.asm。

(2)建立工程文件:

点击“Project-NewProject”菜单,出现以个对话框,要求给工程起一个名字,我们输入examl,不需要扩展名,点击保存按钮,出现第二个对话框。

这个对话框要求选择目标CPU(即我们所使用的芯片型号80C51)点击ATMEL前面的“+”号,展开该层,点击其中的80C51,然后点击确定按钮。

回到主界面,此时,在工程窗口的文件页中,出现了“Target1”,前面有“+”号,点击“+”展开,可以看到下一层的“SourceGroup1”,这时的工程还是一个空工程,里面什么文件也没有,需要手动把刚才编写好的源程序加入,点击“SouceGroup”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单。

选中其中的“AddfiletoGroup”SouceGroup1”,对话框,要求寻找源文件,注意该对话框下面的“文件类型“默认为CSoucefile(*.c),也就是以C为扩展名的文件,而我们的文件是以asm为扩展名的,所以在列表框中找不到examl1.asm,要将文件类型该掉,点击对话框中”文件类型‘后的下拉列表,找到并选中“AsmSouceFile(*.asm,*.a51)”,这样,在列表框中就可以找到examl1.asm文文件了。

双examl1.asm文件,将文件加入项目,注意,在文件加入项目后,该对话框并不消失,等待继续加入其他文件,但初学时常会认为操作没有成功而再次双击同一文件,这时会出现对话框,提示你所选的文件以在列表中,此时点击确定,返回前一对话框,然后,点击”Close”即可返回主界面,返回后,点击“SouceGoup1”前的加号,会发现examl1.asm文件以在其中。

双击文件名,即打开源程序。

(3)工程的详细设置:

首先点击左边Project窗口的Target1,然后使用菜单“Proget-Optionfortarget‘target1’”即出现对工程设置的对话框,对这个对话框可谓非常复杂,共有8个页面,要全部高清可不容易,好在绝大部分设置项取默认值就行了。

设置完成以后安确认返回主界面,工程建立、设置完毕。

(4)编译、连接:

在设置好工程后,既可以进行编译、连接。

选择菜单Project-Buildtarget,对当前工程进行连接,如果当前文件已修改软件会先对该文件进行比阿尼,然后在连接以产生目标代码。

编译过程中的信息将出现在输出窗口中的Build页中,如果源程序有语法错误,会有错误报告出现,双击该行,可以定到出错的位置,对源程序反复修改后,最终会得到如图5-1所示的结果,提示获得了名为examl.hex的文件,该文件即可被编程器读入并写到芯片中,同时还产生了一些其他相关文件可被用于KEIL的仿真与调试。

 

正确编译之后的结果

4.2.2调试过程中遇到的问题及解决方法

在进入环境以后,遇到了很多问题,总结如下:

(1)提示无asm文件

编译时候提示:

F:

\...\XX.asm

Filehasbeenchangedoutsidetheeditor,reload?

解决方法:

重新生成项目,产生examl.asm即可。

(2)在进入Keil的调试环境以后,发现程序有错

解决方法:

将光标定位于需要修改的程序上,用菜单,Debug》InlineAssambly…即可出现对话框,EnterNew后面的编辑框内直接输入需要修改的程序语句,输入完之后键入回车将自动指向下一条语句,可以继续修改,如果不在需要修改,可以点击右上角的关闭按钮关闭窗口。

(3)程序调试时,一些程序必须满足一定的条

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

当前位置:首页 > 法律文书 > 调解书

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

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