完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
2个回答
|
|
以下是一个简单的51单片机的超声波测距,并使用74HC595驱动数码管显示超声波测距距离的程序示例:
```c #include sbit TRIG = P3^4; // 超声波发射引脚 sbit ECHO = P3^5; // 超声波接收引脚 sbit SRCLK = P1^0; // 74HC595的时钟引脚 sbit RCLK = P1^1; // 74HC595的存储锁存引脚 sbit SER = P1^2; // 74HC595的数据引脚 void delay(unsigned int count) { unsigned int i, j; for (i = 0; i < count; i++) { for (j = 0; j < 112; j++); } } void hc595SendByte(unsigned char dat) { unsigned char a; SRCLK = 0; RCLK = 0; for (a = 0; a < 8; a++) { SER = dat >> 7; dat <<= 1; SRCLK = 1; SRCLK = 0; } RCLK = 1; RCLK = 0; } void displayDistance(unsigned int distance) { unsigned char digit[10] = { 0x3F, // 0 0x06, // 1 0x5B, // 2 0x4F, // 3 0x66, // 4 0x6D, // 5 0x7D, // 6 0x07, // 7 0x7F, // 8 0x67 // 9 }; unsigned char high, low; high = distance / 10; low = distance % 10; hc595SendByte(digit[high]); delay(1); hc595SendByte(digit[low]); delay(1); } void delayMicroseconds(unsigned int us) { while (us--) { unsigned char a, b; for (b = 1; b > 0; b--) for (a = 2; a > 0; a--); } } unsigned int ultrasonicMeasure(void) { unsigned int distance; TRIG = 0; delayMicroseconds(2); TRIG = 1; delayMicroseconds(10); TRIG = 0; while (!ECHO); TH0 = 0; TL0 = 0; while (ECHO); TR0 = 1; while (ECHO); TR0 = 0; distance = (TH0 << 8) | TL0; distance = distance / 58.0; return distance; } void main(void) { unsigned int distance; TMOD = 0x01; // 16位定时器模式 EA = 1; // 启用全局中断 ET0 = 1; // 启用定时器0中断 while (1) { distance = ultrasonicMeasure(); displayDistance(distance); delay(20); } } void timer0Int() interrupt 1 { TH0 = 0; TL0 = 0; } ``` 希望以上程序能够帮助到你!如果有其他问题,请随时提问。
最佳答案
|
|
1 条评论
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12009 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 13:11 , Processed in 1.333314 second(s), Total 97, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号