51测试网 单片机教程XL2000开发板 单片机学习 自制编程器 单片机资料 软件下载 电子技术产品介绍如何购买 论坛

XL2000开发板+TRACER仿真器

第一个试验:点亮一个发光管第七个试验:流水灯数字显示综合练习
第二个试验:闪烁的发光管第八个试验:小键盘控制的数字显示
第三个试验:认识声音第九个试验:小键盘控制的花样彩灯
第四个试验:小喇叭发出救护车的声音第十个试验:100位计数器
第五个试验:跟我学作加减乘除法第十一个试验:试验14-通信
第六个试验:认识数码管第十二个试验:单片机唱歌---“祝你平安”
部分章节摘自平凡教程)广大用户如有更多编写好的应用源程序欢迎投稿!

试验7--------流水灯数字显示综合练习

该程序运行结果为个位数码管轮流现实012345678,然后十位数码管轮流现实012345678反复循环,P1.0,P1.1, P1.2,P1.3, P1.4,P1.5, P1.6,P1.7, 依次点亮然后轮流点亮,小喇叭不停发出滴答声:

 

数码管显示数字

注意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  ;把28hp0口;数码管显示0

LCALL DELAY ;延时

MOV P0,#0FFH   0ffh p0口,数码管清除

 

CLR P1.0    ;点亮p1.0发光管

MOV P0,#7EH ;把7ehp0口;数码管显示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

 

;程序到此结果为左边的数码管显示012345678p1.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