51单片机入门经典教程

上传人:无*** 文档编号:197260417 上传时间:2023-04-03 格式:PDF 页数:231 大小:8.80MB
收藏 版权申诉 举报 下载
51单片机入门经典教程_第1页
第1页 / 共231页
51单片机入门经典教程_第2页
第2页 / 共231页
51单片机入门经典教程_第3页
第3页 / 共231页
资源描述:

《51单片机入门经典教程》由会员分享,可在线阅读,更多相关《51单片机入门经典教程(231页珍藏版)》请在装配图网上搜索。

1、Maplead MCU Development Board http:/ 1目录目录 概述概述.1 1流水灯流水灯.13 流水灯原理.13 开发板流水灯实物图.13 流水灯演示程序.14 2数码管数码管.15 数码管原理.15 8 段数码管编码.15 数码管显示方式.16 开发板数码管实物图.18 数码管演示程序.18 3总线扩展技术总线扩展技术.21 总线扩展.21 74HC138.21 74HC573.22 开发板 74HC138 与 74HC573 实物图.23 4键盘键盘.24 独立键盘.24 独立键盘演示程序.25 矩阵键盘.26 矩阵键盘演示程序.28 开发板键盘实物图.30 5达

2、林顿管驱动达林顿管驱动.31 达林顿管阵列ULN2003.31 ULN2003 原理.31 开发板达林顿管实物图.32 6继电器继电器.33 电磁式继电器原理.33 开发板继电器实验连接图示.34 继电器演示程序.34 7光电耦合器光电耦合器.35 光电耦合器原理.35 Maplead MCU Development Board http:/ 2光电耦合器演示程序.35 开发板光耦实验连接图示.36 8步进电机步进电机.37 步进电机原理.37 开发板步进电机实验连接图示.38 步进电机演示程序.38 951 单片机中断单片机中断.41 中断的概念.41 51 单片机中断有关的寄存器.41 K

3、eil中C语言中断服务函数的形式.44 1051 单片机外部中断单片机外部中断.45 51 单片机外部中断.45 51 单片机外部中断演示程序.45 1151 单片机定时单片机定时/计数器计数器 0,1.47 51 单片机定时/计数器 0,1.47 定时/计数器 0,1 的工作原理.47 定时/计数器的设定及使用.49 定时/计数器 0、1 演示程序.49 12单片机串口通信单片机串口通信.53 51 单片机串行通信.53 51 单片机串行通信控制寄存器.53 串口工作模式解析.55 串口波特率计算.56 串口初始化步骤.56 单片机串口通信演示程序.56 131602 液晶显示液晶显示.59

4、 1602 液晶接口.59 1602 液晶显示原理.59 1602 液晶指令详解.61 1602 液晶的插接.68 1602 液晶显示演示程序.69 1412864 液晶显示液晶显示.73 12864 液晶接口.73 12864 液晶内部控制结构.73 12864 液晶指令详解.77 12864 液晶在开发板上的安装.81 Maplead MCU Development Board http:/ 312864 液晶显示演示程序.83 15LED点阵点阵.100 LED点阵原理.100 LED点阵的扫描方式.100 09LED数字点阵及其编码.101 LED点阵数字显示演示程序.103 LED点

5、阵实验连接图.103 16PS2 接口接口.105 PS2 接口定义:.105 PS2 键盘扫描码.105 PS2 键盘解码演示程序.107 开发板PS2 接口实物图.108 17DS1302 实时时钟实时时钟.110 DS1302 实时时钟芯片.110 DS1302 的命令字结构.111 DS1302 各寄存器的地址及数据存储结构.112 DS1302 的RAM寄存器.114 DS1302 的涓流充电功能.115 DS1302 的数据输入输出操作.116 开发板实时时钟模块实物图片.118 DS1302 演示程序.118 18.红外遥控红外遥控.123 红外遥控组成.123 红外遥控编码.1

6、24 51 单片机红外遥控发射模拟.125 红外遥控实验电路连接图示.126 51 单片机红外遥控接收解码设计.128 19.AD转换器转换器TLC549.135 8 位串口AD转换器TLC549.135 TLC549 的引脚定义.135 TLC549 的操作.136 开发板AD转换器实验电路连接.137 TLC549 AD转换演示程序.138 20.DA转换器转换器TLC5615.141 10 位串口DA转换器TLC5615.141 TLC5615 的引脚定义.141 TLC5615 的操作.142 Maplead MCU Development Board http:/ 4DA转换器实验电

7、路连接.143 TLC615 DA转换演示程序.144 21.SD卡的卡的SPI方式读写方式读写.146 SD卡及其总线结构.146 SD卡命令格式.146 SD卡复位至SPI方式.147 SD卡的SPI方式读写.148 SD卡电路连接实物图.151 SD卡SPI方式读写演示程序.152 22.I2C总线总线.159 I2C总线简介.159 I2C总线的电气连接.159 I2C总线数据传输的启动和停止.160 I2C总线数据传输格式.160 I2C总线器件寻址.161 I2C总线器件的读写控制.161 I2C总线读写演示程序.161 23.AT24C02 芯片的芯片的I2C总线读写总线读写.1

