请教:HT1632C的 LED 点阵模块其点与数据怎么对应的?

2019-07-19 20:43发布

又来请教打扰诸位老师了。。。我用STM8S207S6驱动由HT1632C构成的9*16LED 点阵模块。。。可是输入的数据与“点亮”的LED怎么也对应不起来。。。。搞了两天了一点进展都没。。。上百度也没找到类似的说明。。。真是急死人了。。。输入的数据与“点亮”的LED应该怎么才能对应。。。。。于是只好又来请教打扰诸位老师了。。。恳请多多指点。。。。。。
下面是我的相关的驱动代码。。。请诸位指点。。。。。

#define Datd_9x16    GPIO_PIN_0 //定义9x16C时钟线对象,需要指定9x16时钟线管脚对应的GPIO管脚
#define WR_9x16      GPIO_PIN_1 //定义9x16数据线对象,需要指定9x16数据线管脚对应的GPIO管脚
#define CS_9x16      GPIO_PIN_2 //定义9x16数据线对象,需要指定9x16数据线管脚对应的GPIO管脚
#define RD_9x16      GPIO_PIN_3 //定义9x16数据线对象,需要指定9x16数据线管脚对应的GPIO管脚
define Datd_9x16_IN   GPIO_Init(GPIO_9x16, Datd_9x16, GPIO_MODE_IN_PU_NO_IT) //上拉输入无中断功能

#define Datd_9x16_H GPIO_WriteHigh(GPIO_9x16,Datd_9x16)
#define Datd_9x16_L GPIO_WriteLow(GPIO_9x16,Datd_9x16)
#define GPIO_9x16    GPIOB      //定义要使用的端口B

#define WR_9x16_H GPIO_WriteHigh(GPIO_9x16,WR_9x16)  //置指定端口位为高电平,该端口必须配置为输出
#define WR_9x16_L GPIO_WriteLow(GPIO_9x16,WR_9x16)   //置指定端口位为低电平,该端口必须配置为输出

#define CS_9x16_H GPIO_WriteHigh(GPIO_9x16,CS_9x16)  //置指定端口位为高电平,该端口必须配置为输出
#define CS_9x16_L GPIO_WriteLow(GPIO_9x16,CS_9x16)   //置指定端口位为低电平,该端口必须配置为输出

#define RD_9x16_H GPIO_WriteHigh(GPIO_9x16,RD_9x16)  //置指定端口位为高电平,该端口必须配置为输出
#define RD_9x16_L GPIO_WriteLow(GPIO_9x16,RD_9x16)   //置指定端口位为低电平,该端口必须配置为输出


void HT1632_Init(void)
{
    GPIOB->DDR |=0x0f;      // GPIO.0~.3为输出端口
    GPIOB->CR1 |=0x0f;      // GPIO.0~.3为推挽输出
    GPIOB->CR2 |=0x0f;      // GPIO.0~.3输出速度最大为10MHZ
}


/*******************************
*函数名:HT_9x16_clr
*描 述:清屏函数
*参 数:
*返 回:
********************************/
void HT_9x16_clr(void)
{
    u8 i;       
    CS_9x16_L;        //di..       
    HT_9x16_Writer(0xa0,3);       
    HT_9x16_Writer(0x00<<1,7);       
    for(i=0;i<36;i++)       
    {       
        HT_9x16_Writer(0,8);       
    }
    CS_9x16_H;
}

/*******************************
*函数名:HT_9x16_Init
*描 述:HT_9x16初始化函数
*参 数:
*返 回:
********************************/
void HT_9x16_Init(void)
{       
    HT_9x16_Writer_CMD(SYS_DIS);        //关闭HT_9x16内部RC时钟   
    HT_9x16_Writer_CMD(COM_OPTION);        //选择HT_9x16工作模式,COM,NMOS模式  
    HT_9x16_Writer_CMD(RC_MASTER_MODE); //选择内部RC时钟
    HT_9x16_Writer_CMD(SYS_EN);                //打开HT_9x16内部RC时钟
    HT_9x16_Writer_CMD(PWM_DUTY);       //PWM亮度设置         
    HT_9x16_Writer_CMD(BLINK_OFF);      //关闭闪烁  
    //HT_9x16_Writer_CMD(SLAVE_MODE);        // 从模式
    //HT_9x16_Writer_CMD(BLINK_ON);       
    HT_9x16_Writer_CMD(LED_ON);                //打开LED显示
}

/************************************************************
*函数名:HT_9x16_Writer_AllDATA
*描 述:指定地址写入连续数据,cnt为写入数据个数,按8位算
*参 数:Addr,*p,cnt
*返 回:
*************************************************************/
void HT_9x16_Writer_AllDATA(u8 Addr,u8 *p,u8 cnt)//指定起始地址连续写入数据,cnt为写入数据个数,每个数据按位算
{       
    u8 i;       
    CS_9x16_L;       
    HT_9x16_Writer(0xa0,3);       
    HT_9x16_Writer(Addr<<1,7);       
    for(i=0;i<cnt;i++)       
    {               
        HT_9x16_Writer(*p,8);               
        p++;       
    }       
    CS_9x16_H;
}

/*******************************
*函数名:HT_9x16_Writer_DATA
*描 述:指定地址写入数据
*参 数:Addr,Data
*返 回:
********************************/
void HT_9x16_Writer_DATA(u8 Addr,u8 Data)
{
    CS_9x16_L;       
    HT_9x16_Writer(0xa0,3);                //命令码101       
    HT_9x16_Writer(Addr<<1,7);             //写入7位地址       
    HT_9x16_Writer(Data,4);                //写入4位数据       
    CS_9x16_H;
}

//*******************************
//*函数名:HT_9x16_Writer_CMD
//*描 述:发送命令函数
//*参 数:cmd
//*返 回:
//********************************/                                        `
void HT_9x16_Writer_CMD(u8 cmd)
{
    CS_9x16_L;       
    HT_9x16_Writer(0x80,3);              //命令码100       
    HT_9x16_Writer(cmd,9);               //命令数据,第9位为0       
    CS_9x16_H;
}

/********************************************
*
函数名:HT_9x16_Writer
*描 述:HT_9x16发送数据函数,高位在前 按位算
*参 数ata,cnt
*返 回:
********************************************/
void HT_9x16_Writer(u8 wdat, u8 cnt)
{
    u8 i=0;
    Datd_9x16_OUT;//输出

    for(i=0;i<cnt;i++)
    {
        WR_9x16_L;         //拉低
        if(wdat&0x80) Datd_9x16_H;
        else Datd_9x16_L;
        WR_9x16_H;//延时2微妙
        wdat<<=1;  //准备下一位数据的发送       
        //WR_9x16_H;
        //delay_us(2);//延时2微妙

    }       
}

void Show_char(void)
{

  *p=GPdd[0];

  //*p=zidong[0];
  HT_9x16_Writer_AllDATA(0,p,6);

}





友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。