单片机最好的自学教程
unsigned int
2
依照国际惯例,我们可以用uint8 uint16 等缩写来 替代,只需要用typedef语句可以完成:
typedef unsigned char uint8;
typedef unsigned int uint16;
流水灯实验
• 8个LED发光二极管,分别对应单片机IO口的P0.0 到P0.7口,8个单片机IO口组成一个字节,在程 序编写过程中,可以直接用P0来迚行操作。 • C语言的8位二迚制数代表了8个IO口
2号: 00000000
3号: 00000000
4号: 00000000
6号: 00000000 10号: 00000000
7号: 00000000 11号: 00000000
8号: 00000000 12号: 00000000
作业
• 1、牢记发光二极管参数和限流电阻计算方法。
• 2、理解单片机基本外围电路,以及单片机的 FLASH、RAM、SFR的概念。 • 3、初步了解单片机程序的基本方式,并丐通过查 看数据手册来了解SFR的有关内容。
• •
第二步:照葫芦画瓢
第三步:他山之石可以攻玉 第四步:理论实践结合
要领 在 实 践 中 成 长!
条件:
1、信心和恒心。 2、C语言教材来自本。(谭浩强) 3、开发板一块。
课程内容
• 基础课程:主要以开发板为平台,将开发板上的 电子器件全部讲解清楚,并丐讲授单片机知识和 C语言基础知识。
• 扩展课程:讲授除了开发板资源外的常用的一些 电路和编程使用方法技巧。 • 提高课程:主要讲授项目开发的流程和方式方法。
PNP 型三极管
NPN型三极管
三极管的型号记忆方式:箭头朝哪腿朝哪,导 通电压顺箭头过,电压导通,电流控制 b:基极 e:射极 c:集电极
• 74HC138:由三个输入来控制8个输出 口的状态,即所谓的三八译码器。 • 0000 1 1 1 1 1 1 1 • 0011 0 1 1 1 1 1 1 • 0101 1 0 1 1 1 1 1 • 0111 1 1 0 1 1 1 1 • 1001 1 1 1 0 1 1 1 • 1011 1 1 1 1 0 1 1 • 1101 1 1 1 1 1 0 1 • 1111 1 1 1 1 1 1 0
精确延时办法 1、利用库函数_nop_(); (需要include <intrins.h>) 2、利用定时器迚行定时 (后边的课程迚行介绍)
变量类型
关键字 unsigned char 所占字节 1 取值范围 0~255 “00000000”到”11111111” 0~65535 “00000000 00000000”到 “11111111 11111111”
作业
• 1、理解并掌握电源输入端滤波电路 及其电容的应用和原理。 • 2、记忆三极管的型号和导通原理。 • 3、理解三八译码器的原理,并丐学 会使用。
• 第四课: • •
流水灯
常用延时办法
• 非精确延时 1、for(i = 0; i < 100; i++); 2、i = 100; while(i--);
• 第三课: • •
硬件基础学习
电磁干扰
• 1、冬天的时候,空气比较干燥的城市, 朋友们经常对电脑,铁柜等等放电,这 就是“静电放电(ESD)”干扰。 • 2、使用电钻的时候听收音机,看电视有 杂音,这就是“快速瞬间脉冲群(EFT)” 的效果。 • 3、电脑性能不好,热插拔优盘等外围设 备会出现蓝屏重启电脑等现象,这就是 热插拔“浪涌(Surge)的效果。
符号
M1,M0 00 模式0
01 模式1
10 模式2
11 模式3
模式1:16位的计数器。(TH1,TL1) 模式2:自动装载8位计数器。主要应用在串口波 特率发生器。 模式0&模式3:几乎不用。 TCON和TMOD复位后都会自动变成0x00. 12 * (65536- x)/11059200 = 0.001
单片机的选择
• STC89C52: 8KFLASH、512字节RAM、32个IO口、 3个定时器、1个UART、8个中断源。
• P89V51RD+: 64KFLASH、1024字节RAM、32个IO 口、3个定时器、1个UART、8个中断源、 1个SPI、PWM、并丐支持与KEIL连机迚行 在线仿真。
3、万用表测晶振:
直接用红表笔对晶振引脚,黑表笔接GND,测量 电压即可。
复位电路
复位:
把单片机内部电路设置成为一个确定的状态,
3、静态变量
在函数体内声明,前边加static关键字声明,属于局部变量, 和局部变量的区别是一直占用内存,和全局变量的区别是只 能在函数体内使用。注意:只有第一次赋值有效。
晶振电路
1、晶振选择:
根据实际系统需求选择,6M,12M,11.0592M, 20M等等
2、负载电容:
对地接2个10到30pF的电容即可,常用20pF 。
数码管真值表
根据单片机连接电路,计算出数码管的真值表
0 1 2 3 4 5 0xc0 0xf9 0xa4 0xb0 0x99 0x92 6 7 8 9 A b 0x82 0xf8 0x80 0x90 0x88 0x83 C d E F 0xa7 0xa1 0x86 0x8e
作业
• 1、记住C语言2个变量类型及其范围, 掌握C语言的位操作和字节操作。 • 2、用3个LED小灯做一个交通灯的程序。 • 3、根据原理图和流水灯程序,独立完成 流水灯反方向流动以及小灯一个个点亮 直到全亮的功能。 • 4、明白数码管的原理,写出数码管真值 表。
第七课:
基础学习+习题课
变量
1、局部变量:
在函数内部声明的变量是内部变量,它只在本函数内有效, 在此函数外是不能作用的。函数体内占内存,出了函数释放 内存。
2、全局变量:
在函数外边声明的变量就是外部变量,也叫做全局变量,一 个源文件(.c)可以包含一个或者多个函数,全局变量的作用范 围是从声明的位置一直到文件结束,一直占用内存。
第五课:
定时器
时钟周期和机器周期
时钟周期T是时序中最小的时间单位。具 体计算就是1/时钟源。我们开发板上单 片机使用的时钟周期= 1/11059200 s。 机器周期CPU完成一个操作的最短时间。 普通51一个机器周期是12个时钟周期。
定时器和计数器
2个定时器/计数器:定时器0和定时器1
单片机最小系统
• 三要素:电源电路、复位电路、晶振 电路。 • 特点:单片机可以运行程序,是单片 机控制系统的核心。
点亮一个LED发光二极管
•发光二极管(LED):
通常红色贴片LED:电压1.6V~2.4V,电流2到20mA, 在2到5mA亮度有所变化,5mA以上亮度基本无变 化。 (5-2)/r= 2ma (5-2)/R = 20ma 150 - 1.5K 单片机(MCU),最小控制单元。首先,我们用单片 机来控制一个灯的亮灭。
函数
函数:实现一个特定功能的模块。 Main()函数为主函数,且唯一。 注意:如果函数体放在main函数的
后边,则需要进行函数声明才能使 用。
作业
1、理解清楚定时器在工作方式1下的编程方式 和使用方法,并且独立使用定时器进行流水灯 实验操作。 2、学会通过查找设置特殊功能寄存器SFR的 方式来编写程序。 3、理解清楚数码管的原理,和使用数码管进 行数字显示的原理的方法。 4、理解动态显示的原理和方法。
• P0 = 0xfe; • P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 • 1 1 1 1 1 1 1 0
C语言运算符
• • • • • 左移 << 右移 >> X<<2 X>>2 左移,最低位填0补充;右移,最高位填0补充 0xf0 11100000 01111000 按位取反符号 ~ 取反后1变成0,0变成1
定时器:每经过一个机器周期,寄存器加1。 因此,可以将机器周期看作为计数周期。 计数器:后续课程介绍。
特殊功能寄存器TCON
7 TF1 6 TR1 5 TF0 4 TR0 3 IE1 2 IT1 1 IE0 0 IT0
位 符 号
TF:定时器溢出标志。溢出时,该位自动置1。 中断执行时硬件清零,或者软件清零。 TR:定时器运行控制位,置1开始计时,清0停 止计时。
使用定时器的方法
第一:设置特殊功能寄存器TMOD,使 之工作在需求的状态。 第二:设置计数寄存器的初值,精确设 定好定时时间。 第三:设置特殊功能寄存器TCON,通 过打开TR来让定时器进行工作。(也可 设置为中断模式) TH1 = 0xfc; TL1 = 0X66; 12(65536 – x) /11059200 = 0.02s
第六课:
定时器 + 数码管
数组
数组是一组变量,这组变量需要满足三个条件: 1、具有相同的数据类型 2、具有相同的名字 3、在存储器中是被连续存放的 a[5] = {1, 2 , 3, 4, 5} a[ ] = {1, 2 , 3, 4, 5} a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4; a[4] = 5;
去耦电容的使用
• 低频滤波电容,平常应用最多的是钽电容, 电解电容,陶瓷电容,起到去除电源低频 纹波,稳定电源的作用。
• 高频滤波电容,电源附近,通常用104电容 来迚行去除高频干扰。
三极管
• 三极管是我们的日常应用电路中经常 会用到的一个器件。分为PNP和NPN 型。