历史上的今天
今天是:2025年02月12日(星期三)
2020年02月12日 | 基于单片机和超声波测距模块的距离检测
2020-02-12 来源:51hei
这是我前几天写的一个超声波测距模块程序,超声波测距模块用的是HC-SR04,单片机是STC80C52RC,不过我买的是一块单片机开发板,上面已经装好了液晶,我只需要通过杜邦线把测距模块连接到单片机上即可,具体程序如下,注意,超声波测距模块就四个引脚,很容易看出来怎么和单片机连接,把引脚相对应连接好即可。
下面是完整的程序代码,超声波测距模块工作原理可以参看附件,建议将功能程序模块化,即一个功能用一个函数来描写,这样更加清晰直观。
#include #define Lcd1602_DB P0 typedef unsigned char uchar; typedef unsigned int uint; sbit trig = P1^2; sbit echo = P1^3; sbit Lcd1602_RS = P1^0; sbit Lcd1602_RW = P1^1; sbit Lcd1602_E = P1^5; void LcdWaitReady() { uchar sta; Lcd1602_DB = 0xff; Lcd1602_RS = 0; Lcd1602_RW = 1; do{ Lcd1602_E = 1; sta = Lcd1602_DB; Lcd1602_E = 0; }while(sta & 0x80); } /*向Lcd602液晶写入一字节命令*/ void LcdWriteCmd(uchar cmd) { LcdWaitReady(); Lcd1602_RS = 0; Lcd1602_RW = 0; Lcd1602_DB = cmd; Lcd1602_E = 1; Lcd1602_E = 0; } /*向Lcd602液晶写入一字节数据*/ void LcdWriteDat(uchar dat) { LcdWaitReady(); Lcd1602_RS = 1; Lcd1602_RW = 0; Lcd1602_DB = dat; Lcd1602_E = 1; Lcd1602_E = 0; } /*设置显示RAM起始地址,亦即光标位置*/ void LcdSetCursor(uchar x,uchar y) { uchar addr; if(y == 0) addr = 0x00 + x; else addr = 0x40 + x; LcdWriteCmd(addr | 0x80); } /*在液晶上显示字符串*/ void LcdShowStr(uchar x,uchar y,uchar *str) { LcdSetCursor(x,y);//设置起始地址 while(*str != '




