找回密码
 立即注册

QQ登录

只需一步,快速开始

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

新手学习C51单片机 第五章 数码管 真值表疑问

[复制链接]
跳转到指定楼层
楼主
ID:421770 发表于 2018-11-21 10:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
刚开始学习C51单片机,第五章里面数码管显示的一个疑问:
课件里面讲解数码管显示“1”,应该点亮数码管b,c段,数码管a~dp对应P0那么b=P0.1,c=P0.2,共阳极数码管,点亮b,c段,需要P0.1和P0.2输出低电平
我的理解是,显示“1”的话,P0应该为 1001 1111,也就是0x9F
但是课件里面确说显示“1”的话,P0为 1111 1001,对应真值表为0xF9
我想不明白,请前辈帮忙解惑,谢谢!!

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:97554 发表于 2018-11-21 12:04 | 只看该作者
这个涉及到共阴或者共阳的数码管问题,你说的两者都没有问题,问题是数码管是共用阴极还是共用阳极的问题,假如公用阴极,那么点亮某段则该段需要高电平在驱动方式才可以点亮,共用阳极的数码管反之。两者在程序上是那个表就不同了。
回复

使用道具 举报

板凳
ID:213173 发表于 2018-11-21 12:23 | 只看该作者
你说的这两个段码都是对的,是与P0与数码管接法有关:P0.0~7对应a~dp或P0.0~7对应dp~a。
//顺序共阴极数码管段码表,段码a-h顺序接PX0-PX7
unsigned char code table[]={//共阴数码管段码"0~f-."
                0x3f,0x06,0x5b,0x4f,
                0x66,0x6d,0x7d,0x07,
                0x7f,0x6f,0x77,0x7c,
                0x39,0x5e,0x79,0x71,0x40,0x80};

//反序共阴极数码管段码表,段码a-h顺序接PX7-PX0
unsigned char code Table[]={//共阴数码管段码"0~f-."
                0xFC,0x60,0xDA,0xF2,
                0x66,0xB6,0xBE,0xE0,
                0xFE,0xF6,0xEE,0x3E,
                0x9C,0x7A,0x9E,0x8E,0x02,0x01};

//顺序共阳极数码管段码表,段码a-h顺序接PX0-PX7
unsigned char code table[]={//共阳数码管段码"0~f-."
                0xc0,0xf9,0xa4,0xb0,
                0x99,0x92,0x82,0xf8,
                0x80,0x90,0x88,0x83,
                0xc6,0xa1,0x86,0x8e,0xbf,0x7f};

//反序共阳极数码管段码表,段码a-h顺序接PX7-PX0
unsigned char code Table[]={//共阴数码管段码"0~f-."
                0x03,0x9f,0x25,0x0d,
                0x99,0x49,0x41,0x1f,
                0x01,0x09,0x11,0xc1,
                0x63,0x85,0x61,0x71,0xfd,0xfe};
回复

使用道具 举报

地板
ID:421770 发表于 2018-11-21 13:34 | 只看该作者
杨雪飞 发表于 2018-11-21 12:04
这个涉及到共阴或者共阳的数码管问题,你说的两者都没有问题,问题是数码管是共用阴极还是共用阳极的问题, ...

共阳极数码管
回复

使用道具 举报

5#
ID:421770 发表于 2018-11-21 13:41 | 只看该作者
杨雪飞 发表于 2018-11-21 12:04
这个涉及到共阴或者共阳的数码管问题,你说的两者都没有问题,问题是数码管是共用阴极还是共用阳极的问题, ...

是共阳极数码管
即使是共阴极数码管,那点亮b,c段,需要这两段输出高电平,P0应该是0110 0000才对啊
课件里讲的P0是 1111 1001也还是不明白
谢谢!!
回复

使用道具 举报

6#
ID:307591 发表于 2018-11-21 19:06 | 只看该作者
yxj51 发表于 2018-11-21 13:41
是共阳极数码管
即使是共阴极数码管,那点亮b,c段,需要这两段输出高电平,P0应该是0110 0000才对啊
课 ...

如果是共阴数码管,点亮b,c段,那就使p0^1、p0^2为高电平,其余为低电平
b段——p0^1,c段——p0^2
p0是00000110(注意:最低位是p0^0,倒数第二位是p0^1,依次继续)
如果还不明白,建议用板子烧写程序试试,多实践几次就明白了
回复

使用道具 举报

7#
ID:424073 发表于 2018-11-21 19:47 | 只看该作者
这个问题应该是数码管8个段的顺序不一样    你自己理解的是a-g:1001 1111    而书上写的是g-a:1111 1001  只是顺序的问题   两者其实是一样的。
回复

使用道具 举报

8#
ID:428648 发表于 2018-11-22 22:30 来自手机 | 只看该作者
是共阳极数码管
回复

使用道具 举报

9#
ID:421770 发表于 2018-11-23 08:37 | 只看该作者
1034159374 发表于 2018-11-21 19:06
如果是共阴数码管,点亮b,c段,那就使p0^1、p0^2为高电平,其余为低电平
b段——p0^1,c段——p0^2
p0 ...

谢谢,是我之前理解二进制数据顺序错了,最后一位应该是低位,我之前把最后一位理解成了高位。
现在明白了,谢谢!!
回复

使用道具 举报

10#
ID:431677 发表于 2018-11-23 11:06 | 只看该作者
你顺序搞反啦
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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