按键控制LED

实验名称一: 按键控制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取出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 灯循环显示?怎么实现?
                                         
 
 
 

你可能感兴趣的:(职场,单片机,休闲,led,51)