标题:
超声波HC-SR04与STC89C52RC用1602显示
[打印本页]
作者:
欣欣
时间:
2021-5-1 16:34
标题:
超声波HC-SR04与STC89C52RC用1602显示
看着大家都再使用超声波模块,楼主也想试试,看效果怎么样,说干就干。
单片机源程序如下:
#include<reg52.h>
#define LCD1602_DB P0
#define u8 unsigned char
#define u16 unsigned int
sbit LCD1602_RS = P2^6;
sbit LCD1602_EN = P2^5;
sbit LCD1602_RW = P2^7;
sbit TX =P1^3;
sbit RX =P1^4;
bit flag =0;
u16 time =0;
int S =0;
int H,L;
u8 list[]={"0.00M"};
u8 code asc[15]={'0','1','2','3','4','5','6','7','8','9','.','-','M'};
void Read_Busy()
{
u8 sta;
LCD1602_DB = 0xff;
LCD1602_RS = 0;
LCD1602_RW = 1;
do
{
LCD1602_EN = 1;
sta = LCD1602_DB;
LCD1602_EN = 0;
}while(sta & 0x80);
}
void Lcd1602_Write_Cmd(u8 cmd)
{
Read_Busy();
LCD1602_RS = 0;
LCD1602_RW = 0;
LCD1602_DB = cmd;
LCD1602_EN = 1;
LCD1602_EN = 0;
}
void Lcd1602_Write_Data(u8 dat)
{
Read_Busy();
LCD1602_RS = 1;
LCD1602_RW = 0;
LCD1602_DB = dat;
LCD1602_EN = 1;
LCD1602_EN = 0;
}
void LcdSetCursor(u8 x,u8 y)
{
u8 addr;
if(y == 0)
addr = 0x00 + x;
else
addr = 0x40 + x;
Lcd1602_Write_Cmd(addr|0x80);
}
void LcdShowStr(u8 x,u8 y,u8 *str)
{
LcdSetCursor(x,y);
while(*str != '\0')
{
Lcd1602_Write_Data(*str++);
}
}
void InitLcd1602()
{
Lcd1602_Write_Cmd(0x38);
Lcd1602_Write_Cmd(0x0c);
Lcd1602_Write_Cmd(0x06);
Lcd1602_Write_Cmd(0x01);
}
void Delay1ms() //@12.000MHz
{
unsigned char i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
void Delay(u16 t)
{
while (--t)
Delay1ms();
}
void Conut(void)
{
time=TH0*256+TL0;
TH0=0;
TL0=0;
S=(time*1.7)/100;
if (S<35)S=S+1;
list[0]=asc[S%1000/100];
list[1]=asc[10];
list[2]=asc[S%100/10];
list[3]=asc[S%10];
list[4]=asc[12];
}
void StartModule()
{
TX=1;
Delay(800);
TX=0;
}
void Timer0Init(void) //@12.0000MHz
{
TMOD &= 0xF0;
TMOD |= 0x01;
TL0 = 0;
TH0 = 0;
TF0 = 0;
}
void main()
{
Timer0Init();
InitLcd1602();
H=200;
L=100;
LcdShowStr(5,0,list);
while(1)
{
StartModule();
while(!RX);
TR0=1;
while(RX);
TR0=0;
Conut();
LcdShowStr(5,0,list);
}
}
复制代码
工程文件下载:
超声波HC-SR04与STC89C52RC用1602显示.rar
(34.27 KB, 下载次数: 49)
2021-5-1 16:28 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
欣欣
时间:
2021-5-1 16:35
虽然程序调通了,但说实话感觉准确性不是很高,楼主水平有限仅供大家参考,网上这类程序还是蛮多的。
作者:
欣欣
时间:
2021-5-1 16:37
我们画电路图,LCD1602并没有画,根据源程序应该可以知道是接在那些IO上的。
3.png
(95.63 KB, 下载次数: 64)
下载附件
2021-9-14 19:31 上传
作者:
Dekia
时间:
2021-6-22 18:08
能加你 帮我过一个设计吗 大佬
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1