从零开始带你玩转单片机----------【第一期】

    大家好啊!  我是何同学。这一期开始我将从零开始教你学习51单片机,并且我将按照51单片机32单片机freerots操作系统Linux驱动的学习线路,出一个完整的教程,同时有需要学习资料的可以私信我,或者留言邮箱,我将免费提供给大家!


目录

一、​​​​​什么是单片机

(1)单片机-MCU

(2)单片机内部架构图

(3)组成单片机最小系统

二、​​​​​开始愉快的点灯了

1、点灯的准备工作,建立keil工程文件,步骤如下:

2、LED基础知识

三、代码实战

(1)写法1:

(2)写法2:


一、什么是单片机

(1)单片机-MCU

CPURAMROM定时器中断系统寄存器等构成。

RAM-随机存储器,数据存储空间,掉电丢失

ROM-只读存储器,程序存储空间,掉电不丢失

SFR-特殊功能寄存器

以普中开发板举例,ROM大小为8K,RAM大小为512字节

(2)单片机内部架构图

                                                            ①系统内部结构框图

                                                                    ②系统组成图

                                                                   ③引脚封装图

(注意芯片引脚位置,芯片上边有缺口处,正视从左顺时针数第40脚为VCC,切记不要装反!!!)

(3)组成单片机最小系统

  • 电源电路:主流单片机电源有3.3V和5V两个标准,也叫VCC或者VDD,图中单片机20引脚和40引脚就是电源电源,中间的C21为电容,主要起保护、稳定电路 的作用,上电的一瞬间电容相当于我们水管龙头,起到缓冲保护电路;电路运行时,电容像水池一样,进入电容的电流可以想象为往水池注水,进入电路的电流相当于从水池排水,这样无论输入的电流怎么变化,经过电容后进入电路的电流都是稳定的。(这里不清楚的话可以百度下电容的作用)

  • 晶振电路:晶振电路的作用是为单片机提供基准时钟信号,可以理解为人的心跳,代码能在单片机上能跑起来就是因为它,就好像人的血液也是通过每次次心跳传输到全身一样;旁边有两个电容,这里的电容是起到起振作用和稳定作用。

  • 复位电路:RST是单片机复位引脚,复位也分为3种情况:手动复位上电复位程序自动复位,复位的意思是让代码从头开始运行。

/***********************

❤️上电复位的意思是,单片机运行时,突然被断电了,RAM区某些数据还没被擦除,但是我们想让程序从第一条执行,这时就要上电复位;

❤️手动复位的意思,可以理解为重启电脑,按下复位键复位,让程序从头开始运行;

❤️程序自动复位,主要是程序跑飞或者死机触发,一般为单片机内部看门狗模块,看门狗芯片和单片机的一个I/O引脚相连,该I/O引脚通过程序控制它定时地往看门狗的这个引脚上送入高电平(或 低电平 ),一旦单片机由于干扰造成程序跑飞后而陷入某一 程序段 进入死循环状态时,写看门狗引脚的程序便不能被执行,这个时候,看门狗电路就会由于得不到单片机送来的信号,便在它和单片机复位引脚相连的引脚上送出一个 复位信号 ,使单片机发生复位

**************************/

二、开始愉快的点灯了

1、点灯的准备工作,建立keil工程文件,步骤如下:

(1)建立工程文件夹

(2)点完第一步后,会进入到一个文件夹,此时需要调整保存路径,方便日后开发所有程序可以放在一起,我这里是在F盘提前新建了一个“单片机开发板学习资料的文件夹”,在这个文件夹下,又增加了一个叫“1-1.点亮LED”的文件夹,后面关于这个工程的所有程序都会在里面,不然你建立第二个工程放进来就乱了,大家可以看下我这个层级关系。

(3)给工程起工程名

(4)选对应芯片

(5)建立代码区

(6)代码区加入工程中

进去后,点击这个main文件,点击ADD就可以了

(7)到这里,工程就建立好了,可以编写代码了

2、LED基础知识

  • 图号:

LED也叫发光二极管,要区分正负极才可以亮,如上图所示区分即可。

这里我们要根据开发板看原理图,如下:

图1.LED原理图

图2.单片机引脚图局部

LED要正极接正极,负极接负极才能亮,图1中D1到D8代表LED,左边正极都接到VCC,所以是共阳极接法,反之共阴极就是负极接在一起,最右边以P开头的字母代表单片机的端口,这种是云线标法,LED的负极我们要接低电平,才能点亮它,所以对应的单片机端口要输出低电平,输出高电平就不亮了;结合图2,单片机P2.7这个引脚引出的P27接的是图1的D8,如果P2.7输出低电平,D8的LED 就被点亮。

三、代码实战

(1)写法1

#include <REGX52.H>    //包含相关寄存器的头文件

void main()           //主函数入口,程序从这里进来运行
{
    while(1)            //一个循环条件,永远为真
    {
        P2=0xFE;             /*写P2口,注意要大写,0xFE是16进制数据,
                                这里根据开发板原理图写*/
    }
}

因为P2.0到P2.7这8个口对应的是LED的端口,假设要让D1这个LED亮,就要这个端口输出低电压,及P2.0端口为0,其他端口均为1,及1 1 1 1 1 1 1 0,转化为16进制,即为FE,所以第7条语句这样写。

(2)写法2

#include <REGX52.H>

sbit LED_OUT=P2^1;   //把P2.1这个口定义为LED输出口
void main( )
{
	while(1)
	{
		LED_OUT=0;     //让定义的LED输出口输出低电压
	}
}

这种写法一定要会!!!实际开发多以这种写法,首先这种写法可读性很高,能让别人读懂你的程序,其次也方便后期修改程序,现在是P2.1这个端口输出低电压,如果我想让别的端口输出低电压,可以直接修改这条语句。


最后就是编译生成helix文件,烧录到单片机里观察实验现象即可。

值得一提的是,编译后信息输出窗口如图

其中date-代表所占RAM字节数,code-代表所占ROM字节数

备注:部分图片或者名词解释可能来源于互联网,如有侵权请联系我修改,谢谢!

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值