Add the 74HC595 Snake game project

This commit is contained in:
2026-06-12 12:40:08 -04:00
parent 200156c432
commit f0561b449a
26 changed files with 1009 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
#ifndef _7SEGMENT_H_
#define _7SEGMENT_H_
#define SEG_A 1
#define SEG_B 1 << 1
#define SEG_C 1 << 2
#define SEG_D 1 << 3
#define SEG_E 1 << 4
#define SEG_F 1 << 5
#define SEG_G 1 << 6
#define SEG_DP 1 << 7
// 3, 5, A, F don't properly handle segment D (bottom). Not sure why.
// Other digits that include the bottom segment (like 2, 0, 8) and that don't include it
// (like 7, 9, 4) work fine.
#define CHAR_7SEG_0 (uint8_t) ~( SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F)
#define CHAR_7SEG_1 (uint8_t) ~( SEG_B | SEG_C)
#define CHAR_7SEG_2 (uint8_t) ~( SEG_A | SEG_B | SEG_G | SEG_E | SEG_D)
#define CHAR_7SEG_3 (uint8_t) ~( SEG_A | SEG_B | SEG_C | SEG_D | SEG_G )
#define CHAR_7SEG_4 (uint8_t) ~( SEG_F | SEG_G | SEG_B | SEG_C)
#define CHAR_7SEG_5 (uint8_t) ~( SEG_A | SEG_F | SEG_G | SEG_C | SEG_D)
#define CHAR_7SEG_6 (uint8_t) ~( SEG_A | SEG_F | SEG_E | SEG_D | SEG_C | SEG_G)
#define CHAR_7SEG_7 (uint8_t) ~( SEG_A | SEG_B | SEG_C)
#define CHAR_7SEG_8 (uint8_t) ~( SEG_A | SEG_B | SEG_C | SEG_D | SEG_E | SEG_F | SEG_G)
#define CHAR_7SEG_9 (uint8_t) ~( SEG_A | SEG_B | SEG_C | SEG_F | SEG_G)
#define CHAR_7SEG_A (uint8_t) ~( SEG_A | SEG_B | SEG_C | SEG_E | SEG_F | SEG_G)
#define CHAR_7SEG_B (uint8_t) ~( SEG_C | SEG_D | SEG_E | SEG_F | SEG_G)
#define CHAR_7SEG_C (uint8_t) ~( SEG_A | SEG_D | SEG_E | SEG_F)
#define CHAR_7SEG_D (uint8_t) ~( SEG_C | SEG_D | SEG_E | SEG_B | SEG_G)
#define CHAR_7SEG_E (uint8_t) ~( SEG_A | SEG_D | SEG_E | SEG_F | SEG_G)
#define CHAR_7SEG_F (uint8_t) ~( SEG_A | SEG_E | SEG_F | SEG_G)
#define CHAR_7SEG_L (uint8_t) ~( SEG_D | SEG_E | SEG_F)
#define CHAR_7SEG_DP (uint8_t) ~SEG_DP
#define CHAR_7SEG_OFF 0xFF
#define PIN_7SEGMENT_DIGIT1 7
#define PIN_7SEGMENT_DIGIT2 6
#define PIN_7SEGMENT_DIGIT3 5
#define PIN_7SEGMENT_DIGIT4 4
int init7Segment(void);
void test7Segment(void);
int select7SegDisplay(uint8_t num);
#endif // _7SEGMENT_H_