日韩欧美视频第二区,秋霞成人午夜鲁丝一区二区三区,美女日批视频在线观看,av在线不卡免费

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

超聲波測距+溫度+報警的單片機代碼_51單片機超聲波測距C語言程序

作者:佚名    文章來源:本站原創    點擊數:    更新時間:2023/8/6

可以測當前距離,當超過閾值距離時,蜂蜜器報警,并且實時顯示溫度數據,51單片機超聲波測距C語言程序

制作出來的實物圖如下:

源代碼資料下載 : www.shkcfs.com/Soft/mcu/92.html

 
單片機超聲波測距 

單片機超聲波測距 

單片機超聲波測距實驗 
51單片機超聲波測距C語言程序部分代碼如下:

#include
#include 
#define uchar unsigned char
#define uint unsigned int
int num=0;
unsigned char table[]={"0123456789"};//顯示的數值
//   1602的引腳定義
sbit RW=P2^5; 
sbit RS=P2^6;  
sbit E=P2^7;   
//報警引腳定義
sbit feng=P2^4;
sbit led=P1^2;
sbit key1=P1^0;
sbit key2=P1^1;
int numm=0,nnum=0;
void delayms(unsigned int ms)
{
        unsigned char i=100,j;
        for(;ms;ms--)
        {
                while(--i)
                {
                        j=10;
                        while(--j);
                }
        }
}
bit flag;           //溫度變量
uint temp;
sbit ds=P1^3;  //溫度引腳
//超聲波位定義
sbit Trig = P2^1;
sbit Echo = P2^0;
uint time=0;
unsigned long S=0;
bit flagg=0;
void delay2(uchar p)
        {
          uchar l,k;
           for(l=p;l>0;l--)
              for(k=110;k>0;k--);
        }
void delay(uchar z)
{
    while(z--);
}
//溫度初始化函數                        
void ds_reste()          
{
        ds=1;
        delay(5);
        ds=0;
        delay(80);
        ds=1;
        delay(14);
        if(ds==0)                 //判斷ds總線被拉低
        flag=1;
        else 
        flag=0;
        delay(20);
}
//讀一位字節
bit ds_read_byte()        
{
         bit dat;
         ds=0;                
         _nop_();
         _nop_();
         ds=1;
         _nop_();
         dat=ds;         
         delay(10);
         return dat;
}
//讀一位字節
uchar ds_read()        
{
        uchar i,j,k;
      for(i=0;i<8;i++)
        {
        j=ds_read_byte();
        k=(j<<7)|(k>>1);
        }
         return k;
}
//寫入數據
void ds_write(uchar dat)
{
         uchar i;
         for(i=0;i<8;i++)
    {
         ds=0;
         _nop_();
         ds=dat&0x01;
         delay(6);
         ds=1;
         dat=dat>>1;
        }
         delay(6);
}
//讀取溫度
uint read_temp()          
{
        uchar a,b;
        ds_reste();
        ds_write(0xcc);
        ds_write(0xbe);
        a=ds_read();
        b=ds_read(); 
        temp=b;
        temp=temp<<8;
        temp=temp|a;
        temp=temp*0.0625*10+0.5;                 
        return temp;
} 
//寫入命令1602
void write_com(uchar com)           
{
        RS=0;
        RW=0;
        E=0;
        P0=com;           
        delay2(5);
        E=1;
        delay2(5);
        E=0;
}
//寫入數據 1602
void write_data(uchar date)        
{
        RS=1;
        RW=0;
        E=0;
        P0=date;                
        delay2(5);
        E=1;
        delay2(5);
        E=0;
}
//1602初始化顯示
void init()                                 
{
    RS=0;
        write_com(0x38);
         write_com(0x0c);
         write_com(0x06);
        write_com(0x01);
        write_com(0x80);
}
//溫度在1602上顯示出來
void display(uint tempp)           
{  
         write_com(0x80+0x0b);                         
         write_data(table[tempp/100]);         
         delay2(0);
         write_com(0x80+0x0c);
         write_data(table[tempp%100/10]);           
         delay2(0);        
            write_com(0x80+0x0d);
         write_data('.');                           
         delay2(0);
            write_com(0x80+0x0e);
         write_data(table[tempp%100%10]);
         delay2(0);                                                         
         write_com(0x80+0x0f);
         write_data('C');                                    
         delay2(0);
         write_com(0x80+0x09);
         write_data('T');                                    
         delay2(0);
         write_com(0x80+0x0a);
         write_data(':');                                  
         delay2(0);
}

全部代碼到頁面下載 www.shkcfs.com/Soft/mcu/92.html
Tags:超聲波測距,51單片機,單片機,溫度  
責任編輯:admin
請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
1分 2分 3分 4分 5分

還可以輸入 200 個字
[ 查看全部 ] 網友評論
關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
返回頂部
刷新頁面
下到頁底
晶體管查詢
主站蜘蛛池模板: 武冈市| 灌南县| 蓝山县| 宁阳县| 都安| 珲春市| 含山县| 博兴县| 萍乡市| 西藏| 临漳县| 马尔康县| 理塘县| 双鸭山市| 乌拉特中旗| 弋阳县| 金湖县| 保康县| 尚志市| 龙门县| 仁怀市| 大城县| 北安市| 德格县| 礼泉县| 棋牌| 鄂伦春自治旗| 桂阳县| 中牟县| 宁明县| 东安县| 百色市| 虞城县| 鹤峰县| 桦甸市| 乾安县| 治多县| 临邑县| 永年县| 锦屏县| 常州市|