找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5125|回复: 2
收起左侧

STM32超声波测距源程序(12864实时显示距离)

[复制链接]
ID:375464 发表于 2018-7-24 11:19 | 显示全部楼层 |阅读模式
该文件采用12864实时显示超声波测距的距离,超声波的最大显示距离为4米,精度可根据实际调节

单片机源程序如下:
  1. /***********************************************/
  2. //实验名称:超声波传感器实验
  3. //接线说明:超声波模块的J2口接核心板的P3接口。
  4. //实验现象:液晶上显示当前距离。
  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 发送超声波引脚
  14. #define BEEN   PAout(10)

  15. // 变量
  16. u32   status=0;                                                      // 计数值
  17. char  s2[10],s1[10];                                                // LCD显示缓存数组
  18. u32   real_time;                                               // 读回值
  19. float        dis;                                                          // 距离计算值
  20. u8    distance[7] = {0};

  21. void tran(void);                                               // 左发生超声波函数
  22. void DisplayDis(float value);
  23. void Display(u8 Pos);

  24. int main(void)
  25. {                                         
  26.         Stm32_Clock_Init(9);    // 系统时钟设置
  27.         delay_init(72);                // 延时初始化
  28.         uart_init(72,9600);     // 串口初始化
  29.         Timerx_Init(10,71);     // 1Mhz的计数频率,计数到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. // 左发生超声波函数
  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++)         // 发送信号
  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. }

复制代码

所有资料51hei提供下载:
超声波 12864显示.rar (327.07 KB, 下载次数: 153)
回复

使用道具 举报

ID:631332 发表于 2019-10-29 09:07 来自手机 | 显示全部楼层
怎么下载下来是空文件呢
回复

使用道具 举报

ID:631332 发表于 2019-10-30 17:15 来自手机 | 显示全部楼层
定义接口时(1<<4)代表什么呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表