四川工程职业技术学院
单片机应用技术课程电子教案
Copyright ? Http://mcu.scetc.net
第 讲 10
汇编语言程序设计案例 1— 动态显示
Copyright ? Http:// mcu.scetc.net 2 SiChuan Engineering Technical College-1959
本讲主要内容,
10-1,LED数码管显示原理
10-2,案例分析 1( 2位学号显示 )
10-3,案例分析 2(简易按键抢答 )
10-4,CJNE,JC,JNC的应用
10-5,课后思考和实验准备
Copyright ? Http:// mcu.scetc.net 3 SiChuan Engineering Technical College-1959
10-1,LED数码管显示原理
? LED数码管动态显示硬件结构
8 1 5 5
P B 7
共 阴 极
L E D
abc
de
f
g
d p
+ 5 V
1 0 0 Ω × 8
7 4 0 7 × 2
7 4 0 6
P B 6
P B 5
P B 4
P B 3
P B 2
P B 1
P B 0
P A 5
P A 4
P A 3
P A 2
P A 1
P A 0
去 8 0 C 5 1
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
8051
1# 2# 3# 4# 5# 6#
Copyright ? Http:// mcu.scetc.net 4 SiChuan Engineering Technical College-1959
10-1,LED数码管显示原理
? LED数码管动态显示硬件结构电路原理分析
? 单片机 1个并口 P1口作为 6个数码管公共的段码输入端;
? 单片机的 P3.0~P3.5作为数码管的 6个位选信号控制端;
? 7407和 7406分别作为段码和位选的驱动信号;
? LED数码动态扫描原理
? 首先点亮 LED1,其于 5个 LED熄灭,保持 3mS左右,消隐;
? 其次点亮 LED2,其于 5个 LED熄灭,保持 3mS左右,消隐;
? ……
? 最后点亮 LED6,其于 5个 LED熄灭,保持 3mS左右,消隐 ;
? 扫描完 1次大约需要 24mS(每一次消隐 1mS),扫描周期为 50HZ左右;
又由于人眼的“视觉暂留”现象,则认为所有的数码管是恒定点亮的。
Copyright ? Http:// mcu.scetc.net 5 SiChuan Engineering Technical College-1959
10-1,LED数码管显示原理
从 P1口送出 1#段码 ;P3.0←1,其它输出 0
延时 3ms(1#)显示)
从 P1口送出 00H
延时 1ms消隐
从 P1口送出 6#段码 ;P3.5←1,其它输出 0
延时 3ms(6#)显示)
从 P1口送出 00H
延时 1ms消隐
流程图,
Copyright ? Http:// mcu.scetc.net 6 SiChuan Engineering Technical College-1959
10-2.案例分析 1( 2位学号显示)
? 硬件电路原理图
P3.2 P3.3 P3.4
P3.5 P1.3 P1.2 P1.1 P1.0
Copyright ? Http:// mcu.scetc.net 7 SiChuan Engineering Technical College-1959
10-2.案例分析 1( 2位学号显示)
取出( ACC)低 4位,查出 8段码,送 P0口,P3.4←1,P3.5←0
延时 3ms( LED1显示)
从 P0口送出 0FFH
延时 1ms(消隐)
取出( ACC)高 4位,查出 8段码,送 P0口,P3.4←0,P3.5←1
延时 3ms( LED2显示)
从 P0口送出 0FFH
延时 1ms(消隐)
开 始
30H ←#39H,A ←30H
流程图,
Copyright ? Http:// mcu.scetc.net 8 SiChuan Engineering Technical College-1959
10-2.案例分析 1( 2位学号显示)
? 程序清单
ORG 0000H
MOV P0,#0FFH ;段码清零
MOV 30H,#39H ;写入需要显示的数据,39”
MOV DPTR,#TAB ;共阳极数码管的段码表
LOOP,CLR P3.4 ;选中 LED1
SETB P3.5
MOV A,30H
ANL A,#0FH ;高 4位清 0,保留低 4位
MOVC A,@A+DPTR ;查表取出低 4位的段码
MOV P0,A ;段码送 P0口
LCALL DELAY3ms ;延时 3ms
MOV P0,#0FFH
LCALL DELAY1ms ;消隐 1ms
CLR P3.5 ;选中 LED2
SETB P3.4
MOV A,30H ;取显示数据
ANL A,#0F0H ;低 4位清 0,保留高 4位
SWAP A ;累加器高低 4位交换
取出低位
的段码,
送 LED1
取出高位
的段码,
送 LED2
两
者
区
别
Copyright ? Http:// mcu.scetc.net 9 SiChuan Engineering Technical College-1959
10-2.案例分析 1( 2位学号显示)
? 程序清单(续)
MOVC A,@A+DPTR ;查表取出段码
MOV P0,A ;段码送 P0口
LCALL DELAY3ms ;延时 3ms
MOV P0,#0FFH
LCALL DELAY1ms ;消隐 1ms
LJMP LOOP
TAB,DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H
DB 0F8H,80H,90H,88H,83H,0C6H,0A1H
DB 86H,8EH ;“0—F”的共阳极段码表
END
思考,如果是共阴数
码管呢?
Copyright ? Http:// mcu.scetc.net 10 SiChuan Engineering Technical College-1959
10-3,案例分析 2(简易按键抢答 )
? 题目要求:使用案例 1中的硬件电路实现以下功能。
? 实现 4路信号的输入
? 利用数码管显示按键状态
? 当 K1按下时,数码管的最低位 (P3.5)显示,1”;
? 当 K2按下时,数码管的最低位显示,2”;
? 当 K3按下时,数码管的最低位显示,3”;
? 当 K4按下时,数码管的最低位显示,4”。
? 每次限时 30S
Copyright ? Http:// mcu.scetc.net 11 SiChuan Engineering Technical College-1959
10-3.案例分析 2(简易按键抢答)
P1口读入数据
( A) =?
显示 1 显示 2 显示 3 显示 4 返回
=0EH =0BH =07H 其他 =0DH
流程图,
判决分支
Copyright ? Http:// mcu.scetc.net 12 SiChuan Engineering Technical College-1959
10-3.案例分析 2(简易按键抢答)
? 程序清单
ORG 0000H
MAIN,MOV A,P1
ANL A,#0FH
CJNE A,#0EH,LOOP0
MOV R1,#01H
LCALL DISP
LJMP MAIN
LOOP0,CJNE A,#0DH,LOOP1
MOV R1,#02H
LCALL DISP
LJMP MAIN
LOOP1,CJNE A,#0BH,LOOP2
MOV R1,#03H
LCALL DISP
LJMP MAIN
LOOP2,CJNE A,#07H,LOOP3
MOV R1,# 04H
LCALL DISP
LOOP3,LJMP MAIN
程序 2
条件
程序 N-1
0 N
程序 1 程序 N
1 N-1 …
…
显示 1
显示 2
显示 3
CJNE(条件转移指令)
常用于多分支程序中
显示 4
Copyright ? Http:// mcu.scetc.net 13 SiChuan Engineering Technical College-1959
10-3.案例分析 2(简易按键抢答)
? 程序清单(续)
DISP,MOV DPTR,#TAB ;查表显示
MOV A,R1
MOVC A,@A+DPTR
ANL P3,#0DFH;选中 P3.5对应的数码管
MOV P0,A ;送段码
DEL30S:MOV R2,#30 ;延时 30S
DELS,LCALL DEL1S
DJNZ R2,DELS
MOV P0,#0FFH ;清除显示
RET ;重新开始下一次抢答
DEL1S,…… ;延时 1S子程序
RET
TAB,……
END
Copyright ? Http:// mcu.scetc.net 14 SiChuan Engineering Technical College-1959
10-4,CJNE,JC,JNC的应用
? CJNE,JC,JNC应用实例 (判断数据的大小关系 )
例,判断 A的大小,当 (A)>80H时,数码管显示,H”;当 (A)=80H时,数码
管显示,--”;当 (A)<80H时,数码管显示,L”。
CJNE A,#80H,BUD ;如 (A)≠80H,跳转到 BUD
CLR P3.5 ;显示,--”
MOV P0,#0BFH
SJMP $
BUD,JNC DAY ;如 (A)>80H,跳转到 DAY
CLR P3.5 ; (A)<80H,显示,L”
MOV P0,#0CEH
SJMP $
DAY,CLR P3.5 ; (A)>80H,显示,H”
MOV P0,#89H
SJMP $
Copyright ? Http:// mcu.scetc.net 15 SiChuan Engineering Technical College-1959
10-5,课后思考和实验准备
? 课后思考
? 数码管动态显示的基本思路
? 查表程序在数码管显示中的应用
? 多分支程序的编写方法
? 实验准备
? 利用实验的电路图,找出实验 5中各个数码管位选信号和段码信号对
应的单片机 I/O口;
? 完成实验指导书中实验 5的各项预习任务。
单片机应用技术课程电子教案
Copyright ? Http://mcu.scetc.net
第 讲 10
汇编语言程序设计案例 1— 动态显示
Copyright ? Http:// mcu.scetc.net 2 SiChuan Engineering Technical College-1959
本讲主要内容,
10-1,LED数码管显示原理
10-2,案例分析 1( 2位学号显示 )
10-3,案例分析 2(简易按键抢答 )
10-4,CJNE,JC,JNC的应用
10-5,课后思考和实验准备
Copyright ? Http:// mcu.scetc.net 3 SiChuan Engineering Technical College-1959
10-1,LED数码管显示原理
? LED数码管动态显示硬件结构
8 1 5 5
P B 7
共 阴 极
L E D
abc
de
f
g
d p
+ 5 V
1 0 0 Ω × 8
7 4 0 7 × 2
7 4 0 6
P B 6
P B 5
P B 4
P B 3
P B 2
P B 1
P B 0
P A 5
P A 4
P A 3
P A 2
P A 1
P A 0
去 8 0 C 5 1
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
8051
1# 2# 3# 4# 5# 6#
Copyright ? Http:// mcu.scetc.net 4 SiChuan Engineering Technical College-1959
10-1,LED数码管显示原理
? LED数码管动态显示硬件结构电路原理分析
? 单片机 1个并口 P1口作为 6个数码管公共的段码输入端;
? 单片机的 P3.0~P3.5作为数码管的 6个位选信号控制端;
? 7407和 7406分别作为段码和位选的驱动信号;
? LED数码动态扫描原理
? 首先点亮 LED1,其于 5个 LED熄灭,保持 3mS左右,消隐;
? 其次点亮 LED2,其于 5个 LED熄灭,保持 3mS左右,消隐;
? ……
? 最后点亮 LED6,其于 5个 LED熄灭,保持 3mS左右,消隐 ;
? 扫描完 1次大约需要 24mS(每一次消隐 1mS),扫描周期为 50HZ左右;
又由于人眼的“视觉暂留”现象,则认为所有的数码管是恒定点亮的。
Copyright ? Http:// mcu.scetc.net 5 SiChuan Engineering Technical College-1959
10-1,LED数码管显示原理
从 P1口送出 1#段码 ;P3.0←1,其它输出 0
延时 3ms(1#)显示)
从 P1口送出 00H
延时 1ms消隐
从 P1口送出 6#段码 ;P3.5←1,其它输出 0
延时 3ms(6#)显示)
从 P1口送出 00H
延时 1ms消隐
流程图,
Copyright ? Http:// mcu.scetc.net 6 SiChuan Engineering Technical College-1959
10-2.案例分析 1( 2位学号显示)
? 硬件电路原理图
P3.2 P3.3 P3.4
P3.5 P1.3 P1.2 P1.1 P1.0
Copyright ? Http:// mcu.scetc.net 7 SiChuan Engineering Technical College-1959
10-2.案例分析 1( 2位学号显示)
取出( ACC)低 4位,查出 8段码,送 P0口,P3.4←1,P3.5←0
延时 3ms( LED1显示)
从 P0口送出 0FFH
延时 1ms(消隐)
取出( ACC)高 4位,查出 8段码,送 P0口,P3.4←0,P3.5←1
延时 3ms( LED2显示)
从 P0口送出 0FFH
延时 1ms(消隐)
开 始
30H ←#39H,A ←30H
流程图,
Copyright ? Http:// mcu.scetc.net 8 SiChuan Engineering Technical College-1959
10-2.案例分析 1( 2位学号显示)
? 程序清单
ORG 0000H
MOV P0,#0FFH ;段码清零
MOV 30H,#39H ;写入需要显示的数据,39”
MOV DPTR,#TAB ;共阳极数码管的段码表
LOOP,CLR P3.4 ;选中 LED1
SETB P3.5
MOV A,30H
ANL A,#0FH ;高 4位清 0,保留低 4位
MOVC A,@A+DPTR ;查表取出低 4位的段码
MOV P0,A ;段码送 P0口
LCALL DELAY3ms ;延时 3ms
MOV P0,#0FFH
LCALL DELAY1ms ;消隐 1ms
CLR P3.5 ;选中 LED2
SETB P3.4
MOV A,30H ;取显示数据
ANL A,#0F0H ;低 4位清 0,保留高 4位
SWAP A ;累加器高低 4位交换
取出低位
的段码,
送 LED1
取出高位
的段码,
送 LED2
两
者
区
别
Copyright ? Http:// mcu.scetc.net 9 SiChuan Engineering Technical College-1959
10-2.案例分析 1( 2位学号显示)
? 程序清单(续)
MOVC A,@A+DPTR ;查表取出段码
MOV P0,A ;段码送 P0口
LCALL DELAY3ms ;延时 3ms
MOV P0,#0FFH
LCALL DELAY1ms ;消隐 1ms
LJMP LOOP
TAB,DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H
DB 0F8H,80H,90H,88H,83H,0C6H,0A1H
DB 86H,8EH ;“0—F”的共阳极段码表
END
思考,如果是共阴数
码管呢?
Copyright ? Http:// mcu.scetc.net 10 SiChuan Engineering Technical College-1959
10-3,案例分析 2(简易按键抢答 )
? 题目要求:使用案例 1中的硬件电路实现以下功能。
? 实现 4路信号的输入
? 利用数码管显示按键状态
? 当 K1按下时,数码管的最低位 (P3.5)显示,1”;
? 当 K2按下时,数码管的最低位显示,2”;
? 当 K3按下时,数码管的最低位显示,3”;
? 当 K4按下时,数码管的最低位显示,4”。
? 每次限时 30S
Copyright ? Http:// mcu.scetc.net 11 SiChuan Engineering Technical College-1959
10-3.案例分析 2(简易按键抢答)
P1口读入数据
( A) =?
显示 1 显示 2 显示 3 显示 4 返回
=0EH =0BH =07H 其他 =0DH
流程图,
判决分支
Copyright ? Http:// mcu.scetc.net 12 SiChuan Engineering Technical College-1959
10-3.案例分析 2(简易按键抢答)
? 程序清单
ORG 0000H
MAIN,MOV A,P1
ANL A,#0FH
CJNE A,#0EH,LOOP0
MOV R1,#01H
LCALL DISP
LJMP MAIN
LOOP0,CJNE A,#0DH,LOOP1
MOV R1,#02H
LCALL DISP
LJMP MAIN
LOOP1,CJNE A,#0BH,LOOP2
MOV R1,#03H
LCALL DISP
LJMP MAIN
LOOP2,CJNE A,#07H,LOOP3
MOV R1,# 04H
LCALL DISP
LOOP3,LJMP MAIN
程序 2
条件
程序 N-1
0 N
程序 1 程序 N
1 N-1 …
…
显示 1
显示 2
显示 3
CJNE(条件转移指令)
常用于多分支程序中
显示 4
Copyright ? Http:// mcu.scetc.net 13 SiChuan Engineering Technical College-1959
10-3.案例分析 2(简易按键抢答)
? 程序清单(续)
DISP,MOV DPTR,#TAB ;查表显示
MOV A,R1
MOVC A,@A+DPTR
ANL P3,#0DFH;选中 P3.5对应的数码管
MOV P0,A ;送段码
DEL30S:MOV R2,#30 ;延时 30S
DELS,LCALL DEL1S
DJNZ R2,DELS
MOV P0,#0FFH ;清除显示
RET ;重新开始下一次抢答
DEL1S,…… ;延时 1S子程序
RET
TAB,……
END
Copyright ? Http:// mcu.scetc.net 14 SiChuan Engineering Technical College-1959
10-4,CJNE,JC,JNC的应用
? CJNE,JC,JNC应用实例 (判断数据的大小关系 )
例,判断 A的大小,当 (A)>80H时,数码管显示,H”;当 (A)=80H时,数码
管显示,--”;当 (A)<80H时,数码管显示,L”。
CJNE A,#80H,BUD ;如 (A)≠80H,跳转到 BUD
CLR P3.5 ;显示,--”
MOV P0,#0BFH
SJMP $
BUD,JNC DAY ;如 (A)>80H,跳转到 DAY
CLR P3.5 ; (A)<80H,显示,L”
MOV P0,#0CEH
SJMP $
DAY,CLR P3.5 ; (A)>80H,显示,H”
MOV P0,#89H
SJMP $
Copyright ? Http:// mcu.scetc.net 15 SiChuan Engineering Technical College-1959
10-5,课后思考和实验准备
? 课后思考
? 数码管动态显示的基本思路
? 查表程序在数码管显示中的应用
? 多分支程序的编写方法
? 实验准备
? 利用实验的电路图,找出实验 5中各个数码管位选信号和段码信号对
应的单片机 I/O口;
? 完成实验指导书中实验 5的各项预习任务。