数码管段选不在同一组IO口,如何驱动?

2020-03-11 19:36发布

比如,char []={0x3f,......}
P0=char[0];
P0口接数码管段选

假如一组IO口不足八位,段选接在不同组的IO,该如何驱动?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
457344370
1楼-- · 2020-03-13 02:32
数码管刷新一般是放在中断里的,假如数码管有3个,定义个3字节的数组做buff,然后在1ms中断里逐个对IO赋值就行了,第一次进中断把buff[0]逐位赋给IO,第二次进用buff[1],依次循环
457344370
2楼-- · 2020-03-13 07:21
 精彩回答 2  元偷偷看……
转基因西瓜
3楼-- · 2020-03-13 08:08


  1. sbit SEG1 = P2^3;
  2. sbit SEG2 = P2^4;
  3. sbit SEG3 = P2^5;
  4. sbit SEG4 = P2^6;
  5. sbit SEG5 = P1^3;
  6. sbit SEG6 = P1^6;
  7. sibt SEG7 = P1^7;
  8. sbit SEG8 = P0^5;


  9. void Set_SEG(unsigned char dat)
  10. {
  11.      SEG1 = dat & 0x01;
  12.      dat >>= 1;
  13.      SEG2 = dat & 0x01;
  14.      dat >>= 1;
  15.      SEG3 = dat & 0x01;
  16.      dat >>= 1;
  17.      SEG4 = dat & 0x01;
  18.      dat >>= 1;
  19.      SEG5 = dat & 0x01;
  20.      dat >>= 1;
  21.      SEG6 = dat & 0x01;
  22.      dat >>= 1;
  23.      SEG7 = dat & 0x01;
  24.      dat >>= 1;
  25.      SEG8 = dat & 0x01;
  26. }


yoyodw123456
4楼-- · 2020-03-13 12:07
试试,这样的情况实际使用的时候会经常碰到!!!

一周热门 更多>