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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

[復(fù)制鏈接]
ID:397287 發(fā)表于 2018-9-28 18:27 | 顯示全部樓層 |閱讀模式
#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;  //用到就知道干什么用了  
            //寫程序時(shí)也不用急著將所有變量都定義了  用到一個(gè)定義一個(gè)
    unint time_data,out_TH0,out_TL0;

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

    while(1)
    {
    /*超聲波傳感器的使用方法:
    控制口發(fā)一個(gè)10US 以上的高電平,就可以在接收口等待高電平輸出.
    一有輸出就可以開定時(shí)器計(jì)時(shí),當(dāng)此口變?yōu)榈碗娖綍r(shí)就可以讀定時(shí)器的,
    此時(shí)就為此次測距的時(shí)間,方可算出距離.如此不斷的周期測,
    就可以達(dá)到你移動測量的值了*/
        init_time(); //初始化定時(shí)器
        flag = 0;    //置溢出標(biāo)志位為0
        //控制口發(fā)一個(gè)10US 以上的高電平
        TRIG = 1;   
        delay_50us();
        TRIG = 0;
        //等待接收端出現(xiàn)高電平
        while(!ECHO);
        TR0 = 1; //啟動計(jì)時(shí)器 開始計(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í)器溢出 則超出超聲波測量范圍
        {
            display(-1);
        }
        else
        {
            for(x =5; x >=0; x--)//加此循環(huán)只是為了將結(jié)果在數(shù)碼管上停留時(shí)間長點(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; //開定時(shí)器中斷
    EA = 1; // 開總中斷
}

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距范圍為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);
…………限于本文篇幅 余下代碼請從51黑下載附件…………

此仿真為

此仿真為

cj.rar

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

評分

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

查看全部評分

回復(fù)

使用道具 舉報(bào)

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精品美女久久久tv | 欧美精品久久久久久久久久 | 国产精品福利在线 | 国内精品久久久久 | 久久久久久久久久久久91 | 九一在线| 欧美在线视频a | 国产999精品久久久久久绿帽 | 蜜桃传媒av | 91精品国产91久久久久久密臀 | 国产一区电影 | 国产精品一区视频 | 亚洲中午字幕 | 久久一区二区视频 | 精品欧美一区二区三区久久久 | 91久久久精品国产一区二区蜜臀 | 亚洲视频免费在线观看 | 在线观看www视频 | 久久免费视频1 | 中文字幕一区二区三区日韩精品 | 91精品国产91久久久久游泳池 | 国产视频福利 | 在线日韩av电影 | 黄网在线观看 | 国产成人99久久亚洲综合精品 | 国产精品视频 | 欧美综合国产精品久久丁香 | 91精品久久久久久久久中文字幕 | 99av成人精品国语自产拍 | 久久精品国产一区二区 | www.久草.com | 国产免费一区二区 | 亚洲国产精品久久久 | 国产成人99久久亚洲综合精品 | 国产精品久久久久久久久久久新郎 | 国产精品久久性 | 一区二区三区亚洲精品国 |