打印

数码管十位显示微弱,个位显示正常。是什么原因?

[复制链接]
1831|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
剑之士|  楼主 | 2016-7-12 17:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <msp430.h>
#define uchar unsigned char
#define uint unsigned int
uchar duan[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,
                      0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e};
uchar num=0,ge,shi;

void delay(uint x)
{
                uint y,z;
                for(y=x;y>0;y--)
                for(z=120;z>0;z--);
}

void main(void)
{

    WDTCTL = WDTHOLD + WDTPW ;
    P6DIR |= 0xff;
    P2DIR |= BIT4+BIT5;
    TA0CCTL0 = CCIE;                 /* Capture/compare interrupt enable */
    TA0CCR0  = 32768;
    TA0CTL=TASSEL_1+MC_1;
    _BIS_SR(GIE);
    while(1)
    {
            if(num==99)
                {
                        num=0;
                }
            ge=num%10;
            shi=num/10;




            P6OUT  =  duan[shi];
            P2OUT &=~ BIT4;
            P2OUT  |=  BIT5;
            delay(100);


            P6OUT   =   duan[ge];
            P2OUT  &=~  BIT5;
            P2OUT  |= BIT4;
            delay(100);



    }

}

#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A(void)
{
        num++;

}

相关帖子

沙发
joing1999| | 2016-7-12 18:15 | 只看该作者
电路问题吧。驱动力不够,你可以测一下两个电压看看有没有区别。

使用特权

评论回复
板凳
剑之士|  楼主 | 2016-7-12 18:32 | 只看该作者
joing1999 发表于 2016-7-12 18:15
电路问题吧。驱动力不够,你可以测一下两个电压看看有没有区别。

我用3.3v驱动 ,但是如果加5v都十位个位都同个位一起跳变

使用特权

评论回复
地板
剑之士|  楼主 | 2016-7-12 18:34 | 只看该作者
joing1999 发表于 2016-7-12 18:15
电路问题吧。驱动力不够,你可以测一下两个电压看看有没有区别。

用的msp430f5529       是程序有问题吗?

使用特权

评论回复
5
dirtwillfly| | 2016-7-12 18:40 | 只看该作者
剑之士 发表于 2016-7-12 18:34
用的msp430f5529       是程序有问题吗?

一般这类都是程序问题。在十位停留时间太短

使用特权

评论回复
6
剑之士|  楼主 | 2016-7-12 18:46 | 只看该作者
dirtwillfly 发表于 2016-7-12 18:40
一般这类都是程序问题。在十位停留时间太短

十位延长时间还是没有用啊。。。。。。。。。。

使用特权

评论回复
7
pkuzhx| | 2016-7-12 18:59 | 只看该作者
也可能是在程序初始化阶段有一些小问题。
网上找个其他程序试一试。

使用特权

评论回复
8
剑之士|  楼主 | 2016-7-12 19:04 | 只看该作者
pkuzhx 发表于 2016-7-12 18:59
也可能是在程序初始化阶段有一些小问题。
网上找个其他程序试一试。

网上没有430程序

使用特权

评论回复
9
pkuzhx| | 2016-7-12 19:08 | 只看该作者

好吧,但是数码管程序应该是通用的吧,改一下gpio的操作就可以了。
我之前操作段式LCD的时候,也有过类似问题,发现是初始化时有一个脚没有拉低。

使用特权

评论回复
10
剑之士|  楼主 | 2016-7-12 19:10 | 只看该作者
pkuzhx 发表于 2016-7-12 19:08
好吧,但是数码管程序应该是通用的吧,改一下gpio的操作就可以了。
我之前操作段式LCD的时候,也有过类似 ...

好的,谢谢,我试试吧

使用特权

评论回复
11
鹏鹏0830| | 2016-7-12 21:25 | 只看该作者
delay(100)拖的吧,为什么要延时个100ms。

使用特权

评论回复
12
ecoren| | 2016-7-13 08:27 | 只看该作者
多数是程序问题,着重查找十位点亮延时时间,

使用特权

评论回复
13
ecoren| | 2016-7-13 08:28 | 只看该作者
当你把程序中的十位和各位调换一下位置,你的十位就亮了,个位就按了,这样能证明是否是程序问题

使用特权

评论回复
14
xygyszb| | 2016-7-13 08:29 | 只看该作者
楼主看看驱动电路,是不是共阴极、共阳极搞反了?

使用特权

评论回复
15
数码小叶| | 2016-7-13 08:45 | 只看该作者
新手很容易犯的错误,刷新频率不一致,不是延时

使用特权

评论回复
16
study1234| | 2016-7-13 15:26 | 只看该作者
           P2OUT &=~ BIT4;
            P2OUT  |=  BIT5;

之间插入delay

使用特权

评论回复
17
剑之士|  楼主 | 2016-7-13 16:23 | 只看该作者
study1234 发表于 2016-7-13 15:26
P2OUT &=~ BIT4;
            P2OUT  |=  BIT5;

还是不行

使用特权

评论回复
18
剑之士|  楼主 | 2016-7-13 16:24 | 只看该作者
ecoren 发表于 2016-7-13 08:28
当你把程序中的十位和各位调换一下位置,你的十位就亮了,个位就按了,这样能证明是否是程序问题 ...

程序调过好多遍了,还是这样

使用特权

评论回复
19
51xlf| | 2016-7-13 16:35 | 只看该作者
是不是显示的时间过短?

使用特权

评论回复
20
51xlf| | 2016-7-13 16:38 | 只看该作者
还有io驱动有问题吗

使用特权

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

本版积分规则

3

主题

12

帖子

0

粉丝