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

📄 7455.c

📁 GY-29-MMA7455发送资料
💻 C
📖 第 1 页 / 共 2 页
字号:
		}
	}
	else
	{
	 	xsign=0x2d;        //-
		x=x-0x01;
		x=~x;
		if(x>64)
		{
			x=(((int)(x*200)/127)-100);
			x1=(x/100);
			x2=(x%100)/10;
			x3=(x%100)%10;
			delaysign=1;
			xnegalightnum=x/(xnegavalue/16);

		}
		else
		{
			x1=0;x2=0;x3=0;
			delaysign=0;
		}
	}

	write_com(0x8B);
	write_date(xsign);
	delay_50us(10);
	write_com(0x8C);
	write_date(table4[x1]);
	delay_50us(10);
	write_com(0x8E);
	write_date(table4[x2]);
	delay_50us(10);
	write_com(0x8F);
	write_date(table4[x3]);
	delay_50us(20);
}
void sendy()								//函数功能:向1602发送y轴测量数据
{
	uchar y1,y2,y3,ysign;
	char y;

	y=iic_read(0x07);
	if((y&0x80)==0x00)
	{
		ysign=0x2b;        //+
		if(y>66)
		{
			y=(((int)(y*200)/127)-100);	 //转变为加速度值
			y1=(y/100);
			y2=(y%100)/10;
			y3=(y%100)%10;
			delaysign=1;
			yposilightnum=y/(yposivalue/8);
		}
		else
		{
		 	y1=0;y2=0;y3=0;
			delaysign=0;
		}
	}
	else
	{
	 	ysign=0x2d;        //-
		y=y-0x01;
		y=~y;
		if(y>66)
		{
			y=(((int)(y*200)/127)-100);	 //转变为加速度值
			y1=(y/100);
			y2=(y%100)/10;
			y3=(y%100)%10;
			delaysign=1;
			ynegalightnum=y/(ynegavalue/8);
		}
		else
		{
			y1=0;y2=0;y3=0;
			delaysign=0;
		}
	}

	write_com(0xC3);
	write_date(ysign);
	delay_50us(10);
	write_com(0xC4);
	write_date(table4[y1]);
	delay_50us(10);
	write_com(0xC6);
	write_date(table4[y2]);
	delay_50us(10);
	write_com(0xC7);
	write_date(table4[y3]);
	delay_50us(20);
}
void sendz()								//函数功能:向1602发送z轴测量数据
{
	uchar z1,z2,z3,zsign;
	char z;

	z=iic_read(0x08);
	if((z&0x80)==0x00)
	{
		zsign=0x2b;        //+
		if(z>68)
		{
			z=(((int)((z-3)*200)/127)-100);	 //转变为加速度值
			z1=(z/100);
			z2=(z%100)/10;
			z3=(z%100)%10;
			delaysign=1;
		}
		else
		{
		 	z1=0;z2=0;z3=0;
			delaysign=0;
		}
	}
	else
	{
	 	zsign=0x2d;        //-
		z=z-0x01;
		z=~z;
		if(z>62)
		{
			z=(((int)(z*200)/127)-100);	 //转变为加速度值
			z1=(z/100);
			z2=(z%100)/10;
			z3=(z%100)%10;
			delaysign=1;
		}
		else
		{
			z1=0;z2=0;z3=0;
			delaysign=0;
		}
	}

	write_com(0xCB);
	write_date(zsign);
	delay_50us(10);
	write_com(0xCC);
	write_date(table4[z1]);
	delay_50us(10);
	write_com(0xCE);
	write_date(table4[z2]);
	delay_50us(10);
	write_com(0xCF);
	write_date(table4[z3]);
	delay_50us(20);
}
/******************************************************************/
/**************           按键检测部分               **************/
/******************************************************************/
void key_check()					
{
	uchar i,j;
	
	i=1;
key:if(!set_key)
	{
		delay();
		if(!set_key)
		{
		 	set_key_sign=1;
			switch(i)
			{
				case 1:
					write_com(0x80);
					write_date(0x50);//P
					delay_50us(10);
					write_date(0x6c);//l
					delay_50us(10);
					write_date(0x65);//e
					delay_50us(10);
					write_date(0x61);//a
					delay_50us(10);
					write_date(0x73);//s
					delay_50us(10);
					write_date(0x65);//e
					delay_50us(10);
					write_date(0x20);//空
					delay_50us(10);
					write_date(0x69);//i
					delay_50us(10);
					write_date(0x6f);//n
					delay_50us(10);
					write_date(0x70);//p
					delay_50us(10);
					write_date(0x75);//u
					delay_50us(10);
					write_date(0x74);//t
					delay_50us(10);
					write_date(0x20);//空
					delay_50us(10);
					write_date(0x58);//X
					delay_50us(10);
					write_date(0x2b);//+
					delay_50us(10);
					write_date(0x20);//空
					delay_50us(10);
					write_com(0xc0);
					for(j=0;j<16;j++)
					{
					    write_date(table7[j]);
						delay_50us(10);
					}
					change_topvalue(xposivalue);
					i++;
					break;
				case 2:
					write_com(0x8e);
					write_date(0x2d); //输出负号
					delay_50us(10);
					change_topvalue(xnegavalue);
					i++;
					break;
				case 3:
					write_com(0x8d);
					write_date(0x59); //输出Y
					delay_50us(10);
					write_date(0x2b); //输出+
					delay_50us(10);
					write_com(0xc9);
					write_date(0x59); //输出Y
					delay_50us(10);
					change_topvalue(yposivalue);
					i++;
					break;
				case 4:
					write_com(0x8e);
					write_date(0x2d); //输出负号
					change_topvalue(ynegavalue);
					i++;
					break;
				case 5:
					i=1;
					set_key_sign=0;
					write_com(0x80);
					for(j=0;j<8;j++)
					{
					    write_date(table5[j]);
						delay_50us(10);
					}
				 	write_com(0x88);
					for(j=8;j<16;j++)
					{
					    write_date(table1[j]);
						delay_50us(10);
					}
					write_com(0xc0);
					for(j=0;j<16;j++)
					{
					    write_date(table2[j]);
						delay_50us(10);
					}
					break;
				default:break;
					
			}	
		}	
	}

	if(set_key_sign)
	{
		if(!jia_key)
		{
			delay();
			if(!jia_key)
			{
				switch(i-1)
				{
				 	case 1:
						if(xposivalue!=100)
						{
							xposivalue++;
							change_topvalue(xposivalue);
						}
						break;
					case 2:
						if(xnegavalue!=100)
						{
							xnegavalue++;
							change_topvalue(xnegavalue);
						}
						break;
					case 3:
						if(yposivalue!=100)
						{
							yposivalue++;
							change_topvalue(yposivalue);
						}
						break;
					case 4:
						if(ynegavalue!=100)
						{
							ynegavalue++;
							change_topvalue(ynegavalue);
						}
						break;
					default:break;
				}
			}

		}
		if(!jian_key)
		{
		 	delay();
			if(!jian_key)
			{
				switch(i-1)
				{
				 	case 1:
						if(xposivalue!=0)
						{
							xposivalue--;
							change_topvalue(xposivalue);
						}	
						break;
					case 2:
						if(xnegavalue!=0)
						{
							xnegavalue--;
							change_topvalue(xnegavalue);
						}
						break;
					case 3:
						if(yposivalue!=0)
						{
							yposivalue--;
							change_topvalue(yposivalue);
						}	
						break;
					case 4:
						if(ynegavalue!=0)
						{
							ynegavalue--;
							change_topvalue(ynegavalue);
						}
						break;
					default:break;
				}
			}
		}
	}
	if(set_key_sign)goto key;
}
/***********************************************************/
/****************          主函数           ****************/
/***********************************************************/
void data_init()
{
	set_key_sign=0;
	xposivalue=50;
	xnegavalue=50;
	yposivalue=50;
	ynegavalue=50;
}
void main()
{
	uchar j;

	led_init();
	init1602();
	self_test7455();
	data_init();

	iic_write(0x10,0x32);//校正X值
	iic_write(0x12,0x62);//校正Y值

	delay_50ms(20);

	write_com(0x80);
	for(j=0;j<8;j++)
	{
		write_date(table5[j]);
		delay_50us(10);
	}

	while(1)
	{	
		key_check();
		sendx();
		if(delaysign)
		{
			led_xposizhi();
			led_xnegazhi();
			led_show();
			delay_50ms(4);
			led_init();
			xposilightnum=1;
			xnegalightnum=1;
		}
		sendy();
		if(delaysign)
		{
			led_yposizhi();
			led_ynegazhi();
			led_show();
			delay_50ms(4);
			led_init();
			ynegalightnum=0;
			yposilightnum=1;
		}
		led_init();
		sendz();
		if(delaysign)delay_50ms(4);
	}	
}
/*****  完  .*****/

⌨️ 快捷键说明

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