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

QQ登錄

只需一步,快速開始

搜索
查看: 1406|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

求幫助:用HC-SR04測(cè)距讓后用LCD1602顯示,為什么顯示錯(cuò)誤

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:761375 發(fā)表于 2020-9-22 16:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#include <reg52.h>
#include <intrins.h>

#define LCD_DATA P0

sbit LCD_E=P2^7;
sbit LCD_RW=P2^5;
sbit LCD_RS=P2^6;

sbit led = P2^0;
sbit led1 = P2^1;
sbit led2 = P2^2;

sbit key = P3^1;

sbit trg = P1^2;           //超聲波模塊控制端
sbit ech = P1^3;           //超聲波模塊接收端

unsigned char i;
unsigned char flag = 0;

unsigned int count = 0;           //超聲波模塊時(shí)間變量
unsigned long dis;   //超聲波測(cè)量的距離
unsigned char num[10] = "0123456789";

unsigned char thousend,hundred,ten,unit;

/*
延時(shí)函數(shù)delay延時(shí) 1ms入口參數(shù)  c                   
*/
void delay(unsigned int c)  
{
    unsigned char a,b;
        for (c; c>0; c--)
        {
                 for (b=199;b>0;b--)
                 {
                          for(a=1;a>0;a--);
                 }      
        }          
}

/****10us延時(shí)****/
void Delay10us()                //@12.000MHz
{
        unsigned char i;

        _nop_();
        _nop_();
        i = 27;
        while (--i);
}                         

void Lcd_Write_Cmd(unsigned int cmd)
{
        LCD_RS = 0;
        LCD_RW = 0;

        LCD_DATA = cmd;
        delay(5);

        LCD_E = 1;
        LCD_E = 0;
}

void Lcd_Write_Dat(unsigned char dat)
{
        LCD_RS = 1;
        LCD_RW = 0;

        LCD_DATA = dat;
        delay(5);

        LCD_E = 1;
        LCD_E = 0;
}                                         

void Lcd_Init()
{
        Lcd_Write_Cmd(0x38);
        Lcd_Write_Cmd(0x0f);
        Lcd_Write_Cmd(0x06);
        Lcd_Write_Cmd(0x01);               
}

/****定時(shí)器初始化****/
void T0_T1_Int0_Init()
{
        TMOD = 0x11;     //配置定時(shí)器工作模式及方式寄存器(TCON為定時(shí)器控制寄存器)
       
        TH0 = (65535 - 5000) / 256;
        TL0 = (65535 - 5000) % 256;

        TH1 = 0;                 //為定時(shí)器1設(shè)初值
        TL1 = 0;                 //高八位與低八位均為0

        EA = 1;                         //開放總中斷
        ET1 = 1;                 //開放定時(shí)器1中斷
        ET0 = 1;
}

void T0_ser() interrupt 1
{
        unsigned char n;       

        TH0 = (65535 - 5000) / 256;
        TL0 = (65535 - 5000) % 256;

        n++;

        if(n >= 16)
        {
                n = 0;
                trg = 1;                                   //向控制端
                Delay10us();                           //提供
                Delay10us();                          //20us
                trg = 0;
       
                led = ~led;
        }
}

void T1_ser() interrupt 3
{
        TH1 = 0;
        TL1 = 0;
}

void Distance()
{
        while(!ech);
        TR1 = 1;
        while(ech);
        TR1 = 0;
}

void Dis_Count()
{
        count = TH1 * 256 + TL1;
        dis = (long)(count * 0.017); //計(jì)算小車到障礙物的距離(cm)

        thousend = dis / 1000;
        hundred = dis % 1000 / 100;                  
        ten = dis % 100 / 10;                               
        unit = dis % 10;
}

void main()
{                          
        Lcd_Init();

        T0_T1_Int0_Init();

        Lcd_Write_Cmd(0x80);

        TR0 = 1;
         
        while(1)
        {         
                Distance();
                Dis_Count();
                                                               
                Lcd_Write_Dat(num[thousend]);
                delay(1);
                Lcd_Write_Dat(num[hundred]);
                delay(1);
                Lcd_Write_Dat(num[ten]);
                delay(1);
                Lcd_Write_Dat(num[unit]);
                delay(100);
       
                Lcd_Write_Cmd(0x01);

                if(dis < 50)
                {
                        led2 = 0;       
                }
                if(dis > 50)
                {
                        led2 = 1;       
                }       
        }
}

LCD1602顯示的數(shù)字一直再增加
不知道哪里出了問題

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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