標(biāo)題: STM32超聲波測距源程序(12864實(shí)時顯示距離) [打印本頁]

作者: daningmeng    時間: 2018-7-24 11:19
標(biāo)題: STM32超聲波測距源程序(12864實(shí)時顯示距離)
該文件采用12864實(shí)時顯示超聲波測距的距離,超聲波的最大顯示距離為4米,精度可根據(jù)實(shí)際調(diào)節(jié)

單片機(jī)源程序如下:
  1. /***********************************************/
  2. //實(shí)驗(yàn)名稱:超聲波傳感器實(shí)驗(yàn)
  3. //接線說明:超聲波模塊的J2口接核心板的P3接口。
  4. //實(shí)驗(yàn)現(xiàn)象:液晶上顯示當(dāng)前距離。
  5. /***********************************************/

  6. #include "sys.h"
  7. #include "usart.h"               
  8. #include "delay.h"       
  9. #include "led.h"
  10. #include "12864.h"
  11. #include "timer.h"
  12. #include "exti.h"

  13. #define CSB_TX PAout(8)         // PA8 發(fā)送超聲波引腳
  14. #define BEEN   PAout(10)

  15. // 變量
  16. u32   status=0;                                                      // 計(jì)數(shù)值
  17. char  s2[10],s1[10];                                                // LCD顯示緩存數(shù)組
  18. u32   real_time;                                               // 讀回值
  19. float        dis;                                                          // 距離計(jì)算值
  20. u8    distance[7] = {0};

  21. void tran(void);                                               // 左發(fā)生超聲波函數(shù)
  22. void DisplayDis(float value);
  23. void Display(u8 Pos);

  24. int main(void)
  25. {                                         
  26.         Stm32_Clock_Init(9);    // 系統(tǒng)時鐘設(shè)置
  27.         delay_init(72);                // 延時初始化
  28.         uart_init(72,9600);     // 串口初始化
  29.         Timerx_Init(10,71);     // 1Mhz的計(jì)數(shù)頻率,計(jì)數(shù)到10為10us  
  30.   Init_12864();           // 液晶初始化
  31.         EXTIX_Init();                 // 外部中斷初始化       

  32.         while(1)
  33.         {
  34.           tran();
  35.                 if(dis<10 && dis!=0)
  36.                         BEEN=1;
  37.                 else
  38.                         BEEN=0;
  39.                 if(dis>80)
  40.                         dis=0;
  41.                 DisplayDis( dis * 10 );
  42.     dis=0;                      //無物體
  43.                 LED0=!LED0;           //指示燈閃爍
  44.                 delay_ms(300);       
  45.         }
  46. }

  47. // 左發(fā)生超聲波函數(shù)
  48. void tran(void)
  49. {
  50.         u8 i;
  51.     TIM3->CR1|=0x01;         // 使能定時器3
  52.     TIM3->SR&=~(1<<0);       // 清除中斷標(biāo)志位   
  53.     status  = 0;                               // 定時器清零
  54.     for(i=0;i<8;i++)         // 發(fā)送信號
  55.     {
  56.                         CSB_TX = 1;            
  57.                         delay_us(12);   
  58.                         CSB_TX = 0;
  59.                         delay_us(12);   
  60.     }
  61.    delay_ms(10);
  62. }

  63. //
  64. void DisplayDis(float value)
  65. {
  66.     u32 val = (u32)value;
  67.     distance[0] = (val / 100) + 48;
  68.     distance[1] = (val % 100) /10 + 48;
  69.           distance[2] = '.';
  70.     distance[3] = val % 10 + 48;
  71.           distance[4] = ' ';
  72.     distance[5] = 'c';
  73.     distance[6] = 'm';
  74.           Display(0x9C);
  75. }

  76. //****************************************
  77. //顯示子程序
  78. //****************************************
  79. void Display(u8 Pos)      
  80. {
  81.         u8 i;
  82.         write_12864com(Pos);
  83.         for(i=7;i>0;i--)
  84.         {
  85.                 write_12864data(distance[7-i]);
  86.                 delay_us(10);
  87.   }
  88. }

復(fù)制代碼

所有資料51hei提供下載:
超聲波 12864顯示.rar (327.07 KB, 下載次數(shù): 154)



作者: xiaomaer    時間: 2019-10-29 09:07
怎么下載下來是空文件呢
作者: xiaomaer    時間: 2019-10-30 17:15
定義接口時(1<<4)代表什么呢?




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1