求“第一个数码管的A段和第二个数码管的B段同时发光”的汇编程序代码

来源:百度知道 编辑:UC知道 时间:2024/06/26 00:11:00
我想了好久也想不出来,请高手赐教

看你的电路是什么样的,如果是用AT89S51系列单片机控制的话,还有静态显示和动态显示两种,这里比如说用动态显示,单片机的P0口作数据显示输出,P2口作控制位(P2.0控制最右边一个数码管,P2.1控制左边的数码管,依次类推),根据你说的要第一个数码管的A段和第二个数码管的B段"同时"(因为是动态显示,不能同时,但是控制每一个数码管的发光时间,利用人眼的视觉暂留,看上去就是同时亮的)发光,在这里假设你的第一个数码管是最右边一个,第二个数码管是右边第二个,首先点亮第一个,在点亮第二个,程序如下(数码管假设是共阳数码管,显示控制位通过PNP三极管接VCC,三极管基极接单片机IO,集电极接地):
MOV P2,#0FFH;
MOV P0,#0FFH;
LOOP:SETB P2.1;关第二个数码管显示
MOV P0,#0FEH;第一个数码管的A段亮;(1111 1110)
CLR P2.0;开第一个数码管显示
LACALL DELAY;延时
SETB P2.0;关显示
MOV P0,#0FDH;第二个数码管的B段亮(1111 11101)
CLR P2.1;开第二个数码管显示
LCALL DELAY;延时
AJMP LOOP;重复
DELAY:MOV R7,#240;
DJNZ R7,$;延时大约一毫秒
RET
END
静态显示,很简单,两个数码管的显示控制位同时接VCC,ABCDEFG分别接P0口和P2口,显示数据也是同上