8、65 2K(2568)AT24C02 E2PEOM.165 AT24C02 的引脚定义.165 AT24C02 的从器件地址.166 AT24C02 的字写入.166 AT24C02 的页写入.166 读取AT24C02 当前地址数据.167 读取AT24C02 随机地址数据.167 连续读取AT24C02 数据.168 AT24C02 实验电路连接实物图.168 AT24C02 读写演示程序.169 24.AT24C04 芯片的芯片的I2C总线读写总线读写.172 4K(5128)AT24C04 E2PEOM.172 AT24C04 的引脚定义.172 AT24C04 的从器件寻址.173

9、AT24C04 的读写操作.173 AT24C04 读写演示程序.173 25.I2C总线温度传感器总线温度传感器LM75A.176 LM75A温度传感器.176 LM75A的引脚定义.176 LM75A的从器件寻址.176 Maplead MCU Development Board http:/ 5LM75A的内部寄存器.177 LM75A的读写操作.181 LM75A读取温度值演示程序.184 26.单总线温度传感器单总线温度传感器DS18B20.190 DS18B20 单总线温度传感器.190 DS18B20 的引脚定义.190 DS19B20 内部存储器.190 DS19B20 指令.

10、191 DS18B20 的读写操作.193 DS18B20 的温度转换过程.194 DS18B20 在开发板上的安装.194 DS18B20 温度转换演示程序.195 27.脉宽调制(脉宽调制(PWM)输出)输出.200 PWM原理.200 PWM调节LED亮度演示程序.200 28.看门狗看门狗.202 看门狗定时器.202 看门狗定时器演示程序.203 29.51 系列单片机的省电模式系列单片机的省电模式.205 51 系列单片机的省电模式.205 51 系列单片机的空闲模式.205 51 系列单片机的掉电模式.205 51 系列单片机的电源管理特殊功能寄存器.205 51 系列单片机的电

11、源管理演示程序.206 30.*STC系列单片机内部系列单片机内部E2PROM.209 STC系列单片机的E2PROM.209 ISP/IAP有关的特殊功能寄存器.209 E2PRM的地址.211 STC90C54RD+的E2PROM读、写以及扇区擦除演示程序.211 附录附录A:USB转串口驱动安装教程转串口驱动安装教程.215 附录附录B:STC单片机程序下载方法单片机程序下载方法.222 Maplead MCU Development Board http:/ 1概述概述 Maplead 单片机开发单片机开发/学习板特色学习板特色 【1】大板、模块化布局。真正的大板(20cm*12cm)

12、,各个模块有序排列,图形化标识,美观、大方、实用。是您学习、开发的好助手。【2】板载 USB 转串口模块。没有串口的笔记本电脑也能使用。芯片采用更加稳定的 CH340T,而非廉价的 PL2303,用起来更顺手(芯片支持的操作系统有Windows98/Me/2000/XP/Server2003/Vista/64bit XP/64bit Vista/Windows 7)。【3】板载工业工程中常用的串口 AD/DA 模块。本开发板不采用并口通信 AD/DA 芯片,而是采用独立的、最新式的串口通信 AD/DA 芯片。使您学习一次即可将所学知识在工程实际中得到应用,避免二次重复学习。AD 模块板载光敏电

13、阻、热敏电阻、可调电阻等多种电压输入方式。【4】板载光电耦合器。Maplead MCU Development Board http:/ 2光电耦合器俗称光耦,是在实际工程应用中常用的隔离器件。【5】本开发板/学习板是真正的总线板。本开发板/学习板采用“总线”的方式将整个板子有机整合在一起。板载 (1)单总线(DS18B20 接口);(2)RS232 串口总线;(3)3wire 串口总线(实时时钟/AD/DA);(4)并口总线(1602 液晶、12864 液晶接口);(5)I2C 总线(单页面 AT24C02/双页面 AT24C04/I2C 温度传感器);(6)SPI 总线(SD 卡接口);(

14、7)PS2 总线接口。【6】矩阵键盘与独立键盘。4*4 矩阵键盘、4 独立键盘。【7】板载点阵模块。【8】排针一律采用纯铜排针,不生锈,接触性能良好。【9】电源部分接有 500mA 自恢复保险丝。板载自恢复保险丝可以有效的保护开发/学习板,即使在短路的情况下也不会损坏器件。如果您采用电脑 USB 接口供电,本设计能保证您电脑主板的安全。Maplead MCU Development Board http:/ 3Maplead 单片机开发单片机开发/学习板使用须知学习板使用须知 单片机 40 引脚全部引出,可以通过这些引脚利用杜邦线自由连接其它外设。开发板 USB 接口与 USB 转串口模块。U

15、SB 转串口模块的 RxD与 TxD 端口连接短路子时,单片机串口与 USB 串口相连;RxD与 TxD 端口去掉短路子时,单片机串口与 USB 串口断开连接。注意:由于注意:由于 USB 转串口模块在串口空闲时,转串口模块在串口空闲时,RxD 端口输出高电平,因此,接通端口输出高电平,因此,接通 USB 电源后,即使关闭电源按钮的情况下,电源后,即使关闭电源按钮的情况下,RxD 端口依然输出微弱的电流,电源指示灯与数码管被微弱地点亮,但单片机与其他集成电路不工作。拔掉端口依然输出微弱的电流,电源指示灯与数码管被微弱地点亮,但单片机与其他集成电路不工作。拔掉 RxD 短路子后,开发板彻底断电。

