Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1966451
  • 博文数量: 356
  • 博客积分: 8284
  • 博客等级: 中将
  • 技术积分: 4580
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-15 20:25
个人简介

天行健,君子以自强不息

文章分类

全部博文(356)

文章存档

2018年(1)

2016年(4)

2015年(13)

2014年(14)

2013年(2)

2012年(25)

2011年(43)

2010年(65)

2009年(189)

分类:

2010-03-09 09:38:19


//功能:让数码管动态扫描
#include "msp430x44x.h"
#define   SHUMA_PORT_DIR  P2DIR//数码管数据口
#define   SHUMA_PORT_OUT  P2OUT
#define   SHUMA_1_LOW     P3OUT&=~BIT4//开数码管的第一位P6.6口控制数码管的第一位
#define   SHUMA_1_HIGH    P3OUT|=BIT4//灭第一位数码管
#define   SHUMA_2_LOW     P3OUT&=~BIT5//开数码管的第二位
#define   SHUMA_2_HIGH    P3OUT|=BIT5//灭数码管的第二位
#define   SHUMA_3_LOW     P3OUT&=~BIT6//开数码管的第三位
#define   SHUMA_3_HIGH    P3OUT|=BIT6//灭数码管的第三位
#define   SHUMA_4_LOW     P3OUT&=~BIT7//开数码管的第四位
#define   SHUMA_4_HIGH    P3OUT|=BIT7//灭数码管的第四位

//void int_clk();//时钟初始化子程序声明
void delay_352us(unsigned int i);//352us延时程序声明
const unsigned char tabl1[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
                             // ;0  ,1   ,2   ,3  , 4,   5,   6    ,7   ,8  ,9 ,灭
//IO口初始化子程序
void int_shuma_io()
{
  SHUMA_PORT_DIR|=0XFF;//set P5 is out  设置控制数码管数据口的IO口为输出模式
  P3DIR|=BIT7+BIT4+BIT5+BIT6;
  P3DIR|=BIT3;//P3.0控制74HC573的OE,把这个口设置为输出
  P3OUT&=~BIT3;//使能74573,使得74573的输出随输入变化
}
//******************************************************
//352微秒延时程序
void delay_352us(unsigned int i)//352us延时程序,延时时间的计算在前面已经讲过
{
  unsigned char j;
 
  while(i--)
  {
   for(j=0;j<255;j++)
   { 
    _NOP();
    _NOP();
    _NOP();
    _NOP();  
    }
  }
void display(int z)
{
   //以下是数码管的动态扫描程序
   unsigned char DISPLAY1,DISPLAY2,DISPLAY3,DISPLAY4;
   DISPLAY1=z/1000;
   DISPLAY2=z%1000/100;
   DISPLAY3=z%100/10;
   DISPLAY4=z%10;
   SHUMA_PORT_OUT=tabl1[DISPLAY1];//求取BCD码对应的数码管段码,并送到控制数码管的数据扣
   SHUMA_1_LOW;//开第一位数码管
   delay_352us(2);//简单延时
   SHUMA_1_HIGH;//灭第一位数码管
   SHUMA_PORT_OUT=tabl1[DISPLAY2];//送数码管第二位显示的段码
   SHUMA_2_LOW;//开显示第二位数码管
   delay_352us(2);//延时
   SHUMA_2_HIGH;//灭第二位数码管,接下去重复1二
   SHUMA_PORT_OUT=tabl1[DISPLAY3];
   SHUMA_3_LOW;
   delay_352us(2);
   SHUMA_3_HIGH;
   SHUMA_PORT_OUT=tabl1[DISPLAY4];
   SHUMA_4_LOW;
   delay_352us(2);
   SHUMA_4_HIGH;
}
//*************************************
int main( void )
{
 
 
  WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer to prevent time out reset
  //int_clk();//初始化时钟
  int_shuma_io();//初始化数码管控制口
  while(1)
  {
    display(2345);
  } 
}
 
阅读(1118) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~