⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 text1.c

📁 基于51单片机的频率计
💻 C
字号:
#include <reg51.h>
#include <intrins.h>
#include <string.h>
#include <math.h>
//-----LCD16液晶显示控制引脚定义---------
sbit E=P2^4;           
sbit RS=P2^2;
sbit rw= P2^3;
sfr lcd_dat_port=0x80;       //lcd数据口即P1口
unsigned char lcd_buf[33]={' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' '};   //lcd缓存预显示					   
unsigned char table[10]={'0','1','2','3','4','5','6','7','8','9'};//液晶要显示的数字字符表
int t1oc=20;
long int precount,count;

 //----------------- 延时毫秒 -----------------
void	delay( unsigned char ms )   
{
	unsigned short i;
	while ( ms -- )
	   {
		 for(i=0;i!=100;i++);
     	}
}

//--------------写一个字节到液晶------------------------
void lcd_write(bit slr,unsigned char write_dat)
{rw=0;
 RS=slr;
 E=1;
 lcd_dat_port=write_dat;
 E=0;
 delay(2);
}
//--------------液晶初始化-----------------------------
void ini_lcd()
 {
  //RW=0;
  delay(10);
  lcd_write(0,0x38);
  lcd_write(0,0x0c);
  lcd_write(0,0x06);
  lcd_write(0,0x01);
 }
//-------------------------液晶显示--------------------------
void display()         //将显示缓存lcd_buf[32]的内容显示
 {
  unsigned char ii;
  lcd_write(0,2);
  delay(10);
  for(ii=0;ii<32;ii++)
    {
     if (ii==16) lcd_write(0,0xc0);
     lcd_write(1,lcd_buf[ii]);
    }
  }

//------------------------ t1中断服务程序定时50ms---------------------

void timer1() interrupt 1	
  {
    TR1=0;                  
    t1oc++;
    TH1=-50000/256;				//重载计数初值;
    TL1=-50000%256; 
    TR1=1;  
   }

//-------------------------外部中断计数测脉冲个数-------------------------
  void int0() interrupt 0  
  {               
    count++;			  //脉冲计数
  }

//----------------------主程序------------------------------
main()
{ int i,s;
  TMOD=0x10;
  TL1=-50000/256;//预置计数初值;
  TH0=-50000%256;
  EA=1;//CPU 开中断;
  EX0=1;IT0=1;//开int0中断;
  ET1=1;   //开t1中断;
  TR1=1;   //启动t1;
  while(t1oc>20)	 //一秒定时结束
  TR1=0;			 //关t1中断
  EX0=0;			 //关int1中断
  precount=count;
  count=0;			//	将count输出并清零
//---------------------送液晶显示---------------------
  ini_lcd();		//液晶初始化		
  lcd_buf[11]='H';
  lcd_buf[12]='z'; 
  for(i=9;i>=0;i--)
     {s=precount%10;
      lcd_buf[i]=table[s];
      precount=precount/10;
     }
  display(); //显示

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -