基于51单片机的数字频率机设计

发布者:JoyfulHearted最新更新时间:2021-10-14 来源: eefocus关键字:51单片机  lcd1602液晶显示 手机看文章 扫描二维码
随时随地手机看文章

一.硬件方案

频率计由89S52单片机控制电路、信号处理电路、键盘电路以及测量数据的显示电路还有系统软件所构成的,在信号处理电路当中包含了待测信号放大、限幅、波形变换、波形整形以及分频电路。测量范围为0~100KHZ。


主要由51单片机+最小系统+分频模块+整形模块+lcd1602液晶显示+按键而成;如图:

二.设计功能

(1)频率的测量范围为1Hz—100kHz能测量各种周期信号,能测出正弦波、三角波或方波等波形的频率。

(2)通过LCD1602液晶显示屏显示检测到的即时频率数值(最多8位数,单位为Hz)。

(3)电路板上排针左边接信号输入,右边接地。


三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:

(2)Protues仿真图如下:

四.软件设计

(1)程序流程图

(2)频率测量程序框图

(3)中断服务流程图

(4)主程序源码


//----------------主函数--------------------

void main()

unsigned char i;

LCD_init();

timer_init();             //定时/计数器初始化 

for(i = 0;i<4;i++)

{

LCD_disp_char(i+0,1,character_1[i]);

}

while(1)

{

dis_num();         //显示

delay_1s();

}

}

//-------------------定时/计数器初始化--------------

void timer_init(void)         //定时/计数器初始化

TMOD=0x66;                //计数器0和计数器1工作工作方式2,自动重装初值 

TH0=0;                    //计数器初值为0

TL0=0;

TR0=1;                    //计数器开始计数    

ET0=1;                    //打开计数器0中断   

TH1=0;                    //计数器初值为0

TL1=0;

TR1=1;                    //计数器开始计数    

ET1=1;                    //打开计数器1中断   

RCAP2H=(65536-62500)/256; //在程序初始化的时候给RCAP2L和RCAP2H赋值, 

RCAP2L=(65536-62500)%256; //TH2和TL2将会在中断产生时自动使TH2=RCAP2H,TL2=RCAP2L。 

TH2=RCAP2H;               //12M晶振下每次中断62.5ms(1s=1000ms=62.5ms×16)

TL2=RCAP2L;

ET2=1;                    //打开定时器2中断 

TR2=1;                    //定时器2开始计时  

EA=1;                     //开总中断   

//------------------中断函数----------------------

void timer2(void) interrupt 5 //定时器2中断(62.5ms)

