AL单片机学习笔记(总结一)

开发环境

1、开发软件Keil5C51
在这里插入图片描述
2.烧录软件

在这里插入图片描述

3,普中的51单片机开发板
在这里插入图片描述
介绍这里便不展开了,下面直接开始实战环节

实战一:点亮一个LED灯

创建开发环境

首先打开STC-ISP添加芯片到开发环境
在这里插入图片描述
先选择好单片机型号(STC89C52RC),这一步很重要选择错则会导致最后的烧录出现问题

创建工程

点击Project,创建文件
在这里插入图片描述
点击第一个,随后选择一个文件夹进行创建(建议将文件夹放在桌面,方便查找打开)
在这里插入图片描述
选择完文件夹后选好型号(AT89C52)
在这里插入图片描述

创建c文件
在这里插入图片描述

ok,到这里我们已经完成了工作环境的创建,开始编写程序’

看一下LED的硬件原理图

在这里插入图片描述
我们只需明白VCC是高电平,那么为了让电路正常流通则需要给P2_0一个低电平,同时我们需要了解到给这个寄存器写1为高电平,0为低电平不太严谨,只为了方便记忆

编写程序

首先需要引入头文件**#include <REGX52.H>**,这个头文件的作用是定义所有的寄存器,
写下最激动的代码点亮第一个LED灯(就像显示出HelloWorld!)

#include <REGX52.H>
void main()
{
	while(1)
	{
		P2 = 0xFE; //1111 1110
	}
}

随后点击左上角的Translate,创建成功!

创建hex文件

点击这小锤子
在这里插入图片描述
点击output,点击creat HEX File
在这里插入图片描述
点击ok后点击bulid,最下面就会显示我们的hex文件创建成功

最后在烧录软件上打开这个程序文件(.hex)那么就可以让单片机点亮第一个LED灯了!

实操二 LED闪烁

文件的创建如上,这边直接实战

代码

通过STC-ISP拷贝延时代码
在这里插入图片描述

 #include <REGX52.H>
void Delay100ms()		//@12.000MHz
{
	unsigned char i, j;

	i = 195;
	j = 138;
	do
	{
		while (--j);
	} while (--i);
}
void main()
{
	while(1)
  	{
		P2=0xFE;
		Delay100ms();
		P2=0xFF;
		Delay100ms();
	}
}

独立按键的使用

原理图

在这里插入图片描述

可以看的GND为接地线,那么当K1被按下的时候P3_1的值应该为0,所以我们只需要检测P3_1的值就可以知道是否k1被按下

消抖

首先我们要知道的就是独立按键是物理按键,那么难免会有一些抖动,为了告诉单片机我们确实是按下这个键改怎么办呢
在这里插入图片描述

看这个图,那么我们在按键检测的时候加入一个延迟函数就可以避免这个物理抖动,并且在松开的时候再次延迟
流程如下:
检测–>消抖–>检测–>消抖

代码

void main()
{
	while(1)
	{
		if(P3_1==0)
		{
			Delay(20);
			while(P3_1==0);   //检测是否松手;
			Delay(20);
			//插入代码段
		}
	}
}

c语言的位运算符号

在这里插入图片描述
简单总结:
&:两个数都是1才为1=
| :两个数为0即为0
^:两个数为1即为0,否则为1
这些符号有什么作用呢,其实在我们修改寄存器的值是有很大的用处的。(这里不做详细说明)

数码管的显示

原理图

在这里插入图片描述
在这里插入图片描述

单单看这两张图,若没有电路基础可能就有些懵逼了,不过没关系,我们只需要知道咋用就ok

段选

我们首先选择在第几显示我们想显示的数字
看第二张图,我们可以通过写入P2的值来达到让第几个led亮
这里记住P2_4为高电位(你问为什么?我也不知道
这里从下往上看,下面的为高电位(至少数码管这一个内容都是这样的)

P2_4=0;P2_3=0;P2_2=1;

这里LED1亮(为1则亮)

显示什么数字或者字母

看第一张图:
通过配置P0的值即可实现操作
假设显示U,那么需要bcdef亮
那么对应的P0值为0x3E //0011 1110,也是哪个是1哪个亮

代码思路

ok,我们已经知道原理了,
可以开始想一想如何让我们实现静态显示和动态显示的思路

静态:段选完后,配置P0的值,不改变即可一直显示

但是显然静态显示的缺点很大,我们只能显示一个位的数字

动态:即动态扫描,也就是利用我们人眼的一个视觉残留的效果,让每个数字快速的显示,(只延迟1ms),那么就可以做到一个动态扫描的效果
细节:记得显示完,令P0=0x00,消影

  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值