实验名称一: 按键控制LED
一.实验目的:
(1)通过实验了解51单片机并口输出方式编程.
(2)学习Keil软件的使用。
(3)学习用ISP软件烧写单片机程序的方法.
(4)掌握LED数码管的工作原理,会根据原理图算地址。
二.实验内容与要求:
(1)
通过对AT89S52单片机P0口编程,实现用按键对小灯(LED)的控制。
(2)
编程序要求:用汇编程序实现按下实验板右侧白色按键1--8,则对应左上方8个红色LED小灯依次被点亮,松开按键小灯熄灭。程序要简洁,并在主要语句后加上必要的文字说明,增前程序可读性。
三.实验原理:
工作原理:按键的地址为8000H,LED的地址为4000H.138先选通244,当有按键按下时,数据存入273。然后138选通273,数据发出,小灯亮。
软件流程图:
五.参考程序:
ORG 0000H ;
源程序起始地址
JMP WAIT ;
跳转到WAIT
ORG 0050H ;
主程序开始地址
WAIT: MOV DPTR,#8000H ;
将按键的地址放入DPTR
MOVX A,@DPTR ;
通过DPTR,取出地址单元8000H存放的地址数据来判断哪个按键动作
MOV R7,A ;
通过累加器A将地址数据传给寄存器R7
MOV 0AH,R7 ;
用地址为0AH的存储单元暂存地址数据
MOV A,0AH ;
地址数据放入A中,准备处理
XRL A,#0FFH ;A
中数值与数据0FFH相异或,结果放入A中
JZ WAIT ;
判断A中数值,(A)=0,没有键按下,跳转到标号WAIT处开始重新扫描。(A)=1,有键按下,顺序执行
MOV DPTR,#4000H ;
用DPTR取出8个LED小灯的地址
MOV A,0AH ;0AH
此处发挥作用,将地址数据放入A中
MOVX @DPTR,A ;
将地址数据直接用来放入控制LED亮灭的地址单元4000H,根据此八位数据的01数值决定哪个LED亮
DELAY: MOV R6,#200 ;
延时子程序开始
DE1: MOV R7,#126
DE2: DJNZ R7,DE2
DJNZ R6,DE1
RET ;
延时子程序结束,进入主程序
SJMP WAIT ;
开始新一轮扫描
END ;
主程序结束
六.实验步骤
1
)将ISP下载线与TE5-1实验板相连,另一端连到计算机的并口,接通电源;
2
)运行Keil C51软件,新建一个工程文件;
3
)输入并编辑这个文件,并且编译生成HEX文件;
4
)运行ISP软件将新生成的HEX文件烧写到51实验板上。
七.思考题:
(1)
按键对
LED
灯的控制是怎样实现的?
(2)
能否用按键来控制
LED
灯循环显示?怎么实现?