历史上的今天
返回首页

历史上的今天

今天是:2025年11月14日(星期五)

正在发生

2022年11月14日 | 单片机led灯闪烁实验总结_玩转51单片机(1):点亮led灯

2022-11-14 来源:csdn

01

新建工程与点亮LED小灯,LED小灯即发光二极管,它具有单向导电性,对于发光二极管而言,需要根据它的压降与额定电流来选择合适的限流电阻,打开Keil4软件,选择Project,New uVision Project

b8de35828de3e94ef323e1e057abe8a4.png?imageView2/2/w/550

选定工程的保存路径,并给工程命名,保存类型默认.uvproj,点击保存

bb845ca8b09115821376c14a27a1d93c.png?imageView2/2/w/550

出现如下对话框,点击下拉按钮,选择STC MCU Database,点击OK

97f59b39f5894b65e0f299accbe5c507.png?imageView2/2/w/550

选择STC89C52RC,点击OK

32a5443429d4bb9377be5a4d849b30cf.png?imageView2/2/w/550

选择否

8bc56136f059491891961b2fb39502ce.png?imageView2/2/w/550

点击New,生成一个Text1文件

37107dc0fcbe7bcdaf65e23a264cf03a.png?imageView2/2/w/550

点击 File, Save, 出现如下对话框,将文件命名为后缀为.c的文件,默认保存类型,点击保存

0a5da52f9ea577aadf4a7dd7218a0fe5.png?imageView2/2/w/550

点击Target 1前面的加号,在Source Group 1上右击,选择Add Files to Group'Source Group 1'

0874222f600ddd4f39ecbe3aec8931f9.png?imageView2/2/w/550

选择刚刚保存的以.c为后缀的文件,点击Add,然后关闭窗口

0659e65634b8473dbc6ff89352b3b44f.png?imageView2/2/w/550

点击Source Group 1前面的加号,会发现下面多了刚刚添加的.c文件

79ec90f31acb9f45342fdf06e8c5585e.png?imageView2/2/w/550

在右侧文本框中写入程序

d5b521009228f4cd9f14ab959a61756e.png?imageView2/2/w/550

点击Target Options按钮

e2ba172f51f481546d0b2687f127351d.png?imageView2/2/w/550

在Output标签页勾选Create HEX File,点击OK

8aef884a60c2777a9f7640b779dda841.png?imageView2/2/w/550

点击Rebuild按钮,可以看到最下方Build Output对话框出现已经生成hex文件的信息,以及0个错误,0个警告的信息

5a92a5f0e1eaa4f7b462531be172c475.png?imageView2/2/w/550

打开STC-ISP软件,选择单片机型号为STC89C52,串口号就是安装了USB转串口驱动之后虚拟的COM口,可在计算机管理-设备管理器-端口中查看

18bd7ba63f0d3a94e95eb0d1206a2040.png?imageView2/2/w/550

点击打开程序文件,选择工程的存储路径,可以看到工程文件夹下有一个hex文件,打开它

66808f8973ab0ccb53dfcca9d67b16b7.png?imageView2/2/w/550

点击下载/编程按钮

e192fa5b2c6e5b8524a3aee4c2fd94b3.png?imageView2/2/w/550

打开单片机开发板的开关,可以看到操作成功提示,LED小灯被成功点亮

a9bb49607fe971230079ea7730ec59c6.png?imageView2/2/w/550

e4efa4222bb04e38caa0111c46c9fcf0.png?imageView2/2/w/550

以下是点亮LED小灯的程序

8be4cebedd6b442e11b99cb2314a3442.png?imageView2/2/w/550

下面是开发板原理图的LED显示电路,由于发光二极管的单向导电性,决定了LED小灯是低电平点亮,因此在main函数中给LED1低电平,就可以点亮小灯;然后利用while(1)进行无限循环,保持LED小灯一直是亮的;sbit是定义特殊功能寄存器的位变量,将P1^0另起名为LED1,以便进行位操作

ac730782486406ce21b97e9474ac7864.png?imageView2/2/w/550

02

让LED小灯闪烁起来

新建一个工程,写入如下程序,整个新建工程的过程如上

