單片機源程序如下:
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
- #include "usart.h"
- #include "usart2.h"
- #include "control.h"
- #include "beep.h"
- #include "timer.h"
- /******************************************************
- @title 32避障車
- @since Keil uVision5
- @version 1.0
- @remark 超聲波測距報警器
- @crystal frequency
- @time 20181229
- @site 6J313
- ******************************************************/
- extern u8 TIM2CH1_CAPTURE_STA; //輸入捕獲狀態
- extern u16 TIM2CH1_CAPTURE_VAL; //輸入捕獲值
- float distance;
- /**函數聲明**/
- void Check_Data(void);
- /**變量聲明**/
- //int CONNECTED=0;//串口2接收數據標志位
- //extern int Max_Temp;//上限設定溫度值緩存
- //extern int Min_Temp;//下限設定溫度值緩存
- //extern int Tempreture;//HIMI回傳溫度值緩存
- //extern int cnt;//定時器累加變量200ms
- //extern int cnt1;//定時器累加變量500ms
- /**系統功能初始化函數**/
- void SYS_Init(void)
- {
-
-
- delay_init(); //延時函數初始化
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設置中斷優先級分組2
- uart_init(9600); //串口初始化為9600
- LED_Init(); //初始化與LED連接的硬件接口
- // BEEP_Init(); //蜂鳴器初始化
- Triger_Inic(); //繼電器觸發外設初始化
- uart_init(9600); //9600
- // USART2_Init(9600); //串口二初始化
- //TIM4_Config(1999,71,1,0);
- TIM1_PWM_Init(899,0); //不分頻。PWM頻率=72000/(899+1)=80Khz
- TIM2_Cap_Init(0XFFFF,72-1); //以1Mhz的頻率計數
- TIM3_PWM_Init(999,0); //不分頻。PWM頻率=72000000/1000=72Khz
- }
- /**主函數**/
- int main(void)
- {
- u32 temp=0;
- SYS_Init();
- while(1)
- {
- delay_ms(10);
- Wave_SRD_Strat();
- // TIM_SetCompare1(TIM1,TIM_GetCapture1(TIM1)+1);
- // if(TIM_GetCapture1(TIM1)==300)TIM_SetCompare1(TIM1,0);
- if(TIM2CH1_CAPTURE_STA&0X80)//成功捕獲到了一次高電平
- {
- temp=TIM2CH1_CAPTURE_STA&0X3F;
- temp*=65536; //溢出時間總和
- temp+=TIM2CH1_CAPTURE_VAL; //得到總的高電平時間
- distance = temp/59.0;
- distance = distance*10;
- if(distance>35000)
- distance=0;
- printf("n0.val=");
- while((USART1->SR&0X40)==0);//等待發送結束
- printf("%.0f",distance); //打印總的高點平時間
- while((USART1->SR&0X40)==0);//等待發送結束
- USART1->DR=0xff;
- while((USART1->SR&0X40)==0);//等待發送結束
- USART1->DR=0xff;
- while((USART1->SR&0X40)==0);//等待發送結束
- USART1->DR=0xff;
- LED1=!LED1;
- TIM2CH1_CAPTURE_STA=0; //開啟下一次捕獲
-
- }
- }
- }
復制代碼
所有資料51hei提供下載:
超聲波測距報警器.7z
(426.23 KB, 下載次數: 59)
2019-10-5 16:40 上傳
點擊文件名下載附件
|