📄 dotled.c
字号:
#include "config.h"
#define DOTLED_LINE_PORT PORTB
#define DOTLED_LINE_DDR DDRB
#define DOTLED_LINE_PIN PINB
#define DOTLED_LINE_SCKT PB1
#define DOTLED_LINE_SCKH PB5
#define DOTLED_LINE_SDA PB3
#define DOTLED_ROW_PORT PORTC
#define DOTLED_ROW_DDR DDRC
#define DOTLED_ROW_PIN PINC
#define DOTLED_ROW_A0 PC0
#define DOTLED_ROW_A1 PC1
#define DOTLED_ROW_A2 PC2
#define DOTLED_ROW_A3 PC3
#define DOTLED_ROW_E PC4
uint8 font[] = {
/*-- 调入了一幅图像:这是您新建的图像 --*/
/*-- 宽度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
};
static void TransmitByte(uint8 byte);
static void SelectRow(uint8 row);
static void FlipLatchLine(void);
static void TransmitByte(uint8 byte)
{
uint8 i;
for(i = 0 ; i < 8 ; i ++)
{
if(byte & (1 << i))
{
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);
}
}
static void SelectRow(uint8 row)
{
//row -= 1;
row |= DOTLED_ROW_PIN & 0xe0;
DOTLED_ROW_PORT = row;
}
static void FlipLatchLine(void)
{
DOTLED_LINE_PORT |= _BV(DOTLED_LINE_SCKT);
DOTLED_LINE_PORT &= ~_BV(DOTLED_LINE_SCKT);
}
void InitDotLedPort(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;
}
void EnableRow(boolean IsEnable)
{
if(IsEnable)
{
DOTLED_ROW_PORT &= ~_BV(DOTLED_ROW_E);
}
else
{
DOTLED_ROW_PORT |= _BV(DOTLED_ROW_E);
}
}
void PrintDotLed(uint8 * buffer)
{
uint8 i , tmp;
for(i = 0 ; i < 16 ; i ++)
{
tmp = *buffer ++;
TransmitByte(~tmp);
tmp = *buffer ++;
TransmitByte(~tmp);
SelectRow(i);
FlipLatchLine();
}
}
void main(void)
{
InitDotLedPort();
EnableRow(TRUE);
while(1)
{
PrintDotLed(font);
__delay_cycles(5000);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -