150 likes | 344 Views
10. 汇编语言程序设计案例 1— 动态显示. 本讲主要内容:. 10-1. LED 数码管显示原理 10-2. 案例分析 1 ( 2 位学号显示 ) 10-3. 案例分析 2( 简易按键抢答 ) 10-4. CJNE 、 JC 、 JNC 的应用 10-5. 课后思考和实验准备. 10-1. LED 数码管显示原理. LED 数码管动态显示硬件结构. P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0. 8051. 4#. 2#. 1#. 3#. 5#. 6#. P3.0 P3.1
E N D
10 汇编语言程序设计案例1—动态显示
本讲主要内容: 10-1. LED数码管显示原理 10-2. 案例分析1(2位学号显示) 10-3. 案例分析2(简易按键抢答) 10-4. CJNE、JC、JNC的应用 10-5. 课后思考和实验准备 SiChuan Engineering Technical College-1959
10-1. LED数码管显示原理 • LED数码管动态显示硬件结构 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 8051 4# 2# 1# 3# 5# 6# P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 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左右;又由于人眼的“视觉暂留”现象,则认为所有的数码管是恒定点亮的。 SiChuan Engineering Technical College-1959
10-1. LED数码管显示原理 从P1口送出1#段码;P3.0←1、其它输出0 从P1口送出6#段码;P3.5←1、其它输出0 延时3ms(1#)显示) 延时3ms(6#)显示) 从P1口送出00H 从P1口送出00H 延时1ms消隐 延时1ms消隐 流程图: SiChuan Engineering Technical College-1959
10-2.案例分析1(2位学号显示) • 硬件电路原理图 P3.2 P3.3 P3.4 P1.3 P1.2 P1.1 P1.0 P3.5 SiChuan Engineering Technical College-1959
10-2.案例分析1(2位学号显示) 开 始 30H ←#39H,A ←30H 取出(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(消隐) 流程图: SiChuan Engineering Technical College-1959
10-2.案例分析1(2位学号显示) 取出低位的段码,送LED1 两者区别 取出高位的段码,送LED2 • 程序清单 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位交换 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 SiChuan Engineering Technical College-1959
10-3. 案例分析2(简易按键抢答) • 题目要求:使用案例1中的硬件电路实现以下功能。 • 实现4路信号的输入 • 利用数码管显示按键状态 • 当K1按下时,数码管的最低位(P3.5)显示“1”; • 当K2按下时,数码管的最低位显示“2”; • 当K3按下时,数码管的最低位显示“3”; • 当K4按下时,数码管的最低位显示“4”。 • 每次限时30S SiChuan Engineering Technical College-1959
10-3.案例分析2(简易按键抢答) P1口读入数据 (A)=? =0EH =0DH =0BH =07H 其他 显示1 显示2 显示3 显示4 返回 判决分支 流程图: SiChuan Engineering Technical College-1959
10-3.案例分析2(简易按键抢答) CJNE(条件转移指令) 常用于多分支程序中 显示1 条件 显示2 0 N 1 N-1 …… 显示3 程序1 程序2 程序N-1 程序N 显示4 • 程序清单 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 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 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 $ SiChuan Engineering Technical College-1959
10-5. 课后思考和实验准备 • 课后思考 • 数码管动态显示的基本思路 • 查表程序在数码管显示中的应用 • 多分支程序的编写方法 • 实验准备 • 利用实验的电路图,找出实验5中各个数码管位选信号和段码信号对应的单片机I/O口; • 完成实验指导书中实验5的各项预习任务。 SiChuan Engineering Technical College-1959