16、短路子后,开发板彻底断电。运行矩阵键盘实验或电路板自检程序时,程序下载好了之后,运行矩阵键盘实验或电路板自检程序时,程序下载好了之后,Maplead MCU Development Board http:/ 4要先拔掉要先拔掉 RxD 短路子再开机进行实验。短路子再开机进行实验。外接电源插口,插口中心为正极,输入 712V 直流电。电源指示灯。电源按钮。该按钮为自锁型开关,按下后接通 USB 电源,弹起后接通外部直流电源。电源输出排针。可以引出 6 路 5V 直流电。SD 卡模块的 3.3V 电压输出端,该端口可以输出+3.3V 直流电压,负极可以连接的 GND 端口。ISP 插口。Atmel

17、 公司 51 系列单片机程序下载接口,通过该接口可以用编程器对 AT89 系列单片机进行编程操作。该端口为标准 Atmel 接口定义。RS232 串行接口。该接口可以直接与电脑 RS232 接口进行连接并与电脑进行串行通信。继电器接线端子。3 个端口,最上面一个端子与中间端子在平时是相互接通的,在继电器吸合后断开;最下面一个端子与中间端子在平时是断开的,在继电器吸合后接通。注意:尽管继电器可以连接注意:尽管继电器可以连接 220V 交流电,但不推荐大家采用交流电,但不推荐大家采用220V 交流电进行实验,可以使用低电压的电源代替交流电进行实验,可以使用低电压的电源代替 220V 交流电进行演示

18、。交流电进行演示。请时刻注意用电安全!请时刻注意用电安全!Maplead MCU Development Board http:/ 5开发板各模块简介开发板各模块简介 Maplead MCU Development Board http:/ 6 Maplead MCU Development Board http:/ 7 Maplead MCU Development Board http:/ 8 Maplead MCU Development Board http:/ 9 Maplead MCU Development Board http:/ 10 Maplead MCU Developm

19、ent Board http:/ 11板载资源板载资源【01】8 个 LED 发光二极管。白发红、白发黄两种颜色 LED,经典流水灯等实验。【02】8 位共阴数码管。74hc573 与 74HC138 总线扩展。1 位数码管静态显示、8 位数码管动态显示。【03】44 矩阵键盘。配有线反转法输入程序样例。【04】4 个独立按键。独立按键扫描、外部中断输入、计数器输入。【05】达林顿管阵列模拟电路驱动。【06】电磁继电器驱动电路。【07】步进电机驱动电路。【08】直流电机驱动电路。【09】光电耦合器驱动电路。【10】无源蜂鸣器驱动电路。警报音、单片机音乐演奏。【11】USB 转串口电路。方便无串

20、口的笔记本电脑进行单片机开发实验。【12】单片机 RS232 串口通信接口。【13】1602 液晶显示接口。【14】12864 液晶显示接口。【15】88LED 点阵显示接口。【16】红外遥控收发。【17】PS2 键盘/鼠标接口。【18】3 线制串行总线实时时钟。带涓流充电功能的实时时钟。【19】3 线制串行总线 AD 转换器。拨码开关选择精密可调电阻、热敏电阻、光敏电阻、外部模拟输入。【20】3 线制串行总线 DA 转换器。电压控制 LED 亮度、模拟输出。【21】SPI 总线对 SD 卡的读写操作。Maplead MCU Development Board http:/ 12【22】I2C

21、 总线操作 AT24C02。拨码开关自由变换器件地址。【23】I2C 总线操作 AT24C04。拨码开关自由变换器件地址。【24】I2C 总线操作温度传感器。拨码开关自由变换器件地址。【25】DS18B20 单总线温度传感器。【26】ISP 接口。兼容 Atmel 原厂接口定义,可用编程器进行 AT89 系列程序下载。【27】USB 电源输入或 712V 电源输入。【28】500mA 自恢复保险丝。保护电路安全;USB 供电时保护电脑主板安全。【29】红外遥控收发。【30】单片机所有引脚全部引出。全铜排针,不生锈,接触性能好。Maplead MCU Development Board http

22、:/ 131流水灯流水灯 图图 1-1 流水灯电路连接原理图流水灯电路连接原理图 流水灯原理流水灯原理 51 单片机所有 I/O 引脚通过场效应管场效应管输出低电平,通过上拉电阻上拉电阻输出高电平(P0 口需要外加上拉电阻),因此其低电平的驱动能力较强,高电平的驱动能力非常弱。流水灯的工作原理很简单:所有的 LED 发光二极管共阳共阳连接(正极接到一起),依靠单片机引脚输出低电平(接通负极)来点亮各个发光二极管。开发板流水灯实物图开发板流水灯实物图 Maplead MCU Development Board http:/ 14图图 1-2 开发板流水灯开发板流水灯 流水灯演示程序流水灯演示程序

23、 例程例程 1-1 流水灯流水灯(对应的电路为图对应的电路为图 1-1)/*流水灯*作者:Shenney John*Copyright(C)2010 by Shenney John,All Rights Reserved.*/#include /引用“reg52.h”头文件,此文件中包含对单片机寄存器等的定义 void delay(void);/delay()函数预定义;ANSI C 规定所有函数须在 main 函数前进行预定义 void main(void)unsigned char a,i;while(1)/超级循环 a=0 x01;/给 a 赋初值 1,既 a 的最低位为 1 for(i

