工业控制 | 能源技术 | 汽车电子 | 通信网络 | 安防监控 | 智能电网 | 移动手持 | 无线技术 | 家用电器 | 数字广播 | 消费电子 | 应用软件 | 其他方案

电路设计->微机单片机电路图->单片机综合电路图->单片机笔记――数码管显示

单片机笔记――数码管显示

作者:dolphin时间:2012-10-31

用到单片机就不可避免要涉及人机交互,而最简单的显示就是使用数码管了。它可以显示0-9的数字和部分因为字母。

我一般使用的是七段数码管,它的脚位从顶横顺着数分别为,a,b,c,d,e,f中间一横为g而小数点为h,由这几个就可以构成显示不同符号的码表:abcdefgh

下面是数码管显示的小程序

//该程序是通过按键控制数码管开始或停止在0-9加1显示

void Delay(unsigned char count) //该延时子程序是12Mhz下的X*1ms延时
{
unsigned char j;

while(count-- != 0)
{
for(j=0;j72;j++);
}
}


char Keyhit(void)
{
P3=0xff; //P3口置高,在C51里这些默认定义的关键字都要大写
if((P3^0xff)!=0) //通过P3的值与上全1判断有无按键
Delay(10); //有按键则延时再判断,去抖动
if((P3^0xff)!=0)
return(1);
else
return(0);
}

void LedPrint(void)

{
unsigned char i;
P2 =0x0f;
while(i10)
{
P0=LedCode[i];
P2=0xfe;
Delay(800);
if(Keyhit())
{
P2 =0x0f;
break;
}
i++;
if(i==10) i=0;
}
}

void main(void)
{
unsigned int num=0;
while(1)
{
if(Keyhit())
{
num++;
num=num%2;
while(Keyhit());
}
if(num==1)
LedPrint();
}

}


关键词: 显示 数码 笔记 void if char

评论

技术专区