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

QQ登錄

只需一步,快速開始

搜索
查看: 1667|回復(fù): 4
收起左側(cè)

tm1637輸出一直灰色,I2C通訊監(jiān)視正常?

[復(fù)制鏈接]
ID:1084847 發(fā)表于 2023-6-22 23:50 | 顯示全部樓層 |閱讀模式
謝謝大家
回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2023-6-23 06:09 | 顯示全部樓層
TM1637驅(qū)動(dòng)共陽數(shù)碼管時(shí)鐘示例 仿真.rar (879.08 KB, 下載次數(shù): 21)


回復(fù)

使用道具 舉報(bào)

ID:213173 發(fā)表于 2023-6-23 06:18 | 顯示全部樓層
本帖最后由 wulin 于 2023-7-1 07:58 編輯

此代碼在仿真環(huán)境TM1637 的按鍵掃描功能失敗,只好另寫按鍵掃描。但用實(shí)物測(cè)試TM1637 的按鍵掃描功能正常。
回復(fù)

使用道具 舉報(bào)

ID:712097 發(fā)表于 2023-6-23 08:21 | 顯示全部樓層
把程序和電路發(fā)出來,壇友才好幫你分析。
回復(fù)

使用道具 舉報(bào)

ID:1085441 發(fā)表于 2023-6-30 20:33 | 顯示全部樓層
tm1637.c
#include        <reg51.h>          
#include        <intrins.h>
#include        "tm1637.h"

sfr     P4 = 0xc0;
sfr     P5 = 0xc8;
sbit    SDIO = P5^5;                // TM1637
sbit    SDCK = P4^4;

void        tm1637(unsigned char intensity2, unsigned char ledA1, unsigned char ledA2)
{
        tm_start();
        tm_write(0x40);        // 設(shè)置寫RAM,地址自動(dòng)+1
        tm_stop();
        _nop_();
        _nop_();
        _nop_();

        tm_start();
        tm_write(0xc0);        //        設(shè)置寫RAM地址
        tm_write(ledA1);  // write RAM
        tm_write(ledA2);  // write RAM
        tm_write(0);        // write RAM  
        tm_write(0);        // write RAM
        tm_write(0);        // write RAM  
        tm_write(0);        // write RAM
        tm_stop();
        _nop_();
        _nop_();
        _nop_();

        tm_start();
        tm_write(intensity2);        
        tm_stop();
}
void        tm_start(void)
{
        SDIO = 1;
        SDCK = 1;
        DL1uS(3);
        SDIO = 0;
        DL1uS(1);
        SDCK = 0;
}
void        tm_stop(void)
{
        SDIO = 0;
        SDCK = 0;
        DL1uS(3);
        SDCK = 1;
        DL1uS(3);
        SDIO = 1;
}
void        tm_write(unsigned char x2)
{
        unsigned char        i2;
        for(i2=0; i2<8; i2++)         
        {
                SDCK = 0;
                if((1&x2) == 0)
                { SDIO = 0; }
                else
                { SDIO = 1; }
                DL1uS(1);
                SDCK = 1;
                x2 = x2 >> 1;
        }
        SDCK = 0;
        DL1uS(1);
        while(SDIO == 1);
        DL1uS(1);
        SDCK = 1;
}
unsigned char        tm1637_key(void)
{
        unsigned char        i2,k2;
        tm_start();
        tm_write(0x42);
        SDIO = 1;
        k2 = 0;
        for(i2=0; i2<8; i2++)         
        {
                SDCK = 0;
                k2 = k2 >> 1;
                DL1uS(1);
                SDCK = 1;
                if(SDIO == 1)
                { k2 = k2 | 0x80; }
                DL1uS(1);
        }
        SDCK = 0;
        DL1uS(1);
        while(SDIO == 1);
        DL1uS(1);
        SDCK = 1;
        DL1uS(1);
        tm_stop();
        return        k2;
}

void        DL1uS(unsigned char z2)                       
{        // 1T 22.1184MHz 1uS*(z2+1)  STC8A8K tested       
        unsigned char x2,y2;
        for(x2=0; x2<z2; x2++)
        {
                for(y2=0; y2<2; y2++)
                {  }
        }
        _nop_();
}

tm1637.h
#define                _TM1637_H

void        tm1637(unsigned char intensity2, unsigned char ledA1, unsigned char ledA2);
void        tm_start(void);
void        tm_stop(void);
void        tm_write(unsigned char x2);
unsigned char        tm1637_key(void);
void        DL1uS(unsigned char z2);

這里是tm1637.c和tm1637.h文件,只用了2個(gè)數(shù)碼管,顯示和按鍵都是測(cè)試過的。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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