AIP1628 SOP28
产品描述TM1628/GN1628/AIP1628 是一款 3 线串口共阴极 10 段 7 位或 13 段 4 位带 10*2 位键盘扫描的 LED 驱动控制电路,三线串行通讯接口, RC 振荡器,具有八级辉度可调,广泛适用于各种 LED 面板场合。
其主要特点如下:
● 显示模式软件可调
● 内置显示 RAM
● 10*2 扫描按键矩阵
● 显示辉度软件可调
● 三线串行接口(CLK, STB, DIO)
● 内置 RC 振荡
● 封装形式: SOP28/SSOP28(0.635mm)
AIP1628可以PIN TO PIN 兼容TM1628/GN1628/HT1628
更多功能介绍在数据手册里...
典型应用电路图#define DIO_1628_IN; {PD_DDR&=~0b00010000; PD_CR1&=~0b00010000;}//DIO PD4配置为悬浮输入
#define DIO_1628_OUT; {PD_DDR|=0b00010000; PD_CR1|=0b00010000;}//DIO PD4配置为推挽输出
#define DIO_1628_HIGH; PD_ODR|=0b00010000; //DIO信号输出高电平
#define DIO_1628_LOW; PD_ODR&=~0b00010000;//DIO信号输出低电平
#define SCK_1628_LOW; PD_ODR|=0b00000100;//SCK时钟信号 PD2 高电平
#define SCK_1628_HIGH; PD_ODR&=~0b00000100;//SCK时钟信号 PD2 低电平
#define STB_1628_HIGH; PE_ODR|=0b00000001;//STB信号 PE0 高电平
#define STB_1628_LOW; PE_ODR&=~0b00000001;//STB信号 PE0 低电平
const @near unsigned char table_1628[][2] = {
{ 0X1F,0X02 }, //"0"
{ 0X06,0X00 }, //"1"
{ 0X1B,0X01 }, //"2"
{ 0X0F,0X01 }, //"3"
{ 0X06,0X03 }, //"4"
{ 0X0D,0X03 }, //"5"
{ 0X1D,0X03 }, //"6"
{ 0X07,0X00 }, //"7"
{ 0X1F,0X03 }, //"8"
{ 0X0F,0X03 }, //"9"
{ 0X00,0X01 }, //"-" 10
{ 0X19,0X03 }, //"E" 11
{ 0X0D,0X03 }, //"S" 12
{ 0X18,0X03 }, //"t" 13
{ 0X19,0X02 }, //"C" 14
{ 0X13,0X03 }, //"P" 15
{ 0X17,0X03 }, //"A" 16
{ 0X00,0X00 }, //" " 空 17
{ 0XFF,0XFF }, //" 8." 全显 18
};
void dispay_1628_sentdate( unsigned char dat)//sendbyte_1628) //程序执行完,CLK是高电平
{
unsigned char i;
for(i=0;i<8;i++)
{
if(dat&0x01)
{DIO_1628_HIGH;}//DIO输出高电平
else
{DIO_1628_LOW;}//DIO输出低电平
SCK_1628_LOW;//时钟信号低电平
// _nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();//延时
_nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();
SCK_1628_HIGH;//时钟信号高电平,读取和接收1个BIT都在时钟的上升沿操作。
_nop();_nop();
dat=dat>>1;//下一位
}
}
void command_1628( unsigned char com)//发送数据到1628
{
STB_1628_HIGH;
//_nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();//延时
//_nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();
STB_1628_LOW;
//_nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();//延时
//_nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();
dispay_1628_sentdate(com);//程序执行完,CLK是高电平
}
//读取按键值并存入KEY[]数组,从低字节开始,从低位开始---
void read_key(void)
{
unsigned char i1,j1;
command_1628(0x42); //读键盘命令
DIO_1628_HIGH;
DIO_1628_IN; //将DIO置输入
// _nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();//延时
// _nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();
// _nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();//延时
// _nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();//此堆邮蔽时间至少需要1us
for(j1=0;j1<4;j1++)//连续读取4个字节
for(i1=0;i1<8;i1++)
{
KEY[j1]=KEY[j1]>>1;//按键信息数组 移动位置时相当于清 零了
SCK_1628_LOW;//时钟信号低电平
_nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();//延时
_nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();
SCK_1628_HIGH;//时钟信号高电平,读取和接收1个BIT都在时钟的上升沿操作。
_nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();//延时
// _nop();_nop();_nop();_nop();_nop();_nop();_nop();_nop();
if(PD_IDR&0x10)//如果PD4 DIO输入为高电平
KEY[j1]=KEY[j1]|0X80;
}
STB_1628_HIGH;
DIO_1628_OUT; //DIO PD4配置为推挽输出
}