This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:examples:display:segment_display [2015/11/05 11:09] – heikopikner | en:examples:display:segment_display [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ~~PB~~ | + | < |
| ====== 7-segment LED display ====== | ====== 7-segment LED display ====== | ||
| - | //Necessary knowledge: [HW] [[en: | + | //Necessary knowledge: |
| + | [HW] [[en: | ||
| + | [LIB] [[en: | ||
| + | [PRT] [[en: | ||
| ===== Theory ===== | ===== Theory ===== | ||
| Line 28: | Line 31: | ||
| <code c> | <code c> | ||
| - | // Marking card. | + | // Marking card |
| - | // The bits are marking the segments. Lower ranking is A, higher ranking is DP. | + | // The bits are marking the segments. Lower ranking is A, higher ranking is DP |
| const unsigned char __attribute__ ((weak)) segment_char_map[11] = | const unsigned char __attribute__ ((weak)) segment_char_map[11] = | ||
| { | { | ||
| Line 45: | Line 48: | ||
| }; | }; | ||
| - | // Start-up of the 7-segment indicator. | + | // Start-up of the 7-segment indicator |
| void segment_display_init(void) | void segment_display_init(void) | ||
| { | { | ||
| Line 54: | Line 57: | ||
| } | } | ||
| - | // Displaying number on the 7-segment indicator. | + | // Displaying number on the 7-segment indicator |
| void segment_display_write(unsigned char digit) | void segment_display_write(unsigned char digit) | ||
| { | { | ||
| Line 66: | Line 69: | ||
| } | } | ||
| - | // Number as the card of the segments. | + | // Number as the card of the segments |
| map = segment_char_map[digit]; | map = segment_char_map[digit]; | ||
| Line 72: | Line 75: | ||
| pin_clear(segment_display_latch); | pin_clear(segment_display_latch); | ||
| - | // Sending he bits. Higher ranking goes first. | + | // Sending he bits. Higher ranking goes first |
| for (i = 7; i >= 0; i--) | for (i = 7; i >= 0; i--) | ||
| { | { | ||
| - | // Setting the pin according to the value of the bit of the card. | + | // Setting the pin according to the value of the bit of the card |
| pin_set_to(segment_display_data_out, | pin_set_to(segment_display_data_out, | ||
| - | // The clock-signal as high for a moment. | + | // The clock-signal as high for a moment |
| pin_set(segment_display_clock); | pin_set(segment_display_clock); | ||
| _delay_us(1); | _delay_us(1); | ||
| - | // The clock-signal as low. | + | // The clock-signal as low |
| pin_clear(segment_display_clock); | pin_clear(segment_display_clock); | ||
| _delay_us(1); | _delay_us(1); | ||
| } | } | ||
| - | // Latch-signal on. | + | // Latch-signal on |
| pin_set(segment_display_latch); | pin_set(segment_display_latch); | ||
| } | } | ||
| </ | </ | ||
| - | For displaying numbers and the letter “E”, is created a " | + | For displaying numbers and the letter “E”, is created a " |
| - | The following is a more concrete example of a program for using the number-indicator. | + | The following is a more concrete example of a program for using the number-indicator. |
| <code c> | <code c> | ||
| - | // | ||
| // The example program of the 7-segment LED indicator of the HomeLab' | // The example program of the 7-segment LED indicator of the HomeLab' | ||
| - | // input-output module. | ||
| - | // | ||
| #include < | #include < | ||
| #include < | #include < | ||
| - | // | + | // Main program |
| - | // Main program. | + | |
| - | // | + | |
| int main(void) | int main(void) | ||
| { | { | ||
| int counter = 0; | int counter = 0; | ||
| - | // Set-up of the 7-segment indicator. | + | // Set-up of the 7-segment indicator |
| segment_display_init(); | segment_display_init(); | ||
| - | // Endless loop. | + | // Endless loop |
| while (true) | while (true) | ||
| { | { | ||
| - | // Displaying the values of the counter. | + | // Displaying the values of the counter |
| - | segment_display_write(counter); | + | segment_display_write(counter |
| // Counting up to 10 | // Counting up to 10 | ||
| counter++; | counter++; | ||
| - | if (counter> | + | if (counter> |
| - | // Delay for 1 second. | + | // Delay for 1 second |
| sw_delay_ms(1000); | sw_delay_ms(1000); | ||
| } | } | ||
| } | } | ||
| </ | </ | ||