传感器技术网移动版

主页 > 技术方案 > 环境传感

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点阵显示电路

(责任编辑:admin)