找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 3403|回復(fù): 0
收起左側(cè)

求救···51單片機(jī)寫(xiě)的超聲波測(cè)距程序 ,改來(lái)改去都不對(duì),大神幫忙看看哪里錯(cuò)了啊

[復(fù)制鏈接]
ID:99453 發(fā)表于 2016-5-29 19:30 | 顯示全部樓層 |閱讀模式
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit SID=P2^4;
sbit SCIK=P2^5;
sbit ECHO=P3^2;
sbit TRIG=P1^0;
uint sum=1240,i=0,a=0;
void bizhang();
void StartMo();
void display();
void delay(uchar z)
{
uint i,j;
for(i=0;i<=z;i++)
  for(j=0;j<=110;j++);
  }
void sendbyte(uchar byte)
{
   uchar i;
   for(i=0;i<8;i++)
    {
SCIK=0;               //拉低時(shí)鐘線
SID=(bit)(byte&0x80);    //發(fā)送最高位數(shù)據(jù)
SCIK=1;               //上升沿發(fā)送數(shù)據(jù)
byte=byte<<1;                  //左移一位
}
}
void write_com(uchar com)
{
sendbyte(0xf8);       //送入5個(gè)連續(xù)的“1“,啟動(dòng)一個(gè)周期,11111,RW(0),RS(0),0
sendbyte(0xf0&com);           
sendbyte(0xf0&(com<<4));      
delay(10);        
}
void write_data(uchar date)
{
sendbyte(0xfa);        //送入5個(gè)連續(xù)的“1“,啟動(dòng)一個(gè)周期,11111,RW(0),RS(1),0
sendbyte(0xf0&date);       //取高四位,數(shù)據(jù)分兩次傳送,
                                 //每個(gè)字節(jié)的內(nèi)容被送入兩個(gè)字節(jié)
               //高四位放在第一個(gè)字節(jié)的高四位
sendbyte(0xf0&(date<<4));        //低四位放在第二個(gè)字節(jié)
delay(10);
}
void write_hz(uchar *hz)
{         
while(*hz!='\0')
{
  write_data(*hz); //寫(xiě)入漢字
  hz++;
}
}
void display()
{
write_com(0x80);
write_hz("sum=");
write_data(sum/1000+0x30);
write_data(sum/100%10+0x30);
write_data(sum/10%10+0x30);
write_data(sum%10+0x30);
write_hz("cm");
write_data(a);
}
void main()
{      
//定時(shí)器部分
TMOD=0X10;
EA=1;
ET1=1;
//定時(shí)器部分   
write_com(0xf8);//送11111        
write_com(0x0c);//整體和游標(biāo)顯示
write_com(0x01);//清屏
delay(5);
write_com(0x06);//寫(xiě)一個(gè)字符,地址和光標(biāo)指針加1
while(1)
  {
   a=0;
   bizhang();   
   display();
   delay(200);      
  }  
}
void bizhang()
{
ECHO=0;
StartMo();
while(!ECHO);
TH1=0;
TL1=0;
TR1=1; //定時(shí)器初始化
while(ECHO);
TR1=0;
sum=(TH1*256+TL1)*0.00017;//
TH1=0;TL1=0;
delay(80);
}
void StartMo()      
  {
   TRIG=0;
   TRIG=1;                        
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();
   _nop_();   
   _nop_();
   TRIG=0;
}
void ds1()interrupt 3
{
   a=1;
}
12864可以顯示,但超聲波就是測(cè)不了啊,真心求幫助,

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表