题目描述:
Proteus仿真图如下所示:

通过一个拨码开关来生成一个数,并通过4位数码管以十进制方式显示出来,其中拨码开关与P1口连接,P0口通过一个74LS245来与数码管相连(因为P9口自身的高电平不足以驱动数码管,需要这个器件来帮忙),段选连接到P2口的低四位上。
问题分析:
1)拨码开关因每一位的开关状态,构成一个有8个二进制位的字节,即读取P1口的数值也就是拨码开关的状态
2)将P1口的数值读回来,是以16进制(实质当然还是8个二进制)表示,需要将它转换成三位的十进制数显示在数码管上,通过除以10,余数为个位数,然后再除以10,余数是十位,商是百位数。
3)多位数码管的动态扫描显示,即通过段选指定显示第几个数字,通过引脚将相应信号传入,并保留一个很短的时间段,然后将所以段选再关闭(称作消隐过程),以显示下一位数字。注意这种动态扫描,就是一位一位地显示,在间隔够短时,人眼看到的便是三位同时显示的效果了。另外注意消隐过程,若无消除,当各位显示间隔较大时,出现流动显示的效果,间隔够短时,便显示乱码了,可能每一位都显示不正常了。
代码文件main.asm
// *************************************************************
// 数码管显示拨码开关编码
// 1)多位数码管的动态扫描显示(通过段选来指定位置)
// 2) 16进制转换成三位的十进制数(DIV指令)
// *************************************************************
ORG 00H
// ********************************

本文通过8051单片机和Proteus仿真,详细讲解如何使用拨码开关生成一个数字,并通过4位数码管以十进制方式动态扫描显示。内容涉及拨码开关状态读取、数值转换为十进制、数码管段选及动态扫描显示技术。
最低0.47元/天 解锁文章
1422





