From 75a61c57fb0402f777bfa828dd71818a97ed54a4 Mon Sep 17 00:00:00 2001 From: David Lamparter Date: Sun, 1 Apr 2012 00:20:25 +0200 Subject: original dcf77 C code --- max7219.c | 133 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 max7219.c (limited to 'max7219.c') diff --git a/max7219.c b/max7219.c new file mode 100644 index 0000000..a1e0da3 --- /dev/null +++ b/max7219.c @@ -0,0 +1,133 @@ +/************************************************************************/ +/* */ +/* 7 Segment Driver MAX7219 */ +/* Common Anode Display */ +/* */ +/* Author: Peter Dannegger */ +/* danni@specs.de */ +/* */ +/************************************************************************/ + +#include "main.h" +#include "max7219.h" + +u8 brightness = 5; + +u8 code digits[] = { DIGITS }; + +u8 displaymem[8] = { CHAR_SPACE, // 8 digits, msb first + CHAR_SPACE, + CHAR_SPACE, + CHAR_SPACE, + CHAR_SPACE, + CHAR_SPACE, + CHAR_SPACE, + CHAR_SPACE }; + +u8 code charset[] = { // Definition Character Set + _A+_B+_C+_D+_E+_F , // CHAR_0 + _B+_C , // CHAR_1 + _A+_B+ _D+_E+ _G, // CHAR_2 + _A+_B+_C+_D+ _G, // CHAR_3 + _B+_C+ _F+_G, // CHAR_4 + _A+ _C+_D+ _F+_G, // CHAR_5 + _A+ _C+_D+_E+_F+_G, // CHAR_6 + _A+_B+_C , // CHAR_7 + _A+_B+_C+_D+_E+_F+_G, // CHAR_8 + _A+_B+_C+_D +_F+_G, // CHAR_9 + _A+_B+_C+ _E+_F+_G, // CHAR_A + _C+_D+_E+_F+_G, // CHAR_b + _D+_E+ _G, // CHAR_c ;'c' + _B+_C+_D+_E+ _G, // CHAR_d + _A+ _D+_E+_F+_G, // CHAR_E + _A+ _E+_F+_G, // CHAR_F + 0 , // 16 = SPACE + _G, // 17 = MINUS + _A+_B+ _F+_G, // 18 = GRAD + _A+ _D+_E+_F , // 19 = CHAR_C2 ;'C' + _E+ _G, // 20 = CHAR_r + _C+_D+_E+ _G, // 21 = CHAR_o + _B+_C+ _E+_F+_G, // 22 = H + _D+_E+_F , // 23 = L + _D , // 24 = _ + _A , // 25 = upper "-" + _A+_B+ _E+_F+_G, // CHAR_P + _B+_C+_D+_E+_F , // CHAR_U + _A+_B+_C+ _E+_F // CHAR_M + }; + + +void display_write( u16 dc ) +{ + u8 i; + + MAX7219_DDR |= 1<>= 1; // next segment + dptr++; + } + display_write( byte + i * 256); // output same segments + } +} + + +void display_clear( void ) +{ + u8 i; + + for( i = 8; i; i--) + displaymem[i-1] = CHAR_SPACE; +} + + +void display_init( void ) +{ + display_write( 0xF00 ); // Testmode off + display_write( 0x900 ); // Decode off + display_write( 0xB07 ); // 8 Digits + display_write( 0xC01 ); // Display on + display_write( 0xA00 | brightness ); // Brightness +} + + +void display_off( void ) +{ + display_write( 0xC00 ); +} -- cgit v1.2.1