因仑“3+1”工程特种兵精英论坛

标题: 分享我写的数码管动态扫描 [打印本页]

作者: SDC158477392    时间: 2014-8-8 09:48
标题: 分享我写的数码管动态扫描
本帖最后由 SDC158477392 于 2014-8-8 11:07 编辑

欢迎高手给出更精简,更可靠的代码,谢谢。

/*******************************************************
*   程序功能:数码管动态显示01234567
*   硬件说明:使用MSP430F149,P4口接段码,P5口接位码。
*   实验现象:数码管显示01234567
*        日    期 : 2014/8/8
*        作    者 : 舒代超
*******************************************************/
#include "msp430x14x.h"
#define uint unsigned int
#define uchar unsigned char

uchar  table_duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};        //数码管0~9显示数字
uchar  table_wei[] ={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};                        //数码管位码
static uchar j=0;       //显示变量
/*******************************************
函数名称:display(uchar x)
功    能:数码管显示函数
入口参 数:x
返回值  :无
********************************************/  
void display(uchar x)
  {
    P4OUT=table_duan[x];        //显示段码
    P5OUT=table_wei[x];         //显示位码
  }
/********************主函数********************/
void main( void )
  {
    P4DIR=0XFF;                 //设置P4口IO方向为输出
    P5DIR=0XFF;                 //设置P5口IO方向为输出
    WDTCTL=WDT_ADLY_1_9;        // 设置内部看门狗工作在定时器模式,1.9ms中断一次
    IE1|=WDTIE;                 // 使能看门狗中断
    _BIS_SR(LPM0_bits+GIE);     //CPU进入LPM3低功耗模式,同时打开全局中断  
  }
/*******************************************
函数名称:watchdog_timer
功    能:看门狗中断服务函数,在这里输出数码管的
          段选和位选信号
参    数:无
返回值  :无
********************************************/  
#pragma vector=WDT_VECTOR
  __interrupt void watchdog_timer(void)
    {
      display(j);//调用显示函数
      j++;//显示加1
      if(j>7)j=0;
    }


作者: 还你一世界    时间: 2014-8-8 09:51
太棒了,就需要这个!
作者: lucky80204    时间: 2014-8-8 09:52
GOOD I NEED IT  THANK YOU
作者: hxh    时间: 2014-8-8 12:29
做出来了,{:soso_e179:}
作者: 张衍波    时间: 2014-8-8 13:40
写的真心不错,,要的就是规范




欢迎光临 因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4