灯光实验报告(单片机实验一)

2023-10-09 00:18:00 来源 : haohaofanwen.com 投稿人 : admin

下面是好好范文网小编收集整理的灯光实验报告(单片机实验一),仅供参考,欢迎大家阅读!

灯光实验报告

实验一 LED灯实验

一、实验目的

1.熟悉实验软件和硬件,进行正确的接线;

2.编程使得LED的闪烁;

3.编程实现跑马灯效果。

二、实验软硬件

1.Keil uVision4

2.PZISP自动下载软件

3.HC6800S开发板

三、实验原理

连接单片机管脚与共阴极二极管,并对于单片机的P0口进行编程。如果需要闪烁,可以先让P0口输出高电平,然后延时一段时间,让P0口保持高电平,此时二极管亮;然后再让P0口输出低电平,然后延时一段时间,让P0口保持低电平,此时二极管灭;如此循环,便实现了二极管亮灭的功能。

单片机接口

如果需要实现流水灯,可以先让P0口输出0X01(0000 0001),然后延时一段时间,让P0口保持,此时二极管最右边的灯亮,其余的灭;然后再让P0口输出0X02(0000 0010),然后延时一段时间,让P0口保持,此时第二个二极管亮;如此对于P0口进行写入,便实现了流水灯的功能。

共阴二极管电路

其中,74LS373:8数据锁存器。主要用于数码管、按键等等的控制。当使能为低时,将输出锁存在已建立的数据电平上。MCU的引脚有限,锁存器对于外设的控制非常有必要。

锁存器的真值表

Dn LE OE Qn

H H L H

L H L L

X L L Qo

X X H Z

H为高电平 L为低电平 X为不定 Z为高阻

四、软件流程图

二极管亮灭程序流程图

流水灯程序流程图

五、实验代码

1.// 二极管亮灭程序:  2.#include <reg51.hDelay10ms(unsignedint c);//延时10ms          P0  Delay10ms        P0  Delay10msDelay10ms(unsignedint c)//误差 0us  unsignedchar a, bccbbbaaa//流水灯程序:  26.#include <reg51.h>27.#include <intrins.hDelay10ms(unsignedint c);//延时10ms  unsignedchar LED;32.    LED         P0 = LED;36.Delay10ms        LED =_crol_(LEDDelay10ms(unsignedint cunsignedchar a, bccbbbaaa

六、实验步骤

1.连接开发板LED模块相关电路连线

硬件路线图

2.打开开发板电源

电源位置

3.编写调试LED程序,生成hex文件,下载程序。

程序下载界面

流水灯程序下载之后,发光二极管按照预定的方向相继点亮,亮灭的间隔时间基本符合预定的时间。

七、实验思考

这是用51单片机做的第一个实验,也是一个单片机入门的经典程序——点亮一颗灯。

我最大的收获是明白了为什么要用延时函数。因为单片机执行一条代码所需要的时间是微秒级别的,人是分辨或者感觉不出来的。比说,我们要灯闪烁,如果灯亮灭的频率太快,我们就会觉得灯是一直亮的,可能亮的程度有所变暗。这是实验中有切身体会到的事情,合理应用延时函数非常重要,关系到单片机的效率和功能实现等问题。

对寄存器进行读写非常接近单片机的底层,要对与硬件电路非常熟悉才行。单片机大部分时间是一直在工作的,如果代码写的非常短,这些代码执行完了之后,单片机就不工作了。所以一定要有一个死循环,作为主程序,一般用While(1)来实现。但是死循环是最初学C语言所极力避免的,因为之前学的课程所编写的代码需要确切的结果,要么是一个计算结果,要么是一段显示。但是单片机是一个系统,需要长时间保持工作,因此我们将会面临一个不会结束的程序。在程序执行过程中会遇到各种情况,我们需要在最初的编码时候想到并规避。总之,单片机不同以往我们所接触到的东西,里面还有很多东西需要探索。


相关文章

专题分类