tossa on hahmotelmaa omsasta kirjastosta.
[code]/*
- disp_7seg.c
-
- Created on: 19.4.2012
-
Author: Limba
*/
#include <msp430.h>
#include <stdbool.h>
// Pin Configuration
#define Disp_P1_seg_a 0x01
#define Disp_P1_seg_b 0x02
#define Disp_P1_seg_c 0x04
#define Disp_P1_seg_d 0x08
#define Disp_P1_seg_e 0x10
#define Disp_P1_seg_f 0x00
#define Disp_P1_seg_g 0x00
#define Disp_P1_seg_dp 0x00
#define Disp_P2_seg_a 0x00
#define Disp_P2_seg_b 0x00
#define Disp_P2_seg_c 0x00
#define Disp_P2_seg_d 0x00
#define Disp_P2_seg_e 0x01
#define Disp_P2_seg_f 0x02
#define Disp_P2_seg_g 0x00
#define Disp_P2_seg_dp 0x00
#define Disp_P1_Act_1 0x20
#define Disp_P1_Act_2 0x40
#define Disp_P1_Act_3 0x00
#define Disp_P1_Act_4 0x00
#define Disp_P2_Act_1 0x00
#define Disp_P2_Act_2 0x00
#define Disp_P2_Act_3 0x04
#define Disp_P2_Act_4 0x08
// a
// f b
// g
// e c
// d
char disp_7seg_char_P1[10] = {
Disp_P1_seg_a | Disp_P1_seg_b | Disp_P1_seg_c | Disp_P1_seg_d | Disp_P1_seg_e | Disp_P1_seg_f, // 0
Disp_P1_seg_b | Disp_P1_seg_c, // 1
Disp_P1_seg_a | Disp_P1_seg_c | Disp_P1_seg_d | Disp_P1_seg_f | Disp_P1_seg_g, // 2
Disp_P1_seg_a | Disp_P1_seg_b | Disp_P1_seg_c | Disp_P1_seg_d | Disp_P1_seg_g, // 3
Disp_P1_seg_b | Disp_P1_seg_c | Disp_P1_seg_e | Disp_P1_seg_f, // 4
Disp_P1_seg_a | Disp_P1_seg_b | Disp_P1_seg_d | Disp_P1_seg_e | Disp_P1_seg_g, // 5
Disp_P1_seg_a | Disp_P1_seg_c | Disp_P1_seg_d | Disp_P1_seg_e | Disp_P1_seg_f | Disp_P1_seg_g, // 6
Disp_P1_seg_a | Disp_P1_seg_b | Disp_P1_seg_c, // 7
Disp_P1_seg_a | Disp_P1_seg_b | Disp_P1_seg_c | Disp_P1_seg_d | Disp_P1_seg_e | Disp_P1_seg_f | Disp_P1_seg_g, // 8
Disp_P1_seg_a | Disp_P1_seg_b | Disp_P1_seg_c | Disp_P1_seg_d | Disp_P1_seg_f | Disp_P1_seg_g}; // 9
char disp_7seg_char_P2[10] = {
Disp_P2_seg_a | Disp_P2_seg_b | Disp_P2_seg_c | Disp_P2_seg_d | Disp_P2_seg_e | Disp_P2_seg_f, // 0
Disp_P2_seg_b | Disp_P2_seg_c, // 1
Disp_P2_seg_a | Disp_P2_seg_c | Disp_P2_seg_d | Disp_P2_seg_f | Disp_P2_seg_g, // 2
Disp_P2_seg_a | Disp_P2_seg_b | Disp_P2_seg_c | Disp_P2_seg_d | Disp_P2_seg_g, // 3
Disp_P2_seg_b | Disp_P2_seg_c | Disp_P2_seg_e | Disp_P2_seg_f, // 4
Disp_P2_seg_a | Disp_P2_seg_b | Disp_P2_seg_d | Disp_P2_seg_e | Disp_P2_seg_g, // 5
Disp_P2_seg_a | Disp_P2_seg_c | Disp_P2_seg_d | Disp_P2_seg_e | Disp_P2_seg_f | Disp_P2_seg_g, // 6
Disp_P2_seg_a | Disp_P2_seg_b | Disp_P2_seg_c, // 7
Disp_P2_seg_a | Disp_P2_seg_b | Disp_P2_seg_c | Disp_P2_seg_d | Disp_P2_seg_e | Disp_P2_seg_f | Disp_P2_seg_g, // 8
Disp_P2_seg_a | Disp_P2_seg_b | Disp_P2_seg_c | Disp_P2_seg_d | Disp_P2_seg_f | Disp_P2_seg_g}; // 9
int disp_curr_disp;
// Clear Display a…g + en1…4
char disp_DisableDisplay[2] = {
Disp_P1_seg_a | Disp_P1_seg_b | Disp_P1_seg_c | Disp_P1_seg_d | Disp_P1_seg_e | Disp_P1_seg_f | Disp_P1_seg_g | Disp_P1_seg_dp,
Disp_P2_seg_a | Disp_P2_seg_b | Disp_P2_seg_c | Disp_P2_seg_d | Disp_P2_seg_e | Disp_P2_seg_f | Disp_P2_seg_g | Disp_P2_seg_dp};
// En1…4
char disp_ActiveDisplay_P1[4] = {Disp_P1_Act_1, Disp_P1_Act_2, Disp_P1_Act_3, Disp_P1_Act_4};
char disp_ActiveDisplay_P2[4] = {Disp_P2_Act_1, Disp_P2_Act_2, Disp_P2_Act_3, Disp_P2_Act_4};
// Displaydata char 1…4 (9999)
char disp_Data[4] = {0,0,0,0};
// Init
int disp_7seg_init()
{
disp_curr_disp = 0;
return 0;
}
// Print Integer
void disp_7seg_disp_int(int val)
{
int new_value;
int a;
for(a = 0; a<4; a++)
{
disp_Data[3-a] = new_value % 10;
new_value /= 10;
}
}
// Print Integer
void disp_7seg_disp_hex(int val)
{
int new_value;
int a;
for(a = 0; a<4; a++)
{
disp_Data[3-a] = new_value % 16;
new_value /= 16;
}
}
// Timer interrupt for multiplexing
void disp_int_atim()
{
// print curr disp
int value;
P1OUT &= ~disp_DisableDisplay[0];
P2OUT &= ~disp_DisableDisplay[1];
value = disp_Data[disp_curr_disp];
P1OUT |= disp_7seg_char_P1[value];
P2OUT |= disp_7seg_char_P2[value];
P1OUT |= disp_ActiveDisplay_P1[disp_curr_disp];
P2OUT |= disp_ActiveDisplay_P2[disp_curr_disp];
disp_curr_disp++;
if(disp_curr_disp >= 4)
{
disp_curr_disp = 0;
}
}
[/code]