little_Monkey 发表于 2009-7-31 14:16:42

点阵新玩法!点阵专用驱动芯片HT1632C驱动成功,上传示例代码

HT1632C是合泰该模块采用HT1632C点阵专用芯片驱动,可以驱动32*8或者是24*16点阵,变通使用可以驱动32或48个数码管,无需MCU扫描,不占用MCU资源,16级亮度可调,节省IO的三线/四线接口,使用很方便。下面是我根据资料做的测试板,选择32*8模式驱动4个8*8点阵
http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_466096.jpg
正面

http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_466097.jpg
背面

http://cache.amobbs.com/bbs_upload782111/files_17/ourdev_466098.jpg
显示效果
原理图点击此处下载 ourdev_466099.pdf(文件大小:26K) (原文件名:HT1632C.pdf)
原理图说明:预留有ATMEGA8单片机,AVR USB电路,使用贴片mini USB座,蜂鸣器,18B20温度传感器接口,LED测光接口,红外接收头接口,三个独立按键,AD输入可测电源电压,即使板子上不接MCU也可由外部MCU驱动,可以作为一个单独的显示模块,可方便的做二次开发。
HT1632C手册点击此处下载 ourdev_466100.pdf(文件大小:239K) (原文件名:1632cv100.pdf)
GCC源码点击此处下载 ourdev_466101.rar(文件大小:7K) (原文件名:HT1632C测试程序.rar)
厂家资料下载:http://www.holtek.com.cn/china/docum/consumer/1632c.htm

ba1731 发表于 2009-7-31 15:23:32

广告位出租

little_Monkey 发表于 2009-7-31 19:52:40

光看不顶,是不是现在玩点阵过时了~./emotion/em004.gif./emotion/em004.gif

asianeast 发表于 2009-7-31 19:58:37

好东东 最近也在弄这个 有机会可以和LZ交流一下 嘿嘿 LZ多帮忙

psocfans 发表于 2009-7-31 22:59:04

搞一个来做电子钟不错

keil_c51 发表于 2009-8-1 00:48:46

成本肯定比595高

用595:控制器成本高一点,单元板成本低一点。
HT1632C:单元板成本高一点,控制器成本低一点。

背着扛着一般沉, 不过如果做的面积比较大,估计还是595合算。

little_Monkey 发表于 2009-8-1 01:33:53

HT1632C驱动点阵不需要三极管或MOS管只需要限流电阻就可以了,最多可以驱动16*24个点的点阵(1.5个汉字),而HT1632C的价格不到5元RMB(零售),占用3个IO。如果用595+138(或154)方案,驱动16*24的点阵则需要两个138(或一个154),3个595,16个三极管或MOS管,若干电阻(三极管基极限流,595输出接点阵限流),这几个IC和三极管批量价格也许也可以做到5元以内,但是电路复杂度增加,MCU负担增加,需要不停地扫描显示,占用MCU 4+3个IO,对系统要求也增加,如果需要做其他任务只有提高时钟。
    如果做广告牌需要显示更多的汉字,595方案不会增加IO口,但是显示汉字越多系统时钟就越高,否则就闪了。或者是在系统时钟不变的情况下分屏扫描。如果需要调节亮度程序会更复杂。
    如果使用HT1632C方案,4+3个IO通过154译码可以得到16个CS选通16个芯片,则可以显示的汉字个数为16*1.5=24个,而对MCU要求不高,普通51即可胜任,显示稳定,亮度可以16级调节。
    变通使用HT1632C可以驱动最多48个数码管,外围也仅仅需要24个电阻而已。
    如果是要驱动显示更多汉字的条屏如大屏幕显示的话一般使用FPGA了。个人认为HT1632C驱动点阵或者数码管是个不错的选择

shaoyidong 发表于 2009-8-1 07:49:02

mark

wxfhw 发表于 2009-8-1 08:14:23

记号

szxszx 发表于 2009-8-1 08:16:12

学习一下

hyz_avr 发表于 2009-8-1 09:03:07

【6楼】 little Monkey
如果是要驱动显示更多汉字的条屏如大屏幕显示的话一般使用FPGA了。


只是控制用FPGA而已..屏的驱动还是595

slowhand 发表于 2009-8-1 09:21:25

记号

rifjft 发表于 2009-8-1 10:21:10

看样子不错嘛,顶一个

af00 发表于 2009-8-1 11:31:26

不知可否连级使用?

little_Monkey 发表于 2009-8-1 13:18:47

