基于三八译码器控制八个数码管同时显示内容的问题

在单片机开发板上,很多时候为了节省IO口的资源,扩展和利用IO口,我们很经常使用的一个方法是使用三八译码器,这将由三个IO口变成了八个IO口的控制,但三八译码器的三个口输入口只能同时控制一个输出口,那么,问题就来了,比如我们很经常用一个三八口去按一个八位或者四位的数码管,那么我们怎么样才能够让这八个数码管同时工作,让我们看上去八个IO口显示不同的内容呢?

下面我就把今天刚在杨老师指导下编写的程序以及原理作一个简单的分析吧。

我的开发板是P0低三位(38数码管的输入端口)口控制数码管的位选的,八个输出口分别控制八个数码管工作的。

程序:

;通过三八译码器让三个IO口控制八个数码管的工作状态

 ORG 00H
 STARY:

 MOV P0,#00000000B;根据三八译码器真值表的原理控制第一个数码管工作
 MOV P1,#00111111B;显示 0
 CALL DELAY;短暂的延时
 
 MOV P0,#00000001B;根据三八译码器真值表的原理控制第二数码管工作
 MOV P1,#00000110B;显示 1
 CALL DELAY;短暂的延时
 
 MOV P0,#00000010B;根据三八译码器真值表的原理控制第三数码管工作
 MOV P1,#01011011B;显示 2
 CALL DELAY;短暂的延时

 MOV P0,#00000011B;根据三八译码器真值表的原理控制第四个数码管工作
 MOV P1,#01001111B;显示 3
 CALL DELAY;短暂的延时

 MOV P0,#00000100B;根据三八译码器真值表的原理控制第五个数码管工作
 MOV P1,#01100110B;显示 4
 CALL DELAY;短暂的延时
 
 MOV P0,#00000101B;根据三八译码器真值表的原理控制第六个数码工作
 MOV P1,#01101101B;显示 5
 CALL DELAY;短暂的延时

 MOV P0,#00000110B;根据三八译码器真值表的原理控制第七个数码工作
 MOV P1,#01111101B;显示 6
 CALL DELAY;短暂的延时

 MOV P0,#00000111B;根据三八译码器真值表的原理控制第八个数码工作
 MOV P1,#00000111B;显示 7
 CALL DELAY;短暂的延时

 JMP STARY

 DELAY:;延时程序
 MOV R0,#3
 DV1:    MOV R1,248
 DV2: DJNZ R1,DV2
 DJNZ R0,DV1
 RET
 END

效果:在八个数码管上显示数字0至7 

写这程序的时候要注意的是延时时间的问题。要保留在人的视觉能够看得见的状态。一般是20MS以内。

永不止步步 发表于11-15 09:21 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67417个|学分:363791个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号