📄 5x7_display.c
字号:
/*****************************************************
Project :
Version :
Date : 12/29/2008
Author : HAMSA LATA
Company : RUPANAGUDI
Comments:
Chip type : ATmega8
Program type : Application
Clock frequency : 8.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/
#include <mega8.h>
#include <stdio.h>
#include <string.h>
#define COLUMN PORTD
#define ROW15 PORTC.0
#define ROW14 PORTC.1
#define ROW13 PORTC.2
#define ROW12 PORTC.3
#define ROW11 PORTC.4
#define ROW10 PORTB.0
#define ROW9 PORTB.1
#define ROW8 PORTB.2
#define ROW7 PORTB.3
#define ROW6 PORTB.4
#define ROW5 PORTD.7
#define ROW4 PORTB.7
#define ROW3 PORTC.5
#define ROW2 PORTB.5
#define ROW1 PORTB.6
//-----------------------------------------------------------------------
#define REFRESH_RATE 200
#define NO_OF_CHAR 60
unsigned char DISPLAY[NO_OF_CHAR];
//1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
/*={'*','R','U','P','A','N','A','G','U','D','I',' ','P','O','W','E','R',' ','S','Y',
//1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
'S','T','E','M','S','*','<','<','M','I','C','R','O',' ','S','T','A','B','>','>',
//1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
'(','(','m','i','c','r','o',' ','s','t','a','b',')',')','{','-','}','+',':','@'
}; */
//------------------------------------------------------------------------
static const unsigned char DIGIT_CODE[95][5] ={ { 0x00, 0x00, 0x00, 0x00, 0x00 }, // sp 0
{ 0x00, 0x00, 0x2f, 0x00, 0x00 }, // ! 1
{ 0x00, 0x07, 0x00, 0x07, 0x00 }, // "
{ 0x14, 0x7f, 0x14, 0x7f, 0x14 }, // #
{ 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, // $
{ 0xc4, 0xc8, 0x10, 0x26, 0x46 }, // %
{ 0x36, 0x49, 0x55, 0x22, 0x50 }, // &
{ 0x00, 0x05, 0x03, 0x00, 0x00 }, // '
{ 0x00, 0x1c, 0x22, 0x41, 0x00 }, // (
{ 0x00, 0x41, 0x22, 0x1c, 0x00 }, // )
{ 0x14, 0x08, 0x3E, 0x08, 0x14 }, // *
{ 0x08, 0x08, 0x3E, 0x08, 0x08 }, // +
{ 0x00, 0x00, 0x50, 0x30, 0x00 }, // ,
{ 0x10, 0x10, 0x10, 0x10, 0x10 }, // -
{ 0x00, 0x60, 0x60, 0x00, 0x00 }, // .
{ 0x20, 0x10, 0x08, 0x04, 0x02 }, // /
{ 0x3E, 0x51, 0x49, 0x45, 0x3E }, // 0
{ 0x00, 0x42, 0x7F, 0x40, 0x00 }, // 1
{ 0x42, 0x61, 0x51, 0x49, 0x46 }, // 2
{ 0x21, 0x41, 0x45, 0x4B, 0x31 }, // 3
{ 0x18, 0x14, 0x12, 0x7F, 0x10 }, // 4
{ 0x27, 0x45, 0x45, 0x45, 0x39 }, // 5
{ 0x3C, 0x4A, 0x49, 0x49, 0x30 }, // 6
{ 0x01, 0x71, 0x09, 0x05, 0x03 }, // 7
{ 0x36, 0x49, 0x49, 0x49, 0x36 }, // 8
{ 0x06, 0x49, 0x49, 0x29, 0x1E }, // 9
{ 0x00, 0x36, 0x36, 0x00, 0x00 }, // :
{ 0x00, 0x56, 0x36, 0x00, 0x00 }, // ;
{ 0x08, 0x14, 0x22, 0x41, 0x00 }, // <
{ 0x14, 0x14, 0x14, 0x14, 0x14 }, // =
{ 0x00, 0x41, 0x22, 0x14, 0x08 }, // >
{ 0x02, 0x01, 0x51, 0x09, 0x06 }, // ?
{ 0x32, 0x49, 0x59, 0x51, 0x3E }, // @
{ 0x7E, 0x11, 0x11, 0x11, 0x7E }, // A
{ 0x7F, 0x49, 0x49, 0x49, 0x36 }, // B
{ 0x3E, 0x41, 0x41, 0x41, 0x22 }, // C
{ 0x7F, 0x41, 0x41, 0x22, 0x1C }, // D
{ 0x7F, 0x49, 0x49, 0x49, 0x41 }, // E
{ 0x7F, 0x09, 0x09, 0x09, 0x01 }, // F
{ 0x3E, 0x41, 0x49, 0x49, 0x7A }, // G
{ 0x7F, 0x08, 0x08, 0x08, 0x7F }, // H
{ 0x00, 0x41, 0x7F, 0x41, 0x00 }, // I
{ 0x20, 0x40, 0x41, 0x3F, 0x01 }, // J
{ 0x7F, 0x08, 0x14, 0x22, 0x41 }, // K
{ 0x7F, 0x40, 0x40, 0x40, 0x40 }, // L
{ 0x7F, 0x02, 0x0C, 0x02, 0x7F }, // M
{ 0x7F, 0x04, 0x08, 0x10, 0x7F }, // N
{ 0x3E, 0x41, 0x41, 0x41, 0x3E }, // O
{ 0x7F, 0x09, 0x09, 0x09, 0x06 }, // P
{ 0x3E, 0x41, 0x51, 0x21, 0x5E }, // Q
{ 0x7F, 0x09, 0x19, 0x29, 0x46 }, // R
{ 0x46, 0x49, 0x49, 0x49, 0x31 }, // S
{ 0x01, 0x01, 0x7F, 0x01, 0x01 }, // T
{ 0x3F, 0x40, 0x40, 0x40, 0x3F }, // U
{ 0x1F, 0x20, 0x40, 0x20, 0x1F }, // V
{ 0x3F, 0x40, 0x38, 0x40, 0x3F }, // W
{ 0x63, 0x14, 0x08, 0x14, 0x63 }, // X
{ 0x07, 0x08, 0x70, 0x08, 0x07 }, // Y
{ 0x61, 0x51, 0x49, 0x45, 0x43 }, // Z
{ 0x00, 0x7F, 0x41, 0x41, 0x00 }, // [
{ 0x02, 0x04, 0x08, 0x10, 0x20 }, // back slash
{ 0x00, 0x41, 0x41, 0x7f, 0x00 }, // ]
{ 0x04, 0x02, 0x01, 0x02, 0x04 }, // ^
{ 0x40, 0x40, 0x40, 0x40, 0x40 }, // _
{ 0x00, 0x01, 0x02, 0x04, 0x00 }, // '
{ 0x20, 0x54, 0x54, 0x54, 0x78 }, // a
{ 0x7F, 0x48, 0x44, 0x44, 0x38 }, // b
{ 0x38, 0x44, 0x44, 0x44, 0x20 }, // c
{ 0x38, 0x44, 0x44, 0x48, 0x7F }, // d
{ 0x38, 0x54, 0x54, 0x54, 0x18 }, // e
{ 0x08, 0x7E, 0x09, 0x01, 0x02 }, // f
{ 0x0C, 0x52, 0x52, 0x52, 0x3E }, // g
{ 0x7F, 0x08, 0x04, 0x04, 0x78 }, // h
{ 0x00, 0x44, 0x7D, 0x40, 0x00 }, // i
{ 0x20, 0x40, 0x44, 0x3D, 0x00 }, // j
{ 0x7F, 0x10, 0x28, 0x44, 0x00 }, // k
{ 0x00, 0x41, 0x7F, 0x40, 0x00 }, // l
{ 0x7C, 0x04, 0x18, 0x04, 0x78 }, // m
{ 0x7C, 0x08, 0x04, 0x04, 0x78 }, // n
{ 0x38, 0x44, 0x44, 0x44, 0x38 }, // o
{ 0x7C, 0x14, 0x14, 0x14, 0x08 }, // p
{ 0x08, 0x14, 0x14, 0x18, 0x7C }, // q
{ 0x7C, 0x08, 0x04, 0x04, 0x08 }, // r
{ 0x48, 0x54, 0x54, 0x54, 0x20 }, // s
{ 0x04, 0x3F, 0x44, 0x40, 0x20 }, // t
{ 0x3C, 0x40, 0x40, 0x20, 0x7C }, // u
{ 0x1C, 0x20, 0x40, 0x20, 0x1C }, // v
{ 0x3C, 0x40, 0x30, 0x40, 0x3C }, // w
{ 0x44, 0x28, 0x10, 0x28, 0x44 }, // x
{ 0x0C, 0x50, 0x50, 0x50, 0x3C }, // y
{ 0x44, 0x64, 0x54, 0x4C, 0x44 }, // z
{ 0x00, 0x08, 0x36, 0x41, 0x00 }, // {
{ 0x00, 0x00, 0x7f, 0x00, 0x00 }, // |
{ 0x00, 0x41, 0x36, 0x08, 0x00 }, // }
{ 0x04, 0x02, 0x04, 0x08, 0x04 } // ~
};
unsigned char seg[15];
bit flag;
// Timer 1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{static char R_COUNT = 0,C_COUNT= 0,COUNT;
static unsigned int time = 0,DIS_COUNT = 0;;
char i = 0;
TCNT1H=0xF2;
TCNT1L=0x72;
if(++COUNT == 15)
{COUNT = 0;
}
if(time == 0)
{if(++R_COUNT == 6)
{R_COUNT = 0;
}
for(i=15;i != 0 ;i--)
{seg[i]= seg[i-1];
}
if(R_COUNT < 5)
{seg[0] = DIGIT_CODE[C_COUNT][R_COUNT];
}
if(R_COUNT == 5)
{seg[0] = 0x00;
if(++DIS_COUNT == strlen(DISPLAY)) //NO_OF_CHAR)
{DIS_COUNT = 0;
}
if((DISPLAY[DIS_COUNT]<= 126)&&(DISPLAY[DIS_COUNT]>= 32))
{C_COUNT = DISPLAY[DIS_COUNT] - 32;
}
} // R-COUNT
} // TIME_ZERO
if(++time == REFRESH_RATE)
{time = 0;
}
PORTD = 0X00;
PORTC = 0x3F;
PORTB = 0xFF;
if(COUNT == 0)
{ROW1 = 0;
PORTD = seg[0];
ROW5 = 1;
}
if(COUNT == 1)
{ROW2 = 0;
PORTD = seg[1];
ROW5 = 1;
}
if(COUNT == 2)
{ROW3 = 0;
PORTD = seg[2];
ROW5 = 1;
}
if(COUNT == 3)
{ROW4 = 0;
PORTD = seg[3];
ROW5 = 1;
}
if(COUNT == 4)
{ROW5 = 0;
PORTD = seg[4];
// ROW5 = 1;
}
if(COUNT == 5)
{ROW6 = 0;
PORTD = seg[5];
ROW5 = 1;
}
if(COUNT == 6)
{ROW7 = 0;
PORTD = seg[6];
ROW5 = 1;
}
if(COUNT == 7)
{ROW8 = 0;
PORTD = seg[7];
ROW5 = 1;
}
if(COUNT == 8)
{ROW9 = 0;
PORTD = seg[8];
ROW5 = 1;
}
if(COUNT == 9)
{ROW10 = 0;
PORTD = seg[9];
ROW5 = 1;
}
if(COUNT == 10)
{ROW11 = 0;
PORTD = seg[10];
ROW5 = 1;
}
if(COUNT == 11)
{ROW12 = 0;
PORTD = seg[11];
ROW5 = 1;
}
if(COUNT == 12)
{ROW13 = 0;
PORTD = seg[12];
ROW5 = 1;
}
if(COUNT == 13)
{ROW14 = 0;
PORTD = seg[13];
ROW5 = 1;
}
if(COUNT == 14)
{ROW15 = 0;
PORTD = seg[14];
ROW5 = 1;
}
}
void main(void)
{
PORTB=0x00;
DDRB=0xFF;
PORTC=0x00;
DDRC=0x3F;
PORTD=0x00;
DDRD=0xFF;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x01;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x04;
ACSR=0x80;
SFIOR=0x00;
sprintf(DISPLAY,"<<RUPANAGUDI POWER SYSTEMS>> **MICRO STAB** RAVI SHANKAR ");
// Global enable interrupts
#asm("sei")
while (1)
{
};
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -