汇编语言数码管显示数字
在第6 课中,我们检查了数字管的静态显示方法。通过控制列表选择和段选择,可以显示任意数量的具有任意字符的数字管。
但是,所有位的共同选择意味着只能同时显示相同的数字,例如: 如果数字管必须同时显示不同的数字,例如 B. 1 ,2 ,3 ,4 ,5 ,6 等,无法实现静态显示方法。
因此,我们设置了一个动态显示方法来解决此问题。
在解释动态显示方法之前,我们最初将在数字管道编程 - 数组编码方法中引入一种常用的方法。
阵列编码可以编码数字管或段的位。
在这里,我们以段编码为例来解释它。
在以前的学习中,我们知道P0在0x8 0(显示数字8 )时的值以及显示数字3 时,P0 0xB0的值为。
这意味着0xB0和0x8 0对应于数字3 或8 根据这种方法,我们可以显示数字管的1 6 个数字,从0到F,每个数字都以十六进制数字表示。
这些十六进制的数字称为数字管,显示从0到f的相应编码。
编程时,这些编码如下:无符号charcodable [] = {0xc0.0xa4 .0xb0.0x9 9 .0x8 2 .0x8 .0x9 0 x 8 8 .0xc6 ,0xa1 ,0x8 6 ,0xa; 这是数组名称编码,然后必须添加相应的数组元素。
阵列编码方法的引入使我们能够更有效地控制数字管的显示。
接下来,我们将详细讨论数字管动态显示的原理和程序实现方法。
verilog数码管静态显示。 。 。 。 。 。 可以按照这程序给我说说它的运行过程吗?
首先,您应该能够理解解码后的鞋跟,对吗? 如果有注释,则输出信号的不同值将导致数字管显示不同的,该在注释中为0-9 A-F。4 'h0:sm_seg = 8 'hc0; //显示“ 0” 4 'H1 :sm_seg = 8 'hf9 ; //显示“ 1 ” 4 'H2 :sm_seg = 8 'ha4 ; //显示“ 2 ” 4 'H3 :sm_seg = 8 'hb0; //显示“ 3 ” 4 'H4 :sm_seg = 8 'h9 9 ; //显示“ 4 ” 4 'H5 :sm_seg = 8 'h9 2 ; //显示“ 5 ” 4 'H6 :sm_seg = 8 'h8 2 ; //显示“ 6 ” 4 'H7 :sm_seg = 8 'hf8 ; //显示“ 7 ” 4 'H8 :sm_s eg = 8 'h8 0; //显示“ 8 ” 4 'H9 :sm_seg = 8 'h9 0; //显示“ 9 ” 4 'ha:sm_seg = 8 'h8 8 ; //显示“ a” 4 'hb:sm_seg = 8 'h8 3 ; //显示“ b” 4 'hc:sm_seg = 8 'hc6 ; //显示“ C” 4 'hd:sm_seg = 8 'ha1 ; //显示“ D” 4 'He:sm_seg = 8 'h8 6 ; //显示“ e” 4 'hf:sm_seg = 8 'h8 e; //显示“ F”,那么输出SM_SEG如何更改? 它的更改取决于disp_dat:case(disp_dat)的更改。
那么,我们正在查看disp_data的变化吗? 查看以下代码:始终@(posedgeclk)begincount = count+1 'b1 ; sm_bit = 8 'b0000000; 在仪表编号到来时,此点会自动增加1 个,如下所示:count:0000 003 7 0,因为计数器为3 7 位,1 将添加:0000 1 计数:0000 .1 0继续计数:0000 1 1 继续积累直到2 4 位变化,即2 4 位 从0跳到1 或从1 跳到0,转换为2 8 DISP_DAT值的变化导致发行人SM_SEG的变化,这更改了数字管的显示。
通常,数字管自动从0跳到9 a-f。
51单片机静态显示可以实现6位数码管123456的显示吗?
多座数字数字管无法实现静态显示器并物理碰撞。如果每个位上显示的不相同,则可以使用六个数字管,如果您迷恋使用静态显示器。
串行扩展系统或地址映射扩展系统,成本不值得损失)。