可以通过选通CS来选通不同的芯片,这样可以只更新需要更新的现实而不需要刷新全部显示内容,手册上有详细的使用方法的啊

jmpxwh 发表于 2009-8-1 13:34:19

这个方法不错啊!到时候买一套玩玩!

ilovezeno 发表于 2009-8-1 15:45:47

这个可以单独控制每个led的16级亮度么

ilovezeno 发表于 2009-8-1 15:50:03

看了下似乎没办法实现单独控制阿,内存只有96*4bit.....

little_Monkey 发表于 2009-8-1 15:56:07

是整体控制的,包括闪烁也不能指定区域,如果可以就太爽了

hailiyidishui 发表于 2009-8-1 16:36:30

mark

dsq2007001 发表于 2009-8-1 16:59:42

不错

asianeast 发表于 2009-8-3 15:33:19

看过LZ的程序 大体的驱动能够了解 但还是有点不明白的地方
1 从右至左定义8*8点阵为0,1,2,3号点阵 为什么是从右向左的数 那怎样去映射到HT1632的内存中
2 对于字模软件的取模方式和取模走向不是很了解 那硬件就不知道怎样去连接到LED板上去 软件也不知道怎样去做字模 就迷茫了

little_Monkey 发表于 2009-8-3 16:24:52

