軟件:KEIL5、Proteus8.6
仿真內容:LCD1602顯示,超聲波測距(程序非阻塞方式,使用外部中斷,平均值濾波更精準)真機測試:正常,使用HC-SRF04超聲波測距模塊(測距范圍:4-450cm),STC89C52單片機,實際可穩定測距300CM。
DOC文件夾內有Proteus8.6的仿真文件和截圖!
本工程有Hayden建于2018年6月12日,DOC文件夾用于存放仿真文件及電路原理圖等文檔,Hayden文件夾是軟件底層和硬件驅動庫,Project為工程文件夾,其目錄下的Object文件夾存放工程編譯所產生的中間文件及HEX燒寫文件等。
QQ截圖20180613214801.png (44.07 KB, 下載次數: 164)
下載附件
2018-7-7 16:09 上傳
全部源碼程序(包括仿真文件):
DIYs-LCD1602&SRF04.rar
(110.1 KB, 下載次數: 1532)
2018-7-7 16:15 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
程序為多文件模塊化設計,可隨時添加自定義其他驅動文件!
單片機源程序如下(主程序):
- #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);
- }
- }
復制代碼 |