keil5实现动态数码管显示
一.尝试静态数码管显示
- 学习74h573用法
- 操作程序
二.动态数码管显示
- 3-8译码器学习
- 共阴共阳数码管分辨
- 程序编写
开始:
#include<reg52.h>
sbit displaya=P2^2;
sbit displayb=P2^3;
sbit displayc=P2^4;
typedef unsigned char u8;
typedef unsigned int u16;
void delay(u16 i)
{
while(i--);
}
void main()
{
u8 a[]={0x3f,0x06,0x5b ,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
displaya=0;/三个管脚为低电压,数码管最后一位启用
displayb=0;
displayc=0;
P0=a[0];
while(1);
}
while(1)作用
动态数码管
#include<reg52.h>
sbit displaya=P2^2;
sbit displayb=P2^3;
sbit displayc=P2^4;
typedef unsigned char u8;
typedef unsigned int u16;
void delay(u16 i)
{
while(i--);
}
void main()
{
u8 a[]={0x3f,0x06,0x5b ,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
u8 i;
while(1){
for(i=1;i<9;i++)
{
switch(i)
{
case(1):
displaya=0;displayb=0;displayc=0;break;
case(2):
displaya=1;displayb=0;displayc=0;break;
case(3):
displaya=0;displayb=1;displayc=0;break;
case(4):
displaya=1;displayb=1;displayc=0;break;
case(5):
displaya=0;displayb=0;displayc=1;break;
case(6):
displaya=1;displayb=0;displayc=1;break;
case(7):
displaya=0;displayb=1;displayc=1;break;
case(8):
displaya=1;displayb=1;displayc=1;break;
}
P0=a[i];
delay(100);
P0=0x00;
}
for(i=8;i>0;i--)
{
switch(i)
{
case(1):
displaya=0;displayb=0;displayc=0;break;
case(2):
displaya=1;displayb=0;displayc=0;break;
case(3):
displaya=0;displayb=1;displayc=0;break;
case(4):
displaya=1;displayb=1;displayc=0;break;
case(5):
displaya=0;displayb=0;displayc=1;break;
case(6):
displaya=1;displayb=0;displayc=1;break;
case(7):
displaya=0;displayb=1;displayc=1;break;
case(8):
displaya=1;displayb=1;displayc=1;break;
}
P0=a[i];
delay(100);
P0=0x00;
}
}
}