Lab0:熟悉开发环境:点亮LED(难度:0/5)

实验内容过于简单,仅附上代码:

1
2
3
4
5
ORG 0000H

MOV P2,#OFEH
SJMP $
END

Lab1:数码管循环显示(难度:1/5)

实验内容:

  • 实现数码管从0.0到9.9的循环,动态显示驱动双数码管,利用延时程序和段选信号控制双数码管显示的位
  • Proteus器件选择:AT89C51、7SEG-MPX2-CC、其他外围器件
  • 选做内容根据光盘资料原理图,修改汇编代码,使其烧录后能在开发板上运行

实验代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
ORG 000H
A1 BIT P1.6 ;个位十位小数点
A2 BIT P1.7
A3 BIT P0.7

A4 BIT P2.2 ;138译码器
A5 BIT P2.3
A6 BIT P2.4

MOV R0,#0 ;个位十位清零
MOV R1,#0

LOOP:

CLR A4 ;CBA=110=6,打开LED7
SETB A5
SETB A6

SETB A2
CLR A1
MOV DPTR,#TAB
MOV A,R0
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY

SETB A4 ;CBA=111=7,打开LED8
SETB A5
SETB A6

SETB A1
CLR A2
MOV DPTR,#TAB
MOV A,R1
MOVC A,@A+DPTR
MOV P0,A
SETB A3
LCALL DELAY

CLR A4 ;重复代码,使数码管亮光更稳定
SETB A5
SETB A6

SETB A2
CLR A1
MOV DPTR,#TAB
MOV A,R0
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY

SETB A4
SETB A5
SETB A6

SETB A1
CLR A2
MOV DPTR,#TAB
MOV A,R1
MOVC A,@A+DPTR
MOV P0,A
SETB A3
LCALL DELAY

INC R0 ;进位
CJNE R0,#10,LOOP1
INC R1
MOV R0,#0
CJNE R1,#10,LOOP1
MOV R1,#0

LOOP1:
AJMP LOOP

DELAY: ;延时程序
MOV R5,#1
DLY3:
MOV R6,#070H
DLY2:
MOV R7,#0FFH
DLY1:
DJNZ R7,DLY1
DJNZ R6,DLY2
DJNZ R5,DLY3
RET

TAB: ;数码管段选码(共阴极管)
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END

选做内容

  • 参考开发管原理图,LED1-8由138译码器间接控制,因此引入P22-24对应A4-A7三个引脚,通过给三个引脚赋值来同步操控点亮个位/十位的对应数码管。软硬结合的思路非常有趣。

Lab2:乘除法程序编写验证:超声波测距(难度:?/5)

实验内容:

超声测距电路中,S = T * V.公式中速度V与环境温度有关,
假定$$ V = 34 + 3C/200 $$(CC 为环境温度). 速度单位为CM/mSCM/mS
代入得:$$ S = 34T + 3CT/200 $$
通过温度传感器测到的温度值存放于RAM中30H处. 假定为20度(十六进制为14H), 根据计数器的计数值算出的时间值T存放于RAM中31H, 32H处. 假定为400mS(十六进制为0190H, 高位存31H,低位存32H).

  • 要求1:算出此时的距离值S. 结果存放于RAM中50H,51H,52H处
    (高位存50H,低位存52H)
  • 要求2:自行设计几组输入验证程序的正确性。

实验代码:

1

施工中…