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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

TM1637驅(qū)動程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:917238 發(fā)表于 2021-8-14 03:40 來自觸屏版 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include //包含52單片機頭文件
#include "Delay.h"




////////////////////////////////////////////////////////////////////////////


sbit I2C_SCL = P2^1;   //定義模擬IIC總線的時鐘線
sbit I2C_SDA = P2^0;   //定義模擬IIC總線的數(shù)據(jù)線


#define TM1637_BRIGHTNESS 7 // 0 - 7


////////////////////////////////////////////////////////////////////////////


void I2C_delay()
{
    nop_();
}


void I2C_start()
{   
    I2C_SCL = 1;
    I2C_SDA = 1;


    I2C_delay();


    I2C_SDA = 0; // 時鐘線設(shè)置為常態(tài),低電平。
}


/*
I2C 總線寫1個字節(jié)


不包含應(yīng)答位的檢測
*/
void I2C_write_byte(char byte_to_write)
{
    unsigned char i;


    for(i=0; i>= 1;
    }

    return;
}


void I2C_check_ack()
{
    // I2C 檢查應(yīng)答位,實際未檢查,只發(fā)送了應(yīng)答位時鐘,認為TM1637工作正常


    I2C_SCL = 0;
    I2C_delay();//在第八個時鐘下降沿之后延時5us,開始判斷ACK 信號

    while(I2C_SDA)
    {
        ;
    }


    I2C_SCL = 1;
    I2C_delay();


    I2C_SCL=0;
}


void I2C_send_ack()
{
    I2C_SDA = 0;
    I2C_delay();


    I2C_SCL = 1;
    I2C_delay();


    I2C_SCL = 0;
    I2C_delay();


    I2C_SDA = 1;
    I2C_delay();
}


void I2C_stop()
{
    I2C_SCL = 0;
    I2C_delay();


    I2C_SDA = 0;
    I2C_delay();


    I2C_SCL = 1;
    I2C_delay();


    I2C_SDA = 1;
}


///////////////////////////////////////////////////////////////////////////
//
// TM1637模塊操作函數(shù)
//
//////////////////////////////////////////////////////////////////////////


void TM1637_write_command_byte(unsigned char command)
{
    I2C_start();
    I2C_write_byte(command);
    I2C_check_ack();
    I2C_stop();
}




// bright : 0 - 7
void TM1637_display_switch_and_bright(bit enable_display, unsigned char bright)
{
    TM1637_write_command_byte(0x80 + (enable_display ? 0x08 : 0x00) + bright);
}




void TM1637_write_display_bytes(unsigned char first_addr,
                                unsigned char bytes_to_write[],
                                unsigned char num_of_bytes)
{
    unsigned char i;


    I2C_start();
    I2C_write_byte(0x40);
    I2C_check_ack();
    I2C_stop();


    I2C_start();
    I2C_write_byte(0xC0 + first_addr);
    I2C_check_ack();


    for(i=0; i<num_of_bytes; i++)
    {
        I2C_write_byte(bytes_to_write[i]);
        I2C_check_ack();
    }


    I2C_stop();
}




// addr: 0 - 5
void TM1637_write_display_byte(unsigned char addr, unsigned char segments)
{
    I2C_start();
    I2C_write_byte(0x40 + addr);
    I2C_check_ack();
    I2C_stop();


    I2C_start();
    I2C_write_byte(0xC0 + addr);
    I2C_check_ack();


    I2C_write_byte(segments);
    I2C_check_ack();


    I2C_stop();
}




code unsigned char TM1637_SEG_TAB[] =
{
     0x3F // 00111111 0
    ,0x06 // 00000110 1
    ,0x5B // 01011011 2
    ,0x4F // 01001111 3
    ,0x66 // 01100110 4
    ,0x6d // 01101101 5
    ,0x7d // 01111101 6
    ,0x07 // 00000111 7
    ,0x7F // 01111111 8
    ,0x6F // 01101111 9
    ,0x77 // 01110111 A
    ,0x7C // 01111100 b
    ,0x39 // 00111001 C
    ,0x5E // 01011110 d
    ,0x79 // 01111001 E
    ,0x71 // 01110001 F
};


void TM1637_show_digit(unsigned char pos, unsigned char digit, bit with_dot)
{
    TM1637_write_display_byte(pos, TM1637_SEG_TAB[digit] | (with_dot ? 0x20 : 0x00));
}




void TM1637_init()
{
    unsigned char i;


    TM1637_display_switch_and_bright(1, TM1637_BRIGHTNESS);


    for(i=0; i<6; i++)
    {
        TM1637_write_display_byte(i, 0xFF);
    }


    Delay200ms();


    for(i=0; i<6; i++)
    {
        TM1637_write_display_byte(i, 0x00);
    }


    Delay200ms();


    for(i=0; i<6; i++)
    {
        TM1637_write_display_byte(i, 0xFF);
    }


    Delay200ms();


    for(i=0; i<6; i++)
    {
        TM1637_write_display_byte(i, 0x00);
    }


    Delay200ms();
}


void TM1637()
{
    unsigned char seg;
    unsigned char i, j;


    TM1637_init();


    while(1)
    {
        for(i=0; i<16; i++)
        {
            for(j=0; j<6; j++)
            {
                TM1637_show_digit(j, i, 0);
            }


            Delay1s();
        }
    }
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品一区二区三区视频播放 | 亚洲精品久久久一区二区三区 | 午夜电影一区二区 | 91久久久久久久 | 国产精品日日摸夜夜添夜夜av | 高清欧美性猛交 | 日日骑 | 神马久久春色视频 | 九九热视频这里只有精品 | 欧美日韩激情 | 国产精品18久久久久久久 | 男人的天堂久久 | 亚洲精品欧美 | 成人三级视频在线观看 | 亚洲精品一区二区三区四区高清 | 国产精品亚洲一区二区三区在线 | 亚洲国产成人精品在线 | 亚洲美女在线视频 | 欧美日韩亚洲国产综合 | 久久综合影院 | 亚洲一区二区三区观看 | 欧美在线一区二区三区 | 正在播放国产精品 | 日韩专区中文字幕 | 丝袜 亚洲 另类 欧美 综合 | 91九色porny首页最多播放 | 午夜精品一区 | 欧美日批| 熟女毛片 | 免费观看一级毛片 | 国产精品一区二区三区四区五区 | 成人精品在线观看 | 天天澡天天狠天天天做 | 喷潮网站 | 黄色骚片 | 黄色片在线免费看 | 久久久国产一区二区三区四区小说 | 亚洲国产精品一区 | 日韩视频在线播放 | 久久青 | 国产精品高清一区二区三区 |