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

QQ登錄

只需一步,快速開始

搜索
查看: 8836|回復(fù): 3
收起左側(cè)

測(cè)距模塊初級(jí)2-用了51單片機(jī)內(nèi)部的一個(gè)計(jì)數(shù)器控制兩個(gè)超聲波測(cè)距模塊

[復(fù)制鏈接]
ID:76556 發(fā)表于 2015-4-10 02:55 | 顯示全部樓層 |閱讀模式
1、用51單片機(jī)內(nèi)部的一個(gè)定時(shí)器/計(jì)數(shù)器控制兩個(gè)測(cè)距模塊(同樣的程序?qū)懛ㄒ部梢钥刂迫齻(gè)、四個(gè),很多個(gè))
2,、沒(méi)有寫入分析測(cè)距模塊反饋到51MCU的數(shù)據(jù)的程序,這樣程序談不上智能!
3、而且本人認(rèn)為程序還是不夠簡(jiǎn)化。
重要提示:

        本人在測(cè)試時(shí)發(fā)現(xiàn)如果在震動(dòng),振幅大的時(shí)候模塊反饋的數(shù)據(jù)是錯(cuò)的!在請(qǐng)教老師后我知道了這種干擾的的產(chǎn)生是因?yàn)閷?dǎo)線在擺動(dòng)時(shí)讓電荷發(fā)生改變,使觸發(fā)信號(hào)線與信號(hào)接收線的電壓發(fā)生改變,因?yàn)?1單片機(jī)屬于數(shù)字芯片,信號(hào)的格式只有高電平與低電平兩種,所以只要當(dāng)電平發(fā)生變化時(shí)單片機(jī)就會(huì)接受到錯(cuò)誤信號(hào)










#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar num1,num2,num3,num4,led0,led1,aa,bb;
sbit tr=P1^0;
sbit ec=P1^1;
sbit lcd0=P2^0;
sbit lcd1=P2^1;
sbit tr1=P1^2;
sbit ec1=P1^3;
sbit lcd2=P2^2;
sbit lcd3=P2^3;
void timer(uint x)
{
uint q,w;
for(q=x;q>0;q--)
for(w=110;w>0;w--);
}
void init()
{
ec=0;
tr=0;
ec1=0;
tr1=0;
num1=0;
num2=0;
num3=0;
num4=0;
led0=1;
led1=1;
}
void trk()
{
tr=1;
timer(10);
tr=0;
num3=1;
}
void trk1()
{
tr1=1;
timer(10);
tr1=0;
num3=1;
}
void eck()
{
if(ec==1)
        {
        TR0=1;
        num2=1;
        }
if(ec==0&num2==1)
        {
        TR0=0;
        if(num1<30)
                {
                led0=0;
                num3=0;
                }
        if(num1>30)
                {
                led1=0;
                num3=0;
                }
        }
}
void eck1()
{
if(ec1==1)
        {
        TR0=1;
        num2=1;
        }
if(ec1==0&num2==1)
        {
        TR0=0;
        if(num4<30)
                {
                led0=0;
                num3=0;
                }
        if(num4>30)
                {
                led1=0;
                num3=0;
                }
        }
}
void open_time()
{
TMOD=0x01;
TH0=(65536-1)/256;
TL0=(65536-1)%256;
EA=1;
ET0=1;
TR0=0;
}
void dongzuo()
{
if(led0==0)
        {
        lcd0=0;
        lcd1=1;
        bb=1;
        aa=0;
        }
if(led1==0)
        {
        lcd1=0;
        lcd0=1;
        bb=1;
        aa=0;
        }
}
void dongzuo1()
{
if(led0==0)
        {
        lcd2=0;
        lcd3=1;
        aa=1;
        bb=0;
        }
if(led1==0)
        {
        lcd2=1;
        lcd3=0;
        aa=1;
        bb=0;
        }
}

void main()
{
aa=1;
bb=0;
while(1)
        {
        while(aa==1)
        {
                bb=0;
                init();
                open_time();
                trk();
                while(num3==1)
                        {
                        eck();
                        }

                dongzuo();
        }
        while(bb==1)
                {
                aa=0;
                init();
                open_time();
                trk1();
                while(num3==1)
                        {
                        eck1();
                        }
                dongzuo1();
                }
        }
}
void time() interrupt 1
{
TH0=(65536-1)/256;
TL0=(65536-1)%256;
num1++;
num4++;
}  




設(shè)計(jì)者:薛羽豪


評(píng)分

參與人數(shù) 1黑幣 +5 收起 理由
神奇國(guó)度 + 5 贊一個(gè)!

查看全部評(píng)分

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:74643 發(fā)表于 2015-5-13 21:11 | 顯示全部樓層
正在做這個(gè)
回復(fù)

使用道具 舉報(bào)

ID:91831 發(fā)表于 2015-10-7 20:10 | 顯示全部樓層
lz這個(gè)會(huì)不會(huì)導(dǎo)致程序一直在執(zhí)行定時(shí)器一中斷里的內(nèi)容啊,感覺(jué)程序會(huì)一直進(jìn)入定時(shí)器中斷沒(méi)法處理別的內(nèi)容了
回復(fù)

使用道具 舉報(bào)

ID:93295 發(fā)表于 2016-3-15 20:40 | 顯示全部樓層
請(qǐng)問(wèn)你的程序有卡死的情況嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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