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

📄 5x7_display_ok.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>
#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      PORTB.5 
#define ROW4      PORTB.6
#define ROW3      PORTB.7
#define ROW2      PORTC.5
#define ROW1      PORTD.7
//-----------------------------------------------------------------------
#define DIS_SPACE    36
#define DIS_STAR     37
#define REFRESH_RATE  400
#define NO_OF_CHAR    23
                                  //1   2   3   4   5   6   7   8   9  10  11  12  13  14 15  16  17  18   19  20  21  22  23
unsigned char DISPLAY[NO_OF_CHAR]={'*','R','U','P','A','N','A','G','U','D','I',' ','P','O','W','E','R',' ','S','Y','S','*',' '};  
//------------------------------------------------------------------------   
const unsigned char DIGIT_CODE[38][5] ={0X7E,0X09,0X09,0X09,0X7E,       //A 1
                                  0X7F,0X49,0X49,0X49,0X36,       //B 2
                                  0X3E,0X41,0X41,0X41,0X22,       //C 3
                                  0X7F,0X41,0X41,0X41,0X3E,       //D 4
                                  0X7F,0X49,0X49,0X41,0X41,       //E 5
                                  0X7F,0X09,0X09,0X01,0X00,       //F 6
                                  0X3E,0X41,0X49,0X49,0X3A,       //G 7
                                  0X7F,0X08,0X08,0X08,0X7F,       //H 8
                                  0X41,0X41,0X7F,0X41,0X41,       //I 9
                                  0X20,0X40,0X41,0X3F,0X01,       //J 10
                                  0X7F,0X08,0X14,0X22,0X41,       //K 11
                                  0X7F,0X40,0X40,0X40,0X00,       //L 12
                                  0X7F,0X02,0X0C,0X02,0X7F,       //M 13
                                  0X7F,0X02,0X04,0X08,0X7F,       //N 14
                                  0X3E,0X41,0X41,0X41,0X3E,       //0 15
                                  0X7F,0X09,0X09,0X09,0X06,       //P 16
                                  0X3E,0X41,0X51,0X21,0X5E,       //Q 17
                                  0X7F,0X09,0X19,0X29,0X46,       //R 18  
                                  0X26,0X49,0X49,0X49,0X32,       //S 19
                                  0X01,0X01,0X7F,0X01,0X01,       //T 20
                                  0X3F,0X40,0X40,0X40,0X3F,       //U 21
                                  0X1F,0X20,0X40,0X20,0X1F,       //V 22
                                  0X7F,0X20,0X18,0X20,0X7F,       //W 23
                                  0X63,0X14,0X08,0X14,0X63,       //X 24
                                  0X03,0X04,0X78,0X04,0X03,       //Y 25
                                  0X61,0X51,0X49,0X45,0X43,       //Z 26
                                  
                                  0X3E,0X51,0X49,0X45,0X3E,       //0 27
                                  0X00,0X42,0X7F,0X40,0X00,       //1 28
                                  0X72,0X49,0X49,0X49,0X46,       //2 29  
                                  0X22,0X41,0X49,0X49,0X36,       //3 30
                                  0X18,0X14,0X12,0X7F,0X10,       //4 31
                                  0X27,0X45,0X45,0X45,0X39,       //5 32
                                  0X3E,0X49,0X49,0X49,0X32,       //6 33
                                  0X01,0X71,0X09,0X05,0X03,       //7 34
                                  0X36,0X49,0X49,0X49,0X36,       //8 35
                                  0X26,0X49,0X49,0X49,0X3E,       //9 36
                                  0X00,0X00,0X00,0X00,0X00,       //' ' 37
                                  0X2A,0X1C,0X7F,0X1C,0X2A        //*  38
                             };
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= 36,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 == NO_OF_CHAR)
          {DIS_COUNT = 0;
           }
        if((DISPLAY[DIS_COUNT]<= 'Z')&&(DISPLAY[DIS_COUNT]>= 'A'))   
          {C_COUNT = DISPLAY[DIS_COUNT] - 65;
           }
        if((DISPLAY[DIS_COUNT]<= '9')&&(DISPLAY[DIS_COUNT]>= '0'))   
           {C_COUNT = (DISPLAY[DIS_COUNT] - 48)+26;
             }   
       if(DISPLAY[DIS_COUNT] == ' ')
         {C_COUNT = DIS_SPACE;
          }    
       if(DISPLAY[DIS_COUNT] == '*')
         {C_COUNT = DIS_STAR;
          }           
       } // R-COUNT  
     }  // TIME_ZERO   
   if(++time == REFRESH_RATE)
   {time = 0;       
    }    

          PORTD = 0X00; 
          PORTC = 0x3F;  
          PORTB = 0xFF;
          if(COUNT == 0) 
            {ROW1 = 0;       //PORTB = 0x0F;
             PORTD = seg[0];  //DIGIT_CODE[C_COUNT][0];
            // ROW1 = 1;             
             }  
          if(COUNT == 1) 
            {ROW2 = 0;        //PORTB = 0x17;
             PORTD = seg[1];  //DIGIT_CODE[C_COUNT][1];
             ROW1 = 1;             
             } 
          if(COUNT == 2) 
            {ROW3 = 0;        // PORTB = 0x1B;
             PORTD = seg[2];  //DIGIT_CODE[C_COUNT][2];
             ROW1 = 1;            
             }     
           if(COUNT == 3) 
            {ROW4 = 0;        //PORTB = 0x1D;
             PORTD = seg[3];  //DIGIT_CODE[C_COUNT][3];
             ROW1 = 1;
             }      
           if(COUNT == 4) 
            {ROW5 = 0;        // PORTB = 0X1E; 
             PORTD = seg[4];  //DIGIT_CODE[C_COUNT][4];
             ROW1 = 1;             
             }                   
           if(COUNT == 5) 
            {ROW6 = 0;        // PORTC = 0x0F;
             PORTD = seg[5];  //DIGIT_CODE[C_COUNT][5];
             ROW1 = 1;             
             }  
           if(COUNT == 6) 
            {ROW7 = 0;        //PORTC = 0x17;
             PORTD = seg[6];  //DIGIT_CODE[C_COUNT][6];
             ROW1 = 1;             
             } 
           if(COUNT == 7) 
            {ROW8 = 0;        //PORTC = 0x1B; 
             PORTD = seg[7];  //DIGIT_CODE[C_COUNT][7];
             ROW1 = 1;
             }     
           if(COUNT == 8) 
            {ROW9 = 0;        // PORTC = 0x1D;
             PORTD = seg[8];  //DIGIT_CODE[C_COUNT][8];
             ROW1 = 1;
             }      
           if(COUNT == 9) 
            {ROW10 = 0;       //PORTC = 0x1E; 
             PORTD = seg[9];  //DIGIT_CODE[C_COUNT][9];  
             ROW1 = 1;
             }                   
           if(COUNT == 10) 
            {ROW11 = 0;        // PORTC = 0x0F;
             PORTD = seg[10];  //DIGIT_CODE[C_COUNT][5];
             ROW1 = 1;
             }  
           if(COUNT == 11) 
            {ROW12 = 0;        //PORTC = 0x17;
             PORTD = seg[11];  //DIGIT_CODE[C_COUNT][6];
             ROW1 = 1;             
             } 
           if(COUNT == 12) 
            {ROW13 = 0;        //PORTC = 0x1B; 
             PORTD = seg[12];  //DIGIT_CODE[C_COUNT][7];
             ROW1 = 1;
             }     
           if(COUNT == 13) 
            {ROW14 = 0;        // PORTC = 0x1D;
             PORTD = seg[13];  //DIGIT_CODE[C_COUNT][8];
             ROW1 = 1;
             }      
           if(COUNT == 14) 
            {ROW15 = 0;       //PORTC = 0x1E; 
             PORTD = seg[14];  //DIGIT_CODE[C_COUNT][9];  
             ROW1 = 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;
// Global enable interrupts
#asm("sei")
while (1)
{
 };
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -