单片机结课实验项目 单片机原理及应用实验报告
下面是好好范文网小编收集整理的单片机结课实验项目 单片机原理及应用实验报告,仅供参考,欢迎大家阅读!
单片机原理及应用实验报告
文章简介
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 内如果按键状态一直保持一致,那就可以确定现在按键处于稳定的阶段,而非处于抖动的阶段。
部分代码来源网络!
水平有限,若有问题欢迎指出!