《技能训练4七段数码管显示的秒计时.ppt》由会员分享,可在线阅读,更多相关《技能训练4七段数码管显示的秒计时.ppt(33页珍藏版)》请在金锄头文库上搜索。
1、技能实训技能实训4 七段数码管显示秒计时七段数码管显示秒计时 4.1 实训内容介绍实训内容介绍4.2 七段数码管显示原理七段数码管显示原理4.3 查表程序查表程序4.3.1 MOVC指令指令4.3.2寻址方式寻址方式4.3.3子程序子程序4.3.4指针与查表程序指针与查表程序4.4 技能提高:技能提高:顺序显示自己的身份证号顺序显示自己的身份证号实训4 简介l利用单片机实现秒计时每隔一秒钟,显示数据加一,即循环显示09的数字。 程序基本结构l计数值l显示字形l哪里要用数据传送类指令?程序的实现 ORG 0000HMAIN: MOV R1,#0 MOV R2,#10 MOV DPTR,#TABM
2、AIN1: MOV A,R1 MOVC A,A+DPTR MOV P0,A LCALL DELAY INC R1 DJNZ R2,MAIN1 LJMP MAIN执行的效果知识点1:4.2七段数码管显示原理 字形表是如何生成的?IO引脚P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0P0口对应十六进制数据控制的显示段dpcdebafg控制的显示段显示“0”显示“1”10110111B7显示“2”知识点2:4.3 查表程序 l查表是根据某个已知数,在表格中寻找对应的数。对于可枚举表示的函数,利用查表可以根据自变量快捷地获得函数值。l为了显示秒计时值,要依据秒计时值(采用BCD码编码
3、),获得对应的十进制字形数据值。 l我们把字形数据依09顺序存放在程序存储区,则相当于一个二维表,存储单元的地址相当于输入变量,存储单元的存放的数据就是该输入变量对应的输出变量。具体如表4-4。 字形表地址本例子程序的地址字形数据数据存放首地址1000H081H数据存放首地址+11001H0B7H数据存放首地址+21002H0C2H数据存放首地址+31003H092H数据存放首地址+41004H0B4H数据存放首地址+51005H098H数据存放首地址+61006H088H数据存放首地址+71007H0B3H数据存放首地址+81008H080H数据存放首地址+91009H090H4.3.1 M
4、OVC指令 l对程序存储器进行操作的指令有两条: MOVC A,A+DPTRMOVC A,A+PClMOVC与MOV、MOVX见表4-5lA+DPTR表示地址寻址方式MOVC与MOV、MOVX操作码MOVMOVXMOVC助记符含义MOV代表“Move”X代表“External”C代表“Code”操作对象内部数据存储器外部数据存储器程序存储器影响相关引脚无知识点:知识点:4.3.2寻址方式寻址方式 获得操作数的方式,称为寻址方式。MCS-51单片机有7种寻址方式。1立即寻址2直接寻址3寄存器寻址 4寄存器间接寻址 5变址寻址 6相对寻址 7位寻址1立即寻址l如:MOV A,#3AH 指令中的操作
5、数是1个8位或16位二进制立即数。立即数用data,data16表示,data16表示16位二进制数的立即数。l又如:MOV DPTR,#1234HDPTR是一个16位的寄存器,它由DPH及DPL两个8位的寄存器组成。 2直接寻址l指令中直接给出操作数地址。指令中直接给出操作数地址。如:如:MOV A, 3AH在在80C51单片机中,直接地址只单片机中,直接地址只能用来表示内部数据存储器、位能用来表示内部数据存储器、位地址空间以及特殊功能寄存器。地址空间以及特殊功能寄存器。3寄存器寻址 l如:如:MOV A,R1l又如:又如:INC R3l能进行寄存器寻址的是:工作寄存能进行寄存器寻址的是:工
6、作寄存器器R0R7、部分专用寄存器(例如,、部分专用寄存器(例如,累加器累加器A、通用寄存器、通用寄存器B、地址寄存、地址寄存器器DPTR和进位和进位CY)。)。4寄存器间接寻址 lMOV R0,#20HlMOV A,R0 lR0相当于是一个指针,对它保存的数据作为地址的内部数据单元进行操作, 访问外部RAMl在访问外部RAM时,用DPTR数据指针来间接寻址。l如:MOVX A,DPTR5变址寻址 l如:MOVC A,A+DPTRl再如:MOVC A,A+PC变址寻址以程序计数器PC或数据指针DPTR作为基地址寄存器,以累加器A作为变址寄存器,把两者的内容相加形成操作数的地址(16位二进制数)
7、。这种寻址方式常用于读取程序存储器中的常数表 6相对寻址 l相对寻址是将程序计数器PC中的当前内容作为基地址,与指令中所给出的数相加,其和为跳转指令的转移地址。l如:1000H: SJMP 06H7位寻址 l能进行位寻址操作有片内数据存储器的位寻址区(即字节地址为20H2FH)存储器以及可进行位寻址操作的专用寄存器。l如:MOV C,07H 例1:执行完成下列程序段后,A的内容为多少?lMOV A,#55HlMOV 20H,#68HlMOV 68H,#89HlMOV R0,20HlMOV A,R0知识点:4.3.3子程序 子程序:子程序:结构化、共用l子程序是一个相对独立的程序段,可以方子程序
8、是一个相对独立的程序段,可以方便实现模块化编程,可以被其它程序多次便实现模块化编程,可以被其它程序多次调用执行。调用执行。l优点:优点:利用子程序,可以实现模块化编程。这样可利用子程序,可以实现模块化编程。这样可使整个程序结构清楚,也可以实现功能程序使整个程序结构清楚,也可以实现功能程序的复用,即方便移植到别的系统中需要相同的复用,即方便移植到别的系统中需要相同功能的代码时使用。功能的代码时使用。子程序结构及编写要点 l调用前必须先定义标号: ;(实现相应功能的代码) RET“标号”就是子程序名,用于表示子程序的入口;“RET”表示返回,表示子程序结束。调用子程序l当程序的其它部分要调用子程序
9、,执行下列代码即可:LCALL 子程序名 即子程序入口的标号,相当于C语言的函数名。 数据表l数据表是顺序存放的数据,通常存放在程序存储器中。数据表是顺序存放的数据,通常存放在程序存储器中。l在本程序中,数据表是由下列伪指令来指定存放顺序的。在本程序中,数据表是由下列伪指令来指定存放顺序的。TAB: DB 081H ; 0 DB 0B7H ; 1 DB 0C2H ; 2 DB 092H ; 3 DB 0B4H ; 4 DB 098H ; 5 DB 088H ; 6 DB 0B3H ; 7 DB 080H ; 8 DB 090H ; 9 2.查表程序的实现l本程序中,查表程序由下列三条关键指令实
10、现。MAIN: MOV DPTR,#TAB;基址DPTR指向表头MAIN1: MOV A,R1 ;A为偏移量,根据R1的大小取相应的字形 MOVC A,A+DPTR ;取出数据表相应的数据到A完整的程序 ORG 0000HMAIN: MOV R1,#0 MOV R2,#10 MOV DPTR,#TABMAIN1: MOV A,R1 MOVC A,A+DPTR MOV P0,A LCALL DELAY INC R1 DJNZ R2,MAIN1 LJMP MAIN ORG 0100HTAB: DB 081H ; 0 DB 0B7H ; 1 DB 0C2H ; 2 DB 092H ; 3 DB 0B
11、4H ; 4 DB 098H ; 5 DB 088H ; 6 DB 0B3H ; 7 DB 080H ; 8 DB 090H ; 9 ENDDELAY: MOV R3,#05HLOOP0: MOV R4,#0C8HLOOP1: MOV R5,#0F8HLOOP2: DJNZ R5,LOOP2 DJNZ R4,LOOP1 DJNZ R3,LOOP0 RET 学会没有?实训提高会不会做?l4.4 技能提高:编写一程序控制数码管循环显示自己的身份程序号码。 1采用顺序显示方式依次显示自己的身份程序号码,每位数据可以停留显示1秒。2为了区分连续两个相同的显示数据,可在每个数据显示更新之前让数码管全灭一
12、段较短时间。练习讲解:3 单片机的初始状态为:A=33H,R2=2H,DPTR=0ADH,程序存储器中ADH104H的内容如表4-6。指执行下列程序:MOV DPTR,#100HMOV A,R2MOV A,A+DPTR执行完上述程序后A= H,R2= H,DPTR= H 地址数据ADH03HAEH09HAFH0CH100H00H101H01H102H04H103H09H104H10H4分别指出下列指令的操作数分别是采用了什么寻址方式。(1) MOV A,R0 ;源操作数 ,目的操作数 。(2) MOV 10H,#22H;源操作数 ,目的操作数 。(3) MOVC A,A+DPTR;源操作数 ,目的操作数 。(4) MOV R7,55H;源操作数 ,目的操作数 。小结1.七段数码管显示原理。七段数码管显示原理。2.深刻认识数据编码与显示字形的区别。深刻认识数据编码与显示字形的区别。3.区分区分MOV、MOVX与与MOVC指令的区别。指令的区别。4.学会查表程序的编写。学会查表程序的编写。