最近在搞一个往届的电子设计大赛题目,用到AD7705就将它的程序移植到了原子的STM32F103ZET6上,供大家参考使用
制作出来的实物图如下:
2.8寸LCD显示屏界面:
2.8寸LCD显示屏界面
硬件接线,直插原子NRF无线模块上就可以了:
硬件接线,直插原子NRF无线模块上就可以了
单片机源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "key.h"
- #include "sys.h"
- #include "lcd.h"
- #include "usart.h"
- #include "TM7705.h"
- #include <stdio.h>
- #include <string.h>
- #include "INITUI.h"
- //TM7705/AD7705直插正点原子NRF无线模块端口,具体引脚自己查找
- int main(void)
- {
- int16_t x = 0,y = 0; //定义点坐标 (-75<x<75)&(-50<y<50)
- 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);
- }
-
- }
- }
复制代码
所有资料51hei提供下载:
TFTLCD-TM7705.7z
(226.65 KB, 下载次数: 409)
|