|
最近購買了一個tm1638的集成模塊,正好手頭有STM32F103C8T6的最小系統板,拿來試試刀。
先看圖- #ifndef _TM1638_H_
- #define _TM1638_H_
- #include "stm32f10x.h"
-
- typedef enum { N = 0x00, Y = 0x80} PointState; //是否帶小數點 Y:帶,N:不帶
-
- typedef enum { OFF = 0x00, ON = 0x01} LightState; //燈開關狀態 On:開,Off:關
- //TM1638模塊相關引腳定義
- #define STB GPIO_Pin_5
- #define CLK GPIO_Pin_6
- #define DIO GPIO_Pin_7
- #define GPIO_TM1638 GPIOA
- #define GPIO_Pin_TM1638 STB|CLK|DIO
- #define RCC_TM1638 RCC_APB2Periph_GPIOA
- //引腳高低電平設置
- #define STB_0() GPIO_ResetBits(GPIO_TM1638,STB)
- #define STB_1() GPIO_SetBits(GPIO_TM1638,STB)
- #define CLK_0() GPIO_ResetBits(GPIO_TM1638,CLK)
- #define CLK_1() GPIO_SetBits(GPIO_TM1638,CLK)
- #define DIO_0() GPIO_ResetBits(GPIO_TM1638,DIO)
- #define DIO_1() GPIO_SetBits(GPIO_TM1638,DIO)
- #define DIO_Read() GPIO_ReadInputDataBit(GPIO_TM1638,DIO)
- //用戶層函數
- void TM1638_Init(void); //TM1638初始化函數
- void TM1638_Display_Num(u32 data); //顯示數字
- void TM1638_Display_SEG(unsigned int num,unsigned char seg,PointState p); //選擇數碼管顯示0-F
- void TM1638_Display_LED(unsigned int num,LightState light); //指定led亮滅
- unsigned char TM1638_ReadKey(void); //TM1638讀鍵掃數據函數
- void TM1638_SEG_Off(unsigned char num); //TM1638關閉指定數碼管函數
- void TM1638_Clear(void); //TM1638全清
- //底層函數
- void TM1638_Write_Byte(u8 byte); //TM1638單寫數據,需要在函數外對STB操作
- void TM1638_Write_Data(u8 data); //TM1638一個完整數據寫入
- void TM1638_Write_Addr_Bond(u8 addr,u8 data); //TM1638指定地址寫入數據
- unsigned char TM1638_Read(void); //TM1638讀數據函數
- void TM1638_GPIO_Init(void); //TM1638引腳初始化函數
- #endif
復制代碼
|
評分
-
查看全部評分
|