清翔零基础教你学51单片机_个人学习笔记(1)_点亮开发板上的LED灯

说明

本人使用的是清翔的51单片机开发板,如果型号相同最方便,但是如果型号不同也可以参考,因为芯片都是一样的,只是外设不同而已,使用时只需要对照自己的开发板原理图稍微修改下引脚即可。

官方B站视频链接:51单片机入门视频教程 循迹渐进 程序纯手敲 代码开源 初学入门推荐_清翔电子实验室

不知道为什么播放量这么少,如果你是一点基础都没有,建议看视频掌握更好,如果有一点基础,希望节省时间,或者想拿对应代码直接用,可以参考我的笔记

本次笔记对应清翔视频教程的第10,11集

一、什么是LED

LED是"Light Emitting Diode"(发光二极管)的缩写。它是一种电子器件,能够将电能直接转换为可见光。LED被广泛用作指示灯、显示屏和照明设备等。

1.1 LED的特点

  1. 高效能:相比传统的光源,LED能够提供更高的光效(发光效率),并且能够在低电压下工作。
  2. 长寿命:LED寿命很长,通常可以达到几万小时,这是由于它们没有易损部件和机械运动。
  3. 快速响应:LED具有快速开启和关闭时间,可以在纳秒的时间内切换。
  4. 小尺寸:LED体积小,适合在有限空间中使用。
  5. 可调性:通过控制电流或电压,LED的亮度和颜色可以进行调节。

由于其种种优点,LED在各个领域都得到了广泛应用。例如,在电子产品中,LED用作指示灯显示设备的状态;在汽车中,LED用作车灯和仪表盘显示;在室内和室外照明中,LED被用于节能的照明系统等。

 1.2 LED正负极的判断

1.2.1 直插LED

  1. 引脚长的是正极,引脚短的是负极
  2. 封胶内部,小的一端是正极,大的一端是负极
  3. 直接上电测试正负极,LED亮的时候与电源正极相连的LED引脚是正极,与电源负极相连的引脚是LED的负极。注意在上电测试时要加限流电阻,否则LED会因为电流过大而烧毁。

1.2.2 贴片LED

有小绿点的一侧是负极,另一侧是正极(视频所讲)

1.2.3 在电路图中判断LED正负极

有一个竖线的一侧是负极,另一侧是正极 

1.3 LED限流电阻的配置

先设定好LED正常发光所需电压和电流,再根据电源电压进行计算,电阻上的电压=电源电压-LED上的电压,电阻电流=LED电流,再根据欧姆定律可得电阻阻值=电阻电压/电阻电流。

例如:假设LED工作电压为1.8v,LED工作电流为5mA,电源电压=5v

电阻电压=5-1.8=3.2V

电阻电流=5mA

电阻阻值=3.2/5 = 0.64KΩ=640Ω

需要注意的是,不同颜色的LED工作电压和电流都不一样,需要根据器件手册进行具体配置计算,如果进行粗略计算也可,但是如果有多个LED的话,LED的亮度会不均匀

 二、原理图

 在需要点灯时,要把J9跳线帽接上

根据原理图,只需要控制单片机P1口的某些位=0就可以让对应的LED亮,下面进行程序部分。

三、程序部分

3.1 工程的创建

1. 在需要放模板工程的位置创建一个文件夹

 2.打开keil,我用的是keil 5,在Project选项卡选择New μVission Project...

 3.在弹出的文件保存框中进入到自己刚才创建的文件夹的位置,给模板文件起一个有意义的名字,比如STC89C52RC模板工程,再点击保存

 4.在左上方选择框中选择Legacy Device Database [no RTE],在下方的输入框中输入AT89C52,因为STC是国产的,keil没有收录,AT89C52与STC89C52内核一样,只是不同公司生产的芯片,而STC89C52和STC89C52RC区别不大,没有别的选择就选这个就行了,输入完成后点击AT89C52,再点击OK进行下一步操作

 5.这个点击“否”就行了,意思是问你要不要把"STARTUP.A51"添加到工程中,我们不需要看这个

 6.点击左上角的新建,再点击保存,保存名称为main.c

 7.把左侧边栏的target1展开,在Source Group 1上右键,选择Add Existing Files to Group 'Source Group 1'.

 然后在弹窗的文件浏览窗口中选中刚才创建的main.c,点击Add,再点击Close

