📄 led_matrix2.c
字号:
/*============================================================
File Name :LED_MATRIX2.c
说明 :
1. 'AVR'文字从下往上移动的的同时,文字的颜色也在变化
=============================================================*/
#include <avr/io.h>
#define PPI_0_PA (unsigned char *)0x5000; // line的外部存储器地址
#define PPI_0_PB (unsigned char *)0x5001; // 绿色的外部存储器地址
#define PPI_0_PC (unsigned char *)0x5002; // 红色的外部存储器地址
#define PPI_0_CT (unsigned char *)0x5003; // 82C55的控制端外部存储器地址
unsigned char font_A[]={0x18,0x24,0x42,0x42,0x7e,0x42,0x42,0x42};
unsigned char font_V[]={0x41,0x41,0x41,0x41,0x41,0x22,0x14,0x08};
unsigned char font_R[]={0x3c,0x42,0x42,0x42,0x3e,0x12,0x22,0x42};
unsigned char blank[]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char font[8];
unsigned char *line,*green,*red,*ppi_ctrl;
void initialize_ppi(void);
void delay(int d1,int d2);
void display(unsigned char*green1,unsigned char*red1);
void move(unsigned char*shift1,unsigned char i);
void matrix(unsigned char*matrix1);
int main(void)
{
MCUCR|=(1<<SRE);
initialize_ppi();
do{
matrix(font_A);
matrix(font_V);
matrix(font_R);
}while(1);
}
void matrix(unsigned char *matrix1)
{
unsigned char i=0;
for(i=0;i<8;i++)
{
move(matrix1,i);
display(blank,font); // red on move
}
for(i=0;i<4;i++)
display(font,font); // orange on
for(i=0;i<4;i++)
display(font,blank); // green on
for(i=0;i<8;i++)
font[i]=0; // 初始化排列
}
void delay(int d1,int d2)
{
int i,j;
for(i=0;i<d1;i++){
for(j=0;j<d2;j++);
}
}
void initialize_ppi(void)
{
line=PPI_0_PA;
green=PPI_0_PB;
red=PPI_0_PC;
ppi_ctrl=PPI_0_CT;
*ppi_ctrl=0x80; //82C55的 A, B都是输出
}
void move(unsigned char *move1,unsigned char i)
{
unsigned char k,j;
k=0;
j=7-i;
do{
font[j]=move1[k]; // 将move1的最高位字节移至font的最低位字节
j++;
k++;
}while(i--);
}
void display(unsigned char *green1,unsigned char *red1)
{
unsigned char i=0,j=0;
for(j=0;j<20;j++)
{ // 点亮一种颜色的时间
for(i=0;i<8;i++)
{ // 点亮一种画面的时间
*green=green1[i];
*red=red1[i];
*line=(0x01<<i);
delay(100,70); // 1 line on time
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -