STM32驱动16位高精度AD TM7705/AD7705,带2.8寸TFT显示

发布者:HarmonyJoy最新更新时间:2020-08-05 关键字:STM32  高精度AD  TM7705  AD7705  TFT显示 手机看文章 扫描二维码
随时随地手机看文章

最近在搞一个往届的电子设计大赛题目,用到AD7705就将它的程序移植到了原子的STM32F103ZET6上,供大家参考使用

制作出来的实物图如下:
2.8寸LCD显示屏界面:


硬件接线,直插原子NRF无线模块上就可以了:


单片机源程序如下:

#include "led.h"

#include "delay.h"

#include "key.h"

#include "sys.h"

#include "lcd.h"

#include "usart.h"

#include "TM7705.h"

#include

#include

#include "INITUI.h"


//TM7705/AD7705直插正点原子NRF无线模块端口,具体引脚自己查找


int main(void)

{         

        int16_t x = 0,y = 0;   //定义点坐标   (-75        uint16_t adc1, adc2;  //定义ADC的采样值

        delay_init();                     //延时函数初始化         

        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);         //设置NVIC中断分组2:2位抢占优先级,2位响应优先级

        uart_init(115200);                 //串口初始化为115200

         LED_Init();                             //LED端口初始化

        LCD_Init();          //LCD初始化

        UIINIT();   //界面初始化函数

/*以上为LCD初始化*/

  InitTM7705();   //初始化TM7705

        

        TM7705_CalibSelf(1);                /* 自校准。执行时间较长,约180ms */               

        adc1 = TM7705_ReadAdc(1);                                

        

        TM7705_CalibSelf(2);                /* 自校准。执行时间较长,约180ms */

        adc2 = TM7705_ReadAdc(2);        

        

        while(1)

        {

                /*空闲时执行的函数*/

               

                #if 1        

                        /* 双通道切换采样,执行一轮实际那约 160ms */                        

                        adc1 = TM7705_ReadAdc(1);        /* 执行时间 80ms */               

                        adc2 = TM7705_ReadAdc(2);        /* 执行时间 80ms */

                #else

                        /* 如果只采集1个通道,则刷新速率 50Hz (缺省设置的,最大可以设置为500Hz) */

                        adc1 = TM7705_ReadAdc(1);        /* 执行时间 20ms (50Hz速率刷新时) */               

                        adc2 = 0;

                #endif

               

                                /* 打印采集数据 */

                {

                        int volt1, volt2;

                        

                        /* 计算实际电压值(近似估算的),如需准确,请进行校准 */

                        volt1 = (adc1 * 5000) / 65535;

                        volt2 = (adc2 * 5000) / 65535;

                        

                        /* 对采样的电压值进行数学分析并定位xy的值 */

                        x = locatedx(adc1,adc2,volt1,volt2);

                        y = locatedy(adc1,adc2,volt1,volt2);

                        

                        /* 打印ADC采样结果 */        

                        printAD(adc1,adc2,volt1,volt2,x,y);

                }

               

        }

}



关键字:STM32  高精度AD  TM7705  AD7705  TFT显示 引用地址:STM32驱动16位高精度AD TM7705/AD7705,带2.8寸TFT显示

上一篇:STM32+WK2124 SPI转4路串口驱动程序
下一篇:通过stm32cubemax配置与mpu6050通信兵读取数据,将数据串口打印

推荐阅读最新更新时间:2024-11-20 07:37

