看著大家都再使用超聲波模塊,樓主也想試試,看效果怎么樣,說干就干。
單片機源程序如下:
- #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
|