{

time++;

TF2=0;                    //定时器2的中断标志位TF2不能够由硬件清零,所以要在中断服务程序中将其清零

if (time==16)             //定时1s时间到  

{

   time=0;                //计时清0

   EA=0;                  //关中断 

   fre=(long)count1*256+TL1;     //count*256强制转换成long型,否则将不产生进位~先判断分频后(计数器1)

   FLAG = 0; 

  

   if(fre<2000)//如果不到200KHz则读取分频前(计数器0)频率(200K÷100=2000)

   {

   fre = (long)count*256+TL0;

FLAG = 1;          

   } 

if(!FLAG)

{

fre = fre *100;//100分频

}

   TL0=0;                 //清零计数器0计数    

   TH0=0;

   TL1=0;

   TH1=0; 

   count=0;               //清零计数器0计数  

   count1=0;

   EA=1;                  //开中断    

}

关键字:51单片机  lcd1602液晶显示 引用地址:基于51单片机的数字频率机设计

上一篇:​平头哥玄铁910全球首次兼容安卓系统,可运行Chrome浏览器
下一篇:东芝推出TXZ+™族高级系列新款M4N组Arm® Cortex®-M4微控制器

推荐阅读最新更新时间:2024-11-08 10:19

8051单片机实战分析(以STC89C52RC为例) | 08 - 矩阵按键驱动
1 矩阵键盘 矩阵键盘又称行列键盘,它是用四条I/O线作为行线,四条I/O线作为列线组成的键盘。在行线和列线的每个交叉点上设置一个按键。这样键盘上按键的个数就为4*4个。这种行列式键盘结构能有效地提高单片机系统中I/O口的利用率。 最常见的键盘布局如图所示。一般由16个按键组成,在单片机中正好可以用一个P1实现16个按键功能,这也是在单片机系统中最常用的形式。 4*4矩阵键盘的电路如图所示: 工作原理: 当无按键闭合时,P10~P13与P14~P17之间开路。当有键闭合时,与闭合键相连的两条I/O口线之间短路。 判断有无按键按下的方法是: ① 设置列线P10~P13为输入状态,从行线P14~P17输出低电平
[单片机]
80<font color='red'>51单片机</font>实战分析(以STC89C52RC为例) | 08 - 矩阵按键驱动
51单片机开发的几点心得
1、 单片机 IO口上电后默认是高电平。(P1、P2、P3口内部上拉,若P0口未接上拉电阻的话,默认是高阻态) 2、单片机工作频率=晶振频率/12,即使用12MHz的晶振,实际工作频率为1MHz,一个机器周期为1us。 3、单片机常用11.0592MHz的晶振,主要是保证串口通信的同步。比如说在9600波特率下每位数据电平持续96个机器周期,因为是整数值,不会产生误差。若使用12MHz的晶振,高波特率下通信容易产生误码。 4、三极管的使用:在模拟电路中,输入为高频模拟信号时,三极管一般工作在放大模式下。在数字电路中,三极管一般作为开关用,工作在饱和模式下。 5、在单片机数据线和地址线复用的情况下必须使用锁存器,可在工作时锁
[单片机]
51单片机串口多通信的实现和编程
一、51单片机的主从模式,首先要设定工作方式3:(主从模式+波特率可变) SCON串口功能寄存器:SM0=1;SM1=1(工作方式3) 注:主机和从机都要为工作方式3。 【工作方式2 (SM0 SM1 :1 0):串行口为11位异步通信接口。发送或接收一帧信息包括1位起始位“0”、8位数据位、1位可编程位、1位停止位“1”。发送数据:发送前,先根据通信协议由软件设置TB8为“奇偶校验位”或“数据标识位”,然后将要发送的数据写入SBUF,即能启动发送器。发送过程是由执行任何一条以SBUF为目的寄存器的指令而启动的,把8位数据装入SBUF,同时还把TB8装到发送移位寄存器的第9位上,然后从TXD(P3.1)端口输出一
[单片机]
<font color='red'>51单片机</font>串口多<font color='red'>机</font>通信的实现和编程
51单片机实现常用的自定义串口通讯协议
一、使用proteus绘制简单的电路图,用于后续仿真 二、编写程序 /******************************************************************************************************************** ---- @Project: USART ---- @File: main.c ---- @Edit: ZHQ ---- @Version: V1.0 ---- @CreationTime: 20200711 ---- @ModifiedTime: 20200711 ----
[单片机]
<font color='red'>51单片机</font>实现常用的自定义串口通讯协议
#51单片机#按键
按键 常用的按键电路有两种,一种是独立式按键,另一种是矩阵式按键。 独立按键 独立式按键各自与独立的输入线相连接。 以下图中的电路为例,进行分析。 独立式按键原理图: 判断按键是否被按下的依据是:KeyIn(n) IO口电平的高低。 当K1按下时,电路高低电平端联通。此时Keyln1引脚为低电平。 当K1松开时,线路断开,Keyln1与+5V是等电位。此时Keyln1引脚为高电平。 通常,单片机IO口内部存在上拉电阻。 以准双向IO口结构图为例: 方框内的电路是单片机的内部部分,方框外是外接的上拉电阻和按键。 注意:读取外部按键信号时,单片机必须先给该引脚置1!!! 分析如下: 当内部输出=
[单片机]
#<font color='red'>51单片机</font>#按键
PCF8591与AT89C51单片机的接口程序
  以AT89C51为主器件.I2C总线上连接4个PCF8591芯片,芯片地址分别为(OOOb、OlOb、020b、400b),89C51的P3.6作为SCL信号.P3.7做为SDA信号,每个芯片的模拟输入采用单端方式输入,参考电压VREF选用4.8V。参考电路如下图所示。下面程序为I2c协议、读取4路A,D转换数据以及写入D/A变换数值的C语言代码。
[单片机]
PCF8591与AT89C<font color='red'>51单片机</font>的接口程序
51单片机中的21个寄存器
ACC 累加器 B 用于辅助累加器做某些运算的寄存器 PSW 程序状态字其中最高位是进/借位标志C;PSW.6是辅助进位标志AC,用于标识加减运算中低四位向高四位的进位;PSW.4和PSW.3是寄存器组选择位RS1和RS0,用于从00H--1FH的32个存储器单元(4组)中选出当前准备使用的一组工作寄存器的映射地址;PSW.2是溢出标志OV;PSW.0是ACC的偶校验位P;PSW的其余位不用 IP 中断优先级控制寄存器在51中IP.0--IP.4依次控制INT0、T0、INT1、T1、UART中断的优先级,高三位不用 IE 中断使能控制器 IE.7是所有中断的总开关EA,IE.0--IE.4依次控制INT0、T0、INT1、T
[单片机]
基于51单片机的汉字LCD智能显示模块设计
  引言   在电子产品设计中,人机交互显示界面是必不可少的工作,目前一般使用的液晶显示器均为七段笔划式,只能显示数字和少量字符,功能往往受到局限,对于较复杂的字符或图形则无能为力。而lcd智能型显示模块则是一种低功耗、低损耗、低价值的显示器件,它不但可以显示各式各样的字符、汉字和图形,同时具有可编程能力,且与单片机接口方便,基于以上优点,lcd智能显示模块获得了广泛的应用。   系统组成   本系统主要由三部分组成,分别为单片机,lcd模块和flash字库,图1所示是该系统的硬件原理框图,由于显示所需要占用的资源过多(本设计采用的是16×16点阵,每个汉字存储需要32个字节),而单片机内部ram资源及其有限,所以系统设计时
[单片机]
基于<font color='red'>51单片机</font>的汉字LCD智能显示模块设计
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved