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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7920|回復: 9
打印 上一主題 下一主題
收起左側

仿真HC-sr04用555電路做的

[復制鏈接]
跳轉到指定樓層
樓主
軟件功能可以實現了,板子也可以實現,但用555仿真時出現問題,有人能解決一下555產生延時信號硬件設計問題么,我圖片中的電容,電阻值肯定有問題,誰可以解決一下么

TIM圖片20171123192621.png (9.75 KB, 下載次數: 124)

TIM圖片20171123192621.png

評分

參與人數 1黑幣 +5 收起 理由
yinkun230 + 5 很給力!

查看全部評分

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

使用道具 舉報

沙發
ID:252082 發表于 2017-11-23 21:19 | 只看該作者
老鐵這個代替sr04成功了嗎
回復

使用道具 舉報

板凳
ID:183466 發表于 2017-11-24 16:08 | 只看該作者
Dushu 發表于 2017-11-23 21:19
老鐵這個代替sr04成功了嗎

沒,還在做,你有好的建議么
回復

使用道具 舉報

地板
ID:44037 發表于 2017-11-24 20:26 | 只看該作者
正在學習中

評分

參與人數 1黑幣 +10 收起 理由
zlc哈哈哈 + 10 絕世好帖!

查看全部評分

回復

使用道具 舉報

5#
ID:44037 發表于 2017-11-24 20:26 | 只看該作者

回復

使用道具 舉報

6#
ID:44037 發表于 2017-11-24 20:27 | 只看該作者

回復

使用道具 舉報

7#
ID:44037 發表于 2017-11-28 22:23 | 只看該作者
網上程序   編譯成功
#include<reg52.h>   
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char

sbit rs=P2^0;            //1602的數據/指令選擇控制線
sbit rw=P2^1;           //1602的讀寫控制線
sbit en=P2^2;          //1602的使能控制線

sbit trig=P2^5;      //超聲波測距模塊Trig
sbit echo=P3^2;     //超聲波測距模塊Echo
bit flag1;         //觸發信號標志位//

uchar count;           //中斷累加變量
long int distance;    //測量所得距離

unsigned char code table[ ]={"0123456789"}; //定義字符數組顯示數字

/*------------------------------------------------
                  延時函數
------------------------------------------------*/
void delay(uint n)                           
{
    uint x,y;  
    for(x=n;x>0;x--)
    for(y=110;y>0;y--);
}


/*------------------------------------------------
                  延時函數
------------------------------------------------*/
void delayt(uint x)
{
    uchar j;
    while(x-- > 0)
    {
              for(j = 0;j < 125;j++)
        {
          ;
        }
    }
}


/*------------------------------------------------
                1602寫命令函數
------------------------------------------------*/
void lcd_wcom(uchar com)            
{
    rs=0;                //選擇指令寄存器
    rw=0;               //選擇寫
    P0=com;            //把命令字送入P0
    delay(5);         //延時一小會兒,讓1602準備接收數據
    en=1;            //使能線電平變化,命令送入1602的8位數據口,這點非常重要
    en=0;
}


/*------------------------------------------------
               1602寫數據函數   
------------------------------------------------*/
void lcd_wdat(uchar dat)        
{
    rs=1;             //選擇數據寄存器
    rw=0;            //選擇寫
    P0=dat;         //把要顯示的數據送入P0
    delay(5);      //延時一小會兒,讓1602準備接收數據,也就是檢測忙信號,這點非常重要。
    en=1;         //使能線電平變化,數據送入1602的8位數據口
    en=0;
  }


/*------------------------------------------------
                1602初始化函數      
------------------------------------------------*/
void lcd_init()              
{
    lcd_wcom(0x38);       //8位數據,雙列,5*7字形  ,用到功能設定指令     
    lcd_wcom(0x0c);      //開啟顯示屏,關光標,光標不閃爍,用到顯示開關控制指令
    lcd_wcom(0x06);     //顯示地址遞增,即寫一個數據后,顯示位置右移一位,用到了寫入模式設置指令
    lcd_wcom(0x01);    //清屏,用到了清屏指令
}


/*------------------------------------------------
              1602顯示固定字符函數      
------------------------------------------------*/
void lcd_xianshi()              
{
    lcd_wcom(0x80+0x40);
        lcd_wdat('D');
        lcd_wdat('i');
        lcd_wdat('s');
        lcd_wdat('t');
        lcd_wdat('a');
           lcd_wdat('n');
        lcd_wdat('c');
        lcd_wdat('e');
        lcd_wdat(':');
        lcd_wcom(0x80+0x4c);
        lcd_wdat('.');
        lcd_wcom(0x80+0x4e);//單位是厘米//
        lcd_wdat('c');
        lcd_wdat('m');

}


/*------------------------------------------------
定時器0初始化,用于計算響應信號時間
------------------------------------------------*/
void init_t0()
{
        TMOD=0x01;         
         TL0=0x66;
        TH0=0xfc;              //1ms
    ET0=1;            
        EA=1;                     
}


/*------------------------------------------------
    超聲波模塊觸發信號
------------------------------------------------*/
void trigger()
{
    trig=0;
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
                  _nop_();
        trig=1;      
}


/*------------------------------------------------
   超聲波模塊相應端口初始化函數
------------------------------------------------*/
void init_measuring()
{
        trig=1;
        echo=1;
        count=0;
}


/*------------------------------------------------
     超聲波模塊距離測試函數
------------------------------------------------*/
void measuring()
{
        uchar l;
        uint h,y;
        TR0 = 1;
        while(echo==1)
    {
        ;
    }        
        TR0 = 0;
        l = TL0;
        h = TH0;
        y = (h << 8) + l;
        y = y - 0xfc66;//us部分
        distance = y + 1000 * count;//計算總時間,單位是微秒
        TL0 = 0x66;
        TH0 = 0xfc;
        delayt(30);
        distance = 3400* distance / 20000;//原始為:(0.34毫米/us)*時間/2//        
}


/*------------------------------------------------
   超聲波模塊測量結果顯示函數
------------------------------------------------*/
void display(uint x)
{
        uchar qian,bai,shi,ge;
        qian=x/1000;
        bai=(x/100)%10;
        shi=(x/10)%10;
        ge=x%10;

        lcd_wcom(0x80+0x49);//單位是厘米//
        lcd_wdat(table[qian]);
        lcd_wdat(table[bai]);
        lcd_wdat(table[shi]);
        lcd_wcom(0x80+0x4d);
        lcd_wdat(table[ge]);
}

/*------------------------------------------------
              主函數
------------------------------------------------*/
void main()            
{   lcd_init();          //液晶初始化        
    init_t0();          //定時器0初始化   
        init_measuring();  //超聲波相應端口初始化


        while(1)
        {
                lcd_xianshi();   //液晶顯示特定字符
                trigger();      //觸發超聲波啟動
                 while(echo==0)          //等待回聲
                 {
                           ;
                 }
            measuring();           //進行距離測量
            display(distance);    //對測量結果進行顯示
            init_measuring();    //超聲波相應端口初始化
            delayt(600);        //每次測量間隔60ms
        }
}


//……………………………………………中斷服務函數…………………………………………………//

void T_0()interrupt 1
{
        TF0 = 0;
        TL0 = 0x66;
        TH0 = 0xfc;
        count++;
        if(count==18)
        {
          TR0 =0;
          TL0 = 0x66;
          TH0 = 0xfc;
          count = 0;
        }
}
回復

使用道具 舉報

8#
ID:217448 發表于 2018-2-13 12:31 | 只看該作者
怎么樣。成功了么?我設計了沒用啊
回復

使用道具 舉報

9#
ID:215299 發表于 2018-4-17 18:02 | 只看該作者
by64214 發表于 2017-11-28 22:23
網上程序   編譯成功
#include   
#include

那個L1是什么東西啊??
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久99精品久久久久婷婷 | 天天拍天天色 | 99色播| 久久一本| 国产精品福利在线观看 | 欧美另类视频 | 国产亚洲一区二区精品 | 亚州精品天堂中文字幕 | 国产成人av在线播放 | 日韩精品一区二区三区中文在线 | 日韩激情视频一区 | 久草新在线 | 亚洲成av| 操操操av | 国产精品一区二区免费 | 午夜免费观看体验区 | 日韩久久久久 | 99这里只有精品视频 | 国产精品久久久久国产a级 欧美日韩国产免费 | 一区二区三区中文字幕 | 欧美综合一区 | 亚洲一区二区三区在线播放 | 日本不卡在线观看 | 在线免费观看黄a | 国产在线观看av | av在线伊人 | 人人爱干 | 日韩理论电影在线观看 | 国产欧美精品在线 | 精品视频在线观看 | 国产一区二区在线视频 | 亚洲视频在线一区 | 国产精品久久久久久久7电影 | 亚洲精品久久久久中文字幕欢迎你 | 国产精品高潮呻吟久久av黑人 | 高清视频一区二区三区 | 国产三区四区 | 涩涩操| 精品在线一区 | 中文字幕一区二区三区精彩视频 | 成人啊啊啊 |