问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C51单片机LED闪烁编程完整教程

创作时间:
作者:
@小白创作中心

C51单片机LED闪烁编程完整教程

引用
CSDN
1.
https://m.blog.csdn.net/GallyDowney/article/details/122301577

本教程将详细介绍如何使用C51单片机实现LED灯闪烁的编程过程。通过本教程,你将学习到如何编写延时函数、如何使用Keil5软件进行编译和仿真,以及如何通过CH340驱动将程序烧录到单片机开发板。

实验目标

使LED灯闪烁,需循环让 D1 指示灯先亮一会后熄灭,因此只需编写一个循环函数,专门在那循环运行即可实现延时功能。

编译软件

Keil5

实验过程

1. 书写延时函数

函数名:delay_10us

函数功能:延时函数,ten_us=1时,大约延时10us

输入:ten_us

输出:无

函数需要通过while循环实现,函数入口有一个形式参数ten_us,如果ten_us=1,则while循环执行一次,调用该函数延时时间大约 10us。

2. 书写main函数代码

LED1=0(低电平点亮);
LED1=1(高电平熄灭);
delay_10us(50000);仿真得知大约延时450ms

3. 编译程序,发现错误

函数形参 ten_us 是 u16 类型的,不是 C语言数据类型关键字

4. 重新定义数据类型

5. 重新编译,最终得到正确的完整编译代码及hex.文件

6. 通过CH340驱动烧录hex.文件到单片机开发板

7. 连接P20与D1端口观察实验现象

8. 其他:通过 KEIL 软件仿真查看延时时间

①点击仿真按钮,进入仿真界面

②点击 RST 按钮,重新复位系统参数,此时参数列表中 sec 则为 0,然后设置断点

③点击运行代码,可以看到黄色箭头直接定位到 18 行代码,也是设置的第一个断点位置,此时参数列表中 sec 时间是 0.00039s。

④再点击运行代码,此时黄色箭头指向第 19 行代码,此时 sec 为 0.450601s。

⑤将现在这个时间减去上一步的 sec 时间就可以得到 delay_10us(50000)运行 的实际时间了为0.450601- 0.00039=0.4502s≈450ms

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号