📄 +_-
字号:
/****************************************************************
451LED、矩阵(中断式)
*****************************************************************/
//端口设置
#define ch451din0 PORTB&=~BIT(PB0)
#define ch451din1 PORTB|=BIT(PB0)
#define ch451dclk0 PORTB&=~BIT(PB1)
#define ch451dclk1 PORTB|=BIT(PB1)
#define ch451load0 PORTB&=~BIT(PB2)
#define ch451load1 PORTB|=BIT(PB2)
#define ch451dout0 PORTD&=~BIT(PD2)
#define ch451dout1 PORTD|=BIT(PD2)
// ch451控制命令集
#define CH451_RESET 0x0201 //复位
#define CH451_LEFTMOV 0x0300 //设置移动方式-左移
#define CH451_LEFTCYC 0x0301 //设置移动方式-左循
#define CH451_RIGHTMOV 0x0302 //设置移动方式-右移
#define CH451_RIGHTCYC 0x0303 //设置移动方式-右循
#define CH451_SYSOFF 0x0400 //关显示、键盘、看门狗
#define CH451_SYSON1 0x0401 //开显示
#define CH451_SYSON2 0x0403 //开显示、键盘
#define CH451_SYSON3 0x0407 //开显示、键盘、看门狗功能
#define CH451_DSP 0x0500 //设置默认显示方式
#define CH451_BCD 0x058f //设置BCD译码方式
#define CH451_BCD1 0x05f5 //
#define CH451_TWINKLE 0X0600 //设置闪烁控制
#define CH451_ONE 0x0603 //1、2位闪烁
#define CH451_FOUR 0x0618 //4、5位闪烁
#define CH451_SEVEN 0x06c0 //7、8位闪烁
//#define CH451_ATWINKLE 0X06ff //全闪
// 数码管各位显示
#define CH451_DIG0 0x0800
#define CH451_DIG1 0x0900
#define CH451_DIG2 0x0a00
#define CH451_DIG3 0x0b00
#define CH451_DIG4 0x0c00
#define CH451_DIG5 0x0d00
#define CH451_DIG6 0x0e00
#define CH451_DIG7 0x0f00
//键盘控制
#define keycode_s1 0x45
#define keycode_s2 0x4d
#define keycode_s3 0x55
#define keycode_s4 0x5d
#define keycode_s5 0x65
#define keycode_s6 0x6d
#define keycode_s7 0x75
#define keycode_s8 0x7d
#define keycode_s9 0x46
#define keycode_s10 0x4e
#define keycode_s11 0x56
#define keycode_s12 0x5e
#define keycode_s13 0x66
#define keycode_s14 0x6e
#define keycode_s15 0x76
#define keycode_s16 0x7e
#define keycode_s17 0x47
#define keycode_s18 0x4f
#define keycode_s19 0x57
#define keycode_s20 0x5f
#define keycode_s21 0x67
#define keycode_s22 0x6f
#define keycode_s23 0x77
#define keycode_s24 0x7f
//端口初始化
void port_init451()
{
CLI();
MCUCR=0X00;
MCUCSR=0X80;
GICR=0X00;
DDRB=0x07;
PORTB=0x07;
}
//定义一个无符号整型变量存储12字节的命令字
//写指令程序
void ch451_write(uint com)
{
uchar i,a;
ch451load0;
for(i=0;i<12;i++)
{
a=com&1;
if(a)
{
ch451din1;
}
else
{
ch451din0;
}
ch451dclk0;
ch451dclk1;
com>>=1;
}
ch451load1;
}
//读按键指令
uchar ch451_read()
{
uchar i,temp,com,keycode,j;
ch451load0;
//读行数
com=0x07;
for(i=0;i<4;i++)
{
if(com&0x01)
{
ch451din1;
}
else
{
ch451din0;
}
com>>=1;
ch451dclk0;
ch451dclk1;
}
ch451load1;
//读按键
keycode=0;
for(i=0;i<7;i++)
{
keycode<<=1;
j=PIND;
if(j&BIT(2))
keycode++;
ch451dclk0;
ch451dclk1;
}
return keycode;
}
void ch451_init()
{
ch451din0;
ch451din1;
}
//中断初始化
void int0_init()
{
PORTD|=BIT(2);
DDRD&=~BIT(2);
MCUCR|=0X00;
MCUCSR|=0X00;
GICR|=0X40;
SREG|=BIT(7);
}
/*port_init451();
int0_init();
ch451_init();
ch451_write(CH451_RESET);
ch451_write(CH451_SYSON2);
ch451_write(CH451_TWINKLE);
ch451_write(CH451_BCD);*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -