实验名称一: 按键控制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,数据发出,小灯亮。
  软件流程图
 
按键控制LED_第1张图片
             
 
五.参考程序:
   
       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取出8LED小灯的地址
       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灯循环显示?怎么实现?