单片机结课实验项目 单片机原理及应用实验报告

2023-08-24 12:04:00 来源 : haohaofanwen.com 投稿人 : admin

下面是好好范文网小编收集整理的单片机结课实验项目 单片机原理及应用实验报告,仅供参考,欢迎大家阅读!

单片机结课实验项目

单片机原理及应用实验报告

文章简介

51单片机原理及应用实验报告,使用Proteus 7 Professional+keil5 for C51实现。主要使用汇编语言编写,实验2思考题使用C语言编写。

实验一:I /O口输出实验—LED流水灯实验

一、实验要求

利用单片机及8个发光二极管等器件,构成一个流水灯单片机系统

二、实验目的

1、掌握单片机最小系统的构成

2、掌握I/O口的使用及驱动能力的概念

3、熟悉移位指令和软件延时程序

三、实验电路及连线

1.硬件连接表

MCUSTC89C51

P1.0~P1.7 D1~D8

5V VCC

GND GND

2.注意事项

(1)仿真电路需要先搭建好最小系统

(2)LED灯正极接5V,负极接P1口

四、实验说明

1、主要知识点概述

本实验涉及到三个知识点:单片机最小系统的构成、单片机I/O口的使用以及软件延时程序的编写。

(1)单片机最小系统由单片机芯片、时钟电路以及复位电路构成。

(2)I/O口的正确使用。

(3)延时子程序的延时计算问题。根据晶振时钟的大小以及指令周期,计算延时时间所要执行的指令数目。

2、实验效果说明

发光二级管进行流水灯操作,从上到下依次点亮。

五、实验流程图

六、实验代码

代码如下:

ORG 	0000hSTART:	MOV 	R2,#8		MOV 	A,#0FEH		LOOP:	MOV 	P2,A		LCALL 	DELAY		RL 	A        			;循环左移		DJNZ  	R2,LOOP   ;判断移动是否超过8 位,未超过继续循环                		LJMP 	START		DELAY:	MOV 	R5,#20;延时程序,延时0.2sD1:		MOV 	R6,#20D2:		MOV 	R7,#248		DJNZ 	R7,$		DJNZ 	R6,D2		DJNZ 	R5,D1		RET		END

七、仿真效果图

八、思考题

增加LED灯的显示花样,丰富实验的效果

答:流水灯先正向流动,再反向流动,如此反复循环

代码如下:

ORG 	0000h			START:	MOV 	R2,#7		MOV		R3,#7		MOV 	A,#0FEH		LOOP:	MOV 	P1,A		LCALL 	DELAY		RL 	A        	  ;循环左移		DJNZ  	R2,LOOP   ;判断移动是否超过7 位,未超过继续循环 		LOOP1:			MOV 	P1,A		LCALL 	DELAY		RR 	A        	  ;循环右移		DJNZ  	R3,LOOP1   ;判断移动是否超过7 位,未超过继续循环				LJMP 	STARTDELAY:	MOV 	R5,#20;延时程序,延时0.2sD1:		MOV 	R6,#20D2:		MOV 	R7,#248		DJNZ 	R7,$		DJNZ 	R6,D2		DJNZ 	R5,D1		RET		END

实验二:定时器实验

1.实验要求

单片机内部定时计数器T0, T0工作在定时模式,单片机的P1.0口接1个发光二极管,编写程序,控制发光二极管闪烁,时间间隔1S,要求使用单片机内部定时器定时1S。

2.实验目的

1、学会定时器中断函数的处理

2、掌握定时器,计数器的寄存器设置

3、掌握单片机定时计数器计数方式的使用及编程方法

三、实验电路及连线

1.硬件连接表

MCUSTC89C51

P1.0 D1

5V VCC

GND GND

2.注意事项:

(1)仿真电路需要先搭建好最小系统

(2)LED灯正极接5V,负极接P1口

四、实验说明

1、主要知识点概述

(1)关于内部计数器的编程,主要是设置定时常数和有关控制寄存器。内部计数器在单片机中包括定时器和计数器两个功能。本例使用的是定时器,定时1S。CPU运行定时中断方式,实现每1S输出状态发生一次反转,即发光二极管1S亮一次。

