当前位置: 首页 > news >正文

单片机闪烁灯实验

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

实验三、闪烁灯

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工具烧录程序,我熟悉了单片机开发的全流程,并认识到程序调试中逻辑严谨性的重要性。未来,我将进一步研究中断定时器替代软件延时的方法,以提高系统的实时性和可靠性。

http://www.dtcms.com/a/333296.html

相关文章:

  • 健身房预约系统SSM+Mybatis实现(二、增删改查的具体实现)
  • 大模型——如何让 AI 绘图的中文呈现更稳定和准确
  • 墨水屏电子桌牌:企业数字化转型的绿色入口
  • Amazon SageMaker:让AI开发变得简单与高效
  • 【数据分享】上市公司创新韧性数据(2007-2023)
  • UDP与TCP协议的Python实现详解
  • C# 中的 string / StringBuilder / 值类型 / 引用类型 / CLR 总结
  • Vue模板引用(Template Refs)全解析1
  • ​​数字化时代的身份安全基石:4A平台如何重构企业访问控制体系​
  • excel中批量写sql时,选中日期列由数字转yyyy-mm-dd
  • es7.x中分片和节点关系以及查看节点数
  • Flink中基于时间的合流--双流联结(join)
  • MySQL(多表查询练习)
  • C++宏展开规则
  • 【数据可视化-90】2023 年城镇居民人均收入可视化分析:Python + pyecharts打造炫酷暗黑主题大屏
  • PyTorch 训练神经网络模型,并集成到springboot项目中
  • JavaScript 原型机制详解:从概念到实战(附个人学习方法)
  • 科普:Pygame 中,`pg.Surface` v.s. `screen`
  • 使用Docker容器化Python测试Pytest项目并配置GitHub Actions CI/CD流程
  • IgH初始化--未接从站
  • 一站式学会——进制转换与位运算符详解(通俗易懂)
  • ElasticSearch不同环境同步索引数据
  • 20250815在荣品RD-RK3588-MID开发板的Android13下调通TP芯片FT8206
  • linux安装docker-compose
  • STM32在使用DMA发送和接收时的模式区别
  • 使用C# 高效实现 Word 文档内容查找与替换的6种方法
  • Java 调用 Python 脚本:实现 HelloWorld
  • 数据驱动测试提升自动化效率
  • 车辆减振器异响测试系统
  • [Pyro] 基础构件 | 随机性sample | 可学习参数param | 批量处理plate