文档详情

AVR外设汇总之8x8点阵屏.pdf

发布:2017-06-02约3.09千字共3页下载文档
文本预览下载声明
1. 8*8点阵屏 //原理与MAX7219数码管差不多,故沿用其函数。解释详情请参见本文集中的AVR 设汇总之MAX7219数码管.doc文档。 //将PA3位置0 #defineMAX7219_LOAD2_0 {DDRA|=_BV(PA3);PORTA=~_BV(PA3);} //将PA3位置 1 #defineMAX7219_LOAD2_1 {DDRA|=_BV(PA3);PORTA|=_BV(PA3);} 使用方法与数码管基本相同。 例子: #includeavr/io.h #includeutil/delay.h #defineMAX7219_LOAD_0 {DDRA|=_BV(PA3);PORTA=~_BV(PA3);}//将PA3位置零 #defineMAX7219_LOAD_1 {DDRA|=_BV(PA3);PORTA|=_BV(PA3);} #defineMAX7219_CLK_0 {DDRA|=_BV(PA2);PORTA=~_BV(PA2);} #defineMAX7219_CLK_1 {DDRA|=_BV(PA2);PORTA|=_BV(PA2);} #defineMAX7219_DIN_0 {DDRA|=_BV(PA0);PORTA=~_BV(PA0);} #defineMAX7219_DIN_1 {DDRA|=_BV(PA0);PORTA|=_BV(PA0);} //向7219发送地址和数据或控制 voidWrite7219(unsignedcharaddr,unsignedchardata) { unsignedchari=0; MAX7219_LOAD_0; MAX7219_CLK_0; for(i=0;i8;i++) { if(addr0x80){MAX7219_DIN_1;} else {MAX7219_DIN_0;} _delay_us(2); MAX7219_CLK_1; _delay_us(2); MAX7219_CLK_0; addr=1; } MAX7219_CLK_0; for(i=0;i8;i++) { if(data0x80){MAX7219_DIN_1;} else {MAX7219_DIN_0;} _delay_us(2); MAX7219_CLK_1; _delay_us(2); MAX7219_CLK_0; data=1; } MAX7219_LOAD_1; } voidinit7219(void) { Write7219(0x9,0x00); Write7219(0xa,0x7); Write7219(0xb,0x7); Write7219(0xc,0x1); } unsignedcharfan[8]={0x5A,0xFF,0x5A,0xFF,0x18,0x7E,0x18,0x66}; unsignedcharchuang[8]={0x21,0x51,0xFD,0x55,0x75,0x55,0x4D,0x7F}; unsignedcharhong[8]={0x18,0xFF,0x89,0x7E,0x10,0x28,0x52,0xBF}; intmain(void) { init7219(); inti,j; /* while(1){ for(j=0;j33;j++) { for(i=0;i8;i++) { if(j9){ Write7219(i+1,fan[i](8-j));} elseif(j17){ Write7219(i+1
显示全部
相似文档