ADX345获取加速度在LCD显示

2024-02-24 07:48

本文主要是介绍ADX345获取加速度在LCD显示,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ADX345使用IIC读取数据

IIC配置

方法一:使用IO模拟IIC操作

彩屏显示使用之前修改好的ili9325的程序(lcd.c,lcd.h,gui.c,gui.h),在main.c中直接添加lcd_init()初始化函数,就可以使用lcd和gui中的绘图或者显示字符的函数了,不过需要注意要重定向printf输出到串口。

IIC使用IO模拟,创建IIC初始化和读写函数

ADX345的相关操作

ADX345初始化操作

查看器件 ID。ADXL345 的 ID 寄存器为 0x00

设置 ADXL345 存储数据的方式和通信方式。寄存器地址为:0x31。

设置数据的输出速率设置的是 BW_RATE 寄存器,地址为:0x2C。

设置测量模式和链接模式

设置不启用中断,设置 INT_ENABLE 寄存器,设置它不使用中断模式。

初始化偏移量,设置 OFSX 寄存器、OFSY 寄存器、OFSZ 寄存器。

读寄存器操作

1) 发送起始信号

2) 发送 I2C 写器件地址

3) 等待应答

4) 发送 I2C 要读的寄存器地址

5) 等待应答

6) 发送起始信号

7) 发送 I2C 读器件地址

8) 等待应答

9) 接收返回数据

10) 发送结束信号

写寄存器操作

1) 发送起始信号

2) 发送 I2C 写器件地址

3) 等待应答

4) 发送要写入的寄存器地址

5) 等待应答

6) 发送要写入的数据

7) 等待应答

8) 发送结束信号

注意读到的为8位,需要改成16位

uint8_t readValue[6];

|

*xValue = (uint16_t)(readValue[1] << 8) + readValue[0];

*yValue = (uint16_t)(readValue[3] << 8) + readValue[2];

*zValue = (uint16_t)(readValue[5] << 8) + readValue[4];

STM32CubeMX配置


需要添加得到文件

lcd

void LCD_Init(void);

void LCD_DisplayOn(void);

void LCD_DisplayOff(void);

void LCD_Clear(uint16_t Color);

void LCD_SetCursor(uint16_t Xpos, uint16_t Ypos);

void LCD_DrawPoint(uint16_t x,uint16_t y);//画点

uint16_t  LCD_ReadPoint(uint16_t x,uint16_t y); //读点

void LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);

void LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);

void LCD_SetWindows(uint16_t xStar, uint16_t yStar,uint16_t xEnd,uint16_t yEnd);

void LCD_DrawPoint_16Bit(uint16_t color);

uint16_t LCD_RD_DATA(void);//读取LCD数据

void LCD_WriteReg(uint16_t LCD_Reg, uint16_t LCD_RegValue);

void LCD_WR_DATA(uint16_t data);

uint16_t LCD_ReadReg(uint8_t LCD_Reg);

void LCD_WriteRAM_Prepare(void);

void LCD_WriteRAM(uint16_t RGB_Code);

uint16_t LCD_ReadRAM(void);

uint16_t LCD_BGR2RGB(uint16_t c);

void LCD_SetParam(void);

gui

void GUI_DrawPoint(uint16_t x,uint16_t y,uint16_t color);

void LCD_Fill(uint16_t sx,uint16_t sy,uint16_t ex,uint16_t ey,uint16_t color);

void LCD_DrawLine(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);

void LCD_DrawRectangle(uint16_t x1, uint16_t y1, uint16_t x2, uint16_t y2);

void Draw_Circle(uint16_t x0,uint16_t y0,uint16_t fc,uint8_t r);

void LCD_ShowChar(uint16_t x,uint16_t y,uint16_t fc, uint16_t bc, uint8_t num,uint8_t size,uint8_t mode);

void LCD_ShowNum(uint16_t x,uint16_t y,uint32_t num,uint8_t len,uint8_t size);

void LCD_Show2Num(uint16_t x,uint16_t y,uint16_t num,uint8_t len,uint8_t size,uint8_t mode);

void LCD_ShowString(uint16_t x,uint16_t y,uint8_t size,uint8_t *p,uint8_t mode);

void GUI_DrawFont16(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s,uint8_t mode);

void GUI_DrawFont24(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s,uint8_t mode);

void GUI_DrawFont32(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *s,uint8_t mode);

void Show_Str(uint16_t x, uint16_t y, uint16_t fc, uint16_t bc, uint8_t *str,uint8_t size,uint8_t mode);

iic

void IIC_Config(void);

void IIC_Start(void);

void IIC_Stop(void);

void IIC_SendData(uint8_t dat);

uint8_t IIC_ReceiveData(uint8_t ack);

int8_t IIC_WaitAck(void);

adx345


在mian函数中添加显示最终结果的程序,注意将获得的变量存入数组中,这样就可以使用原有函数显示变量了。



这篇关于ADX345获取加速度在LCD显示的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/741430

相关文章

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

Linux虚拟机不显示IP地址的解决方法(亲测有效)

《Linux虚拟机不显示IP地址的解决方法(亲测有效)》本文主要介绍了通过VMware新装的Linux系统没有IP地址的解决方法,主要步骤包括:关闭虚拟机、打开VM虚拟网络编辑器、还原VMnet8或修... 目录前言步骤0.问题情况1.关闭虚拟机2.China编程打开VM虚拟网络编辑器3.1 方法一:点击还原VM