(2)内部计数器用于定时器时,是对机器周期计数。可根据单片机每个机器周期的长度、时钟晶振频率以及定时时间对定时常数进行计算。

2、实验效果说明

发光二极管按设定的定时时间闪烁

五、实验流程图

六、实验代码

代码如下:

ORG    0000H      ;程序由地址0开始执行     	LJMP    START     	ORG    000BH      ;设置定时器0中断矢量地址     	LJMP    INT        ;跳转到定时器中断控制入口处START: 	     	MOV    TCON, #00000001B		SETB	ET0		SETB	EATIMER0INIT毫秒@12.000MHz		ANL TMOD,#0F0H		;设置定时器模式		ORL TMOD,#01H		;设置定时器模式		MOV TL0,#0B0H		;设置定时初值		MOV TH0,#03CH		;设置定时初值		MOV    A , #11111110B;反转电平		MOV	   R5,A		MOV   A,#20		CLR TF0			    ;清除TF0标志		SETB TR0		    ;定时器0开始计时				HERE:   SJMP HERE			;等待中断的到来INT:;等待20个50ms					CLR TF0			    ;清除TF0标志		MOV TL0,#0B0H		;设置定时初值		MOV TH0,#03CH		;设置定时初值		SETB TR0		    ;定时器0开始计时		DEC A		JZ LIGHT		RETI		 	LIGHT:	     	MOV    P1 ,R5		MOV    A,R5     	CPL    A		ORL    A,#11111110B		MOV    R5,A		MOV    A,#20		RETI		END

七、仿真效果图

八、思考题

用定时器T0 、数码管实现数字钟

采用共阴极数码管

实验三:外部中断实验

一、实验要求

用按键模拟单片机外部中断输入源,当按键按下时产生中断,进行中断处理, P1口连接8个发光二极管,用来反映中断程序处理过程。

二、实验目的

1、理解中断源、中断标志、中断入口等概念

2、掌握外部中断程序的分析与编写设计方法

三、实验电路及连线

1.硬件连接表

MCUSTC89C51

P1.0~P1.7 D1~D8

P3.2 K1

5V VCC

GND GND

2.注意事项:

(1)仿真电路需要先搭建好最小系统

(2)LED灯正极接5V,负极接P1口

四、实验说明

1.主要知识点概述

外部中断的响应过程:

(1)中断采样:根据采样结果设置中断响应的状态。

(3)中断响应:保护断点内容,装入中断入口地址,执行中断服务程序,返回中断点,继续执行原来程序。

2.实验效果说明

中断未发生时,LED做闪烁状态,当有中断产生,LED呈流水灯操作。

五、实验程序流程图

六、实验代码

代码如下:

ORG  0000h	AJMP  INIT	ORG 0003H	AJMP STARTINIT:;中断初始化  SETB EX0  SETB IT1  SETB EA NOMAL:;P1口闪烁  MOV A ,#00H  MOV P1,A  LCALL DELAY  MOV A ,#0FFH  MOV P1,A  LCALL DELAY  LJMP NOMAL	ORG 0200H START:;流水灯	MOV  A,#0FEH	MOV  R2,#8IT:    MOV  P1,A  LCALL  DELAY  RL  A           ;循环左移  DJNZ   R2,IT   ;判断移动是否超过8 位,未超过继续循环                  RETI  DELAY:  MOV  R5,#10;延时程序,延时0.2sD1:  MOV  R6,#20D2:  MOV  R7,#248  DJNZ  R7,$  DJNZ  R6,D2  DJNZ  R5,D1  RET  END

七、仿真效果图

八、思考题

按键触发时可能导致多次中断发生,如何避免这种情况发生

答:

硬件消抖:开关两侧并联一个0.1uF的电容。

软件延时:启用一个定时中断,每 2ms 进一次中断,扫描一次按键状态并且存储起来,连续扫描 8 次后,看看这连续 8 次的按键状态是否是一致的。8 次按键的时间大概是 16ms,这 16ms 内如果按键状态一直保持一致,那就可以确定现在按键处于稳定的阶段,而非处于抖动的阶段。

部分代码来源网络!

水平有限,若有问题欢迎指出!


相关文章

专题分类