找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2852|回复: 12
打印 上一主题 下一主题
收起左侧

数码管的位选是怎么选择八位数码管的?

  [复制链接]
跳转到指定楼层
楼主
本帖最后由 1314love 于 2022-8-10 11:29 编辑

数码管的3位是怎么选择第几位数码管的
LSA=P2^2,
LSB=P2^3,
LSC=P2^4
就是我知道是000就选择第一位数码管,001就选择第二位数码管,但是原理不懂,为什么这样就可以选择第几位数码管?求大神解答。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

来自 2#
ID:155507 发表于 2022-8-10 18:20 | 只看该作者
数码管连接
e1接高电平,e2,e3接低电平,a,b,c接单片机引脚,y0到y7接数码管位选做控制


  1. // 138译码器如何实现同时8个数码管从0到8显示
  2. // 让8个数码管同时显示0再媳灭1再媳灭再显示2如此循环
  3. #include "reg52.h"                         //此文件中定义了单片机的一些特殊功能寄存器

  4. typedef unsigned int u16;          //对数据类型进行声明定义
  5. typedef unsigned char u8;


  6. sbit LSA=P2^2;  //控制138译码器
  7. sbit LSB=P2^3; //位选为P2.2---P2.3---.P2.4三个口
  8. sbit LSC=P2^4;

  9. u8 code smgduan[18]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
  10.   0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};//显示0~F的值
  11. u8 d=0;
  12. /*******************************************************************************
  13. * 函 数 名         : delay
  14. * 函数功能         : 延时函数,i=1时,大约延时10us
  15. *******************************************************************************/
  16. void delay(u16 i)
  17. {
  18.   while(i--);      
  19. }

  20. void delayms(void)   //延时 ms
  21. {      
  22.   unsigned char a,b,c;     
  23.   for(c=1;c>0;c--)         
  24.   for(b=142;b>0;b--)            
  25.   for(a=2;a>0;a--);
  26. }

  27. /*******************************************************************************
  28. * 函 数 名       : DigDisplay
  29. * 函数功能      : 数码管动态扫描函数,循环扫描8个数码管显示
  30. *******************************************************************************/
  31. void DigDisplay()
  32. {
  33.   u8 i;
  34.   for(i=0;i<8;i++)
  35.   {
  36.     switch(i)         //位选,选择点亮的数码管,
  37.     {
  38.       case(0):
  39.       LSA=0;LSB=0;LSC=0; break;//显示第0位
  40.       case(1):
  41.       LSA=1;LSB=0;LSC=0; break;//显示第1位
  42.       case(2):
  43.       LSA=0;LSB=1;LSC=0; break;//显示第2位
  44.       case(3):
  45.       LSA=1;LSB=1;LSC=0; break;//显示第3位
  46.       case(4):
  47.       LSA=0;LSB=0;LSC=1; break;//显示第4位
  48.       case(5):
  49.       LSA=1;LSB=0;LSC=1; break;//显示第5位
  50.       case(6):
  51.       LSA=0;LSB=1;LSC=1; break;//显示第6位
  52.       case(7):
  53.       LSA=1;LSB=1;LSC=1; break;//显示第7位      
  54.     }
  55.     P0=smgduan[d];//发送段码 段选为P0口
  56.     delay(100); //间隔一段时间扫描      
  57.     P0=0x00;//消隐
  58.   }
  59.   
  60. }

  61. /*******************************************************************************
  62. * 函 数 名          : main
  63. * 函数功能        : 主函数
  64. * 输    入           : 无
  65. * 输    出            : 无
  66. *******************************************************************************/
  67. void main()
  68. {      
  69.   u16 y=0;
  70.   u8 d1=0;
  71.   while(1)
  72.   {      
  73.     DigDisplay();  //数码管显示函数      
  74.     delayms();
  75.     y++;

  76.     if (y>=100)
  77.     {
  78.       d1++; //段码显示函数
  79.       y=0;
  80.       if(d1 >8) //显示0~8。
  81.       d1=0;
  82.       
  83.     }
  84.     d = d1; //段码显示函数
  85.    
  86.     if (y>=50) // 段码媳灭
  87.     {
  88.       d = 17; //段码媳灭函数
  89.     }
  90.   }               
  91. }
复制代码
回复

使用道具 举报

来自 3#
ID:575020 发表于 2022-8-13 21:46 | 只看该作者
138译码器就是输入3根线,每根线有高低电平2种状态,高低电平顺序位置不同总共有8种状态,
然后根据输入状态输出8种不同的状态,这8种状态为8根线,每种状态其中仅有一根线为低电平,
其余7根线为高电平,如果8根线分别接8个LED负极,正极都接vcc的话,同一时间只有一个led灯亮
图示led忘接限流电阻了,懒得重画了







回复

使用道具 举报

地板
ID:1023753 发表于 2022-8-10 13:35 | 只看该作者
应该是有个3线8线译码器
回复

使用道具 举报

5#
ID:1034262 发表于 2022-8-10 14:53 | 只看该作者
你这3位接的是什么器件?
回复

使用道具 举报

6#
ID:121859 发表于 2022-8-10 15:48 | 只看该作者
看描述貌似你的硬件设备是普中开发板,普中开发板,LSALSBLSC分别接P2.2P2.3P2.4,外部接的是74LS138的ABC。一个3-8译码器。所以000输入Y0有效,001输出Y1有效,以此类推。
回复

使用道具 举报

7#
ID:575020 发表于 2022-8-10 16:07 | 只看该作者
应该发出完整电路图和代码
回复

使用道具 举报

8#
ID:811253 发表于 2022-8-10 16:30 | 只看该作者
三个I0有8种组合 经过译码器 每一种对一个位就是8位了  000 001 010 011 100 101 110 111
回复

使用道具 举报

9#
ID:123289 发表于 2022-8-10 16:52 | 只看该作者
八位数码管就是8个发光二极管!
如何选段,取决于你的硬件是如何连接的?这8个发光二极管接在哪里呢?
回复

使用道具 举报

10#
ID:1041297 发表于 2022-8-10 17:35 | 只看该作者
zhxiufan 发表于 2022-8-10 15:48
看描述貌似你的硬件设备是普中开发板,普中开发板,LSALSBLSC分别接P2.2P2.3P2.4,外部接的是74LS138的ABC ...

恩恩,是普中的
回复

使用道具 举报

11#
ID:190577 发表于 2022-8-10 17:38 | 只看该作者
这个是38译码器控制数码管位码
回复

使用道具 举报

12#
ID:128880 发表于 2022-8-10 18:24 | 只看该作者
应该采用的是138译码器吧!
回复

使用道具 举报

13#
ID:1042116 发表于 2022-8-15 12:11 来自手机 | 只看该作者
其实就是电源的问题,其他八位比特确定了显示什么数字,三位数字确定了哪个数码管接通电路
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表