2020科协竞赛部第二次培训

单片机开发入门

1.单片机介绍

什么是单片机

在这里插入图片描述在这里插入图片描述在一片集成电路芯片上集成微处理器、存储器、I/O接口电路,从而构成了单芯片微型计算机,即单片机。 Intel公司推出了MCS-51系列单片机:集成 8位CPU、4K字节ROM、128字节RAM、4个8位并口、1个全双工串行口、2个16位定时/计数器。寻址范围64K,并有控制功能较强的布尔处理器。

单片机的应用

在这里插入图片描述

51单片机

51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flashrom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。
我们讲解的51单片机主要是通过STC89C51来讲解的。通过这个单片机开发板来让大家了解和使用单片机。初步入门单片机。

2. 预备知识

单片机的IO口

在这里插入图片描述
单片机io口是用来定义相应I/O口位的输入输出状态和方式。包括3个基本项:数据向量Data、属性向量Attribution和方向控制向量Direction。端口内每个对应的位组合在一起,形成一个控制字
在这里插入图片描述

单片机最小系统的组成

在这里插入图片描述

时钟电路

单片机各外围部件运行都以时钟控制信号为基准,有条不紊,一拍一拍的工作。时钟电路为单片机工作提供基本时钟信号
在这里插入图片描述(1) 振荡周期: 也称时钟周期, 是指为单片机提供时钟脉冲信号的振荡源的周期,我们开发板上为12MHZ。
(2) 状态周期: 每个状态周期为时钟周期的 2 倍, 是振荡周期经二分频后得到的。
(3) 机器周期: 一个机器周期包含 6 个状态周期S1~S6, 也就是 12 个时钟周期。 在一个机器周期内, CPU可以完成一个独立的操作。
(4) 指令周期: 它是指CPU完成一条操操作所需的全部时间。 每条指令执行时间都是有一个或几个机器周期组成。MCS - 51 系统中, 有单周期指令、双周期指令和四周期指令。

复位电路

在这里插入图片描述只要在RST引脚上加一个持续时间为24个时钟周期(即两个机器周期)的高电平就可以了。一个机器周期为12个振荡周期(12*1/12M)为1us,所以需要2us高电平。

进制

在这里插入图片描述二进制
由于数字电路中的只有两种电平的特性,计算机中使用的数字采用都是二进制的 二进制是使用0和1两个数码来表示的数,它的基数是2,进位规则是“逢二进一”
十六进制
十六进制的基数是F,进位规则是“逢十六进一”

常用数据类型及逻辑运算

在这里插入图片描述“与”运算:有0得0
1&1=1 ;1&0=0 ;0&0=0 ;
“或”运算:有1得1
1|1=1 ; 1|0=1|0=1 ; 0|0=0;
“非”运算:1的非得0,0的非得1。
~1=0; ~0=1;
“异或”运算:必须不同,否则没有(0)
11=0;10=1;0^0=0;

3.初步应用

建立工程

点击工程-新建uVision工程-选择文件的保持位置-命名文件
在这里插入图片描述点击新建文件创建新的文档
在这里插入图片描述将新建文件保存为带.C后缀的文件
在这里插入图片描述添加刚刚新建的.C文件到工程组中
在这里插入图片描述

点亮第一盏LED

51定义关键字

bit,sbit,sfr,sfr16都用于单片机的C语言编程。
bit——定义位变量,定义位变量时可以为变量赋值,但不能指定变量的地址。 
定义格式:bit 变量名=变量值。
sbit——此类型变量只要用于访问可位寻址的特殊功能寄存器中的某个位。 
定义格式:sbit 变量名=位地址;
sfr——此类型变量可以访问指定的8位特殊功能寄存器,地址范围为0x80~0xFF。
定义格式:sfr 变量名=变量地址

硬件部分

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

软件部分
#include “reg52.h” 	//将reg52的头文件包括进工程中,此头文件定义了许多默认 
							    //的寄存器名,如P2可以直接调用无需定义
sbit LED1=P2^0;          //将P2.0引脚定义为LED1方便之后的直接调用和修改
void main() 
{  
	LED1=0;	            //使P2^0输出低电平,点亮LED1 
}         
程序烧录

在这里插入图片描述在这里插入图片描述-点击目标选项
-进行输出设置
-勾选产生HEX文件
在这里插入图片描述
对普中烧写软件进行必要的设置
-选择芯片类型为STC90Cxx series
-选择串口号
-调整波特率
-打开文件
在这里插入图片描述选择keil输出的hex文件即十六进制文件

在这里插入图片描述
-点击程序下载
-先断电后上电
-程序烧写完成

4.进阶应用

闪烁的LED

讲解了最基础的LED灯点亮,接下来讲如何实现灯的频闪效果。日常生活中LED的频闪使用范围广,用于舞台效果,预警隔离等等。如何实现LED的频闪效果?不外乎是亮一段时间,灭一段时间,这个延迟时间将会涉及到单片机的工作频率问题。

//实现一盏LED灯的频闪效果; 
#include <reg51.h>
sbit LED1=P2^0;
void delay(int i)
{
		while(i--);
}
void main()
{		 
		LED1=1;	
		delay(50000);
	  	LED1=0;	
		delay(50000);
}

呼吸灯

了解了LED灯的频闪问题后,我们经常看到手机黑屏收到消息时,会有一盏小灯若影若现,在电子工程中它的学名是呼吸灯,那我们如何做到这样的效果呢?
我们都知道,人眼所能识别的速度是有限的,25帧的速率才能在人眼中形成完整的动画,若LED灯亮的时间很短,那么在人眼的瞬态感应中就会是很暗。根据这个原理我们就可以做出一个呼吸灯了。
PWM:占空比:高电平在一个周期内所占据的时间。

//呼吸灯
#include<reg51.h>
sbit LED1=P0^1;
void delay(int t)
{
	while(t--);
}
int main(void)
{
	int c=400;//定义周期
	int h,l;//定义高电平低电平highlow
	while(1)
	{
	for(h=1;h<=c;h++)
	{
		LED1=0x01;
		delay(h);
		LED1=0x00;
		l=c-h;
		delay(l);
	}//高电平逐渐增加
	for(l=1;l<=c;l++)
	{
		LED1=0x00;
		delay(l);
		LED1=0x01;
		h=c-l;
		delay(h);
	}//低电平逐渐增加

	}
}

流水灯

流水灯:跑马灯,若干个灯泡依次点亮达到流动效果。
通过MCU实现对LED的时序控制即可达到绚丽的光影效果。即可完成心形流水灯,光立方等等的实物制作。接下来实现一个流水灯的程序。
crol_函数:
作用:左向循环;
参量一:被循环的数;
参量二:每次循环移动的位数;

//实现8盏LED灯的流水灯效果;
#include "reg51.h"
#include "intrins.h"
#define LED P0
void delay(int i)
{
	while(i--);
}
void main()
{
	LED=0xfe;
	while(1)
	{
		LED=_crol_(LED,1);
		delay(10000);
	}
}

5.总结

本次培训的单片机知识都是最基础也是最根本的知识,希望大家可以完全掌握,这样就可以在后续的学习比较轻松自如。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值