找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5760|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

STM32超聲波測距源程序(12864實時顯示距離)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:375464 發(fā)表于 2018-7-24 11:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
該文件采用12864實時顯示超聲波測距的距離,超聲波的最大顯示距離為4米,精度可根據(jù)實際調(diào)節(jié)

單片機源程序如下:
  1. /***********************************************/
  2. //實驗名稱:超聲波傳感器實驗
  3. //接線說明:超聲波模塊的J2口接核心板的P3接口。
  4. //實驗現(xiàn)象:液晶上顯示當前距離。
  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;                                                      // 計數(shù)值
  17. char  s2[10],s1[10];                                                // LCD顯示緩存數(shù)組
  18. u32   real_time;                                               // 讀回值
  19. float        dis;                                                          // 距離計算值
  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的計數(shù)頻率,計數(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);       // 清除中斷標志位   
  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)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:631332 發(fā)表于 2019-10-29 09:07 來自觸屏版 | 只看該作者
怎么下載下來是空文件呢
回復(fù)

使用道具 舉報

板凳
ID:631332 發(fā)表于 2019-10-30 17:15 來自觸屏版 | 只看該作者
定義接口時(1<<4)代表什么呢?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表