170 likes | 395 Views
实验三、单片机 I/O 实验 一、实验目的 : 1 .学习 P1 口的使用方法; 2 .学习延时子程序的编写和使用; 3 .了解 LED 动态显示电路结构,掌握 LED 动态显示方法。 4 .学习继电器控制的基本方法和经验。 二、实验仪器 : 1 . C51 实验开发板 1 块 2 .直流稳压电源( DF 1731 SB 3A ) 一台 3 . PC 机 一台 4 .仿真器( EASYPROBE ) 1 只. CPU 89C51 ( 接仿真头 ). P1. 三、实验内容 :. 1 、 指示灯循环显示:
E N D
实验三、单片机I/O实验 一、实验目的: 1.学习P1口的使用方法; 2.学习延时子程序的编写和使用; 3.了解LED动态显示电路结构,掌握LED动态显示方法。 4.学习继电器控制的基本方法和经验。 二、实验仪器: 1.C51实验开发板 1块 2.直流稳压电源(DF 1731 SB 3A) 一台 3.PC机 一台 4.仿真器(EASYPROBE) 1只
CPU 89C51 (接仿真头) P1 三、实验内容: 1、 指示灯循环显示: (1)实验要求:P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 (2)电路及连线如下:
(3)运行程序TP1A,观察现象。 TP1A程序: ORG 0000H LJMP START ORG 0040H START:MOV A,#0FEH ; LOOP: MOV P1,A ;点亮1只LED RL A ;左循环 LCALL DELAY ;延时1秒 SJMP LOOP DELAY: MOV R5,#0AH MOV R6,#00H DELAY1:MOV R7,#0B3H DJNZ R7,$ DJNZ R6,DELAY1 DJNZ R5,DELAY1 RET END
(4)修改程序TP1A,使指示灯左循环。 (5)*修改程序TP1A,使指示灯两两右循环。 (6)*修改程序TP1A,使指示灯从两边向中间循环。 (7)*修改程序TP1A,使指示灯从中间向两边循环。 (8)*修改程序TP1A,使指示灯右循环间隔时间为0.1秒。
P1 CPU 89C51 (接仿真头) P2 2、 输入/输出实验: (1)实验要求:P1做输入口,连接至DIP开关接口JP4,P2口输出连接至8只发光二极管接口JP8,编写程序读取开关状态,将此状态在发光二极管上显示出来。 (2)电路及连线如下:
(3)运行程序TP1B,观察现象。 TP1B程序: ORG 0000H LJMP START ORG 0040H START:MOV P1,#0FFH ; 因P1是准双向口,所以把P1口 ;作为输入口时,应先置高电平 MOV A,P1 ;读开关状态 MOV P2,A ;把读入的数据输出到P2口输出至指示灯 AJMP START END
3、七段LED动态显示输出: (1)电路及连线如下:
(2)实验要求1: 编写程序,从左到右显示“1”、“2”、“3”、“4”,调整延时时间(1s,0.1s,0.0125s,1/160s),观察显示效果。 参考程序:
ORG 0000H LJMP START ORG 0040H START:MOV R7,#04H ;灯数 MOV R6,#0FEH ;起始灯位,1号灯 MOV R0,#00H MOV DPTR,#TAB ; LOOP: MOV A,R7 ; MOVC A,@A+DPTR ;读字段码 MOV P2,#60H ;字段码地址 MOVX @R0,A ;输出字段码 MOV A,R6 MOV P2,#80H ;灯位控制地址 MOVX @R0,A ;输出灯位控制 RL A ;灯位右移 MOV R6,A ; LCALL DELAY ;延时 DJNZ R7,LOOP ;灯数计数 SJMP START DELAY:… TAB:DB 00H,66H,4FH,5BH,06H
(3)实验要求2: 编写程序,显示秒计数值(10进制方式)。 参考程序: ORG 0000H LJMP START ORG 0040H START:MOV R7,#04H MOV R1,#30H LOOP1: MOV @R1,#00H ;30H~33H清零 INC R1 DJNZ R7,LOOP1
MOV R5,#00H MOV R1,#30H MOV R0,#00H MOV DPTR,#TAB ; MOV R6,#0FEH ;起始灯位,1号灯 LOOP:MOV A,@R1 ;显示 MOVC A ,@A+DPTR ;读字段码 MOV P2 ,#60H ;字段码地址 MOVX @R0,A ;输出字段码 MOV A,R6 MOV P2 ,#80H ;灯位控制地址 MOVX @R0,A ;输出灯位控制 RL A ;灯位右移 MOV R6,A INC R1 CJNE R1,#34H,MM MOV R1,#30H MM: PUSH 01H
LCALL DELAY ;延时 INC R5 CJNE R5,#160,NEXT MOV R5,#00H MOV R1,#33H ;计时 MOV R7,#4 INC @R1 LOOP3:MOV A,@R1 CJNE A,#0AH,NEXT MOV @R1,#00H DEC R1 INC @R1 DJNZ R7,LOOP3 NEXT:POP 01H SJMP LOOP
DELAY: ;MOV R5,# 0AH MOV R4,# 10H DELAY1:MOV R3,#0B3H DJNZ R3,$ DJNZ R4,DELAY1 ;DJNZ R5,DELAY1 RET TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH END (4)修改程序,变为16进制方式显示: (5)修改程序,变为“分秒”方式显示:
4、 P3口输出控制继电器: (1)实验要求:利用P3.5输出高低,控制继电器的开合,实现对外部装置的控制。 (2)实验电路及连线:
TP3R程序: ORG 0000H LJMP START ORG 0040H START:MOV SP,#60H JD: CPL P3.5 ;继电器状态(吸合/分开)切换 LCALL DELAY ;延时 NOP SJMP JD DELAY: MOV R5,# 0AH MOV R6,# 00H DELAY1:MOV R7,# 0B3H DJNZ R7,$ DJNZ R6,DELAY1 DJNZ R5,DELAY1 RET END
5、键盘扫描输入(下次做) C51实验开发板上有个16键的键盘,试编写键盘扫描程序