4108|8

15

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

MSP430数码管显示的问题 [复制链接]

小弟最近在熟悉MSP430F149的时候利用学习板编了一个让八位数码管循环显示0-7数字的时候发现利用下载器下载程序进430之后,段码显示正常,但是位码一直不正常,并且每次给单片机上电的时候数码管显示的结果都不一样,程序运行结果每次都不一样,求助各位大佬帮我看看这是什么情况,多谢各位了!程序代码和学习板电路图如下:
#include "msp430x14x.h"

void delay( int i)
{
  while(i>0)
  {
    i--;
  }
}

int cnt;
int n;
int duanma[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
int weima[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

void main( void )
{
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;


//时基模块的时钟设置
//单片机上电时,MCLK主时钟的源默认选择为DCO提供.F1系列DCO默认800KHZ.
//ACLK辅助时钟默认为XT1,XT1一般接32768HZ晶体.
//SMCLK子时钟默认为DCO,同样是800KHZ.
//XT2需要人为开启,并要检测其开启是否成功.
BCSCTL1 &= ~(XT2OFF + XTS);   //启动XT2高速时钟模块
// BCSCTL3 |= XT2S3;
//刚才开启了XT2,需要一定时间XT2才进入稳定状态.所以需要等待并检测稳定状态.
do
{
  IFG1 &=~OFIFG;              //清OSCFault 标志
  for(n=0xff;n>0;n--);         //延时等待其开启稳定  
}
while((IFG1 & OFIFG) !=0);   //检查OSCFault标志位是否为0,若为0则表示XT2开启稳定.
                              //否则一直等下去...
BCSCTL2 |= SELM1;            //MCLK主时钟选XT2为时钟源.TX2输入不分频.
BCSCTL2 &= ~SELS;            //SMCLK选为DCO为时钟源.
//-----------------------------------------------



//-----------------初始化IO口
  P1DIR = 0xff; P1OUT = 0xff;
  P2DIR = 0xff; P2OUT = 0xff;
  P3DIR = 0xff; P3OUT = 0xff;
  P4DIR = 0xff; P4OUT = 0xff;
  P5DIR = 0xff; P5OUT = 0x5f;
  P6DIR = 0xff; P6OUT = 0xbf;

  cnt = 0;//------------------

  TACCTL0 = CCIE;
  CCR0 = 8000;
  TACTL = TASSEL_2 + MC_1;
  _EINT();
  while(1);
}

#pragma vector=TIMER0_A0_VECTOR
__interrupt void Timer_A (void)
{
  _DINT();
  while(cnt<8)
  {
    P4OUT = duanma[cnt];
    P6OUT |= BIT6;
    delay(10);
    P6OUT = 0x00;
    P4OUT = weima[cnt];
    P5OUT |= BIT5;
    delay(10);
    P5OUT = 0x00;

    delay(30000);
    delay(30000);
    delay(30000);
    delay(30000);
    delay(30000);
    delay(30000);
    delay(30000);
    delay(30000);
    delay(30000);
    delay(30000);
    delay(30000);
    delay(30000);
    delay(30000);  
    cnt++;
  }
   cnt = 0;
  _EINT();
}


TIM截图20181115103000.jpg (74.81 KB, 下载次数: 0)

TIM截图20181115103000.jpg

最新回复

所以说,单片机调试其实并不就是程序调试,还有硬件电路的调试  详情 回复 发表于 2018-12-7 18:43
 
点赞 关注(1)

回复
举报

3

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
通过74HC573连接的数码管段选和位选不应该连接到同一组IO口(PD0~PD7)--->P4
 
个人签名吾乃等闲之辈,从黄昏到黎明
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
tuago尤 发表于 2018-11-15 11:09
通过74HC573连接的数码管段选和位选不应该连接到同一组IO口(PD0~PD7)--->P4

多谢回复!但是这个硬件连接图是学习板上已经画好了的,所以我们使用的时候也没有办法对它进行修改,如果是自己画板子的话是可以考虑这样去试一试。在这个硬件基础上理论上通过P55和P66的控制理论上是可以实现上述功能的
 
 
 

回复

40

帖子

0

TA的资源

一粒金砂(初级)

4
 
不懂代码
 
个人签名导热材料www.jrftdz.com
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

5
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

6
 
已解决!问题出在学习板本身电路设计上!
由于学习板在设计电路的时候可能并未考虑到单片机引脚的带载能力,将单片机的引脚P55直接连接到上述74HC573移位寄存器上面,与此同时P55还连接到了如下图的一个8路总线收发器以及3.3V转5V的SN74LVC4245芯片上,导致单片机P55引脚输出的高电平电压仅为大概0.3V左右,在74HC573上无法实现正确的逻辑判断,因此导致了数码管移位出现问题!
get!学到了!
 
 
 

回复

19

帖子

0

TA的资源

一粒金砂(初级)

7
 
我就是过来看看啊
 
个人签名北京玻璃隔断www.bjtjblgd.com 法兰厂家www.zsfl888.com 丁基胶带www.djjd8.com 薄膜开关www.hbhksjdz.com
 
 

回复

2618

帖子

0

TA的资源

纯净的硅(高级)

8
 
跟着涨知识啦,不错的帖子啊
 
 
 

回复

6366

帖子

4917

TA的资源

版主

9
 
所以说,单片机调试其实并不就是程序调试,还有硬件电路的调试
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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