找回密码
 立即注册

QQ登录

只需一步,快速开始

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

用超声波测距lcd1602显示,大神帮忙看看哪有问题,屏幕不显示呢

[复制链接]
跳转到指定楼层
楼主
ID:64575 发表于 2014-8-2 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  #include<intrins.h>
   #define uint unsigned int
   #define uchar unsigned char
   sbit trig=P3^3;
    //发射
   sbit echo=P3^2; //接收
   sbit lcde=P2^7; //e
   sbit wr=P2^5;   
   sbit rd=P2^6;
   void delay(uint z);
   void com(uchar com);
   void writedata(uchar date);
    void display(uchar temp);
   uchar num,i;
   uchar table1[3];      
   int time,distance,succeedflag;  
   void lcdinit();
      void main()
   {
       EA=1;
      TMOD=0X01;
      ET0=1;
     
              while(1)
     {   
          succeedflag=0;
          trig=1;
          delay(10);
       trig=0;
       while(!echo);
       TR0=1;
       TH0=0;
       TL0=0;
       while(echo);
       TR0=0;
       succeedflag=1;
         delay(40);
       }
     if(succeedflag==1)
      {
        time=TH0*256+TL0;
      distance=time*0.0172;    //cm
        display(distance);
      
      }
     if(succeedflag==0)
       {
          distance=0;
             }
        
      
   }
      void delay(uint z)         //延时函数
   {
     uint x,y;
     for(x=z;x>0;x--)
        for(y=110;y>0;y--);
   }
    void  com(uchar com)         //lcd命令
    {
        
      rd=0;
      wr=0;
      P0=com;
      delay(5);
      lcde=1;
      delay(5);
      lcde=0;
    }
    void writedata(uchar date)        //lcd数据
    {
      rd=1;
    wr=0;
    P0=date;
    delay(5);
    lcde=1;
    delay(5);
    lcde=0;
    }
    void lcdinit()       //lcd命令
    {     
         com(0x38);
    com(0x0c);
    com(0x06);
    com(0x01);
    com(0x80);
   
    }
      void display(uchar temp)                 //记数
    {   
        uchar bai,shi,ge,i,j;
      bai=temp/100;
      shi=temp%100/10;
      ge=temp%10;
      table1[0]=bai+'0';
      table1[1]=shi+'0';
      table1[2]=ge+'0';
      lcdinit();           
        for(i=0;i<3;i++)
        {
          writedata(table1[i]);
      
         }
   
      
   
     }
        void timer0() interrupt 1        //定时器0中断
    {
        TH0=0;
      TH0=0;
   
    }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:51090 发表于 2014-8-4 00:20 来自手机 | 只看该作者
程序看起来没有问题,是不是io口接错了,
回复

使用道具 举报

板凳
ID:153199 发表于 2017-2-17 15:20 | 只看该作者
程序看不出来问题,解决了吗,分享下经验
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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