授课日期 班次 授课时数 2
课题,任务二,P1口外接 8只 LED发光二极管模拟彩灯(一)
教学目的,掌握 MCS-51的数据传送类指令以及数据存储空间重点,MCS-51的数据传送类指令难点,MCS-51的数据传送类指令教具,多媒体作业,3.6 3.9
自用参考书:《单片机应用技术》耿长清主编、《单片机应用技术》刘守义主编教学过程:
一、复习提问单片机内部结构二、新授由任务二,P1口外接 8只 LED模拟彩灯引入本次课内容
1,硬件电路与工作原理详细描述本次任务,根据任务要求分析硬件构成并画出硬件电路
2,程序设计
3.源程序的编辑、编译、下载
4,相关知识
1) MCS-51的数据传送类指令
2) MCS-51内部的数据存储空间
5.课堂小结课后小结:
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3,1,1 硬件电路与工作原理任务描述,利用 P1口外接的 8只 LED发光二极管模拟彩灯
1、硬件电路
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
2、工作原理当 P1.0~P1.7中的某端口为低电平时,对应的发光二极管亮,为高电平灭。我们只要控制 P1口各位的电平状态,就可以控制 8只 LED的亮与灭。例如使( P1) =01010101B=55H,D7,D5,D3,D14只 LED
亮,D6,D4,D2,D04只 LED灭,从效果上看亮与灭是相间隔的;
反之,使( P1) =10101010B=AAH,则另外 4只 LED亮,若反复以一定时间间隔不断从 P1口轮流输出 55H和 AAH,则 P1口上 8只 LED会呈现流水彩灯的效果。
实现上述 8只 LED发光二极管控制的程序非常简单,可以用不同的指令来编程。以下是几种模式彩灯的控制程序。
1、将立即数送 P1口的程序
ORG 0000H ; 定义程序从程序存贮器 0000H单元开始存放
LOOP,MOV P1,#55H ; 立即数 55H送 P1口,4只 LED亮
SJMP LOOP ; 原地踏步
END ; 程序结束第一条指令指明程序在程序存贮中的存贮位置,第二条指令将立即数
55H传送到 P1口,对应的 LED灯亮,第三条指令是一条无条件转移指令,
即单片机执行完上一条指令后,会不断反复指行这条指令,直到电源断电,第四条是程序结束指令
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.2 控制程序
2、通过累加器 A控制 P1口的程序
ORG 0000H
LOOP,MOV A,#0AAH ;将立即数 AAH送累加器 A
MOV P1,A ;累加器 A中的数送 P1端口
SJMP LOOP ;转移到 LOOP
END
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3,流水式彩灯程序最简单的流水式彩灯程序也是简单的程序流程图如右图开始
55H送 P1口延时 0.3秒
AAH送 P1口延时 0.3秒
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
ORG 0000H
LOOP,MOV P1,#55H ;将立即数 55H送 P1端口
LCALL TIME ;调延时子程序 TIME
MOV P1,#0AAH ;将立即数 AAH送 P1端口
LCALL TIME ;调延时子程序 TIME
SJMP LOOP ;转移到 LOOP
TIME,MOV R6,#200 ;延时子程序 TIME
TIME1,MOV R7,#200
TIME2,NOP
NOP
NOP
DJNZ R7,TIME2
DJNZ R6,TIME1
RET
END
程序如下,
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
4、开幕式与闭幕式彩灯程序
ORG 0000H
LJMP MAIN ;跳转到主程序
ORG 0030H
MAIN,MOV R0,#8 ; R0送循环次数 8
MOV DPTR,#TAB ;给数据指针赋值
LOOP,MOV A,#00H ;
MOVC A,@ A + DPTR
MOV P1,A
LCALL TIME
INC DPL
DJNZ R0,LOOP
SJMP MAIN
TIME,MOV R6,#200
TIME1,MOV R7,#200
TIME2,NOP
NOP
NOP
DJNZ R7,TIME2
DJNZ R6,TIME1
RET
TAB,DB 81H,0C3H,0E7H,0FFH,18H,3CH,7EH,0FFH
END
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3,1,3 源程序的编辑、编译、下载打开“伟福”模拟仿真软件进行程序的编辑、编译。
1、正确选择单片机类型 8751或 8031
2、正确选择编译器-伟福编译器
3、选择模拟仿真功能
4、打开或新建文件进行编辑
5、编译打开,ISP下载软件”将目标文件下载到 ISP-4实验开发板上的
AT89S51单片机芯片,观察程序运行结果。
1、编译成功后打开下载软件
2、选择好单片机 89S51并测试
3、打开伟福 6000编译生成的,BIN或,HEX文件
4、选择自动写完成擦除、写、读、校验过程
5、观看运行结果
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
1、什么是数据传送操作与数据传送指令? MCS-51单片机有哪些数据传递指令?
数据传送指令共有 29条,数据传送指令一般的操作是把源操作数传送到目的操作数,指令执行完成后,源操作数不变,目的操作数等于源操作数。如果要求在进行数据传送时,目的操作数不丢失,则不能用直接传送指令,而采用交换型的数据传送指令,数据传送指令不影响标志 C,AC和 OV,但可能会对奇偶标志 P有影响 。
MOV A,data ;( data) → ( A) 直接单元地址中的内容送到累加器 A
MOV A,#data ;#data→ ( A) 立即数送到累加器 A中
MOV A,Rn ;( Rn) → ( A) Rn中的内容送到累加器 A中
MOV A,@Ri ;(( Ri)) → ( A) Ri内容指向的地址单元中的内容送到累加器 A
以累加器 A为目的操作数类指令( 4条)
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
1、什么是数据传送操作与数据传送指令? MCS-51单片机有哪些数据传递指令?
以寄存器 Rn为目的操作数的指令( 3条)
这 3条指令的功能是把源操作数指定的内容送到所选定的工作寄存器 Rn中。
有直接、立即和寄存器寻址方式:
MOV Rn,data ;( data) → ( Rn) 直接寻址单元中的内容送到寄存器 Rn中
MOV Rn,#data ;#data→ ( Rn) 立即数直接送到寄存器 Rn

