打印
[技术问答]

N76E003驱动TM1640显示停不住

[复制链接]
3087|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
175192387|  楼主 | 2017-12-24 18:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 175192387 于 2017-12-24 18:14 编辑

程序是以前STC15上用的,都没什么问题,移植过来就不行,断点显示的时候能显示全部,告诉运行就只显示一个数字 了,而且很暗。
uchar j; 
         
                start();
                send_data(writedatamode_z);                          //自动地址
                stop();
               
                start();
                send_data(startdata);                           //起始地址
                 for(j=0;j<13;j++)                                    //送16位数
                {
                         send_data(num[j]);
                        
                }  
                stop();


                start();
                send_data(display);                          //开显示
                stop();        

QQ图片20171224180935.jpg (454.84 KB )

QQ图片20171224180935.jpg

QQ图片20171224181250.jpg (233.2 KB )

QQ图片20171224181250.jpg

QQ图片20171224181255.jpg (190.12 KB )

断点打的位置

断点打的位置
沙发
175192387|  楼主 | 2017-12-24 18:06 | 只看该作者
/*命令说明*/                                        
#define writedatamode_z  0x40   // 采用自动地址加一方式写显示缓存
#define writedatamode_g  0x44   //采用地址固定模式写缓存
#define readkeymode  0x42       //  键盘扫描模式
#define        startdata  0xc0                 //起始地址
#define display   0x8c          //开启显示 亮度用后三位决定
#define closedis   0x80         //关显示

sbit SCLK=P0^7;
sbit DIO =P0^6;

uint code num[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
                       0x7f,0x6f,0x77,0x7C,0x58,0x5E,0x79,0x71};                                                                                                                                                                                                       
void start()                   //开始条件
{
          SCLK=1;
        DIO=1;
        DIO=0;
        SCLK=0;               
}

void send_data(uchar x)                  //送数据        低位先传
{
        uchar  i;
        for(i=0;i<8;i++)
        {
                SCLK=0;
                DIO=(bit)(x&0x01);
                SCLK=1;
                x>>=1;
        }
        SCLK=0;
}
void stop()                                         //结束条件
{
        SCLK=0;
        DIO=0;
        SCLK=1;
        DIO=1;
}

使用特权

评论回复
板凳
xinxianshi| | 2017-12-24 19:09 | 只看该作者
应该是延时出的问题,这个单片机的时钟速度可能跟你之前的是不同的。

使用特权

评论回复
地板
175192387|  楼主 | 2017-12-24 21:41 | 只看该作者
是哪里的延时,这个程序是没什么延时,时序感觉是没什么问题

使用特权

评论回复
5
huangcunxiake| | 2017-12-24 22:13 | 只看该作者
我用过MAX7219,也是按照时序,一次点亮。

使用特权

评论回复
6
zhuomuniao110| | 2017-12-25 12:40 | 只看该作者
如果是通信接口那种,应该不会影响这个显示啊?你这样,别修改,只让显示一个固定的值看看。

使用特权

评论回复
7
lewhile| | 2019-2-16 21:31 | 只看该作者
楼主怎么解决的,我遇到无法驱动的问题,

使用特权

评论回复
8
643757107| | 2019-2-16 23:24 | 只看该作者
什么是挺不住啊

使用特权

评论回复
9
zhang_2013| | 2019-2-18 23:25 | 只看该作者
看一下M7219手册,最高显示频率是多少?

使用特权

评论回复
10
whtwhtw| | 2019-2-19 09:12 | 只看该作者
数码管显示都有延时问题,不同平台要重新标定。循环显示频率太高的代价就是显示暗或者不显示

使用特权

评论回复
11
643757107| | 2019-2-19 11:53 | 只看该作者
两个时钟不同吧,看看时序设置是不是延时需要调整。

使用特权

评论回复
12
飞鼠智能| | 2023-6-6 10:10 | 只看该作者
楼主,求上面的程序解决地方,本人正好遇到一模一样的问题。

使用特权

评论回复
13
Bowclad| | 2023-6-8 18:26 | 只看该作者
是不延时太快了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

22

帖子

0

粉丝