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

📄 test.c

📁 52单片机开发板的实例程序
💻 C
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P1^0;
sbit rw=P1^1;
sbit en=P1^2;
sbit beer=P3^6;
uchar code a[]="Dis=000cm";
uchar num=0,get[2]={0};
bit flag=0;
void delay(uint z)
{
	uint x,y;
	for(x=z;x>0;x--)
	for(y=110;y>0;y--);
} 
void delayus(uint i)
{
	while(i)i--;
}
void write1602_command(uchar command)//写指令子函数
{
   rs=0;
   rw=0;
   P2=command;
   delay(1);
   en=0;
   delay(2);
   en=1;
}
void write1602_data(uchar date)//写数据子函数
{
   rs=1;
   rw=0;
   P2=date;
   delay(1);
   en=0;
   delay(2);
   en=1;
}
void init()
{	
	en=0;
	rw=0;
	write1602_command(0x38);
	write1602_command(0x01);
	write1602_command(0x0c);
	write1602_command(0x06);
	write1602_command(0x80);
}	
void display(uint s)
{
	 write1602_command(0x84);
	 write1602_data(s%10000/1000+0x30);
	 write1602_data(s%1000/100+0x30);
	 write1602_data(s%100/10+0x30);
	 //write1602_data(0x2e);
	 //write1602_data(s%10+0x30);	
}
void SysInit()
{
	init();
	TMOD=0x20;//设置定时器1为工作方式2
	TH1=0xfd;//设置串口通信的波特率为9600
	TL1=0xfd;
	TR1=1;//开启定时器1
	SM0=0;
	SM1=1;
	REN=1;
	EA=1;
	ES=1;	
}
void send_uart(uchar dat)
{
  SBUF=dat;
  while(!TI);
  TI=0;
}
void main()
{		
	uchar i;
	uint dis=0;
	SysInit();
	write1602_command(0x80);
	for(i=0;a[i]!='\0';i++)
	{
		write1602_data(a[i]);
		delay(6);
	}
	  while(1)
		{
		  send_uart(0x55);
		  delay(500);//500ms更新一次,根据你的需要修改延时参数		
		  if(flag)
		  {
		  	flag=0;
			dis=get[0]*256+get[1];
			display(dis);
			if(dis<200)	  //小于20CM则蜂鸣器响
			  beer=0;
			else
			  beer=1;
			delay(10);
			ES=1;
		  }
		}
	
}
void IsrUart() interrupt 4
{
	ES=0;
	if(RI)
	{
		RI=0;
		get[num++]=SBUF;
		if(num>1)
		{
			ES=0;
			num=0;
			flag=1;
		}
		else
		 	ES=1; 
	}
	else 
	  ES=1;
}

⌨️ 快捷键说明

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