六位数显频率计数器
---------------------------------------------------------------------------------------------------------------
1.1 课程设计任务----------------------------------------------------------------------------------------
1.2设计目的 -----------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
2.1频率测量的原理和
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
---------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
3.1.1电源供电电路--------------------------------------------------------------------------------------
3.1.2单片机时钟电路--------------------------------------------------------------------
3.1.3单片机复位电路 -----------------------------------------------------------------------------------------
3.1.4显示电路 --------------------------------------------------------------------------------------------------
3.2 AT89C51单片机芯片的功能及其参数-------------------------------------------------------
---------------------------------------------------------------------------------------------------
4.1软件
流程图
破产流程图 免费下载数据库流程图下载数据库流程图下载研究框架流程图下载流程图下载word
及编写程序 -----------------------------------------------------------------------------------
4.2软件减小测量误差的办法 --------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------
1.1
本课程设计主要任务是设计一个频率计数器,其主要功能如下:利用
AT89C51单片机的T0、T1的定时计数器功能,来完成对输入的信号进行频率计
数,计数的频率结果通过6位动态数码管显示出来。要求能够对0-25KHZ的信号频率进行准确计数,计数误差不超过?2HZ。
1.2
A、熟悉和掌握51单片机的原理、结构和应用;
B、用 PROTEL/ALTIUM DESIGNER进行电路的设计,进一步了解相关软件的功能以及设计的一些规则;
C、熟悉用C语言进行程序设计的一般方法、步骤和应用;
D、积极发扬团队精神和集体荣誉感,互相协作、互相帮助;
E、熟悉电路的调试的接线方法和调试方法及其原理
F、锻炼自己的实践和动手能力,为以后能更快的投入工作而做准备;
2.1
方案一:直接测频法。把被测频率信号经过脉冲形成电路后加到闸门的一个
输入端,只有在闸门开通时间 1秒内,被计数的脉冲被送到计数器进行计数。
设计数器的值为N,由频率定义式计算得到被测信号频率为f=N/T=N。
方案二:测量周期法。将被测量信号经过过零检测后转换成方波信号,利用
单片机查询两个下降沿,在此期间根据晶体振荡器产生的时钟经过12分频的脉冲送计数器进行计数,设计数值为N,送入计数器的时钟周期为T,则得被测量信号的周期值为NT,然后取其倒数即为被测量信号的频率(1/NT) 。
理论上分析:采用直接测频法在测量低频段信号时的相对测量误差较大,但
在高频段测量信号的频率有较高的精度。如果采用测频法测量低频段频率信号,
要想提高精确度,势必会大幅度增加闸门开通时间T,时效性较差。相反,采用
测量信号周期然后取其倒数的方法在低频段测量时精度很高。
但是本
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
目要求误差为?2HZ,经过试验分析,加上必要的软件编程的措施,
可以直接用高频的测法,在高频段,误差与示波器的显示频率基本一致,低频时,
误差小于?0.5HZ,满足题目的要求!
我们都知道,52单片机中断的进入都是需要一定的时间的,如果我们没有把这
个考虑进去,直接进行软件的设计,误差达到了?20HZ。不满足题目的要求!因而在编程的时候,把中断事件也考虑进去!这样可以使得误差减小!
3.1
3.1.1
LED1
J1VCC
R1
2GND
4701LED
CON2GND
供电部份接口设计用的是DIP2的插针,电路采用发光二极管检测电源是否
已接通。
S1
C3
SW-PB3.1.2
如图所示是采用内部振荡方式使8052单片机产生时钟信号,在单片机芯片的X1和X2引脚
两端跨接石英晶体振荡器和两个电容构成稳定的自激振荡电路,其中电容对振荡频率起微调
作用。晶振频率为12MHZ。
R83.1.3
复位是单片机的初始化操作。其功能是使CPU从0000H单元开始执行程序。
除了使系统正常初始化外,当程序运行出错或操作错误使系统处于死锁状态时,
为摆脱困境,也需要按复位键重新启动。如图为按键手动复位方式,通过复位端
经电阻和电源+5V接通实现复位功能,兼备上电复位功能。
+5v
10uF
RESET
10K
GND
3.1.4
该系统采用两个四位 LED共阳极显示器动态显示6位数。共阳极数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,
相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。要使数码管
正常发光一般都要加驱动电路,不加驱动电路是很暗的,共阳数码管驱动加于位
选端。
该数码管用S8850 PNP型三极管作为驱动电路,在基极加以分压限流电阻,以
防止数码管因电流过大而烧坏。
3 .2 AT89C51
AT89S51是一个有40个引脚的芯片,引脚配置如图3所示。与8031相比,AT89C51自带4K的ROM和128B的RAM,因此编写中小型系统就无需任何硬件进行扩展。
图3
AT89S51引脚配置
AT89S51芯片的40个引脚功能为:
:电源电压。
:接地。
:复位输入。当RST变为高电平并保持2个机器周期时,所有I/O引脚复位至“1”。
:反向振荡放大器的输入及内部时钟工作电路的输入。
:来自反向振荡放大器的输出。
:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位
字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输
出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳
过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微
处理器在外部执行状态ALE禁止,置位无效。
:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器
周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于
施加12V编程电源(VPP)。
:8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定
义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
:8位双向I/O口。引脚P1.2~P1.7提供内部上拉,当作为输入并被外部
下拉为低电平时,它们将输出电流,这是因内部上拉的缘故。P1.0和P1.1需要外部上拉,可用作片内精确模拟比较器的正向输入(AIN0)和反向输入(AIN1),P1口输出缓冲器能接收20mA电流,并能直接驱动LED显示器;P1口引脚写入“1” 后,可用作输入。在闪速编程与编程校验期间,P1口也可接收编码数据。
:带内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因
此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘
故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八
位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
:引脚P3.0~P3.7为带内部上拉的双向I/0引脚。P3口的输出缓冲器能接收20mA的灌电流;P3口写入“1”后,内部上拉,可用输入。P3口也可用作特殊功能口,其功能见
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
1。P3口同时也可为闪速存储器编程和编程校验接收控制
信号。
表3-1 P3口特殊功能
P3口引脚 特殊功能
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 (外部中断0)
P3.3 (外部中断1)
P3.4 T0(定时器0外部输入)
P3.5 T1(定时器1外部输入)
P3.6 /WR(外部数据存储器写选通)
P3.7 /RD(外部数据存储器读选通)
4.1
1 设计思路及原理
单片机当工作方式寄存器TMOD的C/T位=1时为计数方式,多路开关与定时器0的外部引脚连通,外部计数脉冲由引脚输入。当外部信号由1至0跳变时,计数器加1,此时T0成为外部事件的计数器。由于确认一次由1至0的跳变要用24个振荡器周期,所以所设计计数器的最高计数频率为单片机时钟频率的1/24。
1) 定时/计数器T0和T1的工作方式设置,T0是工作在计数状态下,对输入的
频率信号进行计数,但对工作在计数状态下的T0,最大计数值为fOSC/24,
由于fOSC=12MHz,因此:T0的最大计数频率为250KHz。所以对于设计要
求即测量范围为0~~25KHZ是完全满足的。对于频率的概念就是在一秒只
数脉冲的个数,即为频率值。所以T1工作在定时状态下,每定时1秒中到,
就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处
理。送到数码管显示出来
2) T1工作在定时状态下,最大定时时间为65ms,达不到1秒的定时,所以采
用定时50ms,共定时20次,即可完成1秒的定时功能。因此每次放入定时
器1的初值为TH1=65536/256,TL1=65536%256.
3) 工作方式的确定。首先,两个定时器都采用软件启动定时器,都工作在16
位计数器状态,即方式1,所以TMOD的高四位和低四位的GATE=0,M1M0=01;
定时器1用于定时,所以D6位=0,定时器0用于技术,所以D3位=1。所以
TMOD=0x15.控制方式寄存器TCON的相应位在程序中确定。
软件流程图:
开始
设置变量T0count,temp[]
等及字形码表及位选码表
T0清零,T1赋初值,TR0=1,TR1=1,允许定时器中断
ET0=1,ET1=1,EA=1。
T0溢出中断T1溢T0溢或T1溢出中T1重出 出 T0count++,断 新赋th0,tl0=0 Timecount=2N N值 0? O
了吗?
Y
TR0=0,TR1=0;
读一秒钟的计数次数(也就是频率)x=T0count*65536+TH0*256+TL0,
处理数据temp[0],temp[1],temp[2],temp[3],temp[4],temp[5]
送数据到六位数码
管显示
结束
编写并调试好的程序如下:
#include
#include
#define SEG P0
#define SEG_w P2
unsigned char code dispbit[]=
{0x01,0x02,0x04,0x08,0x10,0x20}; //数组对应6个数码管
unsigned char code dispcode[]={
0xC0, // 0
0xF9, // 1
0xA4, // 2
0xB0, // 3
0x99, // 4
0x92, // 5
0x82, // 6
0xF8, // 7
0x80, // 8
0x90, // 9
0x88, // A
0x83, // B
0xC6, // C
0xA1, // D
0x86, // E
0x8E // F
};
unsigned char dispbuf[5]={0,0,0,0,0};
unsigned char temp[5];
unsigned char dispcount;
unsigned char T0count; //T0计数器溢出次数
unsigned char timecount;
bit flag; // 标志位 unsigned long x; //脉冲次数 void delay1ms(unsigned char t) //延时1ms
{
unsigned char j,tt;
for(j=0;j12000)&&(x<18000))x=x-1; //高频时减小误差
else if((x>18000)&&(x<20000))x=x-2;
else if((x>20000)&&(x<30000))x=x-3;
temp[0]=x%10; //数据处理 ,取个位
temp[1]=(x/10)%10; // 取十位
temp[2]=(x/100)%10; //取百位
temp[3]=(x/1000)%10; //取千位
temp[4]=x/10000; //取万位
T0count=0; //清零
TH0=0; //清零
TL0=0; //清零
TH1=(65536-50000)/256; //置初值
TL1=(65536-50000)%256;
TR0=1; //开定时器0 计数
TR1=1; //开定时器1
}
for(i=0,dispcount=0;dispcount<5,i<5;dispcount++,i++) //送数据显示
{
SEG=0xff; //开数码管 钢制闪烁
dispbuf[i]=temp[i];
SEG =dispcode[dispbuf[dispcount]];
SEG_w =dispbit[dispcount];
delay1ms(4);
}
}
}
void t0(void) interrupt 1 using 0 //t0中断
{
T0count++;
}
void t1(void) interrupt 3 using 0 //t1中断
{
TH1=(65536-50000)/256; //置初值,每4ms中断一
次
TL1=(65536-50000)%256;
timecount++;
if(timecount==20) //满250次为1s 即 250x4ms
{
TR0=0; //关掉t0计数器
timecount=0;
flag=1;
}
}
4.2
写好程序后用protues仿真。第一次仿真结果为:在低频时测得的数据很准确,
在5khz以上开始有误差,且随着频率的上升,误差增大。当信号频率为25khz
时,误差为+77hz。分析了一下程序觉得T1重装次多太多造成计数时间偏大是误差的主要原因。修改了程序,让T0从原来的每次定时5ms,定时1s重装200
次变为每次定时50ms,定时1s重装20次后,第二次仿真。误差大大减小,为
+5hz。此时,误差还是不能满足要求。在程序中加以下几个语句
if((x>12000)&&(x<18000))x=x-1; else if((x>18000)&&(x<20000))x=x-2;
else if((x>20000)&&(x<30000))x=x-3;来减小较高频时的误差。虽然觉得这样不合
理,不过这样处理后,误差真的减了好多。满足了设计的初始要求。
PCB 将原理图导入PCB,布好线后如下图:
将布好线的pcb拿去打印,并将打印纸用电熨斗印在板子上。印好后放进三氯化铁溶
液中腐蚀两个小时即可腐蚀完毕。清洗腐蚀好的板子,刮去铜线上的石墨。弄干净后准备安
插焊接元件。焊好板子后检查线路是否完全接好。然后把调试好的程序烧录到单片机中去调
试。调试成功。至此,整个设计圆满成功。
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测
量仪器。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制
数显示,测量迅速,精确度高,显示直观,会被经常使用到。
通过本次课程的设计,不但加深我对在课程上所学到的单片机理论知识的认
识和理解,重新让自己认识到了这门学科的在应用方面的广阔前景,并且通过知
识与应用于实践的结合更加丰富了自己的知识。扩展了知识面,不但掌握了本专
业的相关知识,而且对其他专业的知识也有所了解,而且较系统的掌握单片机应
用系统的开发过程,因而自身的综合素质有了全面的提高 。
经过这次一个较完整的产品设计和制作过程,对于认识到自己在知识方面存
在的不足,明确今后的学习方向是非常有益的,为将来的就业提前打了下坚实的
基础。在设计过程中,得到了我的指导老师的悉心指导与帮助,还有其他老师和
同学的大力支持和协助,在此表示衷心的感谢。
1) 张天凡等。51单片机c语言开发完全手册。北京:电子工业出版社。2008.6 2) 江立,蔡骏等。单片机原理与应用技术。北京:清华大学出版社。2006. 3) 潘新民,王燕芳。微型计算机控制技术。北京:电子工业出版社。2005.10 4) 秦曾煌等。电工学(电子技术)。北京:高等教育出版社。2004.7 5) 何书森 何华斌.实用电子线路设计速成 。福州:福建科学技术出版社 2004. 19-99. 6) 周润景,王伟。Altium Designer 原理图与PCB设计。北京:电子工业出版社。2009.6