欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 2094|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

stc12c5a16s2單片機(jī)超聲波測(cè)距數(shù)碼管顯示 數(shù)碼管沒有變化

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:834927 發(fā)表于 2020-10-28 22:20 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
單片機(jī)是STC12C5A16S2
HC-SR04 超聲波測(cè)距模塊實(shí)現(xiàn)數(shù)碼管顯示 , 但是數(shù)碼管只顯示0000沒有數(shù)顯示  ,我感覺可能是模塊根本就沒啟動(dòng),  不知道程序哪里出了問題,新人小白希望各位大佬能夠幫幫忙

單片機(jī)源程序如下:
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>

#define w P2
#define d P0

typedef unsigned char uchar;
typedef unsigned int uint;

char code smg[10] = {0x28,0xeb,0x32,0xa2,0xe1,0xa4,0x24,0xea,0x20,0xa0};
//char code weixuan[4] = {0x7f,0xbf,0xdf,0xef};

uint a2,a1;
uint distance;
uchar ge;
uchar shi;
uchar bai;
uchar qian;
uchar time;

sbit Trig = P2^0;
sbit Echo = P2^1;
sbit w1 = P2^7;
sbit w2 = P2^6;
sbit w3 = P2^5;
sbit w4 = P2^4;
bit flag = 0;

void display();
void read();
void count();
void Init();

void delay(uchar p)
{
        while(p--);
}

void delay20us()
{
        uchar i;

        _nop_();
        _nop_();
        _nop_();
        i = 52;
        while (--i);
}



void display()
{
//         w = weixuan[3];
         w1 = 1; w2 = 1; w3 = 1; w4 = 0;
   d = smg[ge];
   delay(100);
//         w = weixuan[2];
         w1 = 1; w2 = 1; w3 = 0; w4 = 1;
         d = smg[shi];
         delay(100);
//         w = weixuan[1];
         w1 = 1; w2 = 0; w3 = 1; w4 = 1;
         d = smg[bai];
         delay(100);
//         w = weixuan[0];
         w1 = 0; w2 = 1; w3 = 1; w4 = 1;
         d = smg[qian];
         delay(100);
         w1 = 0;w2 = 0;w3 = 0;w4 = 0;
}

void Init_timer0()
{
        TMOD = 0x01;
        TH0 = 0;
        TL0 = 0;
//        TH1 = 0xf8;
//        TL1 = 0x30;
//        ET1 = 1;
        ET0 = 1;
        TR0 = 1;
//        TR1 = 1;
        EA = 1;
}
        
void count()
{
        uchar a;
        
        time = TH0*256+TL0;
        TH0 = 0;
        TR0 = 0;
        distance = (time*0.17)/100;
        
        if(distance <= 300 && flag == 1)
        {
         flag = 0;
         a = distance;
   ge = a%1000%100%10;  
   shi = a%1000%100/10;   
   bai = a%1000/100;   
   qian = a/1000;
               
        }
        else
        {
                distance = 0000;
        }
}

void main()
{
        Trig = 0;
        Echo = 0;
        Init_timer0();
  display();

        
        while(1)
        {
                Trig = 1;
                delay20us();
                Trig = 0;
                if(Echo == 0)
                {
                        TR0 = 1;
                }
                if(Echo == 1)
                {
                        TR0 = 0;
                }

         count();
        }
}

void Timer0() interrupt 1
{
        flag = 1;
}

//void Timer1() interrupt 3                 //T1中斷用來掃描數(shù)碼管和計(jì)800MS啟動(dòng)模塊
//  {
//         TH1 = 0xf8;
//         TL1 = 0x30;
//         a2++;
//                     display();
//         if(a2 >= 400)
//         {
//          a2 = 0;
//          Trig = 1;                                          //800MS  啟動(dòng)一次模塊
//                                        delay20us();
//                                        Trig = 0;
//         }
//  }

不管是開始用的定時(shí)器還是后來放到主函數(shù)里用延時(shí)都是這樣 。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:654028 發(fā)表于 2020-10-29 09:02 | 只看該作者
你數(shù)碼管顯示函數(shù)除了開始調(diào)用過一次,那次調(diào)用的時(shí)候ge,shi,bai,qian值全是0,然后while里面雖然調(diào)用了count來給ge,shi,bai,qian賦值,但是你沒再調(diào)用顯示函數(shù),有啥用。
至于你說放在定時(shí)器里面也沒用,我看你注釋的那個(gè)函數(shù),你在里面只有數(shù)碼管顯示函數(shù),但是我不知道你在哪給ge,shi,bai,qian賦值。如果沒有調(diào)用count函數(shù)賦值的話也只顯示0
回復(fù)

使用道具 舉報(bào)

板凳
ID:626055 發(fā)表于 2020-10-29 10:48 | 只看該作者
樓上正解,main()函數(shù)和中斷中沒有調(diào)用顯示的函數(shù)。。。
回復(fù)

使用道具 舉報(bào)

地板
ID:834927 發(fā)表于 2020-10-29 19:26 | 只看該作者
不行啊  我根據(jù)二樓說的 把display顯示函數(shù)在主函數(shù)中while循環(huán)中調(diào)用的count函數(shù)后面中調(diào)用了,還是顯示4個(gè)0.用定時(shí)器在定時(shí)器中也調(diào)用了count計(jì)算函數(shù) 給ge,shi,bai,qian賦值  也是顯示0000
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表