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

標題: 想實現52單片機控制兩個超聲波測距然后數碼管顯示距離(2~9)不過數碼管只有一個亮 [打印本頁]

作者: 1888888    時間: 2022-3-14 20:00
標題: 想實現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





歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产成人高清在线观看 | av香蕉 | 日韩在线不卡 | 欧美精品在欧美一区二区 | 99久久精品视频免费 | 国产一区久久精品 | 最新中文字幕在线 | 免费观看成人鲁鲁鲁鲁鲁视频 | 亚洲精品一区二区 | 亚洲免费精品 | 青青艹在线视频 | 91国产在线视频在线 | av一区二区三区四区 | 亚洲国产精品自拍 | 午夜激情在线视频 | 久久久夜 | 久久久久久免费精品一区二区三区 | 久久久国产精品视频 | 亚洲精品99999 | 精品日韩在线 | 中文字幕在线电影观看 | 天天爽一爽 | 视频1区 | 懂色av色香蕉一区二区蜜桃 | 美女久久| 一区二区免费 | 中文字幕国产视频 | 日韩av啪啪网站大全免费观看 | 懂色av一区二区三区在线播放 | 精品久久ai电影 | 国产在线精品一区二区 | a毛片视频网站 | 亚洲精品亚洲人成人网 | 亚洲视频中文字幕 | 亚洲成人一区 | av资源在线看| 亚洲高清在线 | 亚洲国产成人精品女人 | av永久| 天天躁日日躁狠狠很躁 | 欧美日韩国产综合在线 |