最近在搞一個往屆的電子設計大賽題目,用到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, 下載次數: 414)
2019-4-9 15:44 上傳
點擊文件名下載附件
程序源碼
|