📄 led_matrix.c
字号:
/*============================================================
File Name :LED_MATRIX.c
说明 :
1. LED点阵依次显示绿色,红色,橙色
=============================================================*/
#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 *line,*green,*red,*ppi_ctrl;
void initialize_ppi(void);
void delay(int d1,int d2);
void martix_out(char green1,char red1);
int main(void)
{
MCUCR|=(1<<SRE);
initialize_ppi();
do{
martix_out(0xff,0x00); // green on
martix_out(0x00,0xff); // red on
martix_out(0xff,0xff); // green, red on=orange
}while(1);
}
void martix_out(char green1,char red1)
{
unsigned char i=0,j=0;
for(j=0;j<200;j++)
{
*green=green1;
*red=red1;
for(i=0;i<8;i++)
{
*line=(0x01<<i);
delay(50,50);
}
}
}
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; // 分配LED点阵line的物理地址
green=PPI_0_PB; // 分配LED点阵绿色的物理地址
red=PPI_0_PC; // 分配LED点阵红色的物理地址
ppi_ctrl=PPI_0_CT; // 分配82C55的控制端物理地址
*ppi_ctrl=0x80; // 82C55 A, B 都是输出
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -