部分源码:完整源码见附件
- #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, 售价: 1 E币)
【必读】版权免责声明
1、本主题所有言论和内容纯属会员个人意见,与本论坛立场无关。2、本站对所发内容真实性、客观性、可用性不做任何保证也不负任何责任,网友之间仅出于学习目的进行交流。3、对提供的数字内容不拥有任何权利,其版权归原著者拥有。请勿将该数字内容进行商业交易、转载等行为,该内容只为学习所提供,使用后发生的一切问题与本站无关。 4、本网站不保证本站提供的下载资源的准确性、安全性和完整性;同时本网站也不承担用户因使用这些下载资源对自己和他人造成任何形式的损失或伤害。 5、本网站所有软件和资料均为网友推荐收集整理而来,仅供学习用途使用,请务必下载后两小时内删除,禁止商用。6、如有侵犯你版权的,请及时联系我们(电子邮箱1370723259@qq.com)指出,本站将立即改正。
|
|