找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

TM1637 STM32F103配置

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:730478 發(fā)表于 2020-4-16 13:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "TM1637.h"

uint8_t  dpFlag = 0;//主函數(shù)有說明
unsigned char  Data[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char  DataDp[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};
struct {
        char shi;
        char ge;
}Hour;

struct {
        char shi;
        char ge;
}Min;


/*
  *@breif GPIO_INIT  
  *@note  no
*/
void SysTick_Delay_Us(unsigned int i)
{
   for(;i>0;i--);
}


void GPIO_Config(void)
{
        GPIO_InitTypeDef  GPIO_InitStructure;
       
        TM1637_RCC_Cmd(TM_DIO_CLK|TM_CLK_CLK,ENABLE);
       
        GPIO_InitStructure.GPIO_Pin = TM_DIO_PIN | TM_CLK_PIN;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//éè???aí?íìê?3?
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
       
        GPIO_Init(TM_DIO_PORT,&GPIO_InitStructure);
       
}


/*
時鐘線為高時,數(shù)據(jù)線由高變低
*/
void I2C_Start(void)
{
        CLK_1;
        DIO_1;
        SysTick_Delay_Us(140);
       
        DIO_0;
        SysTick_Delay_Us(140);
        CLK_0;
        SysTick_Delay_Us(140);
}


/*
*時鐘線為高時,數(shù)據(jù)線由低變高
*/
void I2C_stop(void)
{
       
        CLK_0;
        SysTick_Delay_Us(140);
  DIO_0;
        SysTick_Delay_Us(140);
       
  CLK_1;
        SysTick_Delay_Us(140);       
        DIO_1;
        SysTick_Delay_Us(140);         
}


   //寫一個比特位
    void TM1637_WriteBit(unsigned char mBit)
    {
             CLK_0;
             SysTick_Delay_Us(140);
       
         if(mBit)
                   DIO_1;
         else
                   DIO_0;
         
         SysTick_Delay_Us(140);
         CLK_1;
         SysTick_Delay_Us(140);       
}


//寫一個字節(jié)   
    void TM1637_WriteByte(unsigned char Byte)
    {
              char loop = 0;
              for(loop = 0;loop<8;loop++)
              {
           TM1637_WriteBit((Byte>>loop) & 0x01);//先寫低位       
              }
                    CLK_0;
                    SysTick_Delay_Us(140);
        DIO_1;       
        SysTick_Delay_Us(140);
        CLK_1;               
            SysTick_Delay_Us(140);
        while(GPIO_ReadInputDataBit(TM_DIO_PORT ,TM_DIO_PIN) == 0x01);
                    //等待應(yīng)答信號
    }

/*
*寫指令函數(shù)
*B7:B6 =01  數(shù)據(jù)命令控制
*            11地址命令控制
*            10顯示命令控制
*/

void TM1637_WriteCommand(unsigned char mData)
{
        I2C_Start();
        TM1637_WriteByte(mData);
        I2C_stop();
}


/*
*@note  寫入地址和數(shù)據(jù)
*/

void TM1637_WriteData(unsigned char addr,unsigned char mData)
{
        I2C_Start();
        TM1637_WriteByte(addr);
        TM1637_WriteByte(mData);
        I2C_stop();
}




  /*
   控制顯示,配置好數(shù)據(jù)結(jié)構(gòu)體之后,直接調(diào)用該函數(shù)就可以顯示
    */
    void Time_Display(void)
    {
            TM1637_WriteCommand(0x40);
           
            if(dpFlag)
        TM1637_WriteData(0xc1,DataDp[Hour.ge]);

            else
        TM1637_WriteData(0xc1,Data[Hour.ge]);


        TM1637_WriteData(0xc0,Data[Hour.shi]);
        TM1637_WriteData(0xc2, Data[Min.shi]);
        //TM1637_WriteData(0xc1, Data[Min.ge]);
        TM1637_WriteData(0xc3, Data[Min.ge]);
        TM1637_WriteCommand(0x8a);
     }


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

使用道具 舉報

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

本版積分規(guī)則

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

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

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