找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机超声波测距,1602显示,已全部写成函数,直接调用

[复制链接]
ID:370916 发表于 2018-7-13 15:13 | 显示全部楼层 |阅读模式
H54Z)V27@EDF)LI~A(KZ]56.png

单片机源程序如下:
  1. #include"hc_sr04.h"
  2. #include"1602.h"

  3. uchar array[4];
  4. uchar overflow=0;//溢出标志
  5. uchar code table[]="distance:";
  6. unsigned char code ASCII[15] =    {'0','1','2','3','4','5','6','7','8','9','.','-','M'};   //1602显示

  7. void hc_sr04datadispose()                //数据计算
  8. {
  9.         uint dat;
  10.         unsigned long S=0;
  11.         dat=TH0*256+TL0;
  12. //因为第八位满一次即TL0=256便往高八位进移位,所以在算时间的时候TH0得*-256
  13.         TH0=0;
  14.         TL0=0;
  15. /*1.7=高电平时间(us)*声速(340M/S))/2=高电平时间(us)*0.034/2=高电平时间(us)*0.017=1.7cm/us*/
  16.         S=(dat*1.7)/100; //测试距离=(高电平时间(us)*声速(340M/S))/2;在后面乘以10是为了化成cm,65.536ms=65536μs最大探测距离是65536×0.017
  17.         if((S>400)||overflow==1)  //溢出标志
  18.         {
  19.       overflow=0;
  20.           DisplayOneChar(0, 1, ASCII[11]);
  21.           DisplayOneChar(1, 1, ASCII[10]);        //显示点
  22.           DisplayOneChar(2, 1, ASCII[11]);
  23.           DisplayOneChar(3, 1, ASCII[11]);
  24.           DisplayOneChar(4, 1, ASCII[12]);        //显示M  
  25.         }
  26.         else
  27.         {
  28.                 array[0]=(S/100);                                //数据处理
  29.                 array[1]=(S%100/10);
  30.                 array[2]=(S%10);
  31.           DisplayOneChar(0, 1, ASCII[array[0]]);
  32.           DisplayOneChar(1, 1, ASCII[10]);        //显示点
  33.           DisplayOneChar(2, 1, ASCII[array[1]]);
  34.           DisplayOneChar(3, 1, ASCII[array[2]]);
  35.           DisplayOneChar(4, 1, ASCII[12]);        //显示M

  36.         }
  37. }

  38. void delayms(uint xms)                   //延时
  39. {
  40.     uint b;
  41.     for(b=xms;b>0;b--);
  42. }

  43. void main()
  44. {
  45.         uchar aa=0;
  46.         LCDinitialize();          //初始化
  47.         LCDwritecommand(0x80); //发显示位置
  48.                 while(table[aa]!='\0')           //显示文字
  49.         {
  50.         LCDwritedata(table[aa]); //发数据
  51.         aa++;
  52.         }

  53.         hc_sr04read(); //hc——sr04数据处理
  54. }
复制代码

所有资料51hei提供下载:
实验25:超声波测距 - 1602显示.zip (38.45 KB, 下载次数: 44)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:643576 发表于 2019-12-8 13:16 来自手机 | 显示全部楼层
这个程序可以直接烧录吗?
回复

使用道具 举报

ID:658889 发表于 2019-12-8 15:54 | 显示全部楼层
原理图有吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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