灯光实验报告(单片机实验一)
下面是好好范文网小编收集整理的灯光实验报告(单片机实验一),仅供参考,欢迎大家阅读!
实验一 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语言所极力避免的,因为之前学的课程所编写的代码需要确切的结果,要么是一个计算结果,要么是一段显示。但是单片机是一个系统,需要长时间保持工作,因此我们将会面临一个不会结束的程序。在程序执行过程中会遇到各种情况,我们需要在最初的编码时候想到并规避。总之,单片机不同以往我们所接触到的东西,里面还有很多东西需要探索。