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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機定時器求助

[復制鏈接]
跳轉到指定樓層
樓主
ID:437615 發表于 2019-9-30 19:20 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
50黑幣
用hx711和STC8a8k單片機,做一個稱重,我并不是要做電子秤,就自己寫了一個程序,寫完了以后調試了一整天,但就是用不了,請求各位大神幫我看看,這個程序哪里問題,這些亂碼在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;
                }

}

最佳答案

查看完整內容

不是定時器出了問題,而是中斷出來問題。樓主在HX711_Read(void)程序中只短暫打開總中斷,T0中斷怎么能正常工作? EA = 1; while(sda); EA = 0; 樓主用的什么顯示器?看程序像是用的數碼管。難道這個數碼管自帶譯碼器?常見的數碼管是不能直接顯示0~9的數字,而是要譯成“8”字段碼顯示。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2019-9-30 19:20 | 只看該作者
不是定時器出了問題,而是中斷出來問題。樓主在HX711_Read(void)程序中只短暫打開總中斷,T0中斷怎么能正常工作?
        EA = 1;
        while(sda);
        EA = 0;

樓主用的什么顯示器?看程序像是用的數碼管。難道這個數碼管自帶譯碼器?常見的數碼管是不能直接顯示0~9的數字,而是要譯成“8”字段碼顯示。
回復

使用道具 舉報

板凳
ID:123289 發表于 2019-10-1 16:32 | 只看該作者
不知道你想求助什么?說是定時器,是定時器的什么呢?建議先看書中關于定時器的章節。
回復

使用道具 舉報

地板
ID:437615 發表于 2019-10-2 08:31 來自觸屏版 | 只看該作者
yzwzfyz 發表于 2019-10-1 16:32
不知道你想求助什么?說是定時器,是定時器的什么呢?建議先看書中關于定時器的章節。

我這個是用cd4511驅動的數碼管。如果在主函數里面直接計算重量的話。數碼管會閃爍的非常厲害,顯示不出字來。如果用定時器中斷來控制重量計算的時間,開機后數碼管上只顯示一次數字,然后這個數字就固定住,不會再變了。改變重量也不變。
回復

使用道具 舉報

5#
ID:437615 發表于 2019-10-2 09:33 來自觸屏版 | 只看該作者
wulin 發表于 2019-10-2 07:17
不是定時器出了問題,而是中斷出來問題。樓主在HX711_Read(void)程序中只短暫打開總中斷,T0中斷怎么能正常 ...

謝謝指教,我回去查一下看看。我是用cd4511驅動的數碼管,我在主函數里面計算重量的時候呢,數碼管閃爍的非常厲害。就最后一位會亮。如果我用中斷計時來計算重量。數碼管可以全亮,但是數值沒有變化了。傳感器上面放不放東西都一樣。
回復

使用道具 舉報

6#
ID:437615 發表于 2019-10-4 17:32 | 只看該作者
wulin 發表于 2019-9-30 19:20
不是定時器出了問題,而是中斷出來問題。樓主在HX711_Read(void)程序中只短暫打開總中斷,T0中斷怎么能正常 ...

謝謝大神,果然,按照您說的問題解決,
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区成人 | 天天色av| 日韩色在线 | 亚洲精品久久久蜜桃网站 | 在线中文字幕视频 | 成人一区二区三区在线观看 | 性一交一乱一透一a级 | 久久精品久久综合 | www日本在线观看 | 欧美黑人国产人伦爽爽爽 | 亚洲成人av | 亚洲国产一区在线 | 精品中文在线 | 午夜精品三区 | 一区二区三区视频在线免费观看 | 国内精品视频免费观看 | 国产高清视频在线观看 | 精品久久香蕉国产线看观看亚洲 | 福利国产| 日日噜 | 欧美一区二区三区在线观看视频 | 欧美大片黄 | 男人的天堂久久 | 韩国主播午夜大尺度福利 | 在线小视频 | 欧美成人一区二区三区 | 亚洲精品久久久一区二区三区 | 久久久91精品国产一区二区三区 | 国产成人啪免费观看软件 | 一区二区中文 | 精品一区二区在线观看 | 日韩精品一区二区三区在线观看 | 成年女人免费v片 | 亚洲综合久久精品 | 国产精品黄视频 | 久久精品一区二区 | 桃花av在线 | 色婷婷九月 | 久草中文在线 | 精品国产免费人成在线观看 | 69精品久久久久久 |