蓝桥杯单片机之NE555频率发生计的使用(IO模式)

蓝桥杯单片机之NE555频率发生计的使用

    • NE555原理图及基本原理分析
    • 基本控制
    • 设计思路
    • 代码

NE555原理图及基本原理分析

NE555时基芯片的频率输出引脚为NET_SIG,连接着外部排针J3的SIGNAL引脚。Rb3可以调节频率输出的大小。
蓝桥杯单片机之NE555频率发生计的使用(IO模式)_第1张图片

基本控制

NE555的频率输出不能通过51芯片直接控制,是由硬件的电位器进行调节。为了能够知道555输出的频率具体是多少,需要我们控制51芯片对555输出的信号进行测量并显示。所以对NE555芯片的使用就是利用定时器计数模式对方波信号进行测量。

在在CT107D单片机综合实训平台上,用短路环将J13中的SIGNAL与P34短接,NE555发生的信号输入到单片机的P34引脚。

设计思路

利用定时器1用方式1,定时;定时器0用方式2,计数(一个脉冲记一次)。设定定时器每50ms中断一次,中断20次统计定时器0的计数值,得到的计数值就是相应的频率。

代码

#include "reg52.h"
 
unsigned char SMG_NoDot[19] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,0xbf,0x7f,0xff}; //0-9、A-F、'-'、'.'
 
unsigned int count_f = 0;
unsigned char count_t = 0;
unsigned int dat_f = 0;
 
void Delay500us()		//@12.000MHz
{
	unsigned char i, j;

	i = 6;
	j = 211;
	do
	{
		while (--j);
	} while (--i);
} 
void Digital_Tube(unsigned char Position,unsigned char Typeface)    //Position是数码管第几位(从左到右,0开始),Typeface是显示的字样
{   
  unsigned char Bit[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};       
	P2 = P2 & 0x1f | 0xc0;
	P0=Bit[Position];
	P2 = P2 & 0x1f | 0xe0;
	P0=SMG_NoDot[Typeface];
	Delay500us();
	P0=0XFF;
	P2 = P2 & 0x1f ;	//数码管消影
}

void Display_right(long int number)
{
    long int i,a,b;
    for(i=0;i<8;i++)
    {
        a=number%10;
        Digital_Tube(7-i,a);
        b=number/10;
        if(b==0) break;
        number=b;
    }
}

void Init_Timer()
{
	TH0 = 0xff;        
	TL0 = 0xff;
	
	TH1 = (65536 - 50000) / 256;        
	TL1 = (65536 - 50000) % 256;
	
	TMOD = 0x16;     //定时器1用方式1,定时;定时器0用方式2,计数
	
	ET0 = 1;
 	ET1 = 1;
	EA = 1;
	
	TR0 = 1;
	TR1 = 1;
}
 
void Service_T0() interrupt 1
{
	count_f++;
}
      66   
void Service_T1() interrupt 3
{
  TH1 = (65536 - 50000) / 256;        
	TL1 = (65536 - 50000) % 256;
	count_t++;
	if(count_t == 20)
	{
		dat_f = count_f;
		count_f = 0;
		count_t = 0;
	}
}
 
void main()
{
	Init_Timer();
	while(1)
	{
		Display_right(dat_f);
	}
}

你可能感兴趣的:(蓝桥杯单片机,单片机,蓝桥杯)