MSP430数码管动态显示程序
//数码管显示 1234 2011,7,21
#include
/**************************
P4.0----data
P5.0----data_qian
P5.1----data_bai
P5.2----data_shi
P5.3----data_ge
****************************/
#define DATADIR P4DIR //方向控制寄存器
#define DATAOUT P4OUT //输出控制寄存器
#define WEIDIR P5DIR //方向控制寄存器
#define WEIOUT P5OUT //输出控制寄存器
#define uchar unsigned char
#define uint unsigned int
uchar segment[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67};
uint data=6789; //送给显示函数的要显示的变量
void delay() //延时。
{
unsigned char m,n;
for(m=0;m<30;m++)
for(n=0;n<20;n++);
}
display(data) //数码管控制
{
WEIOUT=0xFE; //控制显示段位,千
DATAOUT=segment[data/1000];
delay(); //延时,利用人眼的视觉延时达到显示
DATAOUT=0; //清屏
WEIOUT=0xff; //恢复原始状态
WEIOUT=0xFD;//百
DATAOUT=segment[data%1000/100];
delay();
DATAOUT=0;
WEIOUT=0xff;
WEIOUT=0xFB;//十
DATAOUT=segment[data%100/10];
delay();
DATAOUT=0;
WEIOUT=0xff;
WEIOUT=0xF7;//个
DATAOUT=segment[data%10];
delay();
DATAOUT=0;
WEIOUT=0xff;
}
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门狗
WEIDIR=0XFF; //设置寄存器方向,1为输出,0为输入。
WEIOUT=0X00; //段位初值为0
DATADIR=0xff;
DATAOUT=0x00;
while(1) //循环
display(data); //显示
}
1