8.点击上方的魔术棒,在Target一栏把晶振频率改成自己开发板上的晶振频率,我的是11.0592MHz

然后再点击Output选项,勾选Create HEX File,这样编译就会产生一个hex文件,用于程序烧录,其余选项保持默认不要动就行了

 9.至此,工程就创建好了,以后可以直接复制这个工程文件到别的地方使用,只需要复制之后改一下文件夹名字就行了,非常方便

 我复制一份,改名为1.点亮LED

进入“1.点亮LED”文件夹,双击.uvproj文件(也就是带keil图标的那个文件)

 进入后展开左侧边栏找到main.c文件双击就可以写代码了

3.2 编写程序 

3.2.1 引用头问件

 首先引用头问件<reg52.h>,头问件里面定义了很多寄存器的地址

#include <reg52.h>  //引用51头问件

要想通过右键reg52.h来打开这个头问件,需要先编译,这两个任何一个都行

 打开之后是这样的,可以看到里面定义可很多寄存器地址,比如sfr P0 = 0x80; 这行代码定义了一个特殊功能寄存器(Special Function Register, SFR),用于访问 8051/8052 系列单片机的 P0 端口。

 3.2.2 写main函数

 函数运行的时候会自动寻找main函数并从main函数开始运行,以后的主要代码都写在这个大括号里面。

void main()
{
    
}

注意不要把main写成mian了,新手很多报错就是这个原因,还有代码里面的所有符号都要使用英文符号,中文符号会报错

 3.2.3 进行位定义

在main函数上方写一些位定义,比如

sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit LED3 = P1^2;
sbit LED4 = P1^3;
sbit LED5 = P1^4;
sbit LED6 = P1^5;
sbit LED7 = P1^6;
sbit LED8 = P1^7;

里面的P1^0~P1^7表示P1端口的8个引脚

使用 sbit 关键字可以定义一个位(bit)变量。这个位变量将与特殊功能寄存器(SFR)中的特定位对应。

 3.2.4.在main函数中写代码

根据LED部分的原理图

把P1^0变成低电平,LED1就能亮,在main函数中写 

void main()
{
    LED1 = 0;
}

3.2.5 完整程序

#include <reg52.h>  //引用51头问件

sbit LED1 = P1^0;

void main()
{
    LED1 = 0;
}

因为LED2~LED8没用上,所以这里省去了。注意C语言的变量名是区分大小写的,定义的LED1,如果在main函数里面写成led1,那么编译器就会报错

3.3 点击编译

点击编译,查看是否0错误0警告,如果不是再去找原因

 3.4 下载

打开烧录软件stc-isp

 打开软件后按照图片配置。真正需要自己配置的其实只有红色框,在第一个红色框中选择STC89C52RC芯片(用什么芯片就选什么),下面的红色框两个都要勾选,这样我们每次修改完程序编译后程序会自动下载,省去了每次编译完还要打开下载软件去下载程序的麻烦。

绿色框选择单片机对应的串口(一般就是名字最长的那个),带ch340的,COM几可能显示的跟我的不一样,是系统分配的,以你的显示为准

紫色框注意保持默认就行,如果下载出错再按照我的图片配置紫色部分

 配置完成后就可以下载程序到单片机了,点击“打开程序文件”,在弹出的文件浏览器中选择到刚才的项目文件夹下,注意生成的hex文件在项目文件夹下的Object文件夹里面,选中它点击打开

 这样就可以了,再点击stc-isp左下角的下载/编程按键就可以下载到单片机中运行。由于我的开发板内置自动下载电路,所以我点击下载后就可以直接下载运行,有些开发板没有自动下载电路,需要单片机冷启动,也就是把开发板上的电源开关关闭再打开才能被下载软件检测到。

 

 3.5 实验现象

本次笔记对应清翔视频教程的第10,11集,到此结束,其实可以合并在一起的,但是本次笔记已经足够长,写在一起不方便分类查找。下一个笔记将对应视频的12集:LED闪烁

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值