社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 885|回复: 2

[求助] 小弟求助

[复制链接]

95

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-1-16 19:13:16 | 显示全部楼层 |阅读模式
各位大神,我想用MSP430F5529驱动四位的数码管,但是在进位的代码上有点卡壳,个位正常,打开其他位的就会出现和个位同步计时的效果。


/*设计项目:
设计时间:
设计人员:
软件描述:
硬件描述:
* a:P6.1
* b:P6.0
* c:P3.5
* d:P3.3
* e:P3.2
* f:P6.3
* g:P6.4
* h:P3.6
* 第一个数码管         P1.2
* 第二个数码管         P1.3
* 第三个数码管         P1.4
* 第四个数码管         P1.5
* 项目说明:
*/
#include <msp430.h>
#include"intrinsics.h"

/*
* main.c

*//***********函数使用前声明************/
void GPIO_init();
void display();
void zero();
void one();
void two();
void three();
void four();
void five();
void six();
void seven();
void eight();
void nine();
unsigned int ge,shi,bai,qian;
int main(void) {
    WDTCTL = WDTPW | WDTHOLD;        // Stop watchdog timer
        GPIO_init();
        display();
        return 0;
}
void GPIO_init()
{
        P1DIR = BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7;
        P1OUT = 0X00;
        P3DIR = BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7;
        P3OUT = 0X00;
        P6DIR = BIT0+BIT1+BIT2+BIT3+BIT4+BIT5+BIT6+BIT7;
        P6OUT = 0X00;
        P1OUT |= (BIT2+BIT3+BIT4+BIT5);   //关闭位选??
        }

void display()
{
        unsigned int ge,shi,bai,qian;
        {
        for(qian=0;qian<10;qian++)
         {
                for(bai=0;bai<10;bai++)
         {
                        for(shi=0;shi<10;shi++)
                        {
                                for(ge=0;ge<1;ge++)

{
P1OUT &= ~BIT5;   //打开个位位选信号
zero();
_delay_cycles(500000);
one();
_delay_cycles(500000);
two();
_delay_cycles(500000);
three();
_delay_cycles(500000);
four();
_delay_cycles(500000);
five();
_delay_cycles(500000);
six();
_delay_cycles(500000);
seven();
_delay_cycles(500000);
eight();
_delay_cycles(500000);
nine();
_delay_cycles(500000);
}
       
//P1OUT |= BIT4+BIT3+BIT2;//关闭其余位位选信号
         }
       }
         }
        }
}
void zero()
{
        P3OUT = BIT2+BIT3+BIT5;   //a,b,c,d,e,f
        P6OUT = BIT0+BIT1+BIT3;
}
void one()
{
        P6OUT = BIT0;
        P3OUT = BIT5;
}
void two()
{
        P6OUT = BIT0+BIT1+BIT4;
    P3OUT = BIT2+BIT3;
}
void three()
{
        P6OUT = BIT0+BIT1+BIT4;
        P3OUT = BIT5+BIT3;
        }
void four()
{
        P6OUT = BIT0+BIT3+BIT4;
    P3OUT = BIT5;
        }
void five()
{
        P6OUT = BIT3+BIT1+BIT4;
        P3OUT = BIT5+BIT3;
        }
void six()
{
        P6OUT = BIT3+BIT4;
        P3OUT = BIT2+BIT5+BIT3;
        }
void seven()
{
        P6OUT = BIT0+BIT1;
        P3OUT = BIT5;
        }
void eight()
{
        P6OUT = BIT0+BIT1+BIT3+BIT4;
    P3OUT = BIT2+BIT3+BIT5;
        }
void nine()
{
        P6OUT = BIT0+BIT1+BIT3+BIT4;
        P3OUT = BIT5;
        }


此帖出自电子竞赛论坛
更多信息请关注微博:晴天reg


回复

使用道具 举报

5236

TA的帖子

82

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-1-16 20:43:04 | 显示全部楼层
我觉得你首先要找到问题的根本原因,否则别人帮你写了代码也没有意义。
你要弄清楚几点
1. 关于硬件,你是否知道数码管的显示原理
2. 关于你大脑里的思路,知道硬件原理后,你在大脑里要形成一个流程或者算法去实现这个功能。或者在纸上画个流程图、草图之类的。
3. 把你大脑里的想法变成代码。

从楼主位的代码来看,你从前两步就已经出了问题。

点评

嗯,谢谢。  详情 回复 发表于 2017-1-16 21:35
EEWORLD开发板置换群:309018200,——电工们免费装β的天堂,商家勿入!加群暗号:喵
————————————————————————
少开箱,少点灯,少搭开发环境,如果你只会这些,对不起,我不认识你


回复

使用道具 举报

95

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2017-1-16 21:35:06 | 显示全部楼层
lcofjp 发表于 2017-1-16 20:43
我觉得你首先要找到问题的根本原因,否则别人帮你写了代码也没有意义。
你要弄清楚几点
1. 关于硬件,你 ...

嗯,谢谢。
更多信息请关注微博:晴天reg


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2018-2-25 06:00 , Processed in 0.097888 second(s), 16 queries , Redis On.

快速回复 返回顶部 返回列表