3509|2

69

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

小弟求助 [复制链接]

各位大神,我想用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
#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;
        }


此帖出自电子竞赛论坛

最新回复

我觉得你首先要找到问题的根本原因,否则别人帮你写了代码也没有意义。 你要弄清楚几点 1. 关于硬件,你是否知道数码管的显示原理 2. 关于你大脑里的思路,知道硬件原理后,你在大脑里要形成一个流程或者算法去实现这个功能。或者在纸上画个流程图、草图之类的。 3. 把你大脑里的想法变成代码。 从楼主位的代码来看,你从前两步就已经出了问题。  详情 回复 发表于 2017-1-16 20:43
点赞 关注
个人签名

More information,please add the weibo ID :_Tang辉,chat number :951141617

 
 

回复
举报

6040

帖子

205

TA的资源

版主

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

从楼主位的代码来看,你从前两步就已经出了问题。
此帖出自电子竞赛论坛

点评

嗯,谢谢。  详情 回复 发表于 2017-1-16 21:35
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(中级)

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

嗯,谢谢。
此帖出自电子竞赛论坛
个人签名

More information,please add the weibo ID :_Tang辉,chat number :951141617

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表