24、=0;i8;i+)P1=a;/将 a 值取反后赋给 P1 口,因为 LED 为低电平点亮 a=1;/本表达式同 a=a1;每次都将 a 变量左移 1 位,共移 8 次 delay();/给一定的延时,否则肉眼无法感知流水灯的变化 void delay(void)unsigned int i,j;for(i=0;i500;i+)/空循环 65000*10 次,进行延时;for(j=0;j250;j+);/调节 j 值,改变流水灯闪烁速度,j 值越大,速度越慢 Maplead MCU Development Board http:/ 152数码管数码管 数码管原理数码管原理 图图 2-1 数码管电

25、路原理图数码管电路原理图 数码管每个数字称为“位”;单个数字内每个 LED 灯称为“段”。共阴数码管所有段的阴极共用一引脚;共阳数码管所有段的阳极共用一引脚。如图 2-1 所示的数码管,分别为 1 个数字 8 个段,则称为“8 段 1 位数码管”。我们开发板上安装的数码管为 8 段,4 位 1 组,共两组,所以称为 8 段 8 位数码管。数码管的显示原理为:如果我们要用 8 段数码管显示一个“1”字,则“b”、“c”两段被点亮;如果我们要显示一个“9”字,则“a”、“b”、“c”、“d”、“f”、“g”六段被点亮;如果需要显示小数点,则“dp”段被点亮。8 段数码管编码段数码管编码 a、b、c

26、、d、e、f、g 这 7 段与 dp 这个显示小数点的段加起来刚好是 8 段,正好可以用 8 个位,也就是 8 位单片机的一个机器字来表示。我们可以将十六进制的 0F 这 16 个数字进行编码存储于某一变量中,方便使用。表表 2-1 数字段码在数字段码在 8 位机器字中的存放位机器字中的存放 K1f2g3e4d5K6c8DP7b9a10abcdefgdpGND共阴数码管共阴数码管A1f2g3e4d5A6c8DP7b9a10bcdefgdpaVCC共阳数码管共阳数码管abcdefgdpabcdefgdpMaplead MCU Development Board http:/ 16 MSB LSB

27、 字节中每个位 D7D6D5D4D3D2D1D0 对应的段 dpg f e d c b a 表表 2-2 8 段共阴数码管编码表(共阳取反)段共阴数码管编码表(共阳取反)显示数字 0 1 2 3 4 二进制编码 0011 1111 0000 0110 0101 1011 0100 1111 0110 0110 十六进制编码 0 x3F 0 x06 0 x5B 0 x4F 0 x66 显示数字 5 6 7 8 9 二进制编码 0110 1101 0111 1101 0000 0111 0111 1111 0110 1111 十六进制编码 0 x6D 0 x7D 0 x07 0 x7F 0 x6F

28、 显示数字 A B C D E 二进制编码 0111 0111 0111 1100 0011 1001 0101 1110 0111 1001 十六进制编码 0 x77 0 x7C 0 x39 0 x5E 0 x79 显示数字 F 无显示 使用小数点显示的数字 二进制编码 0111 0001 0000 0000 最高有效位取 1 十六进制编码 0 x71 0 x00/数码管显示方式数码管显示方式 LED 显示器工作方式有两种:静态显示方式和动态显示方式。静态显示方式:静态显示方式:静态显示的特点是每个数码管的段选必须接 8 条数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直

29、到送入新字形码为止。这种方法的优点是占用 CPU 时间少,显示便于监测和控制。缺点是占用较多的硬件电路端口,成本较高。Maplead MCU Development Board http:/ 17 图图 2-2 数码管的静态显示数码管的静态显示 动态显示方式:动态显示方式:动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。图图

30、 2-3 数码管的动态显示数码管的动态显示 K1f2g3e4d5K6c8DP7b9a10K1f2g3e4d5K6c8DP7b9a10接同一总线12分时选通,每一瞬间只点亮一个数码管K1f2g3e4d5K6c8DP7b9a10K1f2g3e4d5K6c8DP7b9a10GND接总线1接总线2同一时刻,所有数码管同时被点亮Maplead MCU Development Board http:/ 18开发板数码管实物图开发板数码管实物图 图图 2-4 开发板数码管开发板数码管 数码管演示程序数码管演示程序 图图 2-5 例程电路图例程电路图 例程例程 2-1 数码管静态显示数码管静态显示/*数码管静

31、态显示*作者:Shenney John*Copyright(C)2010 by Shenney John,All Rights Reserved.*/#include unsigned char code LED_Seg=0 x3F,0 x06,0 x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,0 x77,0 x7C,0 x39,0 x5E,0 x79,0 x71/数码管段编码 void delay(void);/函数声明 void main(void)Maplead MCU Development Board http:/ 19 unsigned

32、 char i;while(1)/超循环 for(i=0;i16;i+)P0=LED_Seg i;/将 0F 的编码送到 P0 口,在数码管上显示 0F delay();/延时,以便观察数码管的变化 void delay(void)unsigned int i,j;for(i=0;i500;i+)/空循环 65000*10 次,进行延时;for(j=0;j250;j+);/调节 j 值,改变流水灯闪烁速度,j 值越大,速度越慢 例程例程 2-2 数码管动态显示数码管动态显示/*数码管动态显示*/#include unsigned char code LED_Seg=0 x3F,0 x06,0

33、x5B,0 x4F,0 x66,0 x6D,0 x7D,0 x07,0 x7F,0 x6F,0 x77,0 x7C,0 x39,0 x5E,0 x79,0 x71/数码管段码 unsigned char code LED_Bit=0 x07,0 x06,0 x05,0 x04,0 x03,0 x02,0 x01,0 x00 /数码管位码 void delay(void);void main(void)unsigned char i;while(1)/超循环 for(i=0;i8;i+)/8 个位分别显示 07 P2=LED_Biti;/将每个数字的位码送到 P2 口,在每个位上显示特定的数字

34、P0=LED_Segi;/将 07 的段码送到 P0 口,在数码管上显示 07 delay();/延长每个位显示的时间,增强数码管亮度 P0=0 x00;/关闭前一个位的编码输入,防止下一位重影 void delay(void)/延时不能过长,否则数码管显示会明显地闪烁 Maplead MCU Development Board http:/ 20unsigned int i,j;for(i=0;i1000;i+);Maplead MCU Development Board http:/ 213总线扩展技术总线扩展技术 总线扩展总线扩展 在实际的设计使用过程中,单片机片上的 I/O 口无论从数

35、量上还是驱动能力上往往是不够的,这时候就需要对单片机的 I/O 口进行扩展,以满足实际需要的I/O 数量或驱动能力。对单片机的 I/O 口进行扩展大都采用专门的集成芯片,如并行接口芯片8255、74 系列的总线驱动芯片等。本开发板数码管显示单元所使用的总线扩展芯片为 74HC138 和 74HC573 两款集成芯片。74HC138 图图 3-1 74HC138 引脚图引脚图 又称为 3-8 译码器,其真值表为:表表 3-1 74HC138 真值表真值表 H-高电平,1;L-低电平,0;X-任意电平值。A01A12A23E14E25E36Y77GND8Y69Y510Y411Y312Y213Y11

36、4Y015VCC1674HC138Maplead MCU Development Board http:/ 22由上表可见:,E3 为三个使能开关。只有当端与端同时为低,而 E3 端为高时,才能在 8 个输出端输出某个低电平,否则,输出全为高电平。,E3 都使能时,随着输入 A1、A2、A3 端的值不同,Y0Y7 输出不同的值,但每次只能输出一个低电平。因此,只使用了 3 个引脚就能够控制 8 个引脚,从而扩展了单片机端口的数量。74HC573 图图 3-2 74HC573 引脚图引脚图 其真值表为:表表 3-2 74HC573 真值表真值表 X-任意电平值 Z-高阻态(相当于断开连接)OE

37、端口为输出使能,低电平有效,控制 74HC573 芯片的 D 总线(输入)OE1D02D13D24D35D46D57D68D79GND10LE11Q712Q613Q514Q415Q316Q217Q118Q019VCC2074HC573Maplead MCU Development Board http:/ 23和 Q 总线能否联通,当 OE 端使能且 LE 为高时,Q 总线的值=D 总线的值;LE 为锁存使能端口,低电平有效,当其使能时,74HC573 的 Q 总线被锁存(Q 总线保持上个状态不变,不再随 D 总线变化而变化)。将多个 74HC573 的 D 总线连接至单片机的同一端口上,通过

38、控制不同74HC573 的 LE 端口,在同一时刻只将某个数值输出到某个特定的 74HC573 上,从而实现了单片机端口的扩展。开发板开发板 74HC138 与与 74HC573 实物图实物图 图图 3-3 开发板开发板 74HC573 与与 74HC138 Maplead MCU Development Board http:/ 244键盘键盘 独立键盘独立键盘 图图 4-1 独立键盘电路原理图独立键盘电路原理图 独立键盘原理:独立键盘原理:如图 4-1 所示,独立键盘每个按键的一脚接地,另一脚接单片机相应的 I/O口,每个单片机 I/O 口需设定为输入模式(向该口写“1”)。单片机连接独立

39、按键的 I/O 口循环检测该口状态,如果该口检测为低电平,则证明连接该口的按键有可能被按下,然后单片机执行相应动作。键盘去键盘去“抖动抖动”:键盘的按键在闭合和断开的瞬间存在电压的不稳定状态,称为按键的“抖动”。按键的这种“抖动”现象容易引起误操作,如,按下一次按键有可能使单片机检测到按键被多次按下,所以必须采取相应的措施消除这种输入过程中的“抖动”现象。在工程设计中,人们往往采用软件延时 510ms“跳过抖动”的方法来消除按键的“抖动”现象。采用软件消抖技术既简单又不需要额外的硬件电路,因此在实际中得到了广泛的应用。图图 4-2 键盘的键盘的“抖动抖动”现象现象 理想波形 实际波形“抖动”现

40、象 延时 510ms“跳过”K1K2K3K4GNDP32P33P34P35独立键盘独立键盘Maplead MCU Development Board http:/ 25独立键盘演示程序独立键盘演示程序 例程例程 4-1 独立键盘独立键盘(对应的电路为图对应的电路为图 4-1)/*独立键盘*作者:Shenney John*Copyright(C)2010 by Shenney John,All Rights Reserved.*/sbit K1=P32;sbit K2=P33;sbit K3=P34;sbit K4=P35;/*键盘扫描函数*/unsigned char Key_Scan(voi

41、d)P3=0 xFF;/P3 口设置为输入状态 if(!K1)/如果此端口不为 1,证明有键按下 delay();/延时去抖 if(!K1)/如果延时过后依然是低电平证明不是误操作 while(!K1);/等待释放按键 return 1;/返回键值 if(!K2)delay();if(!K2)while(!K2);return 2;if(!K3)delay();if(!K3)while(!K3);return 3;if(!K4)delay();if(!K4)Maplead MCU Development Board http:/ 26 while(!K4);return 4;return 0

