P0端口驱动共阳极数码管循环显示0-9

1.实验效果

在这里插入图片描述

2.数码管

在这里插入图片描述
在这里插入图片描述

一个数码管包含七段发光二极管,通过控制每段二极管的亮灭,继而显示出不同的数字。数码管分为共阴极数码管和共阳极数码管,共阴极就是7个发光二极管的阴极连在一起,阳极为高电平时点亮,共阳极数码管是阳极连在一起,另一端的电平控制各段二极管的亮、熄。

3.Proteus仿真

在这里插入图片描述
数码管从上至下分别连接P0_1-P0_7,因此想要显示数字1,P0口需要输入二进制数据11110010注意没有连P0_0端口

数字二进制十六进制
0100000000x80
1111100100xf2
2010010000x48
3011000000x60
4001100100x32
5001001000x24
6000001000x04
7111100000xf0
8000000000x00
9001000000x20

4. 源代码

在这里插入图片描述

# include <reg51.h>
# include <intrins.h>
unsigned char display_table[] ={ 0x80, 0xf2, 0x48, 0x60, 0x32, 0x24, 0x04, 0xf0, 0x00, 0x20 }; // 	 共阳极数码管显示编码16进制
unsigned int i;
// 0:10000000 1:11110010 2:01001000	3:01100000 4:00110010 5:00100100 6:00000100 7:11110000 8:00000000 9:00100000
void delay(void)   // 延时程序1s
{
    unsigned char a,b,c;
    for(c=167;c>0;c--)
        for(b=171;b>0;b--)
            for(a=16;a>0;a--);
    _nop_();  
}

void main()		   // 主程序
{
	while(1)
	{
		P0 = 0xff;
		for(i = 0; i < 10; i++)
		{
			if (i == 10	)	 // 当i=10时,将0清零。就是当数码管显示9后,再从0开始
			{
				i = 0;
			}
			P0 = display_table[i];
			delay();
		}
	}
}
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