《单片机原理与实用技术》第5章.ppt
第5章并行接口,莫海霞付晓光制作,5.1 最小应用系统,5.2 并行接口 5.2.1 并行接口结构原理,1.并行接口的结构组成,并行接口的工作原理 1)并行口的输出 2)并行口的输入 3)读-改-写操作,5.2.2 并行接口的使用,1.输出数据 1)使用数据传送MOV指令输出字节数据 MOV Pm,#dataMOV Pm,AMOV Pm,directMOV Pm,Rn MOV Pm,Ri 2)使用位操作指令输出各位数据 MOV Pm.n,CSETB Rm.n CLR Pm.n 3)使用读改写指令改变输出数据 ANL Pm,#dataORL Pm,AINC Pm CPL Pm.n,2.输入数据 1)使用MOV指令输入字节数据 MOV A,Pm MOV direct,Pm MOV Ri,Pm 2)使用MOV指令输入口线位数据 MOV C,Pm.n 3)输入数据参与运算、判断 ANL A,Pm XRL A,Pm ADD A,Pm JNB Pm.n,rel JBC Pm.m,rel,例5-1 图5-6中,由开关K0K3控制L0L3,开关闭合,对应灯亮,试编程实现该功能。解 分析:开关闭合,相应输入为0,而当输出为0时,指示灯亮,即只要将P1.0P1.3的状态传递给P1.4P1.7即可。程序如下:ORL P1,#0FH;将要输入的低位置1,同时不改变高位状态MOV A,P1SWAP A ORL A,#0FHMOV P1,ARET,也可用位操作指令实现该功能,程序如下:ORL P1,#0FH MOV C,P1.0 MOV P1.4,C MOV C,P1.1 MOV P1.5,C MOV C,P1.2 MOV P1.6,C MOV C,P1.3 MOV P1.7,C RET,5.3 并行接口的应用实例 5.3.1 并行接口驱动喇叭发声,例5-2 图5-7所示为一报警装置,当盗贼闯断由P1.7引脚引出的接地细线时,由P1.0驱动喇叭发出频率为1000Hz 的“哔哔”报警声。设晶振频率为12MHz。,解分析:由图可知P1.7引线被撞断后,P1.0引脚为高电平1。1000Hz频率的方波周期为0.001秒,高、低电平持续时间各为0.5ms,应使用0.5ms的延时程序。程序如下:ORG 0100H CON:SETB P1.7 MOV C,P1.7 JNC CON;判断P1.7是否为1 WARN:ACALL DELAY;是1发出报警 CPL P1.0 SJMP WARNDELAY:MOV R7,#0FAH;0.5ms延时程序 LOOP:DJNZ R7,LOOP;2502121/12MHz=0.5ms RET END,例5-3设计一门铃控制程序,当门铃被按下时,播放“小星星”歌曲。解分析:当无人按下按扭时,应使单片机系统不通电,故按扭可设计为上电复位按扭。门铃可由I/O线驱动。音符1、2、3、4、5、6、7对应的方波电流的频率分别为:525Hz、590Hz、660Hz、700Hz、785Hz、880Hz、990Hz,对应的半周期分别为:952s、847s、758s、714s、637s、568s、505s。以5s为延时单位,则各音符对应方波需延时的次数分别分190、170、152、143、127、114、101,都小于256,可以存放在字节单元里。一拍对应的音长约为0.8秒。每个一拍的音符方波必须循环一定的次数以达到0.8秒。经计算可知,1、2、3、4、5、6、7对应循环次数分别为:842、941、1053、1119、1260、1404、1584都大于一个字节。将每个音符对应的循环次数拆分成两个字节的数的乘积,作为两重循环的次数,依次为:4210、5188、1381、5224、5252、2752、8198。将对应的音符的频率延时次数、音长循环次数的两个拆分数据依次存放在表中。在程序中可查表获得。,程序如下:ORG 0000H;上电启动 AJMP 0040H ORG 0040H MAIN:MOV DPTR,#0100H;音符表首址 MOV R0,#42;歌曲长度NEXT:CLR A MOVC A,A+DPTR;取音符对应循环次数 MOV R7,A INC DPTR LCR A MOVC A,A+DPTR;取音长对应循环次数 第一因数 MOV R6,A INC DPTR CLR A,MOVC A,A+DPTR;取音长对应循环次 数第二因数 MOV R5,A INC DPTR CON:CPL P1.0;输出状态取反 ACALL DELAY;与音频有关的延时 DJNZ R5,CON DJNZ R6,CON;音长R5R6R75s=0.85 DJNZ R0,NEXT;下一个音符 ORG 60H DELY:NOP;与音频有关的延时 NOP NOP DJNZ R7,DELY;延时时间为5sR7 RET,ORG 0100HDB 190,4,210,190,4,210,127,5,252,127,5,252DB 114,27,52,114,27,52,127,5,252;对应音符1155665DB 143,5,224,143,5,224,152,13,81,152,13,81,DB 170,5,188,170,5,188,190,4,210,;对应音符4433221DB127,5,252,127,5,252,143,5,224,143,5,224,DB 152,13,81,152,13,81,170,5,188,;对应音符5544332DB127,5,252,127,5,252,143,5,224,143,5,224,DB 152,13,81,152,13,81,170,5,188,;对应音符5544332DB 190,4,210,190,4,210,127,5,252,127,5,252DB 114,27,52,114,27,52,127,5,252;对应音符1155665DB 143,5,224,143,5,224,152,13,81,152,13,81,DB 170,5,188,170,5,188,190,4,210,;对应音符4433221END,5.3.2 并行口控制步进电机,1.方向控制 若按ABCA顺序通电,则为正转,按ACBA则反转。这种工作方式称三相单三拍方式。三相“指A、B、C三个绕组;“单”是指每次只有一相绕级通电;“拍”是指从一种通电状态,转换到另一种通电状态,“三拍”即为有三种通电状态,控制绕组通电状态每切换三次为一个循环。2.角度控制 对于常用步进电机,三拍工作方式一拍为30,六拍工作方式一拍为1.50。每一拍对应一个脉冲。故控制通电脉冲数,即可精确控制步进电机转过角度。3.速度控制 步进电机的运转速度由输入A、B、C三相绕组脉冲的频率控制。,例5-4 编程控制步进电机。解分析:由P1.0、P1.1、P1.2控制步进电机的A、B、C三个绕组。转角存在内部RAM的2DH单元(度);运转方向标志存在内部RAM的2EH单元(0为顺时针,非0逆时针);工作方式标志存在内部RAM的2FH单元(6为六拍,3为三拍);如表5-1所示为工作控制字。正转六拍为01H、03H、02H、06H、04H、05H,三拍方式为01H、02H、04H,存在30H开始的单元内;设每个脉冲的频率为100Hz,由此决定转速。,表5-1 步进电机工作控制字,相关程序段如下:MOV A,2DH MOV B,#09;一个循环为90 DIV AB MOV R7,A;总循环次数 MOV R6,2FH;三、六拍 MOV R0,30H;控制字首址 MOV A,2EH;正、反转 JZ NEXT;顺时针转 CJNE R6,#3,SIX;六拍转 MOV 40H,32H;三拍逆时针转,重排工作控制字 MOV 41H,31H MOV 42H,30H SJMP GOON SIX:MOV 40H,35H;六拍逆时针转,重排工作控制字 MOV 41H,34H,MOV 42H,33H MOV 43H,32H MOV 44H,31H MOV 45H,30H MOV R0,#40H NEXT:MOV R1,R0;保护工作方式控制字首址 MOV R5,R6;保护工作方式控制字 CON:MOV A,R1;输出 ORL A,#03H MOV P1,A ACALL DELAY0.01 INC R1 DJNE R5,CON;下一脉冲 DJNE R7,NEXT;下一循环 DELAY0.01:;0.01秒延时程序(略),5.3.3 并行接口控制LED显示器,表5-2 LED显示的字符与编码表,例5-5 用最小系统控制共阳七段LED显示器,循环显示地址单元20H30H中的单位十进制数,时间间隔1秒。,解电路如图5-12所示由表5-1可知,十进制数09对应的共阳极编码为:C0H、F9H、A4H、B0H、99H、92H、82H、F8H、80H、90H。程序如下:ORG 0100H MAIN:MOV R0,#20H MOV R1,#11H MOV DPTR,#TAB NEXT:MOV A,R0;读数 MOVC A,A+DPTR;查编码表 MOV P1,A ACALL DELAY;延时1秒 INC R0;下一单元 DJNZ R1,NEXT SJMP MAIN ORG 0140HDELAY:MOV R2,#0AH;延时1秒子程序,LOOP1:MOV R3,#0C8H;晶振频率为12MHz LOOP2:MOV R4,#0FAH HETE:DTNZ R4,HETE;2502001021s1s DJNZ R3,LOOP2 DJNZ R2,LOOP1 RET ORG 0130H TAB:DB 3FH;09编码表 DB 06H DB 5BH DB 4FH DB 66H DB 6DH DB 7DH DB 07H DB 7FH DB 6FH,例5-6 设计单片机电路,控制6位共阴七段LED显示器显示门位十六进制数。同时显示内容分别在外部I/O端口的10H15H单元。,解分析:若用同一并行口使6个七段LED在同一时间里显示不同的内容是不可能的。但我们可以利用人眼的视觉停留现象,在较短的时间使6位显示器依次亮、灭,只要每位显示器显示的时间足够短,就会给人造成多位同时显示的假象。这种显示方法叫动态显示。注意,在动态显示中,每位显示间隔的时间不能太长,不能超过20ms,否则会有闪烁感。线路连后如图5-13所示。图中,用P0口控制各位显示的数字,用P1口的低6位选通哪一位显示。,程序如下:ORG 0060HMAIN:MOV R0,#10H MOV R6,#6NEXT:MOVX A,R0;取数 MOV DPTR,#TAB MOVC A,A+DPTR;查显示码,MOV P0,A;输出显示码 MOV A;B;控制某位显示 MOV P1,A ACALL DELAY;延时 INC R0;修改地址指针 RL A MOV B,A;修改显示位 DJNZ R6,NEXT SJMP MAINDELAY:MOV R3,#02H;3ms延时 LOOP:MOV R4,#0FAH;设fosc=6MHz DJNZ R4,$DJNZ R3,LOOP RET TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,DB 6FH,77H,7CH,39H,5EH,79H,71HEND,5.3.4 并行口的键盘输入控制,键盘是人机对话的一个重要部件。人们通过键盘向单片机发出控制信号。,例5-7编写5-14按键检测程序。解程序段如下:MOV P1,#0FFH CON:MOV A,P1;读P1 口 MOV R0,#0FFH MOV R7,#08HCHECK:RLC A;依次检查A的各位是否为0 INC R0 JNC GOON;为0转键盘处理程序 DJNZ R7,CHECK SJMP CON GOON:MOV A,R0 RL A MOV DPTR,#TAB SJMP A+DPTR;查表 TAB:AJMP KEY0;键盘处理程序入口表 AJMP KEY1 AJMP KEY7,