单片机学习笔记(7)
定时器和中断概念的基本认识(上)学习过程跟随up主@海创电子
经过一段时间的学习,终于走到了定时器中断的部分了!
接下来我们主要从两个实验入手:
实验一:LED小灯的闪烁 实验二:按键中断法点亮LED
在实验开始之前,我们先来了解一些概念。
时钟周期 时钟周期又叫做振荡周期(晶振周期)、节拍周期,定义为时钟晶振频率的倒数。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。例如晶振为12M,则时钟周期为1/12us。又可以被定义为节拍。
机器周期 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。比如,取值周期,取数周期。在80C51内部,机器周期一般包括于6个状态周期,12个时钟周 ...
模电学习笔记(1)
模电的学习过程跟随上交大郑益慧老师的模电课程
教材采用《模拟电子技术基础(第四版)》华英成、童诗白主编——高等教育出版社
半导体基础一、本征半导体 本征半导体:指纯净的具有晶体结构的半导体。
本征激发:指半导体在热激发下产生自由电子和空穴对的现象。
二、杂质半导体 通过扩散工艺,在本征半导体中掺入少量合适的杂质元素,即可得到杂质半导体。控制掺入杂质元素的浓度,就可以控制杂质半导体的导电性能。
N型半导体 在纯净的硅晶体当中掺入五价元素(如磷),使之取代晶格中硅原子的位置,就形成了N型半导体。事实上,当磷取代了硅的位置后,由于磷原子外层有5个电子,在常温下由于热激发,导致自由电子增多。此时自由电子为多数载流子(多子),空穴成为少数载流子(少子)。杂质原子提供电子,故称为施主电子。
N为Negative(负)的字头,由于电子带负电,故称之为N型半导体。
P型半导体 同理,在纯净的硅原子当中掺入三价元素(如硼),使得空穴成为多子,自由电子成为少子。因 ...
单片机学习笔记(6)
按键控制学习过程跟随up主@海创电子
在这之前,我们先看看开发板当中,有关按键的原理图部分。
按键动作过程 当按键按下时,由于各个按键的另一端接地,单片机的管脚会接受到一个低电平信号。
理想情况下,在未按下按钮时,电平信号为高电平,而在按键按下之后,电平信号由高电平变为低电平。
而在实际情况下,当按钮按下时,会在高电平与低电平之间产生高低电平的交替现象,这一现象称之为抖动。在抖动现象结束后才会呈现出稳定的低电平,随着按键抬起时抖动现象再次出现,直至现象结束后回到高电平状态。
实现按键动作按键动作流程 如果要实现按键动作,需要先检测到低电平动作,检测到低电平动作之后,使用延时函数延时5ms。这里延时5ms是因为抖动现象开始到结束时间一般为5ms,延时过后相当于跳过抖动。之后再次检测是否为低电平,若为低电平则执行相应动作。
“去抖”操作除了用软件可以实现,在硬件上也可以实现,这里讲的是使用软件去抖的方式。
程序实现——用按钮控制LED灯的亮灭 ...
单片机学习笔记(5)
端口的使用端口初始化注意:以下文章所使用的单片机为IAP15W4K58S4
在上一篇文章当中,我们介绍了编写程序控制单片机以实现流水灯的几种方法。
在最后一种方法当中,出现了这样的几行代码:
P0M0=0X00;P0M1=0X00; //这里对I/O口进行初始化P1M0=0X00;P1M1=0X00;P2M0=0X00;P2M1=0X00;P3M0=0X00;P3M1=0X00;P4M0=0X00;P4M1=0X00;
相关的内容在<STC15.h>这个头文件当中已有详细说明:
sfr P0M0 = 0x94; //0000,0000 端口0模式寄存器0sfr P0M1 = 0x93; //0000,0000 端口0模式寄存器1sfr P1M0 = 0x92; //0000,0000 端口1模式寄存器0sfr P1M1 = 0x91; //0000,0000 端口1模式寄存器1sfr P2M0 ...
单片机学习笔记(4)
单片机学习笔记之LED流水灯学习过程跟随B站up主@海创电子
这里我们采用的开发板是大科电子工作室的FM-STC15开发板。
LED部分的原理图如下:
在开发板上实现流水灯,必须先了解开发板上的LED小灯是如何排列的。上图的LED小灯显然是属于“共阳”(即LED的“阳级”连在一起)。与之相反,也有的开发板上的LED小灯是属于“共阴”的,这时我们就需要判断LED灯的亮灭是需要高电平还是低电平,这与接下来编程时的“0”和“1”是有关系的。
在单片机学习笔记(2)当中,我简单的介绍了关于利用单片机简单实现LED的亮灭,今天我们来学习如何制作流水灯。
方法1:利用十六进制数来制作流水灯 具体代码如下:
#include <STC15.h>#include <intrins.h> /*intrins.h,函数,应用于程序设计,一般出现于C51单片机编程中,一般程序中需要使用到空指令_nop_(), ...
C语言学习笔记(4)
关于char类型 我们先从一道编程题开始讲起。
编程实现字母的大小写转换,要求从键盘输入任意大写字母,程序转换成小写字母并输出。
这是今天在上C语言课的时候,老师在课上布置的随堂练习。我自己一开始是打算用if判断来实现,但是非常的明显————使用逻辑判断语句来实现这个题目既复杂,又显的……emmm,有点蠢。所以我就“稍微”百度了一下。这里贴出这位老哥的做法:C语言实验题――大小写转换 从键盘输入一个大写字母,要求改用小写字母输出。
为了方便查看和说明,我将上面链接当中的代码展示在下方。
#include<stdio.h>int main(){ char ch; ch=getchar();//这里并没有检验这个是不是字母 putchar(ch+32); return 0;}
初识char 先简单说明一下,char属于C语言当中的一种常见的数据类型,即字符类型。
以下文字取于书本原文:
“字符类型包含字母、数字、标点符号以及控制符号 ...
单片机学习笔记(3)
单片机学习之——运算符 在了解完一些数据类型之后,接下来我们将学习如何使用运算符。
视频传送门:C51单片机编程基础-运算符
一、C51中常见的运算符 在C51当中,除了在C语言当中常见的运算符,还有一些之前接触较少的运算符,例如:
算数运算符:++位运算符:& | ^ ~ << >>逻辑运算符:&& || !三目录运算符:con?ture:false
二、运算符用法 这里我们针对一些运算符进行说明:
1、算数运算符:++(自增) 我们先看下面的示例代码:
#include<stdio.h>int main(){ int a=10 ,b; b=++a; printf("a=%d\nb=%d\n",a,b); return 0;}
在上面的代码当中的primary 的运算顺序是先进行运算,再进行赋值。即:
a=11b=11
&emsp ...
单片机学习笔记(2)
单片机学习之——C51初识 在搞清楚进制转换之后,接下来就正式进入C51单片机的学习了,在学习的过程中会穿插一些关于C语言的一些知识,毕竟C51本身就是C语言的一种衍生与应用。接下来我将会按照哔哩哔哩上找的视频教程针对C51进行逐步的学习。
视频传送门:C51单片机编程基础-变量
一、C51的头文件 我们先从程序框架来了解C51程序。
#include<reg51.h> //头文件int main(void) //主函数,main函数{ return 0;}
这里的头文件分别有两种类型,一种是带有尖括号的叫做系统头文件,另一种是带有双引号的叫做自定义头文件。即:
<reg51.h> //系统头文件"head.h" //自定义头文件
这意味着未来我们可以编写自己的头文件以用于我们自己写的程序。
二、C51当中的数据类型 C语言当中 ...
单片机学习笔记(1)
单片机学习之——二进制与十六进制的互相转换 经过一段时间的学习,终于把C语言的基础知识都大致过了一遍,接下来我将会进入单片机的学习。在这过程中偶尔会穿插一些C语言的知识,也算是一边学习单片机,一边复习C语言啦!
十六进制数一、关于十六进制数 首先要先知道十六进制是什么并且如何表示。
一般来说,十六进制由数字0到9和字母A到F(或a到f)来表示。其中A到F依次表示数字10到15依次排开即:0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,这些都称之为十六进制数。
二、十六进制数与二进制数的关系 在十六进制的世界里,一个十六进制数字会等于四个二进制数字。
如下所示:
0 –> 00001 –> 00012 –> 00103 –> 00114 –> 01005 –> 01016 –> 01107 –> 01118 –> 10009 –> 1001A –> 1010B –> 1011C –> ...
C语言学习笔记(3)
今天再说说新的东西吧!
一、关于switch函数的使用 同样的,让我们先看一看示例代码:
#include<stdio.h>int main(){ int a,b; char c; scanf("%d",&a); scanf("%c",&c); scanf("%d",&b); switch(c) { case'+': printf("%d", a + b); break; case'-': printf("%d", a - b); break; case'*': printf("%d", a * b); break; case'/': if(a == 0) { printf("Divided by zero! ...