/***********************共阳极 4 位 8 段数码管**************************************
P1 八个端口(P10,P11,P12,P13,P14,P15,P16,P17)分别接数码管 a,b,c,d,e,f,g,h 端
P2 四个端口(P20,P21,P22,P23)分别接数码管共阳端 1,2,3,4************************
*********************************************************************************/
一、静态显示
/***本程序的功能是使四位共阳极数码管实现 0000 并逐渐增加至 9999***/
#include "io430.h"
#define uchar unsigned char
uchar led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//记录显示位数的全局变量,显示 0~9
void delay(int n)
{
int i=0;
for( i=0;i<250*n;i++);
}
int main( void )
{
WDTCTL = WDTPW + WDTHOLD; //禁止看门狗计数
P1DIR = 0xff; //配置 p1 所有引脚为输出状态
P2DIR = 0xff; //配置 P2 低四位引脚为输出状态
P1OUT = 0x00; //设置 P1、P2 初值
P2OUT = 0x00;
int a=0,b=0,c=0,d=0,e=0;
P1OUT=led[0];
while(1) //函数功能:使四位数码管每一位增一计数,增到 10 时,向前一位进一
{
if(e==10) {e=0,a=0,b=0,c=0,d=0;} //增加到 9999 时清零
P2OUT=0x08;
if(a==10) {b++,a=0;} //a 计数到十时,个位加一
P1OUT=led[b];
delay(1);
P2OUT=0x04;
if(b==10){c++,b=0;} //个位加到十时,十位加一
P1OUT=led[c];
delay(1);
P2OUT=0x02;
if(c==10){d++,c=0;} //十位加到十时,百位加一
P1OUT=led[d];
delay(1);
P2OUT=0x01;
if(d==10){e++,d=0;} //百位加到十时,千位加一
P1OUT=led[e];
评论1
最新资源