这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 16 16点阵显示程序(含电路图)

共1条 1/1 1 跳转至

16 16点阵显示程序(含电路图)

高工
2014-06-12 10:37:02     打赏

16 16点阵显示程序

以下是程序.

#include"config.h"

#defineDOTLED_LINE_PORTPORTB
#defineDOTLED_LINE_DDRDDRB
#defineDOTLED_LINE_PINPINB

#defineDOTLED_LINE_SCKTPB1
#defineDOTLED_LINE_SCKHPB5
#defineDOTLED_LINE_SDAPB3

#defineDOTLED_ROW_PORTPORTC
#defineDOTLED_ROW_DDRDDRC
#defineDOTLED_ROW_PINPINC

#defineDOTLED_ROW_A0PC0
#defineDOTLED_ROW_A1PC1
#defineDOTLED_ROW_A2PC2
#defineDOTLED_ROW_A3PC3
#defineDOTLED_ROW_EPC4



uint8font[]=
/*--调入了一幅图像:这是您新建的图像--*/
/*--宽度x高度=16x16--*/
0x00,0x00,0x00,0x00,0x08,0x38,0x18,0x44,0x08,0x44,0x08,0x04,0x08,0x08,0x08,0x10,
0x08,0x20,0x08,0x40,0x08,0x40,0x08,0x40,0x3E,0x7C,0x00,0x00,0x00,0x00,0x00,0x00
;



staticvoidTransmitByte(uint8byte);
staticvoidSelectRow(uint8row);
staticvoidFlipLatchLine(void);


staticvoidTransmitByte(uint8byte)

uint8i;

for(i=0;i8;i++)

if(byte(1i))

DOTLED_LINE_PORT|=_BV(DOTLED_LINE_SDA);

else

DOTLED_LINE_PORT=~_BV(DOTLED_LINE_SDA);

//__delay_cycles(100);
DOTLED_LINE_PORT|=_BV(DOTLED_LINE_SCKH);
//__delay_cycles(100);
DOTLED_LINE_PORT=~_BV(DOTLED_LINE_SCKH);
//__delay_cycles(100);



staticvoidSelectRow(uint8row)

//row-=1;
row|=DOTLED_ROW_PIN0xe0;
DOTLED_ROW_PORT=row;


staticvoidFlipLatchLine(void)

DOTLED_LINE_PORT|=_BV(DOTLED_LINE_SCKT);
DOTLED_LINE_PORT=~_BV(DOTLED_LINE_SCKT);


voidInitDotLedPort(void)

DOTLED_LINE_PORT=~(_BV(DOTLED_LINE_SCKT)|_BV(DOTLED_LINE_SCKH));
DOTLED_LINE_PORT|=_BV(DOTLED_LINE_SDA);
DOTLED_LINE_DDR|=_BV(DOTLED_LINE_SCKT)|_BV(DOTLED_LINE_SCKH)|_BV(DOTLED_LINE_SDA);

DOTLED_ROW_PORT|=0x1f;
DOTLED_ROW_PORT=0xf0;
DOTLED_ROW_DDR|=0x1f;

voidEnableRow(booleanIsEnable)

if(IsEnable)

DOTLED_ROW_PORT=~_BV(DOTLED_ROW_E);

else

DOTLED_ROW_PORT|=_BV(DOTLED_ROW_E);


voidPrintDotLed(uint8*buffer)

uint8i,tmp;

for(i=0;i16;i++)

tmp=*buffer++;
TransmitByte(~tmp);
tmp=*buffer++;
TransmitByte(~tmp);
SelectRow(i);
FlipLatchLine();


voidmain(void)

InitDotLedPort();

EnableRow(TRUE);

while(1)

PrintDotLed(font);
__delay_cycles(5000);




//---------------------------------------------------------------------------
config.h文件

#ifndef_CONFIG_H
#define_CONFIG_H

//#defineGCCAVR

#defineCPU_CYCLES7372800L




#ifndefGCCAVR
#define_BV(bit)(1(bit))
#endif


#defineMSB0x80
#defineLSB0x01


#defineFALSE0
#defineTRUE1


typedefunsignedcharuint8;
typedefunsignedintuint16;
typedefunsignedlonguint32;
typedefunsignedcharboolean;


#includeioavr.h>
#includeinavr.h>

#include"dotled.h"


#endif


//---------------------------------------------------------------------------

16 16点阵显示电路




关键词: 点阵    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]