单片机实验

更新时间:2023-09-23 10:46:01 阅读量: 医药卫生 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 P1口实验一

一、实验目的:

1、学习P1口的使用方法。

2、学习延时子程序的编写和使用。 二、实验设备:

EL-8051-III型单片机实验箱 三、实验内容:

1、P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。

2、P1口做输入口,接八个按钮开关,以实验箱上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来。 四、实验步骤:

执行程序1(T1_1.ASM)时:P1.0-P1.7接发光二极管L1-L8。

执行程序1(T1_1.ASM)时:P1.0-P1.7接平推开关K1-K8;74LS273的00-07接发光二极管L1-L8;74LS273的片选端CS273接CS0。 五、实验程序: 程序1

NAME T1_2 ;P1口输入实验 OUT_PORT EQU 0CFA0H CSEG AT 0000H LJMP START

CSEG AT 4100H

START: MOV P1,#0FFH ;复位P1口为输入状态

MOV A,P1 ;读P1口的状态值入累加器A

MOV DPTR,#OUT_PORT ;将输出口地址赋给地址指针DPTR MOVX @DPTR,A ;将累加器A的值赋给DPTR指向的地址 JMP START ;继续循环监测端口P1的状态 END

程序2 NAME T1_2 OUT_PORT EQU 0CFA0H CSEG AT 0000H LJMP START CSEG AT 4100H

START: MOV P1,#0FFH MOV A,P1 MOV DPTR,#OUT_PORT MOVX @DPTR,A JMP START END 六、实验体会:

通过本次实验,巩固了课本上的知识,学会了P1口的使用方法以及延时子程序的编写和使用,提高了对P1口的使用能力。

实验二 简单I/0口扩展实验——交通灯控制实验

一、 实验目的:

学习在单片机系统中扩展简单I/0接口的方法,学习数据输出程序的设计方法,学习模拟交通灯控制的实现方法。 二、实验设备:

CPU挂箱、8031CPU模块 三、实验内容:

扩展实验箱上的74LS273Z做为输出口,控制八个发光二极管亮灭,模拟交通灯管理。

四、实验原理:

要完成本实验,首先必须了解交通路灯的亮灭规律。本实验需要到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。不妨将L1(红)、L2(绿)、L3(黄)做为东西方向的指示灯,将L5(红)、L6(绿)、L7(黄)做为南北方向的指示灯。而交通等的亮灭规律为:初始态是两个路口的红灯全亮,之后,东西路口绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。各发光二极管的阳极通过保护电阻接到+5V的电源上,阴极接到输入端上,因此使其点亮应使相应输入端为低电平。 五、实验步骤及程序:

74LS273的输出00~07接发光二极管L1~L8,74LS273的片选CS273接片选信号CS0。

NAME T3 ;I/O口扩展实验一

PORT EQU 0CFA0H ;片选地址CS0 CSEG AT 0000H LJMP START CSEG AT 4100H

START: MOV A,#11H ;两个红灯亮,黄灯、绿灯灭

ACALL DISP ;调用273显示单元(以下雷同) ACALL DE3S ;延时3秒

LLL: MOV A,#12H ;东西路口绿灯亮;南北路口红灯亮 ACALL DISP

ACALL DE10S ;延时10秒

MOV A,#10H ;东西路口绿灯灭;南北路口红灯亮 ACALL DISP

MOV R2,#05H ;R2中的值为黄灯闪烁次数

TTT: MOV A,#14H ;东西路口黄灯亮;南北路口红灯亮 ACALL DISP

ACALL DE02S ;延时0.2秒

MOV A,#10H ;东西路口黄灯灭;南北路口红灯亮 ACALL DISP

ACALL DE02S ;延时0.2秒

DJNZ R2,TTT ;返回TTT,使东西路口;黄灯闪烁五次 MOV A,#11H ;两个红灯亮,黄灯、绿灯灭

ACALL DISP

ACALL DE02S ;延时0.2秒

MOV A,#21H ;东西路口红灯亮;南北路口绿灯亮 ACALL DISP

ACALL DE10S ;延时10秒

MOV A,#01H ;东西路口红灯亮;南北路口绿灯灭 ACALL DISP

MOV R2,#05H ;黄灯闪烁五次

GGG: MOV A,#41H ;东西路口红灯亮;南北路口黄灯亮 ACALL DISP

ACALL DE02S ;延时0.2秒

MOV A,#01H ;东西路口红灯亮;南北路口黄灯灭 ACALL DISP

ACALL DE02S ;延时0.2秒

DJNZ R2,GGG ;返回GGG,使南北路口;黄灯闪烁五次 MOV A,#03H ;两个红灯亮,黄灯、绿灯灭 ACALL DISP

ACALL DE02S ;延时0.2秒 JMP LLL ;转LLL循环 DE10S: MOV R5,#100 ;延时10秒 JMP DE1

DE3S: MOV R5,#30 ;延时3秒 JMP DE1

DE02S: MOV R5,#02 ;延时0.2秒 DE1: MOV R6,#200 DE2: MOV R7,#126 DE3: DJNZ R7,DE3 DJNZ R6,DE2 DJNZ R5,DE1 RET

DISP: MOV DPTR,#PORT ;273显示单元 CPL A MOVX @DPTR,A RET END 六、实验体会:

通过本次实验,了解了在单片机系统中扩展简单I/0接口的方法,学会了数据输出程序的设计方法以及模拟交通灯控制的实现方法。

实验三 定时器应用程序设计与调试(2学时)

一、实验目的:

1.学习8051内部计数器的使用和编程方法。 2.进一步掌握中断处理程序的编写方法。 二、实验设备:

CPU挂箱、8031CPU模块

三、实验内容:

由8031内部定时器1按方式1工作,即做为16位定时器使用,每0.1秒钟T1溢出中断一次。P1口的P1.0~P1.7分别接发光二极管的L1~L8。要求编写程序模拟一循环彩灯。彩灯变化花样可自行设计。例程给出的变化花样为:①L1、L2、···L8依次点亮;②L1、L2、···L8依次熄灭;③L1、L2、···L8全亮、全灭。各时许间隔为0.5秒。让发光二极管按以上规律循环显示下去。 四、实验原理:

1.定时常数的确定

定时器/计数器的输入脉冲周期与机器周期一样,为振荡频率的1/12.本实验中时钟频率为6.0MHZ,现要采用中断方法来实现0.5秒延时,要在定时器1中设置一个时间常数,使其每个0.1秒产生一次中断,CPU响应中断后将R0中计数值减一,令R0=05H,即可实现0.5秒延时。

时间常数可按下述方法确定:

机器周期=12÷晶振频率=12/(6×10)=2us

设计数初值为X,则(2e+16-X)×2×10-6=0.1,可求得X=15535 化为十六进制则X=3CAFH,故初始值为TH4=3CH,TL1=AFH 2.初始化程序

包括定时器初始化和中断操作系统初始化,主要是对IP、IE、TCON、TMOD相应位进行正确的设施,并将时间常数送入定时器中。由于只有定时器中断,IP便不必设置。 3.设计中断服务程序和主程序

中断服务程序除了要完成技术减一工作外,还要将时间常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序燃灭。 五、实验步骤及程序:

NAME T6 ;定时器实验 OUTPORT EQU 0CFB0H CSEG AT 0000H LJMP START CSEG AT 001BH ;定时器/计数器1中断程序入口地址 LJMP INT CSEG AT 4100H

START: MOV A,#01H ;首显示码

MOV R1,#03H ;03是偏移量,即从基址寄存器到表首的距离 MOV R0,#5H ;05是计数值

MOV TMOD,#10H ;计数器置为方式1 MOV TL1,#0AFH ;装入时间常数 MOV TH1,#03CH

ORL IE,#88H ;CPU中断开放标志位和定时器

;1溢出中断允许位均置位 SETB TR1 ;开始计数 LOOP1: CJNE R0,#00,DISP

MOV R0,#5H ;R0计数计完一个周期,重置初值 INC R1 ;表地址偏移量加1 CJNE R1,#31H,LOOP2

MOV R1,#03H ;如到表尾,则重置偏移量初值 LOOP2: MOV A,R1 ;从表中取显示码入累加器 MOVC A,@A+PC JMP DISP

DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH DB 0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H,0FEH

DB 0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH,0BFH,0DFH DB 0EFH,0F7H,0FBH,0FDH,0FEH,00H,0FFH,00H DISP: ;MOV DPTR,#OUTPORT ;MOVX @DPTR,A

MOV P1,A ;将取得的显示码从P1口输出显示 JMP LOOP1

INT: CLR TR1 ;停止计数 DEC R0 ;计数值减一

MOV TL1,#0AFH ;重置时间常数初值 MOV TH1,#03CH

SETB TR1 ;开始计数 RETI ;中断返回 END

六、实验心得:

通过本次实验,学会了8051内部计数器的使用和编程方法,进一步掌握中断处理程序的编写方法,在实验过程中,我更理解8051的一些功能。

本文来源:https://www.bwwdw.com/article/it9d.html

Top