捕獲1.PNG (86.78 KB, 下載次數: 65)
下載附件
超聲波測距模塊
2019-9-10 08:56 上傳
超聲波測距模塊
捕獲.PNG (98.01 KB, 下載次數: 65)
下載附件
oled顯示模塊
2019-9-10 08:55 上傳
oled顯示模塊
使用stm32f103rct6單片機,接線說明在工程文件mian.c里面備注了的,使用的定時器計時。
單片機源程序如下:
- /*lin辰 2018.9.26*/
- /*按鍵控制led亮滅,通過"GPIO_ReadInputDataBit(GPIOx, GPIO_Pin_x)"函數實現讀取IO口狀態,
- 并使用"!=RESET"進行判斷按鍵是否按下,加入按鍵抖動判斷*/
- /*說明:按鍵接地,"!=RESET":不等于0,也可寫成 "!=0" ,即按鍵沒有按下*/
- // 功能描述 : 0.96寸OLED 接口演示例程(STM32F103系列IIC)
- // 說明:
- // ----------------------------------------------------------------
- // GND 電源地
- // VCC 接5V或3.3v電源
- // SCL 接PB13(SCL)
- // SDA 接PB15(SDA)
- // ----------------------------------------------------------------
-
-
- //測距模塊引腳:
- // TRIG---GPIOC-PIN2
- // ECHO---GPIOA-PIN4
- // VCC----5V
-
- //////////////////////////////////////////////////////////////////////////////////
- #include "stm32f10x.h"
- #include "ranging.h"
- #include "systick_delay.h"
- #include "timer.h"
- #include "oled.h"
- #include "bmp.h"
- u16 TIMCounter;
- u16 Dis;
- int main(void)
- {
- TRIG_Config(); //IO輸出觸發初始化 C2
- ECHO_Config(); //IO輸入時間檢測初始化 A4
- OLED_Init(); //初始化OLED
- OLED_Clear();
- TIMER_Init();//初始化,未使能
- while(1)
- {
- OLED_DrawBMP(0,0,128,8,BMP1);
-
-
- GPIO_SetBits(GPIOC, GPIO_Pin_2); //給10us高電平
- Delay_us(11);//最少10us觸發信號
- GPIO_ResetBits(GPIOC, GPIO_Pin_2);//拉低電平
- while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_4)==0);//等待接受高電平
- TIMER_ON(); //定時器開
- while(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_4)==1);//等待接受低電平
- TIMCounter = TIM_GetCounter(TIM6);//獲取計數器值
- TIMER_OFF(); //定時器關
- Dis = TIMCounter/58;//計算距離
- OLED_ShowNum(62,2,Dis,3,16);//顯示ASCII字符的碼值,顯示距離
- Delay_ms(1000);
- if(Dis>=390){ //超出測量距離警告!
- OLED_ShowString(80,4,"Error!",16);
- Delay_ms(1000);
- }
-
- }
- }
復制代碼
所有資料51hei提供下載:
OLED超聲波測距系統.7z
(189.09 KB, 下載次數: 158)
2019-9-11 03:23 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|