软件:KEIL5、Proteus8.6
仿真内容:LCD1602显示,超声波测距(程序非阻塞方式,使用外部中断,平均值滤波更精准)真机测试:正常,使用HC-SRF04超声波测距模块(测距范围:4-450cm),STC89C52单片机,实际可稳定测距300CM。
DOC文件夹内有Proteus8.6的仿真文件和截图!
本工程有Hayden建于2018年6月12日,DOC文件夹用于存放仿真文件及电路原理图等文档,Hayden文件夹是软件底层和硬件驱动库,Project为工程文件夹,其目录下的Object文件夹存放工程编译所产生的中间文件及HEX烧写文件等。
全部源码程序(包括仿真文件):
DIYs-LCD1602&SRF04.rar
(110.1 KB, 下载次数: 1532)
程序为多文件模块化设计,可随时添加自定义其他驱动文件!
单片机源程序如下(主程序):
- #include<reg52.h>
- #include"lcd1602.h"
- uint dis,cnt;
- main()
- {
- uchar i;
- LCD1602_Init();
- SRF04Init();
- delayms(10);
- LCD1602_Display_Str(1,19,"ULTRASONIC");
- LCD1602_Display_Str(2,17,"RANGING SYSTEM!");
- for(i=0;i<16;i++)
- {
- LCD1602_Write_Cmd(0x18);
- delayms(500);
-
- }
- //while(1);
- delayms(5000);
- LCD1602_ClearScreen();
- delayms(10);
- LCD1602_Display_Str(1,0,"Distance:");
- LCD1602_Display_Str(2,7,"D=");
- LCD1602_Display_Str(2,12,"CM");
- while(1)
- {
- dis=getAverageDistance();
- if(dis<300)
- {
- LCD1602_Display_Num(2,9,dis);
-
- }
- else
- LCD1602_Display_Str(2,9,"---");
- if(dis<30)
- {
- deep=0;
- }else deep=1;
- //LCD1602_Display_Num(2,11,getTemperature());
- delayms(100);
- //while(1);
- }
- }
复制代码 |