自制AVR试验板-第四天

吹牛DIY电子AVR单片机嵌入式 by 达达 at 2007-10-05

嘿嘿,记录下早上的劳动成果。早上把POV试验用的扩展板焊好了,并测试通过 :D

过程还是有点曲折,原先认为是再简单不过的了,就焊接好几个LED就行了。结果焊接好后要测试,怎么都只有PORTD0上的灯会闪,怀疑是程序没正确写入,重复了两三遍,都还是一样。后来拿万用表逐个测试LED,发现只有接在PORTD0上的LED正负极是对的,其它都接反了?!原来昨天买的LED不是每个都一样规格...不是长腿的就是正极...以后得记住这个教训。逐个重焊后,把程序改一下,就测试通过了,接下来要做的其实就是再写个程序自动生成bitmap数组的内容,看下面的代码你就会清楚:

#include <iom8v.h>
#include <macros.h>

void port_init(void)
{
    PORTB = 0xFF;
    DDRB  = 0xFF;
    PORTC = 0xFF; //m103 output only
    DDRC  = 0xFF;
    PORTD = 0xFF;
    DDRD  = 0xFF;
}

//call this routine to initialize all peripherals
void init_devices(void)
{
    //stop errant interrupts until set up
    CLI(); //disable all interrupts
    port_init();

    MCUCR = 0x00;
    GICR  = 0x00;
    TIMSK = 0x00; //timer interrupt sources
    SEI(); //re-enable interrupts
    //all peripherals are now initialized
}

void delay(void)
{
    unsigned char i, j;

    for(i=3000; i>0; i--)
        for(j=3000; j>0; j--);
}

const unsigned char bitmap[] = {
    0b11111110,
    0b11111100,
    0b11111000,
    0b11110000,
    0b11100000,
    0b11000000,
    0b10000000,
    0b00000000
};

void main(void)
{
    int i=0;

    init_devices();

    while(1)
    {
        PORTD = bitmap[i];

        i = i == 7 ? 0 : i+1;

        delay();
    }
}

最新照片和试验视频:

s3020664.JPG

[hana-flv-player video="/my-files/video/S3020663.flv"/]

[下午更新]

哈哈,终于有点POV的样子啦,程序比较土,但是符合我的第一期要求,晚上应该就可以做到盒子里去了 :D

费了很多力气拍的照片:

ext11.png

调LED切换的延迟时间和测试搞得我手酸死了,写入程序后,装上板子,拿到镜子前,甩来甩去,不行又拿回来再改程序再写,写完再甩...