搜索
您的当前位置:首页正文

南理工单片机实验报告

来源:榕意旅游网
MCS-51单片机实验报告

实验一 P1口实验

一、实验目的

(1)学习P1口的使用方法;

(2)学习掩饰子程序的编写和使用。 二、实验元件

AT89C51、LED-YELLOW、SW-SPDT、CAP、CAP-ELEC、CRYSTAL、RES 三、实验内容

(1)P1口做输出口,接八只发光二极管,编程使发光管循环点亮; ① 硬件连接图

由于受软件限制,无法通过调节晶振的频率来控制单片机的始终频率,只能通过调节单片机自身属性中的时钟频率来达到调节单片机时钟频率的目的,单片机默认的始终频率为12MHZ,将单片机的外部连接完成后,单击电气报告,经软件检查硬件连接无误之后即可

开始编程。

② 程序编写 ORG 0

SJMP STAR ORG 0030H

STAR: MOV P1,#1 ;点亮二极管D1 LCALL DELAY ;调用延时子程序 MOV P1,#2 ;点亮二极管D2 LCALL DELAY ;调用延时子程序 MOV P1,#4 ;点亮二极管D2 LCALL DELAY ;调用延时子程序 MOV P1,#8 ;点亮二极管D2 LCALL DELAY ;调用延时子程序 MOV P1,#10H ;点亮二极管D2 LCALL DELAY ;调用延时子程序 MOV P1,#20H ;点亮二极管D2 LCALL DELAY ;调用延时子程序 MOV P1,#40H ;点亮二极管D2 LCALL DELAY ;调用延时子程序 MOV P1,#80H ;点亮二极管D2 LCALL DELAY ;调用延时子程序 SJMP STAR ;循环

DELAY: MOV R0,#5 ;延时子程序

NEXT1: MOV R1,#200 ;延时时间约为0.2s NEXT2: MOV R2,#200 NEXT3: NOP NOP NOP

DJNZ R2,NEXT3 DJNZ R1,NEXT2 DJNZ R0,NEXT1

RET ;返回主程序 END

创建新的源文件后,将程序输入源文件中,保存后选择全部编译,经软件检查程序无语法错误后即可单机运行按钮开始运行程序。 ③ 实验结果

八只发光二极管按D1,D2,D3,D4,D5,D6,D7,D8的顺序依次发光,若发光时间过短,可以通过增加DALAY程序中的R0,R1的值使发光时间延长。

(2)P2口做输入、输出口,P1.0~P1.3做输入口,接四个开关;P1.4~P1.7做输出口,接四只发光管。编程读取开关的状态,将此状态在发光管上显示出来。 ① 硬件连接图

经硬件检查无误后开始编程

② 程序编写 ORG 1000H

START:MOV A,P1 ;读取P1口P1.4~P1.7的状态 RR A ;将A中的值右移一位 RR A ;将A中的值右移一位 RR A ;将A中的值右移一位 RR A ;将A中的值右移一位

MOV P1,A ;将A中的值输出至P1.0~1.7 SJMP START ;循环读取 END

③ 实验结果

将开关打至高电平,对应的发光二极管就打光,打至低电平,对应的发光二极管熄灭,由于

程序简短,不需要额外的延时程序使二极管维持发光状态。

实验二 外中断实验

一、实验目的

(1)学习外部中断技术的基本使用方法 (2)学习中断处理程序的编程方法 二、实验元件

AT89C51,TRAFFIC LIGHTS,SW-SPDT,BUTTON 三、实验说明

(1)设东西和南北方向均有红、黄、绿三盏灯,用8255芯片分别控制两个方向的各三盏灯。

(2)正常情况下的交通灯控制规则:

① 南北方向绿灯亮,东西方向红灯亮,保持5秒 ② 南北方向黄灯闪4次,东西方向红灯亮

③ 南北方向红灯亮,东西方向绿灯亮,保持5秒 ④ 南北方向红灯亮,东西方向黄灯闪4次 四、实验内容

用8255控制输出,控制六个发光二极管燃灭,模拟交通灯管理

① 硬件连接图

由于受软件限制,无法通过修改晶振的频率控制单片机时钟频率,只能通过修改单片机属性中的始终频率来调整单片机时钟频率,经电气检查无误后开始编程 ② 程序编写

ORG 1000H MOV R0,#7FH MOV A,#80H MOVX @R0,A

START:MOV R3, #10

RED1: MOV R7, #0CH ;控制南北方向绿灯亮,东西方向红灯亮 LCALL OUTPUT1 LCALL DELAY1S DJNZ R3, RED1 MOV R3,#4

YELLOW1: MOV R7, #0AH LCALL OUTPUT1 LCALL DELAY1S MOV R7, #08H LCALL OUTPUT1 LCALL DELAY1S DJNZ R3,YELLOW1 MOV R3, #10

RED2: MOV R7, #21H LCALL OUTPUT1 LCALL DELAY1S DJNZ R3, RED2 MOV R3, #4

YELLOW2: MOV R7, #11H LCALL OUTPUT1 LCALL DELAY1S MOV R7, #01H LCALL OUTPUT1 LCALL DELAY1S DJNZ R3,YELLOW2

SJMP START DELAY1S:MOV R1,#100 NEXT1: MOV R2,#100 NEXT2: NOP NOP NOP

DJNZ R2, NEXT2 DJNZ R1, NEXT1 RET

OUTPUT1:MOV R0,#7CH MOV A, R7 MOVX @R0, A MOV R0,#7DH MOVX @R0,A

;控制南北方向红灯亮,东西方向黄灯闪;跳转至程序开始 ;延时子程序 ;控制8255A的输出 ;控制南北方向黄灯闪,东西方向红灯亮 ;控制南北方向红灯亮,东西方向绿灯亮 RET ;返回主程序 END

经全部编译检查无语法错误后运行程序 ③ 实验结果

南北方向绿灯亮,东西方向红灯亮,保持5秒,南北方向黄灯闪4次,东西方向红灯亮,南北方向红灯亮,东西方向绿灯亮,保持5秒,南北方向红灯亮,东西方向黄灯闪4次

因篇幅问题不能全部显示,请点此查看更多更全内容

Top