stm32---ADXL345
ADXL345是一款三轴加速度传感器,广泛用于手机、游戏手柄等设计。 ADXL 支持标准的 I2C 或 SPI 数字接口,自带 32 级 FIFO 存储,并且内 部有多种运动状态检测和灵活的中断方式等特性,常用I2C接口 检测轴 初始化步骤 1)上电 2)等待 1.1ms 3)初始化命令序列 4)结束 其中上电这个动作发生在开发板第一次上电的时候,在上电之后,等待 1.1ms 左右,就可以开始发送初始化序列了,初始化序列一结束, ADXL345 就 开始正常工作了 stm里的硬件电路 adxl345.c #include adxl345.h #include iic.h #include math.h #
[单片机]
利用STM32编码器进行任意位置确定
车轮位置的确定是在制作小车的过程中必不可少的部件,好在STM32中包含了硬件的编码器。但使用的过程中却存在诸多不方便。下面由我一一道来: 1。编码器原理 什么是正交?如果两个信号相位相差90度,则这两个信号称为正交。由于两个信号相差90度,因此可以根据两个信号哪个先哪个后来判断方向、根据每个信号脉冲数量的多少及整个编码轮的周长就可以算出当前行走的距离、如果再加上定时器的话还可以计算出速度。 2。为什么要用编码器 从上图可以看出,由于TI,T2一前一后有个90度的相位差,所以当出现这个相位差时就表示轮子旋转了一个角度。但有人会问了:既然都是脉冲,为什么不用普通IO中断?实际上如果是轮子一直正常旋转当
[单片机]
利用<font color='red'>STM32</font>编码器进行任意位置确定
STM32 DMA彻底研究
typedef struct { u32 DMA_PeripheralBaseAddr; u32 DMA_MemoryBaseAddr; u32 DMA_DIR; u32 DMA_BufferSize; u32 DMA_PeripheralInc; u32 DMA_MemoryInc; u32 DMA_PeripheralDataSize; u32 DMA_MemoryDataSize; u32 DMA_Mode; u32 DMA_Priority; u32 DMA_M2M; } DMA_InitTypeDef; DMA_InitTypeDef 定义于文件“stm32f10x_dma.h” DMA_PeripheralBaseA
[单片机]
关于STM32复位的那些事
1. 硬件复位 硬件复位电路如下图,直接将RESET引脚拉低即可,如下: 2. 软件复位 软件复位库函数: NVIC_SystemReset(); STM32F1XX系列中,复位函数在core_cm3.h文件中: /** * @brief Initiate a system reset request. * * Initiate a system reset request to reset the MCU */static __INLINE void NVIC_SystemReset(void){ SCB- AIRCR = ((0x5FA SCB_AIRCR_VECTKEY_Po
[单片机]
关于<font color='red'>STM32</font>复位的那些事
STM32窗口看门狗(警犬)
二、窗口看门狗 独立看门狗主要用来监测硬件,窗口看门狗主用来监测软件。 窗口看门狗通常被用来监测,由外部干扰或不可预见的逻辑条件(程序)造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新,看门狗电路在达到预置的时间周期时,会产生一个MCU复位。如果在递减计数器达到窗口寄存器值之前刷新控制寄存器中的7位递减计数器值,也会产生MCU复位。这意味着必须在限定的时间窗口内刷新计数器(即喂狗)。 窗口看门狗 (WWDG) 时钟由 APB1 时钟经预分频后提供,通过可配置的时间窗口来检测应用程序非正常的过迟或过早的操作。 1、主要特性 窗口看门狗跟独立看门狗一样,也是一个递减计数器不断的往下
[单片机]
<font color='red'>STM32</font>窗口看门狗(警犬)
STM32定时器的TRGO信号
定时器的框图中有一个TRGO信号输出,此信号可以用来触发ADC、DAC、其他定时器等。 此信号怎么产生呢? 要使用 TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Update); 函数来选择TRGO信号的事件源,这个函数给TIMx_CR2寄存器的位6到位4赋值,位6到位4是MMS ,描述如下: 如果MMS 值为000:当TIMx_EGR寄存器的UG位有效,就会触发TRGO输出。 如果MMS 值为010:当产生更新事件时,就会触发TRGO输出。 另外: 当配置MMS 值为010:当产生更新事件时,就会触发TRGO输出。还可以配合重复计数寄存器来使用: 即重复多少
[单片机]
<font color='red'>STM32</font>定时器的TRGO信号
stm32 ADC全解(单次,连续DMA传输)
学习STM32的ADC转换,在开发板上写程序调试。 四个任务: 四个任务: 1.AD以中断方式(单次)采集一路 2.AD以中断方式连续采集四路 3.ADC多路采集,DMA传输,DMA深度为一级 4.ADC以DMA方式采集四路,每路DMA深度为28级,并滤波,说明滤波原理 总结: 第一个任务 :ADC以中断方式采集一路ADC,通过配置ADC_InitStructure结构体中的ADC_ScanConvMode,它规定模数转换工作在扫描模式(多通道)还是单次模式(单通道), ADC_InitStructure.ADC_ScanConvMode=DISABLE,为单通道单次模式。 ADC_ContinuousConvMode,定转
[单片机]
STM32 FSMC 配置说明
typedef struct { uint32_t FSMC_Bank;//nor被分为四块,其中这个参数是说明对那个块编程 uint32_t FSMC_DataAddressMux;//地址\数据是否复用 uint32_t FSMC_MemoryType;//存储器类型 uint32_t FSMC_MemoryDataWidth;//数据总线宽度 8位/16位 uint32_t FSMC_BurstAccessMode;//是否进行成组模式访问 uint32_t FSMC_WaitSignalPolarity;//等待信号有效级性 uint32_t FSMC_WrapMode;//该位决定控制器是
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多开源项目推荐
换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved