H54Z)V27@EDF)LI~A(KZ]56.png (207.46 KB, 下載次數: 64)
下載附件
2018-7-13 15:13 上傳
單片機源程序如下:
- #include"hc_sr04.h"
- #include"1602.h"
- uchar array[4];
- uchar overflow=0;//溢出標志
- uchar code table[]="distance:";
- unsigned char code ASCII[15] = {'0','1','2','3','4','5','6','7','8','9','.','-','M'}; //1602顯示
- void hc_sr04datadispose() //數據計算
- {
- uint dat;
- unsigned long S=0;
- dat=TH0*256+TL0;
- //因為第八位滿一次即TL0=256便往高八位進移位,所以在算時間的時候TH0得*-256
- TH0=0;
- TL0=0;
- /*1.7=高電平時間(us)*聲速(340M/S))/2=高電平時間(us)*0.034/2=高電平時間(us)*0.017=1.7cm/us*/
- S=(dat*1.7)/100; //測試距離=(高電平時間(us)*聲速(340M/S))/2;在后面乘以10是為了化成cm,65.536ms=65536μs最大探測距離是65536×0.017
- if((S>400)||overflow==1) //溢出標志
- {
- overflow=0;
- DisplayOneChar(0, 1, ASCII[11]);
- DisplayOneChar(1, 1, ASCII[10]); //顯示點
- DisplayOneChar(2, 1, ASCII[11]);
- DisplayOneChar(3, 1, ASCII[11]);
- DisplayOneChar(4, 1, ASCII[12]); //顯示M
- }
- else
- {
- array[0]=(S/100); //數據處理
- array[1]=(S%100/10);
- array[2]=(S%10);
- DisplayOneChar(0, 1, ASCII[array[0]]);
- DisplayOneChar(1, 1, ASCII[10]); //顯示點
- DisplayOneChar(2, 1, ASCII[array[1]]);
- DisplayOneChar(3, 1, ASCII[array[2]]);
- DisplayOneChar(4, 1, ASCII[12]); //顯示M
- }
- }
- void delayms(uint xms) //延時
- {
- uint b;
- for(b=xms;b>0;b--);
- }
- void main()
- {
- uchar aa=0;
- LCDinitialize(); //初始化
- LCDwritecommand(0x80); //發顯示位置
- while(table[aa]!='\0') //顯示文字
- {
- LCDwritedata(table[aa]); //發數據
- aa++;
- }
- hc_sr04read(); //hc——sr04數據處理
- }
復制代碼
所有資料51hei提供下載:
實驗25:超聲波測距 - 1602顯示.zip
(38.45 KB, 下載次數: 45)
2018-7-13 15:12 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|