找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 3044|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

為什么該程序運行一點都沒反應(yīng)求大佬詳細解答,感覺自己寫的是超簡簡化版求大佬指....

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:301339 發(fā)表于 2018-4-16 15:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
5黑幣
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int

#define Lcd1602_DB  P0          
sbit Lcd1602_RS = P2^6;
sbit Lcd1602_RW = P2^5;
sbit Lcd1602_EN = P2^7;
       
sbit Trig = P2^1;
sbit Echo = P2^0;
static unsigned char DisNum = 0;                                  
unsigned int  time=0;
unsigned long S=0;
bit      flag =0;
unsigned char disdat[4] ={ 0,0,0,0,};

void delayms(unsigned int ms)
{
        unsigned char i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}


void Lcd1602_Write_com(unsigned char cmd)
{
        Lcd1602_RS=0;
        P0=cmd;
        delayms(1);
        Lcd1602_EN =1;
    delayms(1);
        Lcd1602_EN =0;
    delayms(1);
}

void Lcd1602_Write_Data(unsigned char shu)
{
        Lcd1602_RS=1;
        P0=shu;
        delayms(1);
        Lcd1602_EN =1;
    delayms(1);
        Lcd1602_EN =0;
        delayms(1);
}

void write_1602(uchar add,uchar sj)
{
        Lcd1602_Write_com(0*80+0*40+add);
        Lcd1602_Write_Data(sj) ;
}               

void zifuchuan(uchar *ch)         
{
    while(*ch!=0)   
    Lcd1602_Write_Data(*ch++);
        delayms(1);
}                                                                                                                                                                                                                    //仔細看一下那個程序

void LcdInit()                                               
{
         Lcd1602_Write_Data(0x38);  
         Lcd1602_Write_Data(0x0c);  
         Lcd1602_Write_Data(0x06);  
         Lcd1602_Write_Data(0x01);  
         Lcd1602_Write_Data(0x80);  
         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]+0*30);                                         
         write_1602(2,disdat[2]+0*30);               
         write_1602(3,disdat[3]+0*30);
         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(1);
     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);
        }
                       
}

最佳答案

查看完整內(nèi)容

LCD初始化程序?qū)戝e了!改這樣試試 void LcdInit() { Lcd1602_Write_com(0x38); Lcd1602_Write_com(0x0c); Lcd1602_Write_com(0x06); Lcd1602_Write_com(0x01); Lcd1602_Write_com(0x80); zifuchuan("TFB") ; }
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:213173 發(fā)表于 2018-4-16 15:13 | 只看該作者
523633035 發(fā)表于 2018-4-16 21:14
求指點謝謝,謝謝 謝謝。

LCD初始化程序?qū)戝e了!改這樣試試
void LcdInit()                                                
{
        Lcd1602_Write_com(0x38);  
        Lcd1602_Write_com(0x0c);  
        Lcd1602_Write_com(0x06);  
        Lcd1602_Write_com(0x01);  
        Lcd1602_Write_com(0x80);  
        zifuchuan("TFB") ;
}
回復(fù)

使用道具 舉報

板凳
ID:301339 發(fā)表于 2018-4-16 21:09 | 只看該作者
大佬們這是單片機超聲波測距的程序
回復(fù)

使用道具 舉報

地板
ID:301339 發(fā)表于 2018-4-16 21:14 | 只看該作者

RE: 為什么該單片機超聲波測距程序運行沒反應(yīng)求大佬詳細解答求指點急

求指點謝謝,謝謝 謝謝。
回復(fù)

使用道具 舉報

5#
ID:301339 發(fā)表于 2018-4-17 14:52 | 只看該作者
wulin 發(fā)表于 2018-4-17 10:40
LCD初始化程序?qū)戝e了!改這樣試試
void LcdInit()                                                
{ ...

對確實是這樣COM設(shè)置的是地址這個地方粘貼時出錯了,謝謝�?墒沁€是顯示不出來求大佬于百忙中再指點一下謝謝
回復(fù)

使用道具 舉報

6#
ID:213173 發(fā)表于 2018-4-17 16:24 | 只看該作者
523633035 發(fā)表于 2018-4-17 14:52
對確實是這樣COM設(shè)置的是地址這個地方粘貼時出錯了,謝謝�?墒沁€是顯示不出來求大佬于百忙中再指點一下 ...

我沒有超聲波傳感器用來測試,只是把LCD1602驅(qū)動程序修改后驗證了一下,可以正常顯示字符。你如果還有問題可以按模塊逐一調(diào)試,分別調(diào)通了再統(tǒng)一調(diào)試,否則你搞不清問題在哪里。


回復(fù)

使用道具 舉報

7#
ID:213173 發(fā)表于 2018-4-17 17:50 | 只看該作者
523633035 發(fā)表于 2018-4-17 14:52
對確實是這樣COM設(shè)置的是地址這個地方粘貼時出錯了,謝謝�?墒沁€是顯示不出來求大佬于百忙中再指點一下 ...

下面兩個函數(shù)都寫錯了,改后的效果是不是你想要的?
void write_1602(uchar add,uchar sj)
{
        Lcd1602_Write_com(0x80+0x40+add);
        Lcd1602_Write_Data(sj);
}

void Conut(void)
{
        time=TH0*256+TL0;
        TH0=0;
        TL0=0;
//        S=time/58;
        S=125;//這是隨便寫的數(shù),用以驗證此程序
        disdat[0]=S%1000/100;
        disdat[1]=S%1000%100/10;
        disdat[2]=S%1000%10 %10;
        write_1602(1,disdat[0]+0x30);
        write_1602(2,disdat[1]+0x30);
        write_1602(3,disdat[2]+0x30);
        write_1602(5,'c');
        write_1602(6,'m');
}



回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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