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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

想實現52單片機控制兩個超聲波測距然后數碼管顯示距離(2~9)不過數碼管只有一個亮

[復制鏈接]
跳轉到指定樓層
樓主
#include <REGX52.H>
#include <intrins.h>
#include <stdio.h>
#define uchar unsigned char
#define uint  unsigned int
sbit SH_CP1 = P0^1;
sbit DS = P0^0;
sbit ST_CP1 = P0^2;
int distL,distR;
unsigned char code table[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
sbit TrigL    = P2^4;                // 超聲波模塊的Trig管腳
sbit EchoL    = P2^5;                // 超聲波模塊的Echo管腳
sbit TrigR    = P2^6;                // 超聲波模塊的Trig管腳
sbit EchoR    = P2^7;                // 超聲波模塊的Echo管腳
//============MAIN===============================        
void Delay(unsigned int xms)  //延時
{
        unsigned char i, j;
        while(xms--)
        {
                i = 2;
                j = 199;
                do
                {
                        while (--j);
                } while (--i);
        }
}
void send_data_74hc595(uint data_74hc595)                    //傳送數據給74hc595
{
        uchar a;
        for(a = 0; a < 8; ++a)
        {
                DS = (data_74hc595 << a) & 0x80;                    //從高位開始傳輸
                SH_CP1 = 0;

                _nop_();
                _nop_();
                SH_CP1 = 1;

        }
}

void show_74hc595()                                         //數據顯示
{
        ST_CP1 = 0;

        _nop_();
        _nop_();
        ST_CP1 = 1;

}
void Nixie()
{
           switch(distR)
                 {
                         case 1:send_data_74hc595(table[1]);show_74hc595();break;
                         case 2:send_data_74hc595(table[2]);show_74hc595();break;
                         case 3:send_data_74hc595(table[3]);show_74hc595();break;
                         case 4:send_data_74hc595(table[4]);show_74hc595();break;
                         case 5:send_data_74hc595(table[5]);show_74hc595();break;
                         case 6:send_data_74hc595(table[6]);show_74hc595();break;
                         case 7:send_data_74hc595(table[7]);show_74hc595();break;
                         case 8:send_data_74hc595(table[8]);show_74hc595();break;
                         case 9:send_data_74hc595(table[9]);show_74hc595();break;
                 
                 }
                 
                  switch(distL)
                 {
                         case 1:send_data_74hc595(table[1]);show_74hc595();break;
                         case 2:send_data_74hc595(table[2]);show_74hc595();break;
                         case 3:send_data_74hc595(table[3]);show_74hc595();break;
                         case 4:send_data_74hc595(table[4]);show_74hc595();break;
                         case 5:send_data_74hc595(table[5]);show_74hc595();break;
                         case 6:send_data_74hc595(table[6]);show_74hc595();break;
                         case 7:send_data_74hc595(table[7]);show_74hc595();break;
                         case 8:send_data_74hc595(table[8]);show_74hc595();break;
                         case 9:send_data_74hc595(table[9]);show_74hc595();break;
                 
                 
                 }        }        
//模塊程序
uint GetDistanceL(void)
{
        uint s;     
  TH0 = 0;
        TL0 = 0;
  TrigL=1;                                         //800MS  啟動一次模塊
        Delay(0.001);
  TrigL=0;

  while(!EchoL);                //當RX為零時等待
         TR0=1;                            //開啟計數
  while(EchoL);                        //當RX為1計數并等待
         TR0=0;                                //關閉計數
  //timeL=TH0*256+TL0;
         
        // timeL *= 12/11.0592;
  //s=(timeL*1.7)/100;     //算出來是CM
        s=((TH0*256+TL0)*0.034)/2;
        return s;
}

uint GetDistanceR(void)
{        
        uint s;
        TH0 = 0;
        TL0 = 0;
  TrigR=1;                                         //800MS  啟動一次模塊
         Delay(0.001);
  TrigR=0;

  while(!EchoR);                //當RX為零時等待
         TR0=1;                            //開啟計數
  while(EchoR);                        //當RX為1計數并等待
         TR0=0;                                //關閉計數
        s=((TH0*256+TL0)*0.034)/2;
        return s;

}



void main()
{
                                TMOD = 0x02;
                                ET0=0;
                                EA =1;                                                // 選擇定時器0,并且確定是工作方式1(為了超聲波模塊測量距離計時用的)
        TrigL=0;                                                                // 初始化觸發引腳為低電平
        TrigR=0;

        while(1)
        {         
        //===========Ultrasonic measurement===========
                //left
                 distL = GetDistanceL();
                //right
                 distR = GetDistanceR();                          
                        Nixie();
               
        }//end of while               

}//end of main  

51hei截圖20220314195243.png (65.76 KB, 下載次數: 43)

51hei截圖20220314195243.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产黄色电影 | 日操操 | 伊人久久综合 | 久久久久一区二区三区四区 | 欧美黄在线观看 | 欧美精品一区三区 | 亚洲三区在线观看 | 亚洲人成人一区二区在线观看 | 亚洲一区久久 | 亚洲精品专区 | 国产一区二区在线播放 | 日本成人三级电影 | 少妇淫片aaaaa毛片叫床爽 | 成人一区二 | 午夜免费视频 | 毛片久久久 | 视频在线一区二区 | 国产精品毛片一区二区三区 | 成人做爰www免费看视频网站 | 国产999精品久久久久久 | 亚洲午夜av久久乱码 | 色综合视频 | 一区二区三区四区五区在线视频 | 一区二区三区四区在线视频 | 亚洲乱码国产乱码精品精的特点 | 日本欧美黄色片 | 久久99精品国产 | 高清一区二区 | 伊人久久综合 | 国产精品1区2区 | 手机av网 | 国产a级毛片 | 不卡av电影在线播放 | 日韩高清成人 | 亚洲精品一区二区三区蜜桃久 | 国产精品久久久久无码av | 一级黄色裸片 | 欧美亚洲国产一区二区三区 | 亚洲欧美aⅴ | 国产精品观看 | 久久久久久国产精品 |