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点阵显示电路
模拟电路 模拟芯片 德州仪器 放大器 ADI 模拟电子 相关文章:
- 12位串行A/D转换器MAX187的应用(10-06)
- AGC中频放大器设计(下)(10-07)
- 低功耗、3V工作电压、精度0.05% 的A/D变换器(10-09)
- PIC16C5X单片机睡眠状态的键唤醒方法(11-16)
- 用简化方法对高可用性系统中的电源进行数字化管理(10-02)
- 利用GM6801实现智能快速充电器设计(11-20)