42、xFF;/无键按下返回 0 x00 /*延时函数*/void delay()/延时 10ms(12MHz 晶体)unsigned int i;for(i=0;i2000;i+);矩阵键盘矩阵键盘 图图 4-3 矩阵键盘电路原理图矩阵键盘电路原理图 矩阵键盘通过 m 条行线与 n 条列线交叉形成 mn 个交点,这些交点并不直K1K2K3K4K7K8K9K10K11K12K13K14K16P30P31P32P33P34P35P36P37K5K6K154*4 矩 阵 键 盘Maplead MCU Development Board http:/ 27接连通,而是通过 mn 个按键连接。矩阵键盘的好处

43、是按键容量大,可以有效节省单片机 I/O 口。单片机对矩阵键盘按键的扫描识别比独立按键复杂。常用的扫描识别方法是“线反转法”。其扫描原理是:A.先将行线(P3.0P3.3)置低电平,将列线(P3.4P3.7)置高电平,即P3=11110000。B.循环检测 P3 口,如果 P3 口的值不等于且消抖后也不等于 11110000,证明有键被按下(高电平的端口会被低电平的端口拉为低电平)。C.将 P3 口的值保存至(usigned char)变量 Key_Uper。D.将行线(P3.0P3.3)置高电平,将列线(P3.4P3.7)置低电平,即P3=00001111(行列电平进行了反转)。E.将 P3

44、 口的值保存至(usigned char)变量 Key_Lower。F.将 Key_Uper 和 Key_lower 两变量相加,将结果保存至(usigned char)变量Key_Val 中。G.等待释放按键。H.查键值表,找到 Key_Val 所对应的键值,确定哪个键被按下了。I.做相应的处理动作。例例 4-1:K3 键按下后,扫描程序所做的处理键按下后,扫描程序所做的处理 A.对应图 4-3,先将 P3 口赋值为 11110000,则 P3.4P3.7 为输入口。B.当 K3 键被按下的时候,P3 口的值变为 10110000,不等于且消抖后也不等于 11110000。C.单片机将 P3

45、 口的值 10110000 保存在(usigned char)变量 Key_Uper 中。D.行列电平反转,即 P3=00001111。E.此时由于 K3 键依然闭合,P3 口的值变为 00001110,将此值存于变量Key_Lower 中。Maplead MCU Development Board http:/ 28F.Key_Uper 和 Key_lower 两变量相加,得到结果 10111110(转换为十六进制为 0 xBE),将此结果存于变量 Key_Val 中。G.等待释放按键。H.查键值表,得到 0 xBE 键值,确定 K3 键被按下。I.做相应的处理动作。表表 4-1 矩阵键盘的

46、键值编码矩阵键盘的键值编码 键 K1 K2 K3 K4 K5 K6 K7 K8 编码 EE DE BE 7E ED DD BD 7D 键 K9 K10 K11 K12 K13 K14 K15 K16 编码 EB DB BB 7B E7 D7 B7 77 矩阵键盘演示程序矩阵键盘演示程序 例程例程 4-2 矩阵键盘矩阵键盘/*键盘扫描函数*作者:Shenney John*Copyright(C)2010 by Shenney John,All Rights Reserved.*/unsigned char Key_Scan(void)unsigned char Key_Uper,Key_Lowe

47、r,Key_Val;/列扫描值,行扫描值,键盘扫描最终结果 P3=0 xF0;/列置为输入状态 if(P3!=0 xF0)delay();/延时消抖 if(P3!=0 xF0)/确认键真的被按下 Key_Uper=P3;/保存列扫描结果 P3=0 x0F;/行置为输入状态 Key_Lower=P3;/保存行扫描结果 Key_Val=Key_Lower+Key_Uper;/保存行列扫描结果 Maplead MCU Development Board http:/ 29 while(P3!=0 x0F);/等待释放按键 switch(Key_Val)/查表,返回键值 case 0 xEE:retu

48、rn 0;break;case 0 xDE:return 1;break;case 0 xBE:return 2;break;case 0 x7E:return 3;break;case 0 xED:return 4;break;case 0 xDD:return 5;break;case 0 xBD:return 6;break;case 0 x7D:return 7;break;case 0 xEB:return 8;break;case 0 xDB:return 9;break;case 0 xBB:return 10;break;case 0 x7B:return 11;break;c

49、ase 0 xE7:return 12;break;case 0 xD7:return 13;break;case 0 xB7:return 14;break;case 0 x77:return 15;break;return 255;/返回 0 xFF,表示没有键被按下 Maplead MCU Development Board http:/ 30开发板键盘实物图开发板键盘实物图 图图 4-3 开发板矩阵键盘(开发板矩阵键盘(44 黑色)与独立键盘(竖排红色)黑色)与独立键盘(竖排红色)Maplead MCU Development Board http:/ 315达林顿管驱动达林顿管驱动

