原理图:8 个数码管它的数据线并联接到JP5, 位控制由8 个PNP 型三级管驱动后由JP8 引出。 相关原理: 数码管是怎样来显示 1,2,3,4 呢?数码管实际上是由7 个发光管组成 8 字形构成的,加上小数点就是 8个。我们分别把他命名为 A,B,C,D,E,F,G,H。 搞懂了这个原理, 我们如果要显示一个数字2, 那么 A,B,G,E,D 这5 个段的发光管亮就可以了。也就是把B,E,H(小数点)不亮,其余全亮。根据硬件的接法我们编出以下程序。当然在此之前,还必须指定哪一个数码管亮,这里我们就指定最后一个P2.7。 LOOP: CLR P2.7 ;选中最后的数码管 SETB P0.7 ;B 段不亮 SETB P0.5 ;小数点不亮 SETB P0.1 ;C 段不亮 CLR P0.2 ;其他都亮 CLR P0.3 CLR P0.4 CLR P0.6 CLR P0.0 JMP LOOP ;跳转到开始重新进行 END 把这个程序编译后写入单片机,可以看到数码管的最后一位显示了一个数字2。 也许你会说:显示1 个2 字就要10 多行程序,太麻烦了。 显示数字2 则是 C,F,H(小数点)不亮,同时由于接法为共阳接法,那么为0(低电平)是亮 为 1(高电平)是灭。从高往低排列,(p0.7_p0.0)写成二进制为 01111110, 把他转化为 16 进制则为A2H。我们可以根据硬件的接线把数码管显示数字编制成一个表格, 以后直接调用就行了。 有了这个表格上面显示一个 2 的程序则可简化为: LOOP: CLR P2.7 ;选中左边的数码管 MOV P0,#0A2H ;送数字 2 的代码到 P0 口 JMP LOOP ;跳转到开始重新进行 END 原理图中把所有数码管的 8 个笔划段 a-h 同名端连在一起,而每一个显示器的公共极 COM 是各自独立地受 I/O 线控制。CPU 向字段输出口送出字形码时,所有显示器接收到相同的字形码,由 8 个 PNP 的三极管,来控制这 8 位哪一位工作,例如上面的例子中我们选中的是 P2.7.就是最后的一位亮了. 同样的如果要第一位亮, 只需要把程序 CLR P2.7 改为 CLR P2.0 即可。 在这里就有了一个矛盾, 所有数码管的 8 个笔划段 a-h 同名端连在一起, 那么在一个屏幕上如何显示0,1,2,3,4,5 这样不同的数字呢? 的确, 在这样的接法中,同一个瞬间所有的数码管显示都是相同的, 不能显示不同的数字。在单片机里,首先显示一个数, 然后关掉.然后显示第二个数,又关掉, 那么将看到连续的数字显示,轮流点亮扫描过程中,每位显示器的点亮时间是极为短暂的(约1ms),由于人的视觉暂留现象及 发 ...