久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開(kāi)始

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

52單片機(jī)超聲波測(cè)距數(shù)碼管顯示四位數(shù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
#include<reg52.h>
#include<intrins.h>  //包涵了_nop_()函數(shù)聲明

typedef unsigned int unint;
typedef unsigned char unchar;

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

sbit dula = P2^6;
sbit wela = P2^7;
//TRIG 為控制端
sbit TRIG = P1^6; //超聲波的 TRIG端  插在了P1.6口
//ECHO 為接收端
sbit ECHO = P1^7; //超聲波的 ECHO端  插在了P1.7口
/*還有vcc,gnd 就直接插在了單片機(jī) vcc 和gnd 端口了
*也可以將其插在I/O引腳中 將插 vcc的引腳置高電平,gnd置低電平*/

unchar flag = 0; //標(biāo)志定時(shí)器是否溢出

void delayed(unsigned int x); //延時(shí)xmS
void delay_50us(); // 延時(shí)20ms
void init_time();  //初始化定時(shí)器的函數(shù)
void display(int num); //數(shù)碼管顯示函數(shù)

void main()
{
    int x;  //用到就知道干什么用了  
            //寫(xiě)程序時(shí)也不用急著將所有變量都定義了  用到一個(gè)定義一個(gè)
    unint time_data,out_TH0,out_TL0;

    TRIG = 0; // 先給控制端初始化為0

    while(1)
    {
    /*超聲波傳感器的使用方法:
    控制口發(fā)一個(gè)10US 以上的高電平,就可以在接收口等待高電平輸出.
    一有輸出就可以開(kāi)定時(shí)器計(jì)時(shí),當(dāng)此口變?yōu)榈碗娖綍r(shí)就可以讀定時(shí)器的,
    此時(shí)就為此次測(cè)距的時(shí)間,方可算出距離.如此不斷的周期測(cè),
    就可以達(dá)到你移動(dòng)測(cè)量的值了*/
        init_time(); //初始化定時(shí)器
        flag = 0;    //置溢出標(biāo)志位為0
        //控制口發(fā)一個(gè)10US 以上的高電平
        TRIG = 1;   
        delay_50us();
        TRIG = 0;
        //等待接收端出現(xiàn)高電平
        while(!ECHO);
        TR0 = 1; //啟動(dòng)計(jì)時(shí)器 開(kāi)始計(jì)時(shí)
        while(ECHO); //等待高電平結(jié)束
        TR0 = 0; //關(guān)閉低電平

        out_TH0 = TH0; //取定時(shí)器的值
        out_TL0 = TL0;
        out_TH0 <<= 8;  //右移8位
        time_data = out_TH0 | out_TL0; //合并為16位的值  
        time_data /= 58/10; // 微秒/58 = 厘米
        /*    為什么微秒/58 = 厘米
        *     Y米 = (X秒 * 344) 2
        *     X秒 = (2 * Y米) / 344
        *     X秒 = 0.0058*Y米
        *     厘米 = 微秒/58     */
        if(flag == 1) //如果定時(shí)器溢出 則超出超聲波測(cè)量范圍
        {
            display(-1);
        }
        else
        {
            for(x =5; x >=0; x--)//加此循環(huán)只是為了將結(jié)果在數(shù)碼管上停留時(shí)間長(zhǎng)點(diǎn)便于觀察
            {
                display(time_data);
            }
        }   
    }

}

void timer0() interrupt 1 //中斷函數(shù)
{
    flag=1; //溢出標(biāo)志位置1
}

void delayed(unsigned int x) //延時(shí)xmS
{
    unsigned int i,j;
    for(i = x; i > 0; i--)
    {
        for(j = 113; j >0; j--);
    }
}

void init_time()
{
    TMOD = 0x01; //選擇定時(shí)器0工作 工作方式為方式1
    TH0 = 0; //裝初值0
    TL0 = 0;

    TF0 = 0; //中斷溢出標(biāo)志位
    ET0 = 1; //開(kāi)定時(shí)器中斷
    EA = 1; // 開(kāi)總中斷
}

void display(int num) //顯示函數(shù)
{
    if(num == -1) //當(dāng)超出范圍 顯示999
    {
        dula = 1;
        P0 = table[6];
        dula = 0;
        P0 = 0xff;
        wela = 1;
        P0 = 0xc0;
                wela=1;
                  P0 = 0xf7;
      wela = 0;
    }
    else  //顯示到前三個(gè)數(shù)碼管上  因?yàn)闇y(cè)距范圍為2-400cm 故3位即可
    {
        unchar t;
                  t = num / 1000; //取百位

        dula = 1;
        P0 = table[t];
        dula = 0;
        P0 = 0xff;
        wela = 1;
        P0 = 0xfe;
        wela = 0;
        delayed(10);
        t = num / 100; //取百位

        dula = 1;
        P0 = table[t];
        dula = 0;
        P0 = 0xff;
        wela = 1;
        P0 = 0xfd;
        wela = 0;
        delayed(10);

        t = num/10%10;  //取十位
        dula = 1;
        P0 = table[t];
        dula = 0;
        P0 = 0xff;
        wela = 1;
        P0 = 0xfb;
        wela = 0;
        delayed(10);

        t = num %10;
        dula = 1;
        P0 = table[t]; //取個(gè)位
        dula = 0;
        P0 = 0xff;
        wela = 1;
        P0 = 0xf7;
        wela = 0;
        delayed(10);
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………

QQ圖片20180928182358.jpg (397.39 KB, 下載次數(shù): 48)

此仿真為

此仿真為

cj.rar

17.45 KB, 下載次數(shù): 49, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:397622 發(fā)表于 2018-12-24 04:03 | 只看該作者
浪費(fèi)了5個(gè)幣
回復(fù)

使用道具 舉報(bào)

板凳
ID:3802 發(fā)表于 2019-1-23 15:50 | 只看該作者
浪費(fèi)了5個(gè)幣
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 九九久久久 | www.色综合 | 国产精品久久久久久久久久妞妞 | 日本国产欧美 | 精品一区二区三区四区五区 | 久久免费精彩视频 | 黄色激情毛片 | 久久国产精品久久久久久 | 欧美三区在线观看 | 一区二区三区韩国 | jizz中国日本 | 日韩三级一区 | 欧美激情第一区 | 日韩一区二区三区在线视频 | 欧美日韩一区精品 | 国产精品国产三级国产aⅴ入口 | 国产精品福利久久久 | 亚洲综合色| 91精品久久 | 激情视频中文字幕 | 欧美在线一二三 | 一区二区三区视频 | 欧美精品在线观看 | 美人の美乳で授乳プレイ | 国产精品178页 | 亚洲一区二区三区欧美 | 国产精品久久久久久久久久久免费看 | 亚洲午夜视频在线观看 | 女人天堂av| 日本一区二区三区在线观看 | 伊人二区| 成人18亚洲xxoo | 日韩精品免费播放 | 国产wwwcom | 日韩成人av在线 | 日韩欧美精品一区 | 欧美成人激情 | 国产不卡在线观看 | 精品粉嫩aⅴ一区二区三区四区 | 国产日韩久久 | 国产一区二区观看 |