因为我使用的点阵阴极是选列的(不知道叫共阴还是共阳^_^)按注释说明放置的时候,从做到右每个点阵的列选分别是COM0~COM7,SEG0在最右边,所以取模方式为横向取模,至于高位在前还是低位在前送数据的时候可以改变的,为了省事共用一个发送数据函数,即函数发送时是高位在前的,HT1632C数据是先送低位的,所以我们的高位实际上是送到了低位,即D7~D4送到了D0~D3。由于每个地址上的数据是4位的,送数据比较麻烦,所以程序里面都是直接指定地址连续送数据,开了一个32byte的显示缓冲区放整屏数据,数据处理好后把32字节连续送出就可以了。因为HT1632C会自己去刷新显示,所以程序里面是500ms才送一次数据,兼顾了冒号的闪烁,如果冒号不需要闪烁,在每次分钟改变的时候才送数据的^_^,
以下函数实现冒号闪烁
        if(temp_flag!=colon)                //500ms显示一次
                {
                        temp_flag=colon;
                        if(temp_flag)
                                {
                                        for(i=0;i<8;i++)temp=tab;
                                        for(i=0;i<8;i++)temp=(tab>>1);
                                        for(i=0;i<8;i++)temp=(tab<<1);
                                        for(i=0;i<8;i++)temp=tab;
                                }
                        else
                                {
                                        for(i=0;i<8;i++)temp=tab;
                                        for(i=0;i<8;i++)temp=(tab>>1)|(((0x66<<i)&0x80));
                                        for(i=0;i<8;i++)temp=tab<<1|(((0x66>>i)&0x01));
                                        for(i=0;i<8;i++)temp=tab;
                                }
实际测试,电压5V时,最低亮度下显示00:00时电流26.5mA,最高亮度下为310mA,M8时钟为内部1M。实际上我一直调到最低亮度,晚上一直嫌它太亮了,而白天也可以看得很清楚的^o^

little_Monkey 发表于 2009-8-3 16:27:59

今天刚写了上移下移函数,以下函数替换连续发送数据函数即可,不过由于间隔只有50ms显得太快了,呵呵~
/*                        HT1632C_clr();                                //从上往下显示
                        for(i=0;i<8;i++)
                                {
                                        for(j=0;j<4;j++)
                                                HT1632C_Writer_DATA(0x10*j+2*i,temp);
                                        _delay_ms(50);
                                }*/
//                        for(i=0;i<32;i++)temp=tab;
/*                        HT1632C_clr();                                //从下往上显示
                        for(i=0;i<8;i++)
                                {
                                        for(j=0;j<4;j++)
                                                HT1632C_Writer_DATA(0x10*j+2*(7-i),temp);
                                        _delay_ms(500);
                                }*/

99186329 发表于 2009-8-5 19:13:16

好贴,好芯片,找了好久,终于被我找到了,http://item.taobao.com/auction/item_detail.jhtml?item_id=6ff10b10a71c3410e092e8131fce1d54&x_id=0db2,买了几片,试了不错.

giantwjt88 发表于 2009-8-5 19:55:24

正好需要,感谢。。。

dds007 发表于 2009-8-5 21:16:39

好东东, 最近也在弄这个,谢谢

asianeast 发表于 2009-8-6 20:40:32

看了LZ的介绍 我的理解是
四块LED屏 按注释说明放置 也就是那个显示03:03的方向 从右向左分别是0 1 2 3
第0块点阵 从左向右的列选分别是COM0~COM7 从上到下为SEG0~SEG7
第1块点阵 从左向右的列选分别是COM0~COM7 从上到下为SEG8~SEG15
第2块点阵 从左向右的列选分别是COM0~COM7 从上到下为SEG16~SEG23
第3块点阵 从左向右的列选分别是COM0~COM7 从上到下为SEG24~SEG31
不知道是不是这样 因为这关系到硬件的连接 所以跟楼主确认下

asianeast 发表于 2009-8-6 20:50:35

LZ的闪烁程序如果我采用从左向右分别是0 1 2 3的话 就应该这样写 是不是
if(temp_flag!=colon) //500ms显示一次
{
temp_flag=colon;
if(temp_flag)
{
for(i=0;i<8;i++)temp=tab;
for(i=0;i<8;i++)temp=(tab<<1);
for(i=0;i<8;i++)temp=(tab>>1);
for(i=0;i<8;i++)temp=tab;
}
else
{
for(i=0;i<8;i++)temp=tab;
for(i=0;i<8;i++)temp=(tab<<1)|(((0x66>>i)&0x01));
for(i=0;i<8;i++)temp=tab>>1|(((0x66<<i)&0x80));
for(i=0;i<8;i++)temp=tab;
}
LZ为什么要设计成从右向左为0 1 2 3 平常的想法都是从左向右的所以在刚刚开始的时候就很理解不清楚 后来等LZ讲解了字模字模以后就清楚多了 说声多谢 呵呵 本来我是一点都不懂的 看了LZ的东西才有点不迷糊了哈哈
LZ有没有什么联系方式可以留一下 我的qq是40381386 因为最近都在弄这个 希望能向楼主多请教请教

wanyou132 发表于 2009-8-6 21:01:13

MARK

asianeast 发表于 2009-8-6 21:22:16

LZ上面的上移下移函数 我的理解是从上到下一行行的显示出来 不是那种推箱子一样的推的过程
根据楼主的程序 弄了一个从上到下推出来 一直推下去 直到看不见的程序
for( i = 0 ; i < 8 ; i++ )
{
    for( j = i ; j >= 0 ; j-- )
            for( k = 0 ; k < 4 ; k++ )
          HT1632C_Writer_DATA( 0x10 * k + 2 * j , temp );
    _delay_ms( 50 );
}
for( i = 1 ; i < 8 ; i++ )
{
    for( m = 0 ; m < i ; m++ )
            for( k = 0 ; k < 4 ; k++ )
          HT1632C_Writer_DATA( 0x10 * k + 2 * m , 0x00 );
    for( j = m ; j < 8 ; j++ )
            for( k = 0 ; k < 4 ; k++ )
          HT1632C_Writer_DATA( 0x10 * k + 2 * j , temp );
    _delay_ms( 50 );
}
HT1632C_clr();

不知道对不对请多指点指点 另外LZ如果把COM口设置成纵向的话 有没有左移和右移的程序 还有几块HZ1632级联的程序
能否分享下 呵呵 刚刚才接触这个片子 所以拜托大侠了哈哈

asianeast 发表于 2009-8-6 21:31:12

LZ的字体用的是哪种 我用5*8的所有字体都用过 都没有LZ的那样好的效果 hoho

little_Monkey 发表于 2009-8-6 23:21:01

说实话,推箱子那样慢慢出来再一行行消失的我在写,呵呵,有时候人有点懒总不想写,呵呵,如果COM选行的当然好了,左移右移就太简单了!可是我买的点阵不是这样的所以没办法就这样用了,这样接法就是上下移动很方便,呵呵~
我用的字体是6*8的,左右各空一列,我这里还有几十块空板,有兴趣一起玩玩,还想写个根据环境光调节亮度的,

eagle2006 发表于 2009-8-7 11:15:42

顶,正准备搞32*64的点阵

little_Monkey 发表于 2009-8-7 11:31:20

多片级联选通不同的CS就行了,多余3片用译码器会省IO ,呵呵~~

yeyu1234 发表于 2009-8-18 22:16:25

感觉这个芯片如果驱动列是正  行是负的点阵就好了  对于双色共阳点阵 使用这个芯片 总感觉有点别扭 

ylei12 发表于 2009-8-30 17:12:03

留底

zchenj 发表于 2009-8-30 18:06:58

有点意思

cxj869 发表于 2009-8-30 21:01:43

mark

erlengzi 发表于 2009-8-30 21:32:41

mark

deiwgah 发表于 2009-8-30 21:53:46

不错的东西

lucky_girl 发表于 2009-8-31 13:07:50

好东西值得用

lichangan 发表于 2009-8-31 13:25:47

记号

ilikemcu 发表于 2009-8-31 14:37:09

做小的笔段式显示,比如7位8段的数码管,用天微的芯片,很多不到1¥的价格,比任何分立器件方便便宜。

liangyaozhan 发表于 2009-8-31 16:43:06

mark 2.

pc_based 发表于 2009-9-6 07:57:41

mark

jpjavr 发表于 2009-11-17 15:14:21

mark

lucky_girl 发表于 2009-11-17 21:26:43

up

dklcmc 发表于 2009-11-17 21:40:57

不错

whuctx 发表于 2009-12-4 12:47:09

多片级联效果不好说,如果是N片级联的话,是不是片选信号的走线需要走N*L(点阵的长度),好像不可取!

little_Monkey 发表于 2009-12-4 13:31:02

级联都会有LS说的问题,即使是用595的方式,OE走线也要走那么长的

zbjzxc 发表于 2009-12-4 21:34:24

记号~~

foxsports 发表于 2009-12-5 08:08:20

下载看看

ajoe 发表于 2009-12-8 13:48:25

记号

duxingkei 发表于 2010-1-7 19:34:42

记号
HT1632C

cdyywz 发表于 2010-1-9 13:40:13

MARK

longwu03272009 发表于 2010-1-25 17:04:53

mark
支持楼主 在下新人 刚买了个8*8点阵回家玩~研究过后再来拜访!

yunqian09 发表于 2010-1-25 17:35:09

几记号,能驱动的点阵太少点了吧,感觉前景不是很好

HT1632C 发表于 2010-2-1 02:31:45

http://cache.amobbs.com/bbs_upload782111/files_25/ourdev_531329.jpg
(原文件名:32.jpg)

lv998127 发表于 2010-2-1 08:12:45

ding

jimixiaozi 发表于 2010-2-22 23:52:40

mark一下

khijfv 发表于 2010-2-23 09:30:32

MARK

csformat 发表于 2010-2-23 16:19:14

用MAX7219更贵~~~~

470036398 发表于 2010-2-24 13:23:40

做个记号

chrise 发表于 2010-3-17 16:46:17

ding

XQGG 发表于 2010-3-17 17:22:34

XX哈哈

mick 发表于 2010-6-11 17:17:12

UP,还有板子送不

ITOP 发表于 2010-6-11 17:28:47

MARK!!

lbing2002 发表于 2010-7-26 11:37:35

mark下,谢谢

duxingkei 发表于 2010-8-24 17:05:51

mark

ljt8015 发表于 2010-8-24 18:37:10

mark!~

fei99 发表于 2010-10-8 10:02:50

谢谢,楼主。顶起来!

xstt 发表于 2010-10-8 16:32:03

mark

danielmi 发表于 2010-10-8 22:42:56

记号,这个只能点亮8*32的点阵吗,如果要点亮更多的呢??

qinshi1208 发表于 2010-11-5 11:59:36

mark

yanwuxu 发表于 2010-12-15 10:41:17

回复【75楼】danielmi 俊俊
记号,这个只能点亮8*32的点阵吗,如果要点亮更多的呢??
-----------------------------------------------------------------------

多用几片

jetimchen 发表于 2011-6-23 16:03:24

MARK

marshallemon 发表于 2011-6-23 16:50:53

我的和LZ的一样,这个家伙有嗡嗡的噪声,听的很是难受,不知道怎么解决?

xushuqing88 发表于 2011-6-23 17:26:06

芯片会有噪声?奇怪了,没有发现啊。

shizhijian 发表于 2011-11-15 14:20:06

MARK

shizhijian 发表于 2011-11-15 14:29:49

回复【79楼】marshallemon
-----------------------------------------------------------------------

我用PC机供电时也有那个噪声,当用小5V变压器给它供电时没有,估计是滤波问题

hanlinsong 发表于 2012-2-18 11:16:53

谢谢楼主分享资料,学习中

onlylgb0 发表于 2012-2-18 20:36:41

mark

charlie2008 发表于 2012-2-20 13:06:40

mark!

kbgyzp 发表于 2012-6-21 17:08:48

本帖最后由 kbgyzp 于 2012-6-21 17:10 编辑

好奇怪啊,用手机回复的在电脑上一看内容是空白的

terencechang 发表于 2012-6-21 17:11:48

mark markmarkmark

kbgyzp 发表于 2012-6-21 17:18:08

我用这个芯片怎么初始化完就全显了,还没送显呢啊,而且大循环中的定时刷屏操作对它不管用。感觉初始化完ht1632c就死了,调试一天也没解决,郁闷。
他的nmos和pmos选项是设定共阴和共阳的吧,我都试了,这两个选项设定了其中一个,对应是全亮,设定另一个对应的是全灭,可是后边的刷屏更新显存根本不管用。我以前用过ht1623液晶的驱动芯片,这两个芯片的操作基本一
,我也试过楼主的驱动代码,应该不是软件的问题,也看过楼主的接线,但就是调不通。暂时没招了




是不是没加去耦电容的缘故呢?不过我看很多ht1632c的电路都没有加的,人家的就没事。

kakarotto 发表于 2012-7-21 17:28:58

不错。好哦东西

Tliang 发表于 2012-7-22 09:48:09

HT1632C中文资料有没有?

keshipt 发表于 2012-8-24 22:25:54

有空试试

michrome 发表于 2014-5-13 16:41:36

不知小猴子能不能看到这个回复,论坛不然我加好友,也无法发私信,只好发在这里了。
我用10片ht1632c级联(2416方式)做成的大屏 在滚动显示汉字的时候,会偶尔有汉字(或某个汉字的某一列)上下抖动一下。 不明原因。。求破

zhanglang660 发表于 2014-10-15 09:45:39

michrome 发表于 2014-5-13 16:41
不知小猴子能不能看到这个回复,论坛不然我加好友,也无法发私信,只好发在这里了。
我用10片ht1632c级联( ...

我也在调试点阵,24*16的,3片HT1632,但现在写一个数据,下面三个点阵上显示三列,不知道是不是点阵连接有问题,求经验

michrome 发表于 2014-10-15 10:56:29

zhanglang660 发表于 2014-10-15 09:45
我也在调试点阵,24*16的,3片HT1632,但现在写一个数据,下面三个点阵上显示三列,不知道是不是点阵连接 ...

我的已经没有问题了. 原因级联时 把时钟外部输入时钟也连在一起了.断开就好了

zhanglang660 发表于 2014-10-15 13:55:34

michrome 发表于 2014-10-15 10:56
我的已经没有问题了. 原因级联时 把时钟外部输入时钟也连在一起了.断开就好了 ...

时钟是不是应该级联在一块呢,都使用自己内部的时钟,一块设置为Master,其余的设置为Slave,我看芯片手册上是这么连接的,我目前设置的也是这样连接的!上午的问题查出来是点阵行列信号搞混了

zhanglang660 发表于 2014-10-15 16:03:03

michrome 发表于 2014-10-15 10:56
我的已经没有问题了. 原因级联时 把时钟外部输入时钟也连在一起了.断开就好了 ...

加下您的Q吧,我的564437945

michrome 发表于 2014-10-15 16:48:13

#define SYS_DIS         0x00 //关闭系统震荡
#define SYS_EN          0x01 //打开系统震荡
#define LED_OFF         0x02 //关闭LED显示
#define LED_ON          0x03 //打开LED显示
#define BLINK_OFF       0x08 //关闭闪烁
#define BLINK_ON      0x09 //打开闪烁
#define SLAVE_MODE      0x10 //从模式
#define RC_MASTER_MODE0x18 //内部RC时钟
#define COM_OPTION      0x24 //24*16COM,NMOS。
#define PWM_DUTY      0xA5 //PWM亮度控制 A0->AF对应最暗->最亮

只并联 wr rd data osc和sync悬空

zhangtao08 发表于 2014-12-8 20:00:18

有用,做个记号。驱动能32或48个数码管。顺便问一下有没有能驱动24个数码管而且带按键扫描的?

lazyboyp 发表于 2015-4-13 20:49:31

有用,正在搞LED点阵,谢谢

lazyboyp 发表于 2015-5-5 16:37:42

本帖最后由 lazyboyp 于 2015-5-5 16:46 编辑

请教下楼主,亮度调节更亮后,怎么显示就不稳定了

joiway 发表于 2016-8-11 17:51:46

标记一下。。。。
页: [1] 2
查看完整版本: 点阵新玩法!点阵专用驱动芯片HT1632C驱动成功,上传示例代码