第七个试验:流水灯数字显示综合练习----51单片机汇编语言试验教程

来源:互联网 发布:软件项目经理证书 编辑:程序博客网 时间:2024/04/29 02:13
该程序运行结果为个位数码管轮流现实0,1,2,3,4,5,6,7,8
然后十位数码管轮流现实0,1,2,3,4,5,6,7,8反复循环
P1.0,P1.1, P1.2,P1.3, P1.4,P1.5, P1.6,P1.7, 依次点亮然后轮流点亮
小喇叭不停发出滴答声:
注意该程序配套为我站的倚天版开发套件:如果是标准版:因他的数码管接法不同。 显示的数字不对。
该程序在本站XP开发套件上调试通过,以下是程序运行在XP版时的照片.(sorry, 照片很模糊)
 
数码管显示数字
注意0为点亮 1 为灭 

显示数字
p0.7
p0.6
p0.5
p0.4
p0.3
p0.2
p0.1
p0.0
16进制代码
0
0
0
1
0
1
0
0
0
28H
1
0
1
1
1
1
1
1
0
7EH
2
1
0
1
0
0
0
1
0
A2H
3
0
1
1
0
0
0
1
0
62H
4
0
1
1
1
0
1
0
0
74H
5
0
1
1
0
0
0
0
1
61H
6
0
0
1
0
0
0
0
1
21H
7
0
1
1
1
1
0
1
0
7AH
8
0
0
1
0
0
0
0
0
20H
9
0
1
1
0
0
0
0
0
60H

代码表的意思和方法参照前面的教程; 注意0为点亮 1 为灭然后我们可以把代码送到P0口,就可以是数码管显示需要的数字; 当然, 必须有位选,因为我们的实验板是动态扫描数码管, 两个8的位选分别是P2.6   P2.7.
LOOP:     ; 标号
CLR P2.6   ;选中p2.6 数码管左边的8字使能
SETB P2.7   ;p2.7不使能。 右边的数码管消隐
MOV P0,#28H ;把28h送p0口;数码管显示 0
LCALL DELAY ;延时
MOV P0,#0FFH   ;0ffh 送p0口,数码管清除
 
CLR P1.0    ;点亮p1.0发光管
MOV P0,#7EH ;把7eh送p0口;数码管显示 1
LCALL DELAY
MOV P0,#0FFH
 
CLR P1.1      ;点亮p1.0发光管
CLR P1.0      ;点亮p1.0发光管
MOV P0,#0A2H   ;数码管显示 2
LCALL DELAY
MOV P0,#0FFH
 
 CLR P1.2
CLR P1.1
CLR P1.0
MOV P0,#62H    ;数码管显示 3
LCALL DELAY
MOV P0,#0FFH
 
CLR P1.3
CLR P1.2
CLR P1.1
CLR P1.0
MOV P0,#74H   ; ;数码管显示 4
LCALL DELAY
MOV P0,#0FFH
 
CLR P1.4
CLR P1.3
CLR P1.2
CLR P1.1
CLR P1.0
MOV P0,#61H   ;数码管显示 5;
LCALL DELAY
MOV P0,#0FFH
 
 CLR P1.5
 CLR P1.4
CLR P1.3
 CLR P1.2
CLR P1.1
CLR P1.0
MOV P0,#21H     ; 数码管显示 6
LCALL DELAY
MOV P0,#0FFH
 
 CLR P1.6
 CLR P1.5
CLR P1.4
CLR P1.3
 CLR P1.2
CLR P1.1
CLR P1.0
MOV P0,#7AH   ; 数码管显示 7
LCALL DELAY
MOV P0,#0FFH
 
CLR P1.7
CLR P1.6
CLR P1.5
CLR P1.4
CLR P1.3
CLR P1.2
CLR P1.1
CLR P1.0
MOV P0,#20H   ; 数码管显示 8
LCALL DELAY
MOV P0,#0FFH
LCALL DELAY
 
MOV P0,#0FFH
MOV P1,#0FFH
 
;程序到此结果为左边的数码管显示0,1,2,3,4,5,6,7,8
p1.0------------p1.7指示灯依次点亮
SETB P2.6   ; 左边的8消隐
CLR P2.7   ;选中p2.7 数码管右边的8字使能 ,;
MOV P0,#28H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
 
CLR P1.0
MOV P0,#7EH
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
 
CLR P1.1
MOV P0,#0A2H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
 
CLR P1.2
 
MOV P0,#62H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
 
CLR P1.3
MOV P0,#74H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
 
CLR P1.4
MOV P0,#61H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
 
CLR P1.5
MOV P0,#21H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
 
CLR P1.6
MOV P0,#7AH
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
 
CLR P1.7
MOV P0,#20H
LCALL DELAY
MOV P0,#0FFH
MOV P1,#0FFH
MOV P0,#0FFH
MOV P1,#0FFH
;这一段和上一段基本相同, 不同的是右边的数码管依次显示012345678,左边的不亮;
;同时p1口的灯流动显示:
AJMP LOOP; 注意: 程序运行到此跳转到开始标号,重复执行:
 
DELAY: ;延时子程序;参考前面的教程:
CLR P3.3 ;注意小喇叭在3.3口, 这里可以使小喇叭发出嗒,嗒声
MOV R7,#255
NOP
NOP
 
D1:MOV R6,#255
setb p3.3
D2: DJNZ R6,D2
clr p3.3
DJNZ R7,D1
SETB P3.3
RET
END