标题: 51单片机八位数码管怎么让第一位0闪烁,其他位不变 [打印本页]

作者: 憨憨浩    时间: 2021-11-16 13:16
标题: 51单片机八位数码管怎么让第一位0闪烁,其他位不变
八位数码管怎么让第一位0闪烁,其他位不变

IMG_20211116_130517_edit_112628380984376.jpg (720.09 KB, 下载次数: 42)

IMG_20211116_130517_edit_112628380984376.jpg

作者: 13205495918    时间: 2021-11-16 14:33
位选,你这个照片的右边,数码管有几个引脚那是用来位选的。
作者: zhaochengong    时间: 2021-11-16 20:54
控制位端
作者: 土老冒527    时间: 2021-11-17 12:01
应该是被中断打断了,虽然没有对比试过,但是在加入T0中断处理之前没有末位跳的现象,加了中断处理后出现了。
作者: 29417765    时间: 2021-11-17 13:13
   if(FlashFlag)
            {
                Dis_Buff[0] = SEG_Hidde;
                Dis_Buff[1] = DIG[1];
                Dis_Buff[2] = DIG[2];
            }
            else
            {
                Dis_Buff[0] =  DIG[0];
                Dis_Buff[1] = DIG[1];
                Dis_Buff[2] = DIG[2];
            }
类似这种方法
作者: yzwzfyz    时间: 2021-11-18 14:44
LED各个位闪烁的方法(设8个LED):
1、做一个标记S03,S03每0.3秒求反一次。(在时间中断中实现,你可以不用0.3秒,改用其它值)
2、用一个字节BX其8个位叫:BX7-BX0(其中的一个叫BXN),分别对应指出哪个LED位正在闪烁。
   例如当BX=10000000(即BX7=1,BX6-0=0)表示只有LED7闪动显示,其它不闪。BX=10100000,表示LED7,5同时闪。
3、定义一个字节ID,指示扫描正处于显示哪一个LED,每次时间中断将ID+1,且ID=0-7。比如ID=4,则显示LED4,其它的不显示。
4、定义8个字节RXS7-RXS0,用于存放LED的显示内容(当然需要你事先做好译码工作)。
5、每次中断只显示的一个LED(先关全部,再显示一个),显示哪一位由ID指出。
6、是否将RXSN(RXS7-RXS0中的一个)送到LED进行显示,由下列计算决定:BXS=/BXN+BXN*S03
     当BXS=1时,表示显示,则将RXSN送至LED显示;

     当BXS=0时,则将不显示(实际是将黑字送到LED,通常是FFH或00H,也可用“-”)。
例如:ID=2,RXS2=“3”(译码后的3),BX2=1(闪动),S03=0。则:BXS=/BX2+BX2*S03=/1+1*0=0,所以不显示,将FFH送至LED2(无显)。
     如果送“_”则形成“_”与“3”互闪。
例如:ID=2,RXS2=“3”(译码后的3),BX2=1(闪动),S03=1。则:BXS=/BX2+BX2*S03=/1+1*1=1,所以显示,将“3”送至LED2。
例如:ID=2,RXS2=“3”(译码后的3),BX2=0(不闪动),S03=x。则:BXS=/BX2+BX2*S03=/0+1*S03=1,所以显示,将“3”送至LED2。

如此闪动就操作简单了:需要哪位闪动,就将哪位对应的BXn置1,即可。不闪就清0。






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