导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→msp430应用----数码管程序[fengjian99]

 *第43080篇: msp430应用----数码管程序

  
楼 主:fengjian99 2009年5月15日16:40
 msp430应用----数码管程序
#include 
unsigned char  table[]={0xC0,0xF9,0xA4,0xB0,0x99,
                            0x92,0x82,0xF8,0x80,0x90};
unsigned char min;
unsigned char sec;
unsigned char hour;
void delay1ms()
{
unsigned char i;
for(i=124;i>  0;i--);  //延时124*8+10=1002us
}


void delay1  (void)
{
    unsigned int tmp;
    
    for(tmp = 12000;tmp >   0;tmp--);
}
void LED_display( )       //显示
{
  
  
         P5OUT=0x01;                  //51.0=0,选通第一位
  P1OUT=table[hour / 10];     //显示分钟的十位
  delay1ms();
  P1OUT =0xff;                 //消隐
         
          P5OUT=0x02;                  //51.0=0,选通第一位
  P1OUT=table[hour %10];     //显示分钟的十位
  delay1ms();
  P1OUT =0xff; 
         
  P5OUT=0x04;                  //51.0=0,选通第一位
  P1OUT=0xbf;              //显示分钟的十位
  delay1ms();
  P1OUT =0xff;                 //消隐
         
          P5OUT=0x08;                  //51.0=0,选通第一位
  P1OUT=table[min /10];     //显示分钟的十位
  delay1ms();
  P1OUT =0xff;  
         
          P5OUT=0x10;                  //51.0=0,选通第一位
  P1OUT=table[min %10];     //显示分钟的十位
  delay1ms();
  P1OUT =0xff;  
         
          P5OUT=0x20;                  //51.0=0,选通第一位
  P1OUT=0xbf;     //显示分钟的十位
  delay1ms();
  P1OUT =0xff;  
         
          P5OUT=0x40;                  //51.0=0,选通第一位
  P1OUT=table[sec /10];     //显示分钟的十位
  delay1ms();
   P1OUT =0xff;                   //消隐
         
          P5OUT=0x80;                  //51.0=0,选通第一位
  P1OUT=table[sec % 10];     //显示分钟的十位
  delay1ms();
   P1OUT =0xff;          //消隐
         
}    

#pragma vector = WDT_VECTOR
__interrupt void watchdog_timer(void)
{    
  sec ++;
  if (sec==60)
  {
     sec="0";
     min++;
     if (min==60)
     {
       min="0";
       hour++;
       if (hour==13)
         hour="1";
     }
  }
     
}

#pragma vector="PORT2"_VECTOR
__interrupt  void Port2 (void)

{
if ((P2IFG&BIT0)==BIT0)
  {
     delay1 ();
     if ((P2IFG&BIT0)==BIT0)
     {
       while((P2IN&BIT0) ==BIT0 ) ;      //等待按键放开
   sec ++ ;
   if (sec==60)
     sec="0";
     }
   P2IFG&=~BIT0;
    
  }
else  if ((P2IFG&BIT1)==BIT1)
  {
   
   min ++ ;
    if (min == 60)
     min = 0;
    
   P2IFG&=~BIT1;
  }

else  if ((P2IFG&BIT2)==BIT2)
  {
    
     delay1 ();
     if ((P2IFG&BIT2)==BIT2)
     {
       while((P2IN&BIT2) ==BIT2 ) ;      //等待按键放开
     hour ++ ;
    if (hour == 13)
     hour = 1;
     }
   P2IFG&=~BIT2;
  }

else  if ((P2IFG&BIT3)==BIT3)
  {
     delay1 ();
     if ((P2IFG&BIT3)==BIT3)
     {
       while((P2IN&BIT3) ==BIT3 ) ;      //等待按键放开
   sec = 0;
   min = 0;
   hour = 0;
     }
   P2IFG&=~BIT3;
  }
}
void main ()
{
    WDTCTL = WDTPW + WDTHOLD;   //关闭看门狗
    P1DIR = 0xff;
    P5DIR = 0xff;
    P1OUT = 0xff;
    P5OUT =0;
     P2IES = 0x0f;               // P1.0~P1.3选择下降沿中断
   P2IE = 0x0f;                // 打开中断使能             
               

     WDTCTL = WDT_ADLY_1000 ;  
       IE1 |= WDTIE; 
     _EINT();
     
  while (1)
    {   
    LED_display( );
    }
}  


msp430----数码管程序 
 
 
msp430----数模转换程序 
 
 
msp430----模数转换程序 
 
 
msp430----温度测量12232显示程序 
 


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:用于机房监控的傻瓜型的串口转以太网模块neport和nechip

[下一篇主题]:单片机编程----数码管温度测量proteus程序