单片机交流
直播中

李勇俊

7年用户 1510经验值
私信 关注
[问答]

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

P0端口是怎样驱动共阳极数码管循环显示0-9的?其实验效果怎样?

回帖(1)

张勇

2021-10-19 10:37:57
  P0端口驱动共阳极数码管循环显示0-9
  1.实验效果
  
  2.数码管
  
  
  一个数码管包含七段发光二极管,通过控制每段二极管的亮灭,继而显示出不同的数字。数码管分为共阴极数码管和共阳极数码管,共阴极就是7个发光二极管的阴极连在一起,阳极为高电平时点亮,共阳极数码管是阳极连在一起,另一端的电平控制各段二极管的亮、熄。
  3.Proteus仿真
  
  数码管从上至下分别连接P0_1-P0_7,因此想要显示数字1,P0口需要输入二进制数据11110010。注意没有连P0_0端口
  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();
  }
  }
  }
举报

更多回帖

发帖
×
20
完善资料,
赚取积分