找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2154|回复: 3
打印 上一主题 下一主题
收起左侧

单片机超声波测距程序,单片机显示距离扩大了十倍为什么,另求补充一下中断有关程序

[复制链接]
跳转到指定楼层
楼主
10黑币
本帖最后由 523633035 于 2018-4-17 16:18 编辑

#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

         
sbit Lcd1602_RS = P2^6;
sbit Lcd1602_RW = P2^5;
sbit Lcd1602_EN = P2^7;
        
sbit Trig = P2^1;
sbit Echo = P2^0;                                 
unsigned int  time=0;
unsigned long S=0;
bit      flag =0;
uchar disdat[4] ={ 0,0,0,0,};

void delayms(uint ms)
{
    uchar i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}


void Lcd1602_Write_com(uchar cmd)
{
        Lcd1602_RS=0;
        P0=cmd;
        delayms(5);
        Lcd1602_EN =1;
    delayms(5);
        Lcd1602_EN =0;
    delayms(5);
}

void Lcd1602_Write_Data(uchar shu)
{
        Lcd1602_RS=1;
        P0=shu;
        delayms(5);
        Lcd1602_EN =1;
    delayms(5);
        Lcd1602_EN =0;
        delayms(5);
}

void write_1602(uchar add,uchar sj)
{
        Lcd1602_Write_com(0x80+0x40+add);
        Lcd1602_Write_Data(sj) ;
}               

void zifuchuan(uchar *ch)         
{
    while(*ch!=0)   
    Lcd1602_Write_Data(*ch++);
        delayms(5);
}                                                                                                                                                                                                                    
void LcdInit()                                                
{
         Lcd1602_EN =0;
         Lcd1602_RW = 0;
          Lcd1602_Write_com(0x38);  
     Lcd1602_Write_com(0x0c);  
         Lcd1602_Write_com(0x06);  
         Lcd1602_Write_com(0x80);  
         Lcd1602_Write_com(0x01);  
         zifuchuan("TFB") ;
}
  void Conut(void)
{
         time=TH0*256+TL0;
         TH0=0;
         TL0=0;
         S=time/58;
         disdat[0]=S%1000/100;                           
         disdat[1]=S%1000%100/10;                  
         disdat[2]=S%1000%10 %10;                  
         write_1602(1,disdat[1]+0x30);                                         
         write_1602(2,disdat[2]+0x30);               
         write_1602(3,disdat[3]+0x30);
         write_1602(5,'c');
     write_1602(6,'m');
         
         

         }                                 


void zd0() interrupt 1                  
  {
    flag=1;                                                        
  }

void  StartModule()                          
  {
          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 main(void)
{
         delayms(5);
     LcdInit();
         TMOD=0x01;                  
         TH0=0;
         TL0=0;         
         ET0=1;            
         EA=1;                           



        while(1)
{

         StartModule();
     while(!Echo);               
         TR0=1;                           
     while(Echo);                        
         TR0=0;                        
     Conut();               
     delayms(1);
        
        }
                        
}

最佳答案

查看完整内容

呵呵,你不仔细看我前面的回帖。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2018-4-17 15:36 | 只看该作者
呵呵,你不仔细看我前面的回帖。

回复

使用道具 举报

板凳
ID:301339 发表于 2018-4-19 01:09 | 只看该作者
wulin 发表于 2018-4-17 20:19
呵呵,你不仔细看我前面的回帖。

不好意思我是在看了你帖子之后立马对错误进行了修改,然后又运行了一下又改了一些其他的错误,发现了这个错误百思不得其解想快一点知道所以又立马直接发了个帖,不是没有认真看是一直没有登录刚才看到了上个帖子回帖我还是太粗心了非常感谢你,谢谢你对我这个新手伸出援手谢谢好人呐。
回复

使用道具 举报

地板
ID:301339 发表于 2018-4-19 01:22 | 只看该作者
wulin 发表于 2018-4-17 15:36
呵呵,你不仔细看我前面的回帖。

再次感谢大佬程序运行已经完全没问题了谢谢,自己太粗心了谢谢大佬指点。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表