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

標(biāo)題: 單片機(jī)定時(shí)器求助 [打印本頁(yè)]

作者: zhy123654    時(shí)間: 2019-9-30 19:20
標(biāo)題: 單片機(jī)定時(shí)器求助
用hx711和STC8a8k單片機(jī),做一個(gè)稱(chēng)重,我并不是要做電子秤,就自己寫(xiě)了一個(gè)程序,寫(xiě)完了以后調(diào)試了一整天,但就是用不了,請(qǐng)求各位大神幫我看看,這個(gè)程序哪里問(wèn)題,這些亂碼在keil上好像是可以重新顯示出字,


#include<stc8.h>
#define u8 unsigned char
#define u16 unsigned int
         

sbit scl=P1^0;         
sbit sda=P1^1;


sbit DUAN5=P0^5;      
sbit DUAN4=P0^4;
sbit DUAN3=P0^3;
sbit DUAN2=P0^2;
sbit DUAN1=P0^1;
sbit DUAN0=P0^0;

void Init_Timer0();   
unsigned long HX711_Read(void);
void xianshi(u16 ,u16 );
void delay(u16);   
void Delay10us();

u16 flag = 0;
unsigned int ds ;
u16 di[6];


void main(void)
{
        
        delay(300);
        Init_Timer0();
        
        while(1)
        {
                if(flag==500)
                {
                        ds = (unsigned int)((float)HX711_Read()/445);
                        flag=0;
                }        
        /**¡¡2e·ÖóÃóúêyÂë1üÏÔê¾**/
               
                di[5]=ds/100000;
                di[4]=ds/10000%10;
                di[3]=ds/1000%10;
                di[2]=ds/100%10;
                di[1]=ds/10%10;
                di[0]=ds%10;

               
                xianshi(di[5] ,5 );
                delay(2);
                xianshi(di[4] ,4 );
                delay(2);
                xianshi(di[3] ,3 );
                delay(2);
                xianshi(di[2] ,2 );
                delay(2);
                xianshi(di[1] ,1 );
                delay(2);
                xianshi(di[0] ,0 );
                delay(2);

               

               
        }               

}

void Init_Timer0()
{
        AUXR |= 0x80;               
        TMOD &= 0xF0;               
        TMOD |= 0x01;               
        TL0 = 0xcd;                //1ms        
        TH0 = 0xd4;
        TF0 = 0;
        ET0 = 1;                           
        EA = 1;        
        TR0 = 1;
}

void Timer0() interrupt 1
{

        TL0 = 0xcd;               
        TH0 = 0xd4;
        flag++;

}

unsigned long HX711_Read(void)   
{
        unsigned long count;
        unsigned char i;
          sda=1;
        Delay10us();
          scl=0;
          count=0;
        EA = 1;
          while(sda);
        EA = 0;
          for(i=0;i<24;i++)
        {
                  scl=1;
                  count=count<<1;
                scl=0;
                  if(sda)
                        count++;
        }
         scl=1;
    count=count^0x800000;//μú25¸öÂö3åϽμÑØà′ê±£¬×a»»êy¾Y
        Delay10us();
        scl=0;  
        return(count);
}

void Delay10us()               
{
        unsigned char i;

        
        i = 25;
        while (--i);
}

void delay(u16 a)
{
        u16 i, j;

        
        for(i=0;i<a;i++)
                {
                        for(j=1000;j>0;j--);
                }
}

void xianshi(u16 dat,u16 duan)
{
               
                DUAN0=1;
                DUAN5=1;
                DUAN4=1;
                DUAN3=1;
                DUAN2=1;
                DUAN1=1;
               
         switch (duan)
                {
                        case 0:
                                        DUAN0=0;
                                        P2=dat;
                                        break;
                        case 1:
                                        DUAN1=0;
                                        P2=dat;
                                        break;
                        case 2:
                                        DUAN2=0;
                                        P2=dat;
                                        break;
                        case 3:
                                        DUAN3=0;
                                        P2=dat;
                                        break;
                        case 4:
                                        DUAN4=0;
                                        P2=dat;
                                        break;
                        case 5:
                                        DUAN5=0;
                                        P2=dat;
                                        break;
                }

}


作者: wulin    時(shí)間: 2019-9-30 19:20
不是定時(shí)器出了問(wèn)題,而是中斷出來(lái)問(wèn)題。樓主在HX711_Read(void)程序中只短暫打開(kāi)總中斷,T0中斷怎么能正常工作?
        EA = 1;
        while(sda);
        EA = 0;

樓主用的什么顯示器?看程序像是用的數(shù)碼管。難道這個(gè)數(shù)碼管自帶譯碼器?常見(jiàn)的數(shù)碼管是不能直接顯示0~9的數(shù)字,而是要譯成“8”字段碼顯示。
作者: yzwzfyz    時(shí)間: 2019-10-1 16:32
不知道你想求助什么?說(shuō)是定時(shí)器,是定時(shí)器的什么呢?建議先看書(shū)中關(guān)于定時(shí)器的章節(jié)。
作者: zhy123654    時(shí)間: 2019-10-2 08:31
yzwzfyz 發(fā)表于 2019-10-1 16:32
不知道你想求助什么?說(shuō)是定時(shí)器,是定時(shí)器的什么呢?建議先看書(shū)中關(guān)于定時(shí)器的章節(jié)。

我這個(gè)是用cd4511驅(qū)動(dòng)的數(shù)碼管。如果在主函數(shù)里面直接計(jì)算重量的話。數(shù)碼管會(huì)閃爍的非常厲害,顯示不出字來(lái)。如果用定時(shí)器中斷來(lái)控制重量計(jì)算的時(shí)間,開(kāi)機(jī)后數(shù)碼管上只顯示一次數(shù)字,然后這個(gè)數(shù)字就固定住,不會(huì)再變了。改變重量也不變。
作者: zhy123654    時(shí)間: 2019-10-2 09:33
wulin 發(fā)表于 2019-10-2 07:17
不是定時(shí)器出了問(wèn)題,而是中斷出來(lái)問(wèn)題。樓主在HX711_Read(void)程序中只短暫打開(kāi)總中斷,T0中斷怎么能正常 ...

謝謝指教,我回去查一下看看。我是用cd4511驅(qū)動(dòng)的數(shù)碼管,我在主函數(shù)里面計(jì)算重量的時(shí)候呢,數(shù)碼管閃爍的非常厲害。就最后一位會(huì)亮。如果我用中斷計(jì)時(shí)來(lái)計(jì)算重量。數(shù)碼管可以全亮,但是數(shù)值沒(méi)有變化了。傳感器上面放不放東西都一樣。
作者: zhy123654    時(shí)間: 2019-10-4 17:32
wulin 發(fā)表于 2019-9-30 19:20
不是定時(shí)器出了問(wèn)題,而是中斷出來(lái)問(wèn)題。樓主在HX711_Read(void)程序中只短暫打開(kāi)總中斷,T0中斷怎么能正常 ...

謝謝大神,果然,按照您說(shuō)的問(wèn)題解決,




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1