单片机P0端口驱动数码管0-9循环显示(Proteus仿真+C语言程序)
单片机P0端口驱动共阳极数码管0-9循环显示,共阳极共阴极数码管显示原理、Proteus仿真图、C语言完整程序
文章共1,233字 · 阅读需要大约5分钟
一键AI生成摘要,助你高效阅读
问答
·
P0端口驱动共阳极数码管循环显示0-9
1.实验效果
2.数码管
一个数码管包含七段发光二极管,通过控制每段二极管的亮灭,继而显示出不同的数字。数码管分为共阴极数码管和共阳极数码管,共阴极就是7个发光二极管的阴极连在一起,阳极为高电平时点亮,共阳极数码管是阳极连在一起,另一端的电平控制各段二极管的亮、熄。
3.Proteus仿真
数码管从上至下分别连接P0_1-P0_7,因此想要显示数字1,P0口需要输入二进制数据11110010
。注意没有连P0_0端口
数字 | 二进制 | 十六进制 |
---|---|---|
0 | 10000000 | 0x80 |
1 | 11110010 | 0xf2 |
2 | 01001000 | 0x48 |
3 | 01100000 | 0x60 |
4 | 00110010 | 0x32 |
5 | 00100100 | 0x24 |
6 | 00000100 | 0x04 |
7 | 11110000 | 0xf0 |
8 | 00000000 | 0x00 |
9 | 00100000 | 0x20 |
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();
}
}
}
更多推荐
已为社区贡献3条内容
所有评论(0)