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

📄 licheng.txt

📁 计算小车行驶里程,运用51单片机和红外线传感器
💻 TXT
字号:
 #include<reg52.h>
#include<absacc.h>
#include <stdio.h>
#include <intrins.h>
sbit licheng=P2^4;
xdata unsigned char CW _at_ 0xf9fc;//1111 1001 1111 1100 写指令
xdata unsigned char CR _at_ 0xf9fe;//1111 1001 1111 1110 读指令
xdata unsigned char DW _at_ 0xf9fd;//1111 1001 1111 1101 写数据
xdata unsigned char DR _at_ 0xf9ff;//1111 1001 1111 1111 读数据
unsigned char code table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
unsigned char a,flag1=1,num,flag2,flag3=1,a1,a2,a3;
bit flag;
void delay(unsigned int i)//延迟子函数
{	while(i--);
}
unsigned char lc_read(void)//读指令子函数
{	unsigned char a;
	delay(100);
	a=CR;
	return(a);
}
void readbf(void)//检测忙信号
{	while(flag)
	{	flag=(bit)(lc_read())&0x80;  
	}
}
void lc_write(unsigned char a)//写指令子函数
{	delay(20);
	CW=a;
	delay(20);
}
void ld_write(unsigned char a)//写数据子函数
{	delay(20);
	DW=a;
	delay(20);
}
void init(void)//函数初始化
{	
	readbf();
	lc_write(0x38);
	delay(500);
	readbf();
	lc_write(0x38);
	delay(500);
	readbf();//三次不检测忙信号
	lc_write(0x38);//8位2行5x7点阵  
	delay(500);
	lc_write(0x01);//清屏
	readbf();
	lc_write(0x0f);
	readbf();
	delay(500);
	lc_write(0x0e);//开显示,有光标。光标闪烁
	readbf();
	delay(500);
	lc_write(0x06);//光标右移,整屏不移动
	delay(500);
}
void main()
{
	init();
	lc_write(0x80+0x40);
	readbf();
	delay(2000);
	ld_write(0x30);
	ld_write(0x30);
	ld_write(0x30);
	while(1)
	{	
		while(licheng||flag1==0)
		{
			flag1=0;//计数金属的个数,要延时一会再判断
			delay(50);
			if(licheng==1)  {flag1=0;a=1;}
			else flag1=0;
		}
		if(flag1==0&&a) {num++;a=0;}
		a1=num/100;
		a2=num/10%10;
		a3=num%10;
		lc_write(0x01);
		readbf();
		delay(2000);
		lc_write(0x0c);
		delay(2000);
		ld_write(table[a1]);
		ld_write(table[a2]);
		ld_write(table[a3]);
		delay(2000);
		//if(flag2)		
	}
	
}

⌨️ 快捷键说明

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