引用: huo_hu 发表于 2020-2-6 19:40 没太明白你这个原理,如果所有数码管共用P1数据口的话那只能做成8选一显示,要是4选一需要2个数据口
我试过把一个数码管接P1口另一个数码管接P2口也不能显示自己输入的数字啊?
引用: shihuntaotie 发表于 2020-2-6 19:44 你用了8个独立的片选,看你第二段的内容,片选都是同时选了3个.....
同时选了3个是啥意思哇?不太懂QAQ
引用: tanvanyo 发表于 2020-2-6 21:06 QAQ不是一个数码管4个口子吗?
看了你5楼帖子,才知道作业是 “自己画一个共阴一个共阳的数码管显示”。首帖图中可看不出数码管是一个共阴一个共阳。
引用: tanvanyo 发表于 2020-2-6 21:08 我试过把一个数码管接P1口另一个数码管接P2口也不能显示自己输入的数字啊?
51单片机,各I/O口上拉能力相当弱,下拉能力也不是很强。用I/O口直接驱动共阳数码管都很吃力,更不用说I/O直接驱动共阴数码管了。
引用: maychang 发表于 2020-2-6 21:30 看了你5楼帖子,才知道作业是 “自己画一个共阴一个共阳的数码管显示”。首帖图中可看不出数码 ...
知道共阴是八段阴极连在一起,共阳是八段阳极连在一起,但是画原理图就不懂怎么表示出来。。能请教一下吗?我百度了好多都没有解答的
引用: maychang 发表于 2020-2-6 21:30 看了你5楼帖子,才知道作业是 “自己画一个共阴一个共阳的数码管显示”。首帖图中可看不出数码 ...
我傻了 知道啦 原来阴阳的数码管是可以选择的,从中午到现在一直在想怎么搞。。。。。
引用: tanvanyo 发表于 2020-2-6 22:30 我傻了 知道啦 原来阴阳的数码管是可以选择的,从中午到现在一直在想怎么搞。。。。。
上面图片来自Atmel公司生产的89C51说明书,红色框内是高电平和低电平输出电压及测试条件。
图片中可见,P1/P2/P3口输出电压0.45V时,输出电流1.6mA。高电平时电流就更加惨不忍睹,只有几十微安。
引用: tanvanyo 发表于 2020-2-6 20:57 啊!提问的那个其实我也不懂……纯小白。。。看了好多资料我还是不懂……有个作业 ...
不明白你的作业为什么要用一个共阴一个共阳数码管显示。
如果是在实际项目中需要八位数码管显示,你设计用四位共阴四位共阳,老板很可能会把你骂个狗血淋头。
两组数码管不同极性,既增加采购负担,又增加库存种类,生产时还容易发生错误。
减少库存种类,避免工人发生差错,设计者必须时刻考虑。
引用: tanvanyo 发表于 2020-2-6 22:30 我傻了 知道啦 原来阴阳的数码管是可以选择的,从中午到现在一直在想怎么搞。。。。。
假定你的数码管每段只需要1mA的平均电流,四位共阳数码管。那么如果用P1口驱动,P1口每个引脚低电平需要4mA电流才能够使每段达到平均1mA。这已经超出了51单片机引脚输出能力。至于使用共阴数码管,不必说了。
所以,51单片机各引脚必须加分立三极管或者芯片来增加电流输出能力,否则无法驱动多位数码管显示(一位两位勉强可以)。
引用: tanvanyo 发表于 2020-2-6 22:30 我傻了 知道啦 原来阴阳的数码管是可以选择的,从中午到现在一直在想怎么搞。。。。。
你见过衬衫左手袖扣和右手袖扣一个大一个小的么?那样不但增加库存零件种类,而且增加了生产时的工序,还容易发生错误。八位数码管,四个共阴,四个共阳,那是自找麻烦。
引用: tanvanyo 发表于 2020-2-6 22:30 我傻了 知道啦 原来阴阳的数码管是可以选择的,从中午到现在一直在想怎么搞。。。。。
如果是为完成作业,一定要使用一个共阴数码管和一个共阳数码管,用同一个口(例如P1口)输出八位段码,是可以实现的。条件是:P1口输出加驱动,而且驱动芯片必须是推挽输出(某些教材上称图腾柱),串联适当的限流电阻。另外用四个NPN分立三极管控制四个共阴数码管,再用四个PNP管控制四个共阳数码管。至于这八支分立三极管,可以用P3口的八个引脚控制。
这种联接方法,仍然是八位数码管一位一位地显示,每一位显示的时间小于一个显示循环周期的1/8。
以上为硬件联接。至于软件,应该根据硬件联接去写。
引用: tanvanyo 发表于 2020-2-6 22:30 我傻了 知道啦 原来阴阳的数码管是可以选择的,从中午到现在一直在想怎么搞。。。。。
若是使用八位相同的数码管,无论共阴还是共阳,驱动电路和程序都可以简单一些。
图不是很清晰,看老半天终于看明白你是要干什么了。首先,你的设计是阴阳数码管一起用,但是你的代码部分都是用共阳的解码方式(都是P1=smgduan[x]),显示会错乱;其次,在使用的时候最好最到随用随开,不用就关的方式,大致如下:关闭所有数码馆公共端-解码输出-开启对应数码管公共端-延迟(-关闭输出)