50、达林顿管阵列达林顿管阵列 ULN2003 ULN2003 是大电流驱动阵列,多用于单片机、智能仪表、PLC、数字量输出卡等控制电路中。可直接驱动继电器等负载。输入 5VTTL 电平,输出可达500mA/50V。图图 5-1 达林顿管阵列原理图达林顿管阵列原理图 ULN2003 原理原理 如图 5-1 所示,17 端口为输入端口;1016 端口为输出端口。当输入端口输入高电平时,输出端口输出大功率低电平。每个达林顿管内部集成有一个继流二极管(使用时须将第“9”脚接 Vcc 端),目的是在驱动感性电路时为电路提供一个“继流”的通路(相当于将电器反向短路,消耗电磁感应产生的反向电流,以保护达林顿管不

51、被反向电动势击穿)。本开发板中所用到的继电器、无源蜂鸣器、步进电机、直流电机、光耦都是通过达林顿管阵列 ULN2003 驱动的。Maplead MCU Development Board http:/ 32开发板达林顿管实物图开发板达林顿管实物图 图图 5-2 开发板达林顿管阵列芯片开发板达林顿管阵列芯片 Maplead MCU Development Board http:/ 336继电器继电器 电磁式继电器原理电磁式继电器原理 继电器是一种电子控制器件,它用较小的电流(电压)去控制较大电流的一种“自动开关”。在电路中起着自动调节、安全保护、转换电路等作用。电磁式继电器是利用电磁铁制成的。本

52、开发板中所使用的继电器分为“输入”、“常开”和“常闭”三个输入端。如图 5-1 所示,端口“1”为“常开”端;端口“2”为“输入”端;端口“3”为“常闭”端。输入端输入电源。当继电器不工作时,继电器开关被弹簧拉至“常开端”,电源可以通过“常开”端输出。当继电器工作时,继电器的开关被电磁铁吸引拉至“常闭”端,“常开”端关闭,“常闭”端与“输入”端接通,电源通过“常闭”端输出。图图 5-1 继电器原理图继电器原理图 Maplead MCU Development Board http:/ 34开发板继电器实验连接图示开发板继电器实验连接图示 图图 5-1 实验前用杜邦线将实验前用杜邦线将 P1.1

53、 与达林顿管输入的与达林顿管输入的“R”相连相连 继电器演示程序继电器演示程序 例程例程 6-1 继电器驱动继电器驱动/*继电器驱动程序*(1)单片机 P1.1 口接开发板上达林顿阵列的“R”输入端。*作者:Shenney John*Copyright(C)2010 by Shenney John,All Rights Reserved.*/sbit R=P11;void Relay(bit a)/当传递的参数为“1”时继电器工作,为“0”时停止工作 R=a;Maplead MCU Development Board http:/ 357光电耦合器光电耦合器 光电耦合器原理光电耦合器原理“光电

54、耦合器”又称为“光耦”。它是以光为媒介来传输电信号的器件,通常把发光器(红外线发光二极管 LED)与受光器(光敏半导体管)封装在同一管壳内。当输入端加电信号时发光器发出光线,受光器接受光线之后就产生光电流,从输出端流出,从而实现了“电-光-电”转换。以光为媒介把输入端信号耦合到输出端的光电耦合器,由于它具有体积小、寿命长、无触点,抗干扰能力强,输出和输入之间绝缘,单向传输信号等优点,在数字电路上获得广泛的应用。在电路设计中,光耦常被用作电路与电路之间的隔离器件,以期达到隔离干扰的目的。例如:数字电路与模拟电路之间的隔离。如图 7-1 所示,当光耦的端口 2 接低电平后,外电流就可以从端口 4

55、流至端口 3。图图 7-1 光耦电路光耦电路 光电耦合器演示程序光电耦合器演示程序 例程例程 7-1 光耦驱动光耦驱动/*光耦驱动程序*(1)单片机 P1.4 口接开发板上达林顿阵列的“P”输入端。*作者:Shenney John*Copyright(C)2010 by Shenney John,All Rights Reserved.*/sbit P=P14;void PhCoupler(bit a)/当传递的参数为“1”时光耦工作,为“0”时停止工作 Maplead MCU Development Board http:/ 36 P=a;开发板光耦实验连接图示开发板光耦实验连接图示 图图

56、7-2 实验前将实验前将 P1.4 端口与达林顿管输入的端口与达林顿管输入的“P”相连相连 Maplead MCU Development Board http:/ 37 8步进电机步进电机 步进电机原理步进电机原理 步进电机是将电脉冲信号转变为角位移或线位移的机械。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,称为“步距角”,它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度

57、和加速度,从而达到调速的目的。本开发板步进电机原理图如图 8-1 所示。5 线制步进电机内部有 4 只电磁铁,当接通某个电磁铁后,中间的转子“E”便在磁力的作用下转向此电磁铁,如果电磁铁接通的顺序为“A-B-C-D”则,转子“E”便在磁力的作用下转动一周。其转动的角度为 45 度。如果控制电磁铁导通的顺序为“A-AB-B-BC-C-CD-D”,则原来的步进角度变为 22.5 度。图图 8-1 步进电机原理图步进电机原理图 注意:本开发板配套的步进电机为减速步进电机,其步进角度为原始的 1/64 ABCD EMaplead MCU Development Board http:/ 38开发板步进

