本篇文章给大家谈谈mma7455,以及mma7455计步算法对应的知识点,希望对各位有所帮助,不要忘了收藏本站!
补码
传感器(英文名称:transducer/sensor)是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。
传感器的特点包括:微型化、数字化、智能化、多功能化、系统化、网络化。它是实现自动检测和自动控制的首要环节。传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体慢慢变得活了起来。通常根据其基本感知功能分为热敏元件、光敏元件、气敏元件、力敏元件、磁敏元件、湿敏元件、声敏元件、放射线敏感元件、色敏元件和味敏元件等十大类。
这个模块实际上是加速度传感器,内部是测X,Y,Z轴方向上的三个加速度,然后你单片机或者arm通过读取三个加速度值,通过反正切arctan运算来算出角度值。因为是间接得到,所以在外部设备有抖动的状态下误差较大,一般还动过一个陀螺仪得出的角速度值,两者通过卡尔曼滤波融合,得到一个相对抗扰动的角度值。
I2C的通信都是遵守I2C通信协议的,跟使用什么芯片没关系,有差别的地方在于有些芯片用单字节的读写,有些用多字节的读写,建议去看I2C通信协议,以不变应万变。
单字节写:
把 MMA7455 7位的设备地址+第8位 表示写,写入,等待处理从机的ACK,再写入8位寄存器地址,等待处理从机的ACK,再写入8位数据,等待处理从机的ACK,结束
单字节读:
把 MMA7455 7位的设备地址+第8位 表示写,写入,等待处理从机的ACK,再写入8位寄存器地址,等待处理从机的ACK,再写入7位的设备地址+第8位 表示读, 接着读取8位数据,等待处理从机的ACK,结束
如果从机的寄存器地址是 16位的,则连续分两次发送,一次发8位;如果从 从机寄存器读到的数据是16位,则连续读2次 8位。这个要看芯片手册这个芯片是不是多字节读取的,还可以结合I2C 读写驱动里面是怎么写的,看读取完放在一个多大的数组
可以开启连续模式
/********************************************************
【dev.env.】KEIL UV4.2
【Target】AT89C52
【Crystal 】11.0592Mhz
LQ-7455加速度模块测试程序
********************************************************/
#include<reg51.h>
#include "intrins.h"
//nop指令个数定义
#define nops() {_nop_();_nop_();_nop_();_nop_();_nop_();}
//端口位定义,可修改
sbit SDA=P1^1; //IIC数据线定义
sbit SCL=P1^0; //IIC时钟线定义
//内部数据定义
unsigned char IIC_ad_main; //器件从地址
unsigned char IIC_ad_sub;//器件子地址
unsigned char *IIC_buf;//发送|接收数据缓冲区
unsigned char IIC_num;//发送|接收数据个数
#define ack 1//主应答
#define no_ack 0//从应答
void send232byte(unsigned char bytebuf)
{
SBUF=bytebuf;
while(!TI);
TI=0;
}
void IIC_start(void){
SCL=0;
SDA=1;
_nop_();
SCL=1;
nops();
SDA=0;
nops();
SCL=0;
}
//************************************************
//送停止位 SDA=0->1
void IIC_stop(void){
SCL=0;
_nop_();
SDA=0;
_nop_();
SCL=1;
nops();
SDA=1;
nops();
SCL=0;
}
//************************************************
//主应答(包含ack:SDA=0和no_ack:SDA=0)
void IIC_ack_main(bit ack_main){
SCL=0;
if(ack_main)SDA=0; //ack主应答
else SDA=1; //no_ack无需应答
nops();
SCL=1;
nops();
SCL=0;
}
//*************************************************
//字节发送程序
//发送c(可以是数据也可是地址),送完后接收从应答
//不考虑从应答位
void send_byte(unsigned char c){
unsigned char i;
for(i=0;i<8;i++){
SCL=0;
if((c<<i) & 0x80)SDA=1; //判断发送位
else SDA=0;
_nop_();
SCL=1;
nops();
SCL=0;
}
nops();
SDA=1; //发送完8bit,释放总线准备接收应答位
_nop_();
SCL=1;
nops(); //sda上数据即是从应答位
SCL=0; //不考虑从应答位|但要控制好时序
}
//**************************************************
//字节接收程序
//接收器件传来的数据,此程序应配合|主应答函数|IIC_ack_main()使用
//return: uchar型1字节
unsigned char read_byte(void){
unsigned char i;
unsigned char c;
c=0;
SCL=0;
_nop_();
SDA=1; //置数据线为输入方式
for(i=0;i<8;i++){
_nop_();
SCL=0; //置时钟线为低,准备接收数据位
nops();
SCL=1; //置时钟线为高,使数据线上数据有效
_nop_();
c<<=1;
if(SDA)c+=1; //读数据位,将接收的数据存c
}
SCL=0;
return c;
}
//***************************************************
//向无子地址器件发送单字节数据
void send_to_byte(unsigned char ad_main,unsigned char c){
IIC_start();
send_byte(ad_main); //发送器件地址
send_byte(c); //发送数据c
IIC_stop();
}
//***************************************************
//向有子地址器件发送多字节数据
void send_to_nbyte(unsigned char ad_main,unsigned char ad_sub,unsigned char *buf,unsigned char num){
unsigned char i;
IIC_start();
send_byte(ad_main); //发送器件地址
send_byte(ad_sub); //发送器件子地址
for(i=0;i<num;i++){
send_byte(*buf); //发送数据*buf
buf++;
}
IIC_stop();
}
//***************************************************
//从无子地址器件读单字节数据
//function:器件地址,所读数据存在接收缓冲区当前字节
void read_from_byte(unsigned char ad_main,unsigned char *buf){
IIC_start();
send_byte(ad_main); //发送器件地址
*buf=read_byte();
IIC_ack_main(no_ack); //无需应答<no_ack=0>
IIC_stop();
}
//***************************************************
//从有子地址器件读多个字节数据
//function:
void read_from_nbyte(unsigned char ad_main,unsigned char ad_sub,unsigned char *buf,unsigned char num){
unsigned char i;
IIC_start();
send_byte(ad_main);
send_byte(ad_sub);
for(i=0;i<num-1;i++){
*buf=read_byte();
IIC_ack_main(ack); //主应答<ack=1>
buf++;
}
*buf=read_byte;
buf++; //本次指针调整无意义,目的是操作后buf指向下一地址
IIC_ack_main(no_ack); //无需应答<no_ack=0>
IIC_stop();
}
unsigned char MMA7455_readbyte(unsigned char address)
{
unsigned char ret = 100;
IIC_start();//启动
send_byte(0x3A);//写入设备ID及写信号
send_byte(address);//X地址
IIC_start();//重新发送开始
send_byte(0x3B);//写入设备ID及读信
ret = read_byte();//读取一字节
IIC_stop();
return ret;
}
//写入
void MMA7455_writebyte(unsigned char address, unsigned char thedata)
{
IIC_start();//启动
send_byte(0x3A);//写入设备ID及写信号
send_byte(address);//X地址
send_byte(thedata);//写入设备ID及读信
IIC_stop();
}
//初始化
//初始化为指定模式
void MMA7455_init()
{
MMA7455_writebyte(0x16, 0x05);
}
void main()
{unsigned char x, y, z;
TMOD=0x21;//定时T1方式2,C/T=0,M1=1,定时T0方式1, M0=1
SCON=0x60;//8 bitSM1=SM2=1,SM0=0, REN=0
TL1=0xfd;//9600
TH1=0xfd;
TR1=1;
ET0=1;
EA=1;
MMA7455_init();//初始化MMA7455
while(1)
{//读取重力信息
x = MMA7455_readbyte(0x06);
y = MMA7455_readbyte(0x07);
z = MMA7455_readbyte(0x08);
send232byte(0x55);
send232byte(0xAA);
send232byte(x);
send232byte(y);
send232byte(z);
}
}
250Hz应该是每个轴的。
当产生中断、或者置标志位的时候,三个轴的加速度已经测量转换完成。
MMA7455内部只有一个10位A/D转换器,所以只能每次转换一个轴的,三个轴的转换应该是依次的,三轴都转换结束之后产生一次中断或者标志位通知使用者。每秒能转换250次。
关于mma7455和mma7455计步算法的介绍到此就结束了,不知道你从中找到你需要的信息了吗?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布时间:2023-09-12 07:28
上述文字是💠《mma7455计步算法—mma7455输出的是什么啊,补码还是啥啊,校正是用加速度还是补码啊?》✨的美文内容,大家如想要阅读更多的短文学、文学名著、精品散文、诗歌等作品,请点击本站其他文章进行赏析。
版权声明:本文由互联网用户自发贡献,该文仅代表作者观点。芒果文学仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件进行举报,一经核实本站将立刻删除。
导读:朝东的房子优缺点?下面小编为大家整理推荐。1、优点,太阳光照射时间充足,终日室内充满阳光。冬季日照、夏季自然通风。 2、缺点,建筑物朝向对冬季太阳辐射得热量、...
芥菜是我们日常生活中十分常见的蔬菜,在亚洲的栽培十分的广泛,它有着很好的药用价值,外表与包菜十分的相似,是一种十分优良的蜜源植物。那么本期的健康饮食文化,为你解析...
1月17日,一张微信聊天截图在社交媒体疯传,对话显示,一位“汤总”被告知,“您参与的2022年1月13日中证500指数雪球存续期为24个月,今日(2024年1月15日)为产品到期日,该笔起息价即...
据中国海事局网站消息,大连海事局发布航行警告,1月28日16时至2月4日16时,渤海海峡黄海北部部分海域执行军事任务,禁止驶入。...
导读:儿子都已经上初中了,连作业都不写,他现在上初二,眼看就要上初三,中考也近在咫尺,回回考试都是班里倒数,根本就摸不到上高中的线。我都快愁死了,跟他讲道理,他还...
导读:励志的话正能量?下面小编为大家整理推荐。1、多要求自己,你会更加独立,少要求别人,你会减少失望。宁愿花时间去修炼不完美的自己,也不要浪费时间去期待完美的别人...
套餐就是开通的业务,每个月需缴纳一定费用(也有免费套餐)。固定费就是手机卡每月必须扣的费用,就算你不打电话,不发短信,不开通任何业务也要扣费(相当于月租) 套餐费是...
白羊座:被对方侮辱 当白羊座陷入苦恋的时候,为了精神上的欺骗,还是钱财上的欺骗,都很难醒悟,除非有朝一日白羊座被对方,进行精神上的侮辱,白羊座才能够瞬间清醒,白羊座...
本篇文章给大家谈谈菠萝泡多久,以及菠萝盐水泡多久最好对应的知识点,希望对各位有所帮助,不要忘了收藏本站! 内容导航: 菠萝要用盐水泡多久 菠萝应该怎样泡,泡多久才能吃...
梦幻九寨表达了作者醉心自然的情感。梦幻九寨将九寨之神韵描绘得淋漓尽致,风景如诗如画,入情醉心。作品整体情景交融,写景手法灵动,富有特色。诗词,是指以古体诗、近体诗...
导读:男孩,7岁,还在叛逆期,特别抵触我管教他。平时也不好好学习,态度特别恶劣,昨天闹着要打游戏,我不让,他就上嘴咬我,把我手都咬出血了,7岁男孩叛逆期家长怎么办?...
2022不换号码跨省改归属地?很多人不了解,今天趣百科为大家带来,一起来看下吧。 现时同学们对于卡可以改归属地吗?原因始末揭秘,同学们都需要剖析一下卡可以改归属地吗?那...
我们平时使用手机都会下载和保存一些数据,如果内存不够就会变得卡顿,真我Realme11作为一款性价比很不错的智能机是否支持内存扩展呢?下面就来和小编一起看看吧! 真我Realme11支...
在网页中下部,驾驶证业务 一栏中!!! 交通综合管理服务平台是公众网,也有更新延误或出错的可能,也有可能是套牌车辆的交通违法,建议保留相关证据以核发地交管部门查询的...
1.中餐宴席桌次排列规则是什么 【座次讲究】【左低右高】:当两人一同并排就座时,通常以右为上座,以左为下座。 这是因为中餐上菜时多以顺时针为上菜方向,居右者因此比居左者...
本篇文章给大家谈谈热心市民是什么梗,以及抖音热心市民团队对应的知识点,希望对各位有所帮助,不要忘了收藏本站! 内容导航: 南京热心市民李先生啥意思 热心市民是什么梗? 周...