手把手教你学51单片机-点亮你的LED

单片机内部资源

Flash——程序存储空间。对于单片机来说 Flash 最大的意义是断电后数据 不丢失。

RAM——数据存储空间。RAM 是单片机的数据存储空间,用来存储程序运行过程中产生的和需要的数据,关电后数据丢失

SFR——特殊功能寄存器。通过对特殊工程寄存器读写操作,可以实现单片机的各种功能。

STC89C52内部资源:Flash 程序空间是 8K 字节(1K=1024,1 字节= 8 位),RAM 数据空间是 512 字节

单片机最小系统

单片机最小系统,也叫做单片机最小应用系统,是指用最少的原件组成单片机可以工作的系统。单片机最小系统的三要素就是电源、晶振、复位 电路

电源、晶振、复位构成了单片机最小系统的三要素,也就是说,一个单片机具备了这三 个条件,就可以运行我们下载的程序了,其他的比如 LED 小灯、数码管、液晶等设备都是属 于单片机的外部设备,即外设。最终完成我们想要的功能就是通过对单片机编程来控制各种 各样的外设实现的。

电源

目 前主流单片机的电源分为 5V 和 3.3V 这两个标准。

我们所选用的 STC89C52,它需要 5V 的供电系统,我们的开发板是使用 USB 口输出的 5V 直流直接供电的。从图 2-1 可以看到,供电电路在 40 脚和 20 脚的位置上,40 脚接的是 +5V,通常也称为 VCC 或 VDD,代表的是电源正极,20 脚接的是 GND,代表的是电源的负 极。

晶振

晶振,又叫晶体振荡器,他起到的作用是为单片机系统提供基准时钟信号,单片 机内部所有的工作都是以这个时钟信号为步调基准来进行工作的。STC89C52 单片机的 18 脚 和 19 脚是晶振引脚,我们接了一个 11.0592M 的晶振(它每秒钟振荡 11,059,200 次),外加 两个 20pF 的电容,电容的作用是帮助晶振起振,并维持振荡信号的稳定

复位电路

单片机的 9 脚 RST(Reset)复位引脚上。

单片机复位一般是 3 种情况:上电复位、手动复位、程序自动复位。

上电复位保证单片机每次都从一个固定的相同的状态开始工 作。

当我们的程序运行时,如果遭受到意外干扰而导致程序死机,或者程序跑飞的时候,我 们就可以按下一个复位按键,让程序重新初始化重新运行,这个过程就叫做手动复位,最典 型的就是我们电脑的重启按钮。

当程序死机或者跑飞的时候,我们的单片机往往有一套自动复位机制,比如看门狗。如果程序长时间失去响应,单片机看门狗模块会自动复 位重启单片机。

LED小灯

二极管通常的正向导通电压是 1.8V 到 2.2V 之间,工作电流一般在 1mA~20mA 之间。其中,当电流在 1mA~5mA 之间变化时, 随着通过 LED 的电流越来越大,我们的肉眼会明显感觉到这个小灯越来越亮,而当电流从 5mA~20mA 之间变化时,我们看到的发光二极管的亮度变化就不是太明显了。

 开发板上的 USB 接口电路,通过 USB 线,电脑给开发板供电和下 载程序以及实现电脑和开发板之间的通信。从图上可以看出,USB 座共有 6 个接口,其中 2 脚和 3 脚是数据通信引脚,1 脚和 4 脚是电源引脚,1 脚是 VCC 正电源,4 脚是 GND 即地 线。5 脚和 6 脚是外壳,我们直接接到了 GND 上。

VCC=5V,LED的导通电压为2V,所以电阻两端电压为3V。因为LED两端的通过的电流范围是1mA-20mA之间,所以可以求得电阻的范围,这个电阻也叫做限流电阻。

 单片机是可以编程控制的,我们可以让 P0.0 这个引脚输出一个高电平,就是 跟 VCC 一样的 5V 电压,那么这个时候,左侧 VCC 电压和右侧的 P0.0 的电压是一致的,那 就没有电压差,没有电压差就不会产生电流,没有电流 LED 小灯就不会亮,也就是会处于熄 灭状态。

代码

特殊功能寄存器和位定义

sfr P0 = 0x80;

51 单片机内部有很多寄存器,如果我们想使用的话必须提前进行 sfr 声明。

sbit LED = P0^0;

sbit是对寄存器中某一位进行定义。

 新建一个工程

 新建文件 

添加文件

将编写的文件添加到组中。 

编写代码

#include <reg52.h>   //包含特殊功能寄存器定义的头文件

sbit LED = P0^0;     //位地址声明,注意:sbit必须小写、P大写!
sbit ADDR0 = P1^0;
sbit ADDR1 = P1^1;
sbit ADDR2 = P1^2;
sbit ADDR3 = P1^3;
sbit ENLED = P1^4;

void main()
{
    ENLED = 0;
    ADDR3 = 1;
    ADDR2 = 1;
    ADDR1 = 1;
    ADDR0 = 0;
    LED = 0;        //点亮小灯
    while (1);      //程序停止在这里
}

这里使用while(1)循坏是因为,避免程序执行完之后,继续执行程序空间中未知的代码。

1、main 是主函数的函数名字,每一个 C 程序都必须有且仅有一个 main 函数。

2、void 是函数的返回值类型,本程序没有返回值,用 void 表示。

3、{}在这里是函数开始和结束的标志,不可省略。

4、每条 C 语言语句以;结束的。

生成hex文件

程序下载到单片机中

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一壶浊酒..

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值