📄 7455.c
字号:
}
}
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 + -