最近在搞一个往届的电子设计大赛题目,用到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 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+WK2124 SPI转4路串口驱动程序
下一篇:通过stm32cubemax配置与mpu6050通信兵读取数据,将数据串口打印
推荐阅读最新更新时间:2024-11-20 07:37