标题: 能帮我改一下这个代码吗?就是动画显示的那里 [打印本页]

作者: Derive    时间: 2024-2-7 09:38
标题: 能帮我改一下这个代码吗?就是动画显示的那里
#include <reg51.h>

typedef unsigned char u8;
typedef unsigned int u16;

#define DOT_MATRIX_PORT P0
#define LINE_SELECT_PORT P2
#define INTERRUPT_PIN P3^2

void delay_10us(u16 ten_us)
{
    while(ten_us--);
}

void delay_ms(u16 ms)
{
    u16 i, j;
    for(i=ms;i>0;i--)
        for(j=110;j>0;j--);
}

unsigned char heart_pattern[16][16]={0x78,0xFC,0x7E,0x3F,0x7E,0xFC,0x78,0x00,
                                    0x70,0xF8,0x7C,0x3E,0x7C,0xF8,0x70,0x00,
                                    0x60,0xF0,0x78,0x3C,0x78,0xF0,0x60,0x00,
                                    0x40,0xE0,0x70,0x38,0x70,0xE0,0x40,0x00,
                                    0x78,0xFC,0x7E,0x3F,0x7E,0xFC,0x78,0x00};
volatile bit donghua_on = 0;

void display_heart(void);
void init_interrupt(void);

void main(void)
{
    init_interrupt();
    while(1)
    {
        if (donghua_on)
        {
            display_heart();
            donghua_on = 0;
            delay_ms(1000);  
        }
    }
}

void display_heart(void)
{
        int row;
  for(row=0; row<16; row++)
  {
                LINE_SELECT_PORT = ~(1<<row);
    DOT_MATRIX_PORT = heart_pattern[row];
    delay_us(1000);
  }
}

void interrupt isr(void)
{
    donghua_on = 1;
    EXTI0_IF = 0;
}

void init_interrupt(void)
{
    IT0 = 1;
    EX0 = 1;
    EA = 1;
}


作者: lkc8210    时间: 2024-2-7 16:01
改啥啊?啥都不说
作者: cedtek    时间: 2024-2-8 10:19
请明确的表达您的需求、现有问题
作者: xxxevery    时间: 2024-2-14 00:13
虽然不知道具体问题说的哪里,但下面这段程序肯定是有问题的
void display_heart(void)
{
        int row;
        for(row=0; row<16; row++)
       {
                LINE_SELECT_PORT = ~(1<<row);
                DOT_MATRIX_PORT = heart_pattern[row];
                delay_us(1000);
        }
}
LINE_SELECT_PORT 即P2是8位的,移16位肯定有问题
DOT_MATRIX_PORT = heart_pattern[row];这句里heart_pattern是二维数组,写成一维数组形式肯定也有问题




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1