找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 20482|回复: 7
收起左侧

关于单片机数码管位选问题的详细分析

[复制链接]
ID:452212 发表于 2018-12-30 13:35 | 显示全部楼层 |阅读模式
  看过普中的视频教程,设置数码管位选时定义了三个接口,LSA=P2^2,LSB=P2^3,LSC=P2^4(赋值为二进制),然后有人的程序直接定义了P2一个接口(赋值为十六进制),竟然也可以。想知道为什么,并且有什么区别。

回复

使用道具 举报

ID:97554 发表于 2018-12-30 15:55 | 显示全部楼层
对于这个问题,首先你要了解一下硬件,比如下图数码管的原理,其实就是7个LED,分共阴和共阳数码管。共阴数码管就是七个数码管共用一个接地引脚,七个LED显示七个段,所以,点亮七个LED也叫段选,这里共阴的数码管在段选a-g分别接高电位,公用引脚接低电位,这样就可以点亮选定的LED显示数字,例如,b、c接高电位,COM接低电位,就显示数字1,以此类推。(共阳数码管电位是相反的,另外所说七段是没有显示小数点的情况,有些数码管直接把DP和公共引脚连在一起是无法显示的)

20141230153242.jpg
所谓的位选,就是提供给公共的引脚以相应的电压,比如上图的共阴数码管,位选就是给在一起的几个数码管其中的某一位提供对应的电位,比如下边的1、2、3、4就是位选,a-g是段选。

2749557-1G1031515412S.jpg

明白了这个数码管的用法之后,那么来说下普中开发板教程里所写的那几行,因为普中开发板的教程从开始写第一个点亮一个LED程序的时候就为后边使用74LS138译码器做准备,所以第一个例程就开始用LSA   LSB  LSC这样的语句,其实开始并没有用。74LS138译码器是用三个引脚通过不同的电平组合来输出8个引脚的电平变化。这样可以利用单片机的三个IO口来解决需要8个IO口的解决法案。




如果直接使用单片机的IO口来驱动数码管,那么首先需要7-8个引脚来驱动段(8段包括小数点)。然后有几位就需要几个IO口来控制位,只有位和段同时有电位差的时候数码管的该段才被点亮,这就是数码管的动态显示原理。

单片机驱动的时候,从低位至高位依次接入数码管的段,假如用P0口,那么P0.0 - P0.3  P0.4 - P0.7分成两组,分别为8 4 2 1,8 4 2 1 ,他们全部点亮的时候就是共阴数码管的话输出全部为高电平,也就是P0.0 - P0.7(小数点也点亮)全部为高电平,那么值就是8+4+2+1,8+4+2+1,就是16,16。16进制就是FF,写成C语音就是P0 = 0xFF; 其他的自己研究吧,共阳数码管相反,就是数码管一个8字加小数点全部点亮C语言写的程序就是:
P0 = 0x00;

如果使用LSA   LSB  LSC的方式编码按上边38译码器的真值表来确定0-F这16个数字的码表来写上边的程序就可以了,这个你就自己去思考吧。

评分

参与人数 2黑币 +96 收起 理由
lx驾 + 6 赞一个!
admin + 90 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:458568 发表于 2018-12-30 14:48 | 显示全部楼层
可以就是可以 没为什么
回复

使用道具 举报

ID:410399 发表于 2018-12-30 15:46 | 显示全部楼层
段选吧
3个IO口的用了138编码器,001控制第一段(就是8的第一横),002控制第二段等等
P2整个的0xfe = 1111 1110 一位控制一段,8段控制等等
回复

使用道具 举报

ID:458606 发表于 2018-12-30 16:00 | 显示全部楼层
定义P2一个接口意思就是同时对8个接口的值一起控制,所以当端口赋值为0x01相当于00000001,即选中P2.0,定义0x02即0000 0010就是选中P2.1,0x04即0000 0100就是选中P2.2……以此类推,直到0x80即1000 0000,选中P2.7。

评分

参与人数 1黑币 +6 收起 理由
lx驾 + 6 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:452212 发表于 2018-12-30 22:26 | 显示全部楼层
unsigned_char_ 发表于 2018-12-30 16:00
定义P2一个接口意思就是同时对8个接口的值一起控制,所以当端口赋值为0x01相当于00000001,即选中P2.0,定 ...

还想知道为什么选中后相应数码管就会亮?
回复

使用道具 举报

ID:459120 发表于 2019-1-1 19:47 | 显示全部楼层
CPU可以自动将16进制转为2进制使用,或者说机器只认识2进制
回复

使用道具 举报

ID:637652 发表于 2019-11-7 19:07 | 显示全部楼层
unsigned_char_ 发表于 2018-12-30 16:00
定义P2一个接口意思就是同时对8个接口的值一起控制,所以当端口赋值为0x01相当于00000001,即选中P2.0,定 ...

如果要全选呢 怎么让他全部亮
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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