58、电机实验连接图示开发板步进电机实验连接图示 图图 8-2 步进电机实验电路连接步进电机实验电路连接(1)P1.0 连接达林顿输入端的“A”;(2)P1.1 连接达林顿输入端的“B”;(3)P1.2 连接达林顿输入端的“C”;(4)P1.3 连接达林顿输入端的“D”;图图 8-3 步进电机排线与步进电机专用插座连接步进电机排线与步进电机专用插座连接 步进电机演示程序步进电机演示程序 例程例程 8-1 步进电机驱动步进电机驱动/*(1)晶振 12MHz 调试通过。*(2)采用杜邦线将开发板的 P1.0P1.3 输出排针分别与达林顿驱动输入的“A,B,C,D”*排针相连。Maplead MCU De

59、velopment Board http:/ 39*(3)按下 F1 按键,步进电机打开;再按一次 F1 键,步进电机关闭。如此循环往复。*(4)电机启动正转,按下 F2 键后电机反转,再次按下 F2 后,电机正转,如此循环往复。*作者:Shenney John*Copyright(C)2010 by Shenney John,All Rights Reserved.*/#include sbit F1=P32;/F1 键控制电机的开关 sbit F2=P33;/F2 键控制电机的正反转 unsigned char Stpmotor_F=0 x01,0 x03,0 x02,0 x06,0 x0

60、4,0 x0C,0 x08,0 x09;/正转(forward)unsigned char Stpmotor_B=0 x09,0 x08,0 x0C,0 x04,0 x06,0 x02,0 x03,0 x01;/反转(backward)bit F_B_Status=1;/正反转标志,0:反转;1:正转 bit ON_OFF =1;/步进电机开关标志位,0:关;1:开 void delay(void);void main(void)unsigned char i;while(1)if(ON_OFF)if(F_B_Status)/正转 for(i=0;i8;i+)P1=Stpmotor_Fi;de

61、lay();else /反转 for(i=0;i8;i+)P1=Stpmotor_Bi;delay();else P1=0 x00;/如果关闭,则关闭达林顿管 Maplead MCU Development Board http:/ 40 if(!F1)delay();if(!F1)ON_OFF=ON_OFF;while(!F1);if(!F2)&(ON_OFF=1)delay();if(!F2)F_B_Status=F_B_Status;while(!F2);/*延时函数*/void delay(void)/可以通过调节 i 值来调节电机速度,可以将程序扩展增加速度控制功能。unsigned

62、 int i;for(i=0;i300;i+);/i 值不能调太小,否则电机到达最高工作频率上限后停止转动。Maplead MCU Development Board http:/ 41951 单片机中断单片机中断 中断的概念中断的概念 图图 9-1 中断示意图中断示意图(1)中断发生:当系统正在处理 A 事件的时候,突然发生了比较紧急的 B 事件,要求系统迅速做出处理。(2)中断响应和处理:系统暂停当前 A 事件的处理(保存状态),转去处理 B 事件。(3)中断返回:事件 B 处理完毕,系统返回被事件 B 打断的地方继续处理 A 事件。以上 3 个完整的过程成为中断。51 单片机中断有关的寄

63、存器单片机中断有关的寄存器(1)IE(Interrupt Enable Register)寄存器 表表 9-1 IE 寄存器寄存器 位 7 6 5 4 3 2 1 0 IE(A8H)功能 EA-ET2ES ET1 EX1 ET0 EX0?EA(Enable All Interrups):总中断使能位。0:关闭;1:使能。?ET2(Enable Timer/Counter 2):T/C2 中断使能位。0:关闭;1:使能。?ES(Enable Serial Port):串行口中断使能位。0:关闭;1:使能。?ET1(Enable Timer/Counter 1):T/C1 中断使能位。0:关闭;1

64、:使能。?EX1(Enable External Interrupt 1):INT1 中断使能位。0:关闭;1:使主程序 断点断点 中断处理程序中断处理程序 转移转移 返回返回 主程序 Maplead MCU Development Board http:/ 42能。?ET0(Enable Timer/Counter 0):T/C0 中断使能位。0:关闭;1:使能。?EX0(Enable External Interrupt 0):INT0 中断使能位。0:关闭;1:使能。(2)IP(Interrupt Priority Register)寄存器 80C51 单片机有 2 个中断优先级,可实现

65、中断 2 级嵌套。80C52 单片机有 4 个中断优先级,可实现中断 4 级嵌套。表表 9-2 IP&IPH 寄存器寄存器 位 7 6 5 4 3 2 1 0 IP(B8H)功能 -PT2 PS PT1 PX1 PT0 PX0 位 7 6 5 4 3 2 1 0 IPH(B7H)功能 -PT2HPSHPT1HPX1HPT0H PX0H?PT2(Priority of Timer/Counter 2):定时/计数器 2 中断优先级设定位。0:低优先级;1:高优先级。?PS(Priority of Serial Port):串行口中断优先级设定位。0:低优先级;1:高优先级。?PT1(Priori

66、ty of Timer/Counter 1):定时/计数器 1 中断优先级设定位。0:低优先级;1:高优先级。?PX1(Priority of External Interrupt 1):外部中断 1 优先级设定位。0:低优先级;1:高优先级。?PT0(Priority of Timer/Counter 0):定时/计数器 0 中断优先级设定位。0:低优先级;1:高优先级。?PX0(Priority of External Interrupt 0):外部中断 0 优先级设定位。0:低优先级;1:高优先级。?PT2H、PSH、PT1H、PX1H、PT0H、PX0H 等几个位与其相应的低位功能相同,由两个位搭配组合,从而可以为单片机设定 4 级中断优先级。Maplead MCU Development Board http:/ 43其数值越高,优先级越高。例如:PS=1;PSH=1;则串口中断优先级=4,为最高优先级。(3)TCON(Timer/Counter0,1 Control)表表 9-3 TCON 位 7 6 5 4 3 2 1 0 TCON(88H)功能 TF1 TR1TF0TR

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!