Wer bei Ebay (oder wo auch immer) eine externe IO-Platine mit dem TM1638-Chip gekauft hat, kann diese Library benutzen.
Auf der Platine sind (neben dem Controller) :
8x 7Segment-Anzeige
8x rote LEDs
8x Buttons
Der Controller wird über SPI (im Half-Duplex-Mode) angesteuert, aus dem Grund wird die LoLevel-Library (STM32_SPI_HD) benötigt. Im Beispiel habe ich SPI2 benutzt.
Die Funktionen sollten eigentlich selbsterklärend sein. Im Notfall im Quellcode die Kommentare lesen.
Beispielbild :
Benutzte Pins :
1 2 3 | SCK an PB13 DIO an PB15 ChipSelect an PB12 |
Voraussetzungen :
1 2 | Benutzte Module der CooCox-IDE : GPIO Benutzte Librarys : STM32_UB_SPI2_HD |
Funktionen :
1 2 3 4 5 6 7 8 9 10 | ErrorStatus UB_TM1638_Init(void); // init vom TM1638 void UB_TM1638_Display_Off(void); // Display ausschalten void UB_TM1638_Display_On(uint8_t pwm); // Display einschalten (mit Helligkeit) void UB_TM1638_LED_On(uint8_t led_nr); // um eine einzelne LED einzuschalten void UB_TM1638_LED_Off(uint8_t led_nr); // um eine einzelne LED auszuschalten void UB_TM1638_LED_Value(uint8_t wert); // um eine 8bit-Zahl an den LEDs auszugeben void UB_TM1638_7Seg_Ziffer(uint8_t segment_nr, uint8_t ziffer); // um eine einzelne 7Segment anzusteuern void UB_TM1638_7Seg_Dec(uint32_t wert); // eine Dezimalzahl an den 7Segment ausgeben void UB_TM1638_7Seg_Hex(uint32_t wert); // eine Hex-Zahl an den 7Segment ausgeben uint8_t UB_MT1638_Get_Key(void); // um alle 8Buttons einzulesen |
Beispiel :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | //-------------------------------------------------------------- // File : main.c // Datum : 01.01.2013 // Version : 1.0 // Autor : UB // EMail : mc-4u(@)t-online.de // Web : www.mikrocontroller-4u.de // CPU : STM32F4 // IDE : CooCox CoIDE 1.7.4 // GCC : 4.7 2012q4 // Module : CMSIS_BOOT, M4_CMSIS_CORE // Funktion : Demo der TM1638-Library // Hinweis : Diese zwei Files muessen auf 8MHz stehen // "cmsis_boot/stm32f4xx.h" // "cmsis_boot/system_stm32f4xx.c" //-------------------------------------------------------------- #include "main.h" #include "stm32_ub_tm1638.h" int main(void) { uint8_t wert; SystemInit(); // Quarz Einstellungen aktivieren // init vom TM1638 UB_TM1638_Init(); // Display einschalten (niedrigste Helligkeit) UB_TM1638_Display_On(0); // 8Stellige Hex-Zahl anzeigen UB_TM1638_7Seg_Hex(0x1234ABCD); while(1) { // status der 8Tasten abfragen wert=UB_MT1638_Get_Key(); // an den 8LEDs ausgeben UB_TM1638_LED_Value(wert); } } |
Hier die Library zum Download :
Hier der komplette CooCox-Projektordner zum Download :
Hi Uwe,
tolle Umsetzung!
Das LED KEY Modul gibt’s zur Zeit bei eBay für 7,29 €:
Auf Ebay.com noch 2 € günstiger
wow das war mal schnell, am 17.Okt. bestellt und heute in der Post
Hallo ,
Ich habe diese Modul zeit heute morgen aber mit der stm429 Discovery ist der
SPI2 nicht frei
Als ich sehen der SPI4 wurde ok aber deine neues library ist für full duplex Mode und
die alter SPI für stm407 was für half-Duplex Mode
Ist hier möglich das einfach zu benutzen mit deine neues SPI library ?
MFG.
Fabrice.
Erledigt
Ich sende dir der spi4_hd und tm1638 lib für stm429 via gmail.
MFG.
Fabrice.
Danke, gesehen und upgedated.