数字频率计(单片机)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
.
1 前言
随着电子技术的不断发展,各种电子产品也层出不穷,种类繁多。
但是每一种产品开发时都应该少不了对信号的检测,而检测信号的频率也是其中重要指标之一。
本设计设计的目的就是要设计出一种高效,高精度,价格便宜符合广大群众要求的数字频率计。
本设计主要由波形整形电路,单片机电路,量程指示及数字显示电路三大部分组成。
测量对象可以是方波,正弦波,三角波。
本设计以单片机位核心,单片机可以快速,精确地测出信号的频率,并且可以用直观的数字显示出来。
用单片机制作的数字频率计所需要的硬件要求比较简单,维修方便。
利用单片机的软件部分可以实现测量不同频率范围,本设计的测量范围为1HZ-10KHZ,10KHZ-100KHZ,100KHZ-1MHZ三个量程。
该电路还可以通过编程达到自动调节测量信号的量程,该电路软家调试简单,实用性高,价格低廉!
本设计使用了美国ATMEL公司生产的AT89S51,AT89S51是低功耗,高性能CMOS8位单片机,片内含4k bytes的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中。
2 总体方案设计
2.1方案比较
方案一:本方案主要以单片机为核心,利用单片机的计数定时功能来实现频率的计数并且利用单片机的动态扫描法把测出的数据送到数字显示电路显示。
其原理框图如图2.1所示:
图2.1 方案一原理框图
方案二:本方案主要以数字器件为核心,主要分为时基电路,逻辑控制电路,放大整形电路,闸门电路,计数电路,锁存电路,译码显示电路七大部分。
其原理框图如图2.2所示:
图2.2 方案二原理框图
逻辑控制电路
时基电路
放大整形电路
闸门电路
计数器
锁存器
译码显示器
信号放大电路
信号整形
单片机AT89S51 电路
数字显示 电路
2.2 方案论证
方案一:本方案主要以单片机为核心,被测信号先进入信号放大电路进行放大,再被送到波形整形电路整形,把被测的正弦波或者三角波整形为方波。
利用单片机的计数器和定时器的功能对被测信号进行计数。
编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。
方案二:本方案使用大量的数字器件,被测信号经放大整形电路变成计数器所要求的脉冲信号,其频率与被侧信号的频率相同。
同时时基电路提供标准时间基准信号,其高电平持续时间1s,当1s信号来到时,闸门开通,被测脉冲信号通过闸门,计数器开始计数,直到1s信号结束闸门关闭,停止计数。
若在闸门时间1s内计数器计得的脉冲个数为N,则被测信号频率Fx = NHz。
逻辑控制电路的作用有两个:一是产生锁存脉冲,是显示器上的数字稳定;二是产生清零脉冲,使计数器每次测量从零开始计数。
2.3方案选择
比较以上两种方案可以知道,方案一的核心是单片机,使用的元器件少,原理电路简单,调试简单只要改变程序的设定值则可以实现不同频率范围的测试能自动选择测试的量程。
与方案一相比较方案二则使用了大量的数字元器件,原理电路复杂,硬件调试麻烦。
如要测量高频的信号还需要加上分频电路,价格相对高了点。
基于上述比较,所以选择了方案一。
3 单元模块电路设计
3.1信号放大电路
放大整形电路由晶体管3DG100与74LS00等组成,其中3DG100组成放大器将输入频率为Fx的周期信号如正弦波,三角波等进行放大。
与非门74LS00构成施密特触发器,它对放大器的输出信号进行整形,使之成为矩形脉冲。
其电路图如图3.1所示:
图3.1 信号放大整形电路
利用ISIS仿真软件,上面的信号代表的是输入信号,下面信号代表的是输出信号。
当输入信号为正弦波时,可以得到如图3.2所示的方波输出信号。
图3.2 信号整形后的波形
3.2单片机复位电路
复位是单片机的初始化操作,只要给RESET引脚加上2个机器周期以上的高电平信号,就可使MCS—51单片机复位。
复位的主要功能是把PC初始化为0000H,使MCS—51单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态,为摆脱死锁状态,也需按复位键重新启动。
单片机的复位电路通常采用上电复位和按钮复位的两种方式。
本设计采用图3.3上电复位电路.上电自动复位是通过外部复位电路的电容充电来实现的。
只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。
图3.3 单片机复位电路
除PC之外,复位操作还对其它寄存器有影响,其复位状态如表3.1所示:
表3.1 复位时片内各寄存器的状态
寄存器复位状态寄存器复位状态
PC 0000H TMOD 00H
Acc 00H TCON 00H
PSW 00H TH0 00H
B 00H TL0 00H
SP 07H TH1 00H
DPTR 0000H TL1 00H
P0-P3 FFH SCON 00H
IP XXX00000B SBUF XXXXXXXXB
IE 0XX00000B PCON 0XXX0000B
由表可知,复位时,SP = 07H;4个I/O端口P0-P3的引脚均为高电平,这在某些控制
应用中,要考虑到引脚的高电平对外部控制电路的影响。
3.3时钟电路
时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准,有条不紊地一拍一拍地工作。
因此,时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
单片机内部有一个用于构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
这两个引脚跨接石英振荡器和微调电容,就构成一个稳定的自激振荡器。
单片机内部时钟方式的振荡器电路如图3.4所示:
图3.4 内部时钟电路
晶体的频率越高,则系统的时钟频率也就越高,单片机的运行速度也就越快。
但反过来运行速度快对储存器的速度也就越高。
本设计采用40PF的电容和24MHz的晶振。
本设计使用24MHz晶振的原因主要由本设计计数器对外部计数输入信号的要求。
当MCS-51内部的定时器/计数器被选定为定时器工作模式时,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器增1,因此定时器/计数器的输入脉冲的周期与机器周期一样,输入脉冲的频率为时钟振荡的1/12。
当采用12MHz频率的晶体时,计数速率为1MHz,输入脉冲的周期间隔为1us。
当定时器/计数器用作计数器时计数脉冲来自相应的外部输入引脚T0和T1。
当输入信号产生由1至0的负跳变时,计数器的值增1.每个机器周期的S5P2期间,对外部输入引脚进行采样。
如在第一个机器周期仲采得的值为1,而在下一个周期中采得的值为0,则在紧跟着的再下一个机器周期S3P1的期间,计数器加1。
由于确认一次负跳变要花两个机器周期,即24个振荡周期,因此外部输入的脉冲频率最高为250KHz,如果选用24MHz频率的晶体,则最高可输入1MHz的外部脉冲。
所以本设计最少要使用24MHz 或更高的晶振。
对于外部输入信号的占空比并没有什么限制,但为了确保某一给定的电平在变化之前能被采样一次,则这一点评至少要保持一个机器周期。
3.4量程指示电路
量程指示电路能按照所测频率的大小来自动显示所测频率的量程,如图3.5所示:
图3.5 量程指示电路
当单片机开始正常工作时,指示灯L1便亮。
当所测的频率在1Hz至10KHz时灯L4亮,当所测的频率在10K至100KHz时灯L3亮,当所测的频率在100K至1MHz时灯L2亮。
3.5数字显示电路
本设计使用动态扫描数字显示电路来显示频率的大小,如图3.6所示:
图3.6 数字显示电路
在多位LED显示时,为了简化硬件电路,通常将所有位的段选线相应地并联在一起,由一个8位I/O口控制,形成段选线的多路复用。
而各位的共阳极或共阴极分别由相应的I/O线控制,实现各位的分时选通。
图3.7所示位一个4位7段LED动态显示器电路原理图。
其中段选线占用一个8位I/O口,而位选线占用一个4位I/O口。
由于各位的段选线并联,段码的输出对各位来说都是相同的。
因此,同一时刻,如果各位位选都处于选通状态的话,4位LED将显示相同的字符。
若要各位LED能够显示出与本位相应的显示字符,就必须采用扫描显示方式,即在某一时刻,只让某一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,段选线上输出相应位要显示字符的段码。
这样同一时刻,4位LED中只有选通的那一位显示字符,而其他三位则是熄灭的。
同样,在下一时刻,只让下一位的位选线处于选通状态,而其他各位的位选线处于关闭状态,同时,在段选线上输出相应位将要显示字符的段码,则同一时刻,只有选通位显示出相应的字符,而其他各位则是熄灭的。
如此循环下去,就可以使各位显示出将要显示的字符,虽然这些字符是在不同时刻出现的,而同一时刻,只有以为显示,其他各位熄灭,但由于LED显示器的余辉和人眼的视觉暂留作用,只要每位显示间隔足够短,则可造成多为同时亮的假象,达到同时显示的目的。
LED不同位显示的时间间隔不能太短,因为发光二极管从导通到发光有一定的延时,导通时间太短,发光太弱人眼无法看清。
但也不能太长,因为毕竟要受限于临界闪烁频率,而且时间越长,占用CPU时间也越多。
另外,显示位增多,也将占用大量的CPU时间,因此动态显示实质是以牺牲CPU时间来换取元件的减小。
4 单片机软件设计
4.1数字频率计程序流程图
程序初始化
键盘扫描 是否按了开关键
计数器/定时器初始化
计数器开始计数 定时器开始计时
是否到1秒? 计数器停止计数
存储计数结果
判断所测频率的范围
显示所测频率大小
1档灯亮 2档灯亮 3档灯亮
结束
是
否
是 否
4.2单片机工作程序
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define CYCLE 49980
void DELAY(void);
void KEYSCAN(void);
void DISPLAY(void);
void CHULI(void);
unsigned char gewei,shiwei,baiwei,qianwei,shiwei1,baiwei1,qianwei1; unsigned char code a[10]={0xc0,0xf9,0xa4,0xB0,0x99,
0x92,0x82,0xF8,0x80,0x90};
sbit KaiGuan = P2^7;//开关位
sbit LEDpin = P1^3;//工作指示灯控制位
uchar T0H = 0, T0L = 0;
bit flag = 0;
uint N = 0;
unsigned long freq1 = 0;
unsigned long freq =0 ;
void main(void)
{while(1)
{
KEYSCAN();
if (TF0 == 1)
{TF0 = 0;
N++;
}
if (flag ==1)//判断所测频率的范围
{freq1=(65536*N + T0H*256 + T0L);
flag = 0;
if (freq1 <= 2500)
{freq = freq1 * 4;
P1 = 0xf6;
}
else if ( 2501<=freq1 & freq1 <=25000)
{freq = freq1 * 2 /5;
P1 = 0xf5;
}
else if (freq1>=25001)
{freq = freq1 /25;
P1 = 0xf3;
}
gewei = freq%10;
shiwei = (freq/10)%10;
baiwei = (freq/100)%10;
qianwei = freq/1000;
}
CHULI();
DISPLAY();
}
}
void timer1(void) interrupt 3 using 1 //一秒中断{static uint counter;
if(++counter >=10)
{ TR0 = 0;
TR1 = 0;
T0L = TL0;
T0H = TH0;
TH0 = TL0 = 0;
flag = 1;
counter = 0;
}
TH1 = (65536 - CYCLE)/256;
TL1 = (65536 - CYCLE)%256;
}
void DELAY(void)//延时程序
{static unsigned char x,y;
for(x=0;x < 20;x++)
for(y=0;y < 40;y++);
}
void KEYSCAN(void)//键盘扫描
{if (KaiGuan ==0)
{ DELAY();
if(KaiGuan ==0)
{LEDpin = 0;
TMOD = 0x15;
IE = 0x88;
TH1 = (65536 - CYCLE )/256; TL1 = (65536 - CYCLE )%256; TH0 = TL0 =0;
freq = 0x00;
TR0 = 1;
TR1 = 1;
}
}
}
void CHULI(void)
{if (P1 == 0xf6)
{qianwei1 = a[qianwei] & 0x7f;
baiwei1 = a[baiwei] ;
shiwei1 = a[shiwei];
}
if (P1 == 0xf5)
{qianwei1 = a[qianwei] ;
baiwei1 = a[baiwei]& 0x7f ;
shiwei1 = a[shiwei];
}
if (P1 == 0xf3)
{qianwei1 = a[qianwei] ;
baiwei1 = a[baiwei] ;
shiwei1 = a[shiwei] & 0x7f;
}
}
void DISPLAY(void)//显示所测的频率大小 {
P2 = 0xFE;
P0 = qianwei1;
DELAY();
P2 = 0xFD;
P0 = baiwei1;
DELAY();
P2= 0xFB;
P0 = shiwei1;
DELAY();
P2 = 0xF7;
P0 = a[gewei];
DELAY();}
5 特殊器件的介绍
5.1单片机AT89S51
单片机AT89S51的管脚图如图5.1所示:
图5.1 AT89S51原理图
AT89S51是美国ATMEL公司生产的低功耗,高性能CMOS8位单片机,片内含4k bytes 的可系统编程的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准8051指令系统及引脚。
它集Flash程序存储器既可在线编程(ISP)也可用传统方法进行编程及通用8位微处理器于单片芯片中。
5.2引脚功能说明
Vcc:电源电压
GND:地
RST:复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
WDT 溢出将使该引脚输出高电平,设置SFR AUXR的DISRT0 位(地址8EH)可打
开或关闭该功能。
DISRT0位缺省为RESET输出高电平打开状态。
ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
即使不访问外部存储器,ALE 仍以时钟振荡频率的1/6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。
对F1ash存储器程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。
该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。
PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲。
当访问外部数据存储器,没有两次有效的PSEN信号。
EA/VPP:外部访问允许。
欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器中的指令。
F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。
XTALl:振荡器反相放大器及内部时钟发生器的输入端。
XTAL2:振荡器反相放大器的输出端。
P0口:P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。
作为输出口用时,每位能驱动8个TTL逻辑门电路,对端口写“l”可作为高阻抗输入端用。
在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。
在F1ash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。
P1口:Pl 是一个带内部上拉电阻的8位双向I/O口,Pl的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。
对端口写“l”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。
作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
Flash编程和程序校验期间,Pl接收低8位地址。
其引脚功能表如表5.1所示:
表5.1 P1口引脚功能表
端口引脚第二功能
P1.5 MOSI(用于ISP编程)
P1.6 MISO(用于ISP编程)
P1.7 SCK (用于ISP编程)
P2 口:P2 是一个带有内部上拉电阻的8 位双向I/O 口,P2 的输出缓冲级可驱动
(吸收或输出电流)4 个TTL逻辑门电路。
对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。
在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。
在访问8 位地址的外部数据存储器(如执行MOVX@Ri 指令)时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。
Flash编程或校验时,P2亦接收高位地址和其它控制信号。
P3 口:P3 口是一组带有内部上拉电阻的8 位双向I/0 口。
P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。
对P3口写入“l”时,它们被内部上拉电阻拉高并可作为输入端口。
作输入端时,被外部拉低的P3口将用上拉电阻输出电流(IIL)。
P3口除了作为一般的I/0口线外,更重要的用途是它的第二功能,如下表所示:P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。
其引脚功能表如图5.2所示:
表5.2 P3口引脚功能表
端口引脚第二功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 INT0(外中断0)
P3.3 INT1(外中断1)
P3.4 T0(定时/计数器0外部输入)
P3.5 T1(定时/计数器1外部输入)
P3.6 WR(外部数据存储器写选通)
P3.7 RD(外部数据存储器读选通)
5.2特殊功能寄存器
电源空闲标志:电源空闲标志(POF)在特殊功能寄存器SFR 中PCON的第4 位(PCON.4),电源打开时POF 置“1",它可由软件设置睡眠状态并不为复位所影响。
存储器结构:MCS-51单片机内核采用程序存储器和数据存储器空间分开的结构,均具有64KB外部程序和数据的寻址空间。
程序存储器:如果EA引脚接地(GND),全部程序均执行外部存储器。
在AT89S51,假如EA接至Vcc(电源+),程序首先执行地址从0000H-0FFFH(4KB)内部程序存储器,再执行地址为1000H-FFFFH(60KB)的外部程序存储器。
数据存储器:AT89S51 的具有128字节的内部RAM,这128字节可利用直接或间接寻
址方式访问,堆栈操作可利用间接寻址方式进行,128字节均可设置为堆栈区空间。
看门狗定时器(WDT):WDT是为了解决CPU程序运行时可能进入混乱或死循环而设置,它由一个14bit计数器和看门狗复位SFR(WDTRST)构成。
外部复位时,WDT默认为关闭状态,要打开WDT,用户必须按顺序将01EH和0E1H写到WDTRST寄存(SFR地址为0A6H),当启动了WDT,它会随晶体振荡器在每个机器周期计数,除硬件复位或WDT 溢出复位外没有其它方法关闭WDT,当WDT溢出,将使RST引脚输出高电平的复位脉冲。
使用看门狗(WDT):打开WDT需按次序写01EH和0E1H到WDTRST寄存器(SFR的地址为0A6H),当WDT打开后,需在一定的时候01EH 和0E1H 到WDTRST 寄存器以避免WDT 计数溢出。
14 位WDT 计数器计数达到16383(3FFFH),WDT 将溢出并使器件复位。
WDT 打开时,它会随晶体振荡器在每个机器周期计数,这意味着用户必须在小于每个16383 机器周期内复位WDT,也即写01EH和0E1H到WDTRST寄存器,WDTRST为只写寄存器。
WDT计数器既不可读也不可写,当WDT溢出时,通常将使RST引脚输出高电平的复位脉冲。
复位脉冲持续时间为98×Tosc,而Tosc=1/Fos(晶体振荡频率)。
为使WDT工作最优化,必须在合适的程序代码时间段周期地复位WDT防止WDT溢出。
掉电和空闲状态时的WDT:掉电时期,晶体振荡停止,WDT也停止。
掉电模式下,用户不能再复位WDT。
有两种方法可退出掉电模式:硬件复位或通过激活外部中断。
当硬件复位退出掉电模式时,处理WDT 可象通常的上电复位一样。
当由中断退出掉电模式则有所不同,中断低电平状态持续到晶体振荡稳定,当中断电平变为高即响应中断服务。
为防止中断误复位,当器件复位,中断引脚持续为低时,WDT并未开始计数,直到中断引脚被拉高为止。
这为在掉电模式下的中断执行中断服务程序而设置。
为保证WDT在退出掉电模式时极端情况下不溢出,最好在进入掉电模式前复位WDT。
在进入空闲模式前,WDT 打开时,WDT 是否继续计数由SFR 中的AUXR 的WDIDLE 位决定,在IDLE 期间(位WDIDLE=0)默认状态是继续计数。
为防止AT89S51从空闲模式中复位,用户应周期性地设置定时器,重新进入空闲模式。
位WDIDLE被置位,在空闲模式中WDT 将停止计数,直到从空闲(IDLE)模式中退出重新开始计数。
定时器0和定时器1:AT89S51 的定时器0 和定时器1 操作与AT89C51 一样。
中断:AT89S51共有5个中断向量:2个外中断(INT0和INT1),2个定时中断(Timer0和Timer1)和一个串行中断。
这些中断源各自的禁止和使能位参见特殊功能寄存器的IE。
IE也包含总中断控制位EA,EA清0,将关闭所有中断。
值得注意的是表4中的IE.6和IE.5没有定义,用户不要访问这些位,它是保留为以后的AT89产品作扩展用途。
定时器0和定时器1 的中断标志TF0和TF1,它是定时器溢出时的S5P2时序周期被置位,该标志保留至下个时序周期。
空闲节电模式:在空闲工作模式状态,CPU保持睡眠状态而所有片内的外设仍保持激活状态,这种方式由软件产生。
此时,片内RAM和所有特殊功能寄存器的内容保持不
变。
空闲模式可由任何允许的中断请求或硬件复位终止。
需要注意的是,当由硬件复位来终止空闲工作模式时,CPU 通常是从激活空闲模式那条指令的下一条指令开始继续执行程序的,要完成内部复位操作,硬件复位脉冲要保持两个机器周期(24个时钟周期)有效,在这种情况下,内部禁止CPU 访问片内RAM,而允许访问其它端口。
为了避免在复位结束时可能对端口产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对端口或外部存储器的写入指令。
掉电模式:在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内RAM和特殊功能寄存器的内容在终止掉电模式前被冻结。
退出掉电模式的方法是硬件复位或由处于使能状态的外中断INT0和INT1激活。
复位后将重新定义全部特殊功能寄存器但不改变RAM 中的内容,在Vcc恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。
6 系统调试
利用仿真软件ISIS的强大的仿真功能可以有效地检验所设计的原理图是否在理论上正确合理。
选择适当的三极管和设置基极,发射极,集电极电阻可以得到适当的放大倍数对所测的信号进行有效的处理。
要选择适当的三极管,以免避免发生截止失真和饱和失真。
分别以正弦波,方波,三角波作为输入信号检测电路的整形效果。
利用仿真软件的示波器来观察整形出来的波形是否符合所要整形出来的波形。
利用Keil uvision2软件编写单片机的工作程序并且检验程序是否成功编译。
通过Keil uvision2逐步运行程序的功能可以检测出程序的错漏从而进行改正。
程序编译成功后,利用ISIS软件把程序加载到原理图中进行仿真,通过显示器显示出来的频率大小与所设计的频率相比较可以看出所编写的程序是否满足要求,是否符合设计所要求的精度。
测出各频率范围的误差,如果不符合设计所要求的精度可以通过改变单片机定时器的初始值或者优化程序的结构来减小误差增加精度!LED数码管采用的是动态扫描的方法进行显示,要设计好相应的扫描时间,因为扫描时间太短则LED显示出来的数字便会一直在闪烁不稳定,扫描时间太长则LED显示便会出现短时间的熄灭。
调试电路的时候发现由于P2口的驱动能力不够大因此要驱动LED数码管工作就应该加上反相器或者三极管作为驱动电路。
由于受到时间和器件的限制并没有把设计的实物做出来,本设计只通过测试软件测试,理论是符合要求的。
7 系统功能参数指标
本设计的数字频率计所测量的范围为1HZ —10KHZ ,10KHZ —100KHZ ,100KHZ —1MHZ ,频率准确度为3
210x
x f
f -∆≤±⨯,被测信号幅度(0.25)xm V V =,输入被测信号可以是正弦波,方波,三角波。
单片机晶振采用24MHZ 的频率,与MCS-51产品指令系统完全兼容4k 字节在系统编程(ISP )Flash 闪速存储器1000次擦写周期4.0-5.5V 的工作电压范围全静态工作模式:0Hz -33MHz 三级程序加密锁128×8字节内部RAM32个可编程I /O 口线2个16位定时/计数器6个中断源全双工串行UART 通道低功耗空闲和掉电模式中断可从空闲模唤醒系统看门狗(WDT )及双数据指针掉电标识和快速编程特性灵活的在系统编程(ISP 字节或页写模式)。
8 设计总结
通过本次课程设计,我感觉自己的知识水平有了明显的提高。
刚开始看到自己要设计的题目时,感觉无从下手。
有很多原理都没搞清楚,设计中用到的大部分元件以前都没见过。
对于设计中要用到的protel ,isis等软件更是不是很了解,有时为了弄懂一个器件就要花半天的时间看书查资料。
在使用软件时,由于全是英文版本,用起来相当的不倡顺,只能自己摸索。
但通过长时间地问老师和自己上网查资料,自学,终于了解了设计中各模块中的原理及功能。
对于各种软件也有了不同程度的认识,基本上能使用设计中涉及到的各种软件。
在设计过程中能学到很多平时上课没学到的东西,思考问题时也能从多角度,多方面考虑。
学会了在遇到难题时,能捉住要点,再找出切实可行的解决方法。
在设计过程中加深了对单片机的认识掌握了单片机的特性,学会了用C语言写程序,了解了汇编语言跟C语言的优缺点,C语言用于编写较复杂的大型程序,汇编则用于对效率要求很高的场合,尤其是底层函数的编写。