单片机闪烁灯实验

《单片机原理与应用》实验报告

实验三、闪烁灯

1.实验目的

在P0.0 端口上接一个发光二极管D7,使D7 在不停地一亮一灭,一亮一灭的时间间隔为1 秒。

2.实验步骤

首先,安装Vision5和STC-ISP软件,在本地部署。其次,拿到单片机,了解到其型号为STC12C5A60S2,找到其原理图,如图2-1所示。把"单片机系统"区域中的P0 端口旁边的跳线帽跳到'LED'端,使LED灯接到P0 端口上。之后,打开Vision5新建项目,编写闪烁灯代码,设计延时程序函数,如表2-1所示。然后,打开STC-ISP,选择对应的单片机型号,打开.hex文件,载入程序,进行烧录。

图2-1 STC12C5A60S2原理图

表2-1 闪烁灯代码

|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| #include <REGX52.H> #include <INTRINS.H> void Delay500ms() //@12.000MHz { unsigned char i, j, k; nop(); i = 4; j = 205; k = 187; do { do { while (--k); } while (--j); } while (--i); } void main() { while(1) { P2=0xBF; //1111 1110 Delay500ms(); P2=0xFF; //1111 1111 Delay500ms(); } } |

3.实验结果

根据上述操作,我们完成了代码的撰写和代码的烧录。单片机运行结果如图3-1所示。当P0.0 端口输出高电平,即P0.0=1 时,根据发光二极管的单向导电性可知,这时发光二极管D7 熄灭;当P0.0 端口输出低电平,即P0.0=0 时,发光二极管D7 亮。

(a)

(b)

图3-1 实验结果

4.实验体会

通过本次实验,我深入理解了单片机I/O端口的基本操作原理以及延时程序的设计方法。实验中,我们通过配置P0.0端口的电平状态(高电平或低电平)来控制LED灯的亮灭,并利用软件延时实现1秒的间隔闪烁。在调试过程中,我发现延时函数的精度对实验结果影响较大,需通过调整循环次数来优化定时效果。此外,通过查阅STC12C5A60S2的数据手册,我进一步掌握了该型号单片机的硬件特性,例如其I/O端口的驱动能力和寄存器配置方式。本次实验不仅巩固了我的编程能力,还提升了硬件调试技能,为后续复杂实验奠定了基础。本次实验使我系统地学习了单片机控制LED闪烁的实现方法,包括硬件电路连接、软件编程及程序烧录等关键步骤。在实验中,我注意到跳线帽的正确连接对电路功能至关重要,若未将P0端口跳至LED端,则无法实现预期效果。此外,延时函数的设计需要结合单片机的时钟频率进行计算,单纯依赖经验值可能导致定时不准确。通过使用STC-ISP工具烧录程序,我熟悉了单片机开发的全流程,并认识到程序调试中逻辑严谨性的重要性。未来,我将进一步研究中断定时器替代软件延时的方法,以提高系统的实时性和可靠性。