6a96ab391af5fe82dec13f4c316afbb9.png?imageView2/2/w/550

typedef用于为已有类型创建一个别名,便于后面使用;Delay为延时函数,利用循环结构不断地进行空跑,从而实现延时,这里的延时为粗计算,后文将介绍如何利用定时器进行精确延时;main函数中不断地循环着将8个LED灯全部点亮,延时保持,又将8个LED灯全部熄灭,延时保持的整个过程,以实现在人眼中的闪烁现象;0x00与0xff均为十六进制数,表示为二进制即00000000与11111111

03

LED流水灯

新建一个工程,写入如下程序

88c7335448471f84258eed2b46037d25.png?imageView2/2/w/550

其中<

04

LED跑马灯

新建一个工程,写入如下程序

6a04e564dfb6b35a9992d5a69463c8ee.png?imageView2/2/w/550

_crol_()函数包含于intrins.h头文件中,因此程序需要添加#include ,P1=_crol_(P1,1)表示每次将P1循环左移1位,P1由11111110,依次变为11111101,11111011,11110111,11101111,11011111,10111111,01111111,然后重复循环


推荐阅读

史海拾趣

问答坊 | AI 解惑

冒昧的问一些如何根据元件大小选取元件的封装形式的问题

各位达人,我在做PCB板的时候对于如何根据元件数值选取元件封装时感到很吃力,举个例子 1.在选取三极管的时候,什么时候选TO-92A,什么时候选TO-92B? 2.一个电容比如一个100N/250V的电容,选取的是RAD0.3,这个电压的要求是不是贴片难以达到, ...…

查看全部问答>

ucos入门知识!

[local]1[/local]uCOS-II中文手册…

查看全部问答>

过滤空气的环保手表

这是个外形前卫的手表除了能显示时间之外还有更新鲜的功能,那就是过滤空气。现在全球变暖的问题日益严重,而人类呼出的二氧化碳就是一种主要的温室气体。这款手表的设计师企图从源头消灭掉人类呼出的二氧化碳,所以在手表中加入了小型的空气过滤装 ...…

查看全部问答>

关于wince手写识别的几个问题

麻烦各位了,小弟新手,有几个问题在这里求教: 1.wince自带手写识别软件不能识别简体,请问怎样做才能让它识别简体? 2.如果要编写一个自己的识别软件,难度大吗?编写的大概步骤是什么?(希望能  比帮助文档具体一点)恳请赐告!谢谢 …

查看全部问答>

in [求助] 中, 换了一个电源带来的问题

in [求助] 中, 换了一个电源带来的问题 我的问题这样的, 主机只是简单的扫描端口, 子机负责把信息显示出来(用LED),开机时会读取一下EEPROM中字符,总共才20个字符。 原来我用子机的电源,主机的电源也是从子机那里拉过来的,很正常,也很 ...…

查看全部问答>

今年题型有变,没有通信,该如何准备呢?

本帖最后由 paulhyde 于 2014-9-15 09:47 编辑 传闻今年没有无线通信题目了,不知是否属实。 如果真的没有了,以前做无线通信的该怎么准备呢?  …

查看全部问答>

ARM启动代码学习(一)RO和RW还有ZI代表什么?(转载)

    一般而言,一个程序包括只读的代码段和可读写的数据段。在ARM的集成开发环境中,只读的代码段和常量被称作RO段(ReadOnly);可读写的全局变量和静态变量被称作RW段(ReadWrite);RW段中要被初始化为零的变量被称为ZI段(ZeroInit) ...…

查看全部问答>

ti5402的端口地址在哪找呢

ti5402的端口地址在哪找呢,手册里没发现呀。 ioport unsigned int port8FEE; 这句话后面的8FEE是在哪找的呀 我在手册上找不到 …

查看全部问答>

【PSoC4心得】capsense+led

找了capsense的例程,试着做了capsense控制led的工程。 功能介绍: 用手滑动capsense的触摸板,实现led颜色的改变。 具体连接: 下一步: 利用自带的放大器,完成模拟信号的放大滤波处理。…

查看全部问答>