打印

求大神 看看我的程序哪有问题啊?急

[复制链接]
1271|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
这是超声波测距。1602显示。
#include <reg52.h>
#include <intrins.h>
#define  uchar unsigned char
#define  uint  unsigned  int
uchar code table[]="Distance";
sbit lcden=P3^4;
sbit lcdrs=P3^5;
sbit lcdrw=P3^6;
sbit dula=P2^6;
sbit wela=P2^7;
sbit trig=P2^0;
sbit echo=P3^2;
uchar num;
bit   flag =0;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void  write_com(uchar com)/*写指令*/
{
lcdrs=0;
lcdrw=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date)/*写数据*/
{
lcdrs=1;
lcdrw=0;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
  
void lcd_init() /*初始化*/
{
   dula=0;
   wela=0;
   lcden=0;
   write_com(0x38);
   write_com(0x0f);
   write_com(0x06);
   write_com(0x01);
   write_com(0x80);
  
}
//***定时器Timer0初始化***
void Timer0init(void)
{
   TMOD&=0xF0;             //将TMOD的低4位定时器0控制部分清零
   TMOD|=0x01;             //设置定时器0为方式1
   TL0=0;                //设置定时器0初值低8位
   TH0=0;                //设置定时器0初值高8位
   ET0=1;                  //Timer0中断允许
   EA=1;                   //开全局中断
}
//名称: 主函数
void main(void)            
{
long S;
int L;
    lcd_init();        //调用1602液晶初始化函数
Timer0init() ;     //调用定时器0初始化函数
for(num=0;num<11;num++)
   {
     write_data(table[num]);
  }

while(1)
  { trig=1;         //发一个脉冲触发信号
    delay(10);  //信号至少要维持10微妙以上  
    trig=0;         //撤销触发信号
  TL0=0;                  //设置定时器0初值低8位为0
        TH0=0;               //设置定时器0初值高8位为0
    while(!echo);   //等待回响高电平  
    TR0=1;        //回响高电平来后启动定时器
    while(echo);   //等待回响高电平结束后
    TR0=0;     //关闭定时器
      S=(TH0*256+TL0)*1.7/100; //22.1184MHz
   L=(int)S;
  if(flag==0&&S<=400)   
  {        
     write_com(0x80+0x40);
    write_data(L/100);
  write_data(L/10%10);
  write_data(L%10);
  write_data('C');
  write_data('M');
  }
  else //超出测量范围显示“-”
  {
     write_com(0x80+0x40);
    write_data('-');
  write_data('-');
  write_data('-');
  write_data('C');
  write_data('M');
  }
  for(S=0;S<40000;S++);  //每两次测距需要有个必要的间隔
}
  }

相关帖子

沙发
dirtwillfly| | 2014-4-27 20:48 | 只看该作者
有什么提示?

使用特权

评论回复
板凳
没有名字的我|  楼主 | 2014-4-27 21:31 | 只看该作者
dirtwillfly 发表于 2014-4-27 20:48
有什么提示?

就是 不能显示出 距离 啊。。

使用特权

评论回复
地板
命中注定0818| | 2014-4-28 15:08 | 只看该作者
先静态调试LCD,看显示是否正确!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

108

帖子

4

粉丝