7 segment 에 0~FFFF 표시 카테고리 없음2019. 11. 26. 15:06
/**************************************
7 segment 에 0~FFFF(16진수로 표시)카운터
****************************************/
#include
#define S7_1 0x07
#define S7_2 0x0b
#define S7_3 0x0d
#define S7_4 0x0e
const char Font[17] = { 0xc0, 0xf9, 0xa4, //'0', '1', '2'
0xb0, 0x99, 0x92, // '3', '4', '5'
0x83, 0xf8, 0x80, // '6', '7', '8'
0x98, 0x88, 0x83, // '9', 'A', 'b'
0xc6, 0xa1, 0x86, // 'C', 'd', 'E'
0x8e, 0x7f } ; // 'F', '.'
void Control_7Seg(int);
/*
void delay (char);
void delay (char p)
{
int i, j ;
for ( j = 0 ; j < p ; j++)
for ( i = 0 ; i < 20000 ; i++) ;
}
*/
void Control_7Seg(int N)
{
unsigned int i, d , Buff;
unsigned char N1000, N100, N10, N1 ;
N1000 = N / 1000;
Buff = N % 1000;
N100 = Buff / 0x100 ;
Buff = Buff % 0x100;
N10 = Buff / 0x10;
N1 = Buff % 0x10;
for ( i = 0 ; i < 100 ; i ++ ) {
P1 = S7_1 ; // 첫번째 7-Segmnet를 켜준다.
P0 = Font[N1000] ; // 천의 자리를 써 준다.
for(d = 0 ; d < 10; d++ ) ;
P1 = S7_2 ; // 두번째 7-Segmnet를 켜준다.
P0 = Font[N100] ; // 백의 자리를 써 준다.
for(d = 0 ; d < 10; d++ ) ;
P1 = S7_3; // 세번째 7-Segmnet를 켜준다.
P0 = Font[N10]; // 십의 자리를 써 준다.
for(d = 0 ; d < 10; d++ ) ;
P1 = S7_4 ; // 네번째 7-Segmnet를 켜준다.
P0 = Font[N1] ; // 일의 자리를 을 써 준다.
for(d = 0 ; d < 10; d++ ) ;
}
}
void main(void)
{
int Number =0 ;
for( ;; ) {
Control_7Seg(Number);
Number ++ ;
if(Number > 9999)
Number = 0 ;
}
}