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

📄 main.txt

📁 基于89C51单片机的超声波测距c语言主程序。
💻 TXT
字号:
#include <reg51.h>
#include <init.h>
#include<display.h>
//*** 函数定义 ***
void long_delay(void);							// 长延时
void short_delay(void);							// 短暂延时
void delay10ms(unsigned char);					// 延时10MS
void write7279(unsigned char, unsigned char);	// 写入到HD7279
unsigned char read7279(unsigned char);			// 从HD7279读出
void send_byte(unsigned char);					// 发送一个字节
unsigned char receive_byte(void);				// 接收一个字节
////
void delay(void); 	 
void Conversion(unsigned long f);
void Conversion_1(unsigned long f);
void cepin_init(void);
void cezhou_init(void);
void letbit_display(void);
void t1(void) interrupt 3 using 1  //定时器t1
{
	if(ch_way==1)
	{	//测频	
		count++;         
		TH1=(65536-50000)/256;
		TL1=(65536-49980)%256; 
	}
	else
	{	//测周	
    	count++;
		TH1=0;
		TL1=0;/**/
	} 
} 
//测周
void t0(void) interrupt 1 using 0 //计数2次
{
	TR1=1;	 //开定时
	T0count++;
	if(T0count==2)
	{		
		//TR0=0; 
		TR1=0;  //关定时
		count1=TH1;
        count2=TL1;
		TH1=0;
		TL1=0;	       		
		T0count=0;
		change=1;
		TR0=0;
	}
} 

//*** 主程序 ***	 //////   
main()
{
    unsigned long wait_cnter;		     
	unsigned char f_zh=0;  //1--定时计数已初始化
	led8bit_disp();
   	while (1)										  
	{		 
		if(take==0)
		{
			wait_cnter++;
		 	if(ch_way==0) 
			{   //测周
				if(wait_cnter==100)
				{
					take=1;
					wait_cnter=0;
					if(f_zh==0)	  //定时初始化
					{
						cezhou_init();
						f_zh=1;
					}
					TR0=1;	//开外部计数计脉冲
				}
				else
				{
					take=0;				//TR1=0;
					TR0=0;		//关外部计数计脉冲
					f_zh=0;
				} 	/**/
		 	}
		 	else
			{	//测频
	     		if(wait_cnter==100)
				{
					take=1;
					wait_cnter=0; 
					if(f_zh==0)
					{
						cepin_init();
						f_zh=1;
					}
					TR1=1;
					TR0=1;
				}
				else
				{					
					take=0;
					TR1=0;
					TR0=0;
					f_zh=0;	
				}  
			}
			led8bit_disp();	
		} 
		else
		{
			if(ch_way==0)
			{	//测周
	   	  		if(change==1)
		 		{
		 			freq=count*65536+count1*256+count2;
					freq=1000000000/freq; 
					if(freq<1000000)
						Conversion_1(freq);	 //转换 
		 			else 
						ch_way=1; 
					change=0;
					take=0;
					count=0;
		 		}	 /* */
		 	}
		 	else
			{	 //测频法  1000HZ以上采用
		 		if(count==20)  
		 		{
          			TR0=0;	//停止计数
            		count1=TH0;
            		count2=TL0;
            		TH0=0;
            		TL0=0;
            		count=0;
					freq=count1*256+count2;
		    		if(freq>=1000)
						Conversion(freq); 	//转换
					else
						ch_way=0;
					take=0;
				}		 
		  	}	 
		 }		
//////////////////////				
	}
}
	


⌨️ 快捷键说明

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