一、实验原理
LED发光二极管核心为PN结,单向导电,有阴极和阳极,两极均可以控制,需要亮起来,电流不能过大和过小,过大,烧坏二极管,过小,电光效应弱,发光不明显,引入“限流电路”。为减少I/O引脚的消耗,一般控制一极,有阳极控制法和阴极控制法。阳极控制法:阴极接地(GND),阳极I/O口高电平亮,阳极低电平不亮;阴极控制法:阳极接高电平(+5V),阴极I/O口低电平亮,高电平不亮。8个同样LED灯阳极接一起,连接+5V,就是共阳极接法。8个同样LED灯阴极接一起,连接GND,就是共阴极接法。
思考:亮灭怎么样,眼睛能分辨出来?
编程实现方案:端口电平维持想要的时间,通过延时,CPU空操作耗时来实现等。
如何依次亮灭:从左到右,8个LED灯亮,8种状态,如何实现,数组形式?移位形式?
参考共阳极接法:
Char s[8]={ 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
共阴极为对共阳极取反。
认识51单片机最小系统组成:51单片机、手动按键复位电路、外接晶体振荡器电路、电源和地。使用片内程序存储器,EA接高电平。
二、实验内容及步骤
(一)实验内容
1.8个LED灯接在P2端口的8个引脚上,编程实现8个LED从左到右依次不断亮灭一个灯,循环运行,实现流水灯状态,亮灭要求眼睛能分辨得出来。
2.8个LED灯接在P2端口的8个引脚上,编程实现8个LED从左到右顺序每次亮灭两个灯。如最开始D1和D2亮;接着D2和D3亮,D1灭;然后D3和D4亮,D2灭;………;D7和D8亮,D6灭;再回到D1和D2亮,按这个状态循环,亮灭要求眼睛能分辨得出来。
(二)实验步骤
软件仿真:
(1)基于Proteus软件绘制电路原理图。
(2)基于Keil软件编程
思路:数组形式,表示8个亮状态,8个元素。状态保持采用时间延迟函数,延时函数具体可以通过调试来确定参数值。开始全部不亮,采用死循环不断循环,while或没有限制条件的for语句。利用宏定义、sbit定义等方式,使程序方便维护,养成良好的编程习惯。
(3)利用Keil软件,将编译好的hex文件下载到Proteus软件的虚拟单片机中以便整体虚拟仿真,默认单片机晶体振荡器12M,观察实验现象
(4)调试观察,注意不同时延时, LED的闪烁情况,若程序设计有逻辑错误,实验调试分析。
硬件实验:
(1)认识开发板,了解实验上的资源及作用,见图。
(2)流水灯实验
开发板上使用的51单片机型号是 STC89C516RD+,此芯片共有40引脚,采用双列直插式封装。
开发板上的D1-D8(LED) 已经连接到单片机的 P20-P27 口。图3中 LED 采用共阳接法,即所有LED 阳极管脚接电源 VCC,阴极管脚通过一个 470 欧的限流电阻接到 P2 口上。要让LED发光即对应的阴极管脚应该为低电平,若为高电平则熄灭。
文章来源地址https://www.toymoban.com/news/detail-440999.html
(3)利用Keil软件,将编译好的hex文件下载到51单片机里,观察实验现象
六、实验结果
1.实验一:Proteus绘制的电路原理图和Keil软件编写的C程序截图。
程序:
仿真电路:
2.实验二:Proteus绘制的电路原理图和Keil软件编写的C程序截图。
程序:
仿真电路:
文章来源:https://www.toymoban.com/news/detail-440999.html
到了这里,关于51单片机点灯实验(含程序+仿真+硬件实验)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!