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

相关文章

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau

RedisTemplate默认序列化方式显示中文乱码的解决

《RedisTemplate默认序列化方式显示中文乱码的解决》本文主要介绍了SpringDataRedis默认使用JdkSerializationRedisSerializer导致数据乱码,文中通过示... 目录1. 问题原因2. 解决方案3. 配置类示例4. 配置说明5. 使用示例6. 验证存储结果7.

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

使用Python获取JS加载的数据的多种实现方法

《使用Python获取JS加载的数据的多种实现方法》在当今的互联网时代,网页数据的动态加载已经成为一种常见的技术手段,许多现代网站通过JavaScript(JS)动态加载内容,这使得传统的静态网页爬取... 目录引言一、动态 网页与js加载数据的原理二、python爬取JS加载数据的方法(一)分析网络请求1

通过cmd获取网卡速率的代码

《通过cmd获取网卡速率的代码》今天从群里看到通过bat获取网卡速率两段代码,感觉还不错,学习bat的朋友可以参考一下... 1、本机有线网卡支持的最高速度:%v%@echo off & setlocal enabledelayedexpansionecho 代码开始echo 65001编码获取: >

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

idea中project的显示问题及解决

《idea中project的显示问题及解决》:本文主要介绍idea中project的显示问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录idea中project的显示问题清除配置重China编程新生成配置总结idea中project的显示问题新建空的pr

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc

通过C#获取Excel单元格的数据类型的方法详解

《通过C#获取Excel单元格的数据类型的方法详解》在处理Excel文件时,了解单元格的数据类型有助于我们正确地解析和处理数据,本文将详细介绍如何使用FreeSpire.XLS来获取Excel单元格的... 目录引言环境配置6种常见数据类型C# 读取单元格数据类型引言在处理 Excel 文件时,了解单元格