标题: 单片机计算机程序 怎么样才可以让它的最高位不输出0 [打印本页]

作者: lkkkk坤    时间: 2022-3-7 19:58
标题: 单片机计算机程序 怎么样才可以让它的最高位不输出0
怎么样才可以让它的最高位不输出0啊
(这是主程序)

IMG_20220307_195057.jpg (536.64 KB, 下载次数: 62)

IMG_20220307_195057.jpg

IMG_20220307_195038.jpg (936.99 KB, 下载次数: 46)

IMG_20220307_195038.jpg

作者: devcang    时间: 2022-3-8 09:39
在显示那里修改,从最高位开始,如果是0、并且不是个位数,就不显示该位。
作者: glinfei    时间: 2022-3-8 10:31
加一个标志位吧,计数一共收到几个数字,这样你也就知道最高位是谁了,同时收到数字也不用8位全左移了。
作者: IdeaMing    时间: 2022-3-8 14:47
先以你想到的方法来做,做出来就是了,程序就是为了达到目的,这个目的并不难,你要先自己弄出来一个,然后去优化
作者: yzwzfyz    时间: 2022-3-8 14:56
设:X是16进制有符号数,需要转成10进制并在LED7-0(由高到低的8位数码管)上显示。
方案:
1、设置S7-0:8个寄存器(或存储器),存放X的绝对值的BCD码,SS是符号标记(1=负,0=正)。
2、设置Y7-Y0:8个寄存器(或存储器),对应存放S7-0段位译码值(数值依据LED的引脚译码,送屏后直接能显示Sx的对应数字)。
3、设置BF7-0:8个闪动标记位,对应LED7-0是否需要闪动,1闪。例如:全不闪BF7-0=00000000;需要第2位闪BF7-0=01000000;需要首末位闪BF7-0=10000001。
4、LED显示扫描程序(注:闪动是在此程序中实现的,这里从略。):从Y7-Y0取数据送屏显示。
程序步骤(当X有变化时才做):
1、将X进行16进制→10制计算,绝对值入S7-0。【注:小数点的表示方式这里略去,负数的显示方式以下也略去】
2、译码:从S7至S0顺序译码。并设立一个首0标记:FE0 = 0/1 = 0显示0/0显示空,译码开始时置 FE0 = 1。【注:这是关键!!!】
3、译码规则:【注:这是关键!!!】
3.1、当Sx=0时,如果FE0 = 0,正常译码。如果FE0 = 1,将“0”译成空(即:Yx=11111111,0亮1不亮的驱动。反之是Yx=00000000)。
3.2、当Sx<>0时,正常译码,并清FE0 = 0(阻止之后将“0”译成空)。
3.3、末位S0必须正常译码(即必须译成0-9,无论FE0是0是1,防止X=0时,LED7-0显示全空)。
作者: lkkkk坤    时间: 2022-3-8 18:35
IdeaMing 发表于 2022-3-8 14:47
先以你想到的方法来做,做出来就是了,程序就是为了达到目的,这个目的并不难,你要先自己弄出来一个,然后 ...

好的  谢谢




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1