《单片机学习》

准备工作

1.下载好51单片机所需要的软件:
下载KEIL:KEIL官网链接
在这里插入图片描述
下载stc-isp
在这里插入图片描述
2.创建51单片机工程(方便后续直接使用)

创建51单片机工程

实验一:点亮第一个LED

LED的相关知识

1.LED是什么:
LED既发光二极管,是一种半导体固体发光器件。(有插片和贴片两种)
在这里插入图片描述
2.LED的工作原理:
LED的工作是有方向性的,只有当正极接到LED阳极,负极接到LED阴极的时候才能工作,如果反接LED是不能正常工作的。

LED的原理图解释

在这里插入图片描述
LED的阳极串联一个电阻,然后连接到电源VCC,而LED的阴极连接到单片机的P2口,如果想点亮一盏LED就对把单片机相对应的IO赋为低电平。

所需C语言知识点

sbit 变量名=地址值
(在给某个引脚取名的时候经常会用到)

sbit led=P2^0; //表示阴极连接P20口

在KEIL中编写程序

1.复制在准备工作中创建的51单片机工程
可以将文件名改为:实验一:点亮第一个LED
(这就是直接创建好51单片机工程的便利之处,不需要重复做繁琐的过程)
2.打开“实验一:点亮第一个LED”的文件夹
在这里插入图片描述
从文件夹中打开KEIL
3.在KEIL中编写程序

#include "reg52.h"

sbit led=P2^0;

void main()
{
     while(1)
	 {
	      led=0;
	 }
	 
}

在这里插入图片描述
编译成功后,便可将单片机连接电脑

通过stc-isp传输

1.将单片机连接电脑,并确保单片机是开的状态
2.选择正确的串口号
在这里插入图片描述
3.打开程序文件
选择.hex文件,并打开
在这里插入图片描述
4.下载/编程
此次可能需要再次将单片机关机开机才能下载成功
在这里插入图片描述
5.操作成功后既第一个LED亮起
在这里插入图片描述

实验二:LED闪烁

结合实验一中LED的相关知识与原理图
并掌握实验一中C语言知识点

所需C语言知识点

1.C语言常用的预处理命令:
#typedef使用

typedef unsigned char u8;//将unsigned char用u8代替,8是8位占1个字节,与前面char相符
typedef unsigned int u16;//也可以用8 16表示,记得后面要加分号

2.while()循环函数

while() //当括号中的值为真(非0)时,执行循环体语句
{
}

3.延时函数
占用CPU执行过程中的时间从而达到延时的效果

void delay(u16 i)
{
     while(i--);
}

在KEIL中编写程序

1.复制在准备工作中创建的51单片机工程
可以将文件名改为:实验二:LED闪烁
(这就是直接创建好51单片机工程的便利之处,不需要重复做繁琐的过程)
2.打开“实验二:LED闪烁”的文件夹
在这里插入图片描述
从文件夹中打开KEIL
3.在KEIL中编写程序

#include "reg52.h"
typedef unsigned char u8;
typedef unsigned int u16;
sbit led=P2^0;
void delay(u16 i);
void main()
{
     while(1)
	 {
	    led=0;//低电平亮
		delay(50000);//450ms
		led=1;//高电平灭
		delay(50000);//450ms
	 }
}
void delay(u16 i)
{
     while(i--);
}

编译成功后,便可将单片机连接电脑

通过stc-isp传输

1.将单片机连接电脑,并确保单片机是开的状态
2.选择正确的串口号
3.打开程序文件
选择.hex文件,并打开
在这里插入图片描述
4.下载/编程
此次可能需要再次将单片机关机开机才能下载成功
5.操作成功后既LED开始闪烁

确定delay(50000)时间

将实验过程进行仿真
1.双击前面的数字设置断点
在这里插入图片描述
2.算出时间差
点击Debug的第一个或直接点击棒棒糖
在这里插入图片描述
在这里插入图片描述
通过左侧的sec可以看到时间
(将锤子中的24改为12HZ)
做差即可得到delay(50000);的时间
0.00039-0.450601=-0.450211
相当于450ms

实验三:LED流水灯

结合实验一中LED的相关知识与原理图
并掌握实验一中C语言知识点

所需C语言知识点

1.C语言常用的预处理命令
#define使用

#define A P0  //(后面不加分号)

2.2. 循环左移右移函数

_crol_(a,b);//循环左移函数,a是左移的值,b是左移的位数,包含在instrins.h库函数里面
_cror_(a,b);//循环右移函数,a是右移的值,b是右移的位数。包含在instrins.h库函数里面

在KEIL中编写程序

1.复制在准备工作中创建的51单片机工程
可以将文件名改为:实验三:LED流水灯
(这就是直接创建好51单片机工程的便利之处,不需要重复做繁琐的过程)
2.打开“实验三:LED流水灯”的文件夹
在这里插入图片描述
从文件夹中打开KEIL
3.在KEIL中编写程序

#include "reg52.h"
#include <intrins.h>  //在使用_crol_和_cror_时都必须调用头文件

typedef unsigned u8;
typedef unsigned u16;

#define led P2
//sbit led=P2^0;	   //D1

void delay(u16 i)
{
     while(i--);
}
void main()
{
     u8 i=0;
	 led=0xfe;  //1111 1110 
	 delay(50000);
	 while(1)
	 {
	      for(i=0;i<7;i++)
		  {
		      led=_crol_(led,1);	  //0xfe  1111 1110 左移一位,0就会往左移移1位1111 1101	 此时D2点亮
			  delay(50000);
		  }
		  //0111 1111
		  for(i=0;i<7;i++)
		  {
		      led=_cror_(led,1);	  //0xfe  1111 1110 左移一位,0就会往左移移1位1111 1101	 此时D2点亮
			  delay(50000);
		  }
	 }
}

编译成功后,便可将单片机连接电脑

通过stc-isp传输

1.将单片机连接电脑,并确保单片机是开的状态
2.选择正确的串口号
3.打开程序文件
选择.hex文件,并打开
在这里插入图片描述
4.下载/编程
此次可能需要再次将单片机关机开机才能下载成功
5.LED流水灯就完成啦
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值