⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 5x7_display.c

📁 5x7 moving message 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 + -