#include<reg52.h>
unsigned char code SEG_code[18] =
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,
0xbf,0x7f}; //定义共阳数码管段码内容:0~F,.,—
void Delay(unsigned int t) //延时
{
while(t--);
while(t--);
}
void Select_HC138(unsigned char n)
{
switch(n)
{
case 5:
P2 = (P2 & 0x1f) | 0xa0; //控制继电器和蜂鸣器
break;
case 6:
P2 = (P2 & 0x1f) | 0xc0; //控制数码管的位置
break;
case 7:
P2 = (P2 & 0x1f) | 0xe0; //控制数码管的值
break;
}
}
void Show_tube(unsigned char position,unsigned char value)
{
Select_HC138(6);
P0 = 0x01 << position;
Select_HC138(7);
P0 = value;
}
void Static_display()
{
unsigned char i,j;
for(i=0;i<8;i++)
{
for(j=0;j<16;j++)
{
Show_tube(i,SEG_code[j]);
Delay(60000);
Delay(60000);
}
}
for(i=0;i<16;i++)
{
Select_HC138(6);
P0 = 0xff;
Select_HC138(7);
P0 = SEG_code[i];
Delay(60000);
Delay(60000);
}
}
void main()
{
Select_HC138(5);
P0 = 0x00; //关闭蜂鸣器和继电器
while(1)
{
Static_display();
}
}
蓝桥杯单片机CT107D_02_数码管的静态显示
最新推荐文章于 2022-12-29 19:08:32 发布