MOV Rn,A ;( A) → ( Rn) 累加器 A中的内容送到寄存器 Rn中
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
1、什么是数据传送操作与数据传送指令? MCS-51单片机有哪些数据传递指令?
以直接地址为目的操作数的指令( 5条)
这组指令的功能是把源操作数指定的内容送到由直接地址 data所选定的片内 RAM中。有直接、立即、寄存器和寄存器间接 4种寻址方式:
MOV data,data ;( data) → ( data) 直接地址单元中的内容送到直接地址单元
MOV data,#data ;#data→ ( data) 立即数送到直接地址单元
MOV data,A ;( A) → ( data) 累加器 A中的内容送到直接地址单元
MOV data,Rn ;( Rn) → ( data) 寄存器 Rn中的内容送到直接地址单元
MOV data,@Ri ;(( Ri)) → ( data) 寄存器 Ri中的内容指定的地址单元中数据送到直接地址单元
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
1、什么是数据传送操作与数据传送指令? MCS-51单片机有哪些数据传递指令?
以间接地址为目的操作数的指令( 3条)
这组指令的功能是把源操作数指定的内容送到以 Ri中的内容为地址的片内 RAM中。有直接、立即和寄存器 3种寻址方式:
MOV @Ri,data ;( data) → (( Ri)) 直接地址单元中的内容送到以 Ri中的内容为地址的 RAM单元
MOV @Ri,#data ;#data→ (( Ri)) 立即数送到以 Ri中的内容为地址的 RAM单元
MOV @Ri,A ;( A) → (( Ri)) 累加器 A中的内容送到以 Ri中的内容为地址的 RAM单元
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
1、什么是数据传送操作与数据传送指令? MCS-51单片机有哪些数据传递指令?
查表指令( 2条)
这组指令的功能是对存放于程序存储器中的数据表格进行查找传送,使用变址寻址方式:
MOVC A,@A+DPTR ;(( A)) +( DPTR) → ( A) 表格地址单元中的内容送到累加器 A中
MOVC A,@A+PC ;(( PC)) +1→ ( A),(( A)) +
( PC) → ( A) 表格地址单元中的内容送到累加器 A中
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
1、什么是数据传送操作与数据传送指令? MCS-51单片机有哪些数据传递指令?
累加器 A与片外数据存储器 RAM传送指令( 4条)
这 4条指令的作用是累加器 A与片外 RAM间的数据传送。使用寄存器寻址方式:
MOVX @DPTR,A ;( A) → (( DPTR)) 累加器中的内容送到数据指针指向片外 RAM地址中
MOVX A,@DPTR ;(( DPTR)) → ( A) 数据指针指向片外
RAM地址中的内容送到累加器 A中
MOVX A,@Ri ;(( Ri)) → ( A) 寄存器 Ri指向片外
RAM地址中的内容送到累加器 A中
MOVX @Ri,A ;( A) → (( Ri)) 累加器中的内容送到寄存器 Ri指向片外 RAM地址中
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
1、什么是数据传送操作与数据传送指令? MCS-51单片机有哪些数据传递指令?
堆栈操作类指令( 2条)
这类指令的作用是把直接寻址单元的内容传送到堆栈指针 SP所指的单元中,以及把 SP所指单元的内容送到直接寻址单元中。这类指令只有两条,下述的第一条常称为入栈操作指令,第二条称为出栈操作指令。需要指出的是,单片机开机复位后,( SP)默认为 07H,但一般都需要重新赋值,设置新的 SP首址。入栈的第一个数据必须存放于
SP+1所指存储单元,故实际的堆栈底为 SP+1所指的存储单元。
PUSH data ;( SP) +1→ ( SP),( data) → ( SP) 堆栈指针首先加 1,直接寻址单元中的数据送到堆栈指针 SP所指的单元中
POP data ;( SP) → ( data)( SP) -1→ ( SP),堆栈指针 SP所指的单元数据送到直接寻址单元中,堆栈指针 SP再进行减 1操作
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
1、什么是数据传送操作与数据传送指令? MCS-51单片机有哪些数据传递指令?
交换指令( 5条)
这 5条指令的功能是把累加器 A中的内容与源操作数所指的数据相互交换。
XCH A,Rn ;( A) ←→ ( Rn)累加器与工作寄存器 Rn中的内容互换
XCH A,@Ri ;( A) ←→ (( Ri))累加器与工作寄存器 Ri所指的存储单元中的内容互换
XCH A,data ;( A) ←→ ( data)累加器与直接地址单元中的内容互换
XCHD A,@Ri ;( A3-0) ←→ (( Ri) 3-0)累加器与工作寄存器
Ri所指的存储单元中的内容低半字节互换
SWAP A ;( A3-0) ←→ ( A7-4)累加器中的内容高低半字节互换
3,1 任务二 P1口外接 8只 LED发光二极管模拟彩灯
3.1.4 相关知识
1、什么是数据传送操作与数据传送指令? MCS-51单片机有哪些数据传递指令?
16位数据传送指令( 1条)
这条指令的功能是把 16位常数送入数据指针寄存器。
MOV DPTR,#data16 ;#dataH→ ( DPH),#dataL→ ( DPL) 16位常数的高 8位送到 DPH,低 8位送到 DPL
课堂小结:
1、任务二的硬件电路与工作原理
2、怎样使发光二极管发亮?
3、什么是数据传送操作和数据传送指令?
4,MCS-51单片机有哪些数据传送指令?
作业:
P69 3.6 3.9