普中HC6800-ES-V2.0单片机开发板教程

上传人:gbs****77 文档编号:14090998 上传时间:2020-07-03 格式:DOC 页数:291 大小:14.21MB
收藏 版权申诉 举报 下载
普中HC6800-ES-V2.0单片机开发板教程_第1页
第1页 / 共291页
普中HC6800-ES-V2.0单片机开发板教程_第2页
第2页 / 共291页
普中HC6800-ES-V2.0单片机开发板教程_第3页
第3页 / 共291页
资源描述:

《普中HC6800-ES-V2.0单片机开发板教程》由会员分享,可在线阅读,更多相关《普中HC6800-ES-V2.0单片机开发板教程(291页珍藏版)》请在装配图网上搜索。

1、HC6800-ES V2.0 单片机开 发板 学习指南 普中科技 目录 49c0ec54d24c1dc879581a53a996780f.pdf 第一讲 开发板资源介绍 .1 第二讲 软件安装 .3 第三讲 程序下载 .16 第四讲 KEIL 软件使用及入门 LED 灯 .21 第五讲 蜂鸣器 .31 第六讲 独立按键 .32 第七讲 静态数码管 .37 第八讲 矩阵键盘 .42 第九讲 动态数码管 .45 第十讲 电机 .49 第十一讲 中断 .56 第十二讲 1602 液晶显示 .60 第十三讲 定时器 .68 第十四讲 时钟芯片 DS1302.71 普中科技 第十五讲 串口通信 .83

2、第十六讲 温度传感器 18B20.89 第十七讲 EEPROM 操作 24C02.99 第十八讲 红外遥控显示 .110 第十九讲 AD/DA 模数/数模转换 XPT2046 .116 第二十讲 液晶屏显示 .127 附录 A 单片机 C 语言介绍 .140 附录 B 电路板绘制软件 PROTEL 介绍 .170 49c0ec54d24c1dc879581a53a996780f.pdf 1 第一讲 开发板资源介绍 本开发板相对以往开发板的特点是综合性比较高、把短路冒去掉了 省去接 线的麻烦更加方便了初学者、是一款性价比极高的产品,提供USB2.0和串口两 种通信方式,USB实现供电、编程、仿真

3、、通信多种功能,另外还提供了Atmel 单片机的ISP接口。此板兼容STC、SST、Atmel、Philips等51家族的所有单片机。 如果使用ISP编程建议使用开发板自带的单片机,因为每个厂烧录程序的方式不 一样。HC6800开发板有着丰富的外部资源, 通过对该开发实验仪的学习,学员不仅可以轻松快速地掌握单片机软件系 统的开发(C语言、汇编语言),而且还能快速掌握硬件电路的设计及嵌入系统 开发流程。 本套件配有丰富的实例源码、原理图等,特别适合单片机初学者,大中专院 校师生,单片机开发工程师选用,也是毕业设计和电子竞赛不可多得的参考板 单片机采用 STC90c516 1280 SRAM 64

4、K Flash 2.1 寸彩色液晶屏 超声波接口 1602 液晶屏接口 12864 液晶屏接口 温度传感器 DS18B20 EEPROM 24C02 存储器 8 位动态数码管 AD/DA 转换 XPT2046 DS1302 实时时钟 4*4 矩阵键盘 4 个独立键盘 2*8 路 led 灯 USB 接口,实现下载,供电,串行通信。通过 USB 转串口芯片 CH340T 转换 IR 红外接收头,红外数据传输 板载继电器 蜂鸣器 普中科技 2 步进电机 ULN2003 达林顿管驱动 49c0ec54d24c1dc879581a53a996780f.pdf 3 第二讲 软件安装 1、USB 转串口驱

5、动的安装 双击 USB 驱动 SERIAL 程序的 Setup 安装成功后,会出现一下提示画面 点“确定”即可以结束安装过程。 安装完驱动程序成功后,把开发板与电脑连接可以看到设备管理器中的 COM 口。 在图标“我的电脑”右键,属性,硬件,设备管理器(这是 XP 系统, 普中科技 4 WIN 系统与其相似找到设备管理器) 显示成功的 COM 口 安装不成功解决办法 如果发现是下图感叹号, 则没有安装成功或者没有安装、右键点击更新驱动程 49c0ec54d24c1dc879581a53a996780f.pdf 5 序 选择“从列表或指定位置安装(推荐)” 普中科技 6 出现此对话框,选择不要搜

6、索,自己选择安装 点“下一步” 点击下一步 49c0ec54d24c1dc879581a53a996780f.pdf 7 出现此对话框、点击“从磁盘安装” 点击“浏览” 到 USB 驱动文件夹找到安装文件打开 普中科技 8 点击“确定”和“下一步” 点击完成安装结束 49c0ec54d24c1dc879581a53a996780f.pdf 9 KEIL 软件安装 我们用现在新版本的 uVision 4 KEIL 开发环境,使用的版本是破解版, 仅供大家学习使用。如做商业开发,请购买正版,可以获得更多 keil 软件原厂 技术支持。 即将安装软件如下,一个 keil 安装程序,一个注册机(右侧)

7、。 打开 C51V901.EXE 安装程序 点击 Next 普中科技 10 I agree all the tems of 选中 点击 Next 设置安装目录,根据自己的情况选中安装目录,重新设置点击 Browse,这里默 认 C 盘,设置好安装目录后 点击 Next 49c0ec54d24c1dc879581a53a996780f.pdf 11 输入相关信息(随便输入),输入完毕后点击 Next 开始安装,安装过程中.等待安装完成 普中科技 12 安装完成,点击 Finish 即可。 接下来破解软件。 打开注册机软件 Target:选择 C51 49c0ec54d24c1dc879581a5

8、3a996780f.pdf 13 打开刚刚安装好的 keil 软件 点击 File 菜单 普中科技 14 选择 License Management。 现在没有破解 复制 CID 码,之后点击 Generate 生成注册码 复制 CID 码到注册机中 从 KEIL 复制的 CID 码粘贴到这里 复制生成的注册码到 keil 49c0ec54d24c1dc879581a53a996780f.pdf 15 复制完注册码后,点击右侧的 ,即可完成破解。提示 如下: 以上软件安装完毕。接下来看程序了。 复制到这里 普中科技 16 第三讲 程序下载 我们可以通过 USB 接口方式下载对我们开发板的单片机

9、下载程序。 下载软件又可分为 STC 官方软件 和普中科技自己开发的软件 利用官方软件下载程序需要手动重启单片机,需要给单片机重新上电启动。 普中开发的下载软件及所设计的开发板实现了全自动下载功能,省去了手动操 作,极大方便了学习及开发人员。接下来就来讲一下下载程序的方式。 1. USB 口,普中软件 我们插上 USB 口,打开开发板电源开关。然后打开普中 ISP 下载软件,如下图 : 官方软件 普中软件 49c0ec54d24c1dc879581a53a996780f.pdf 17 在 usb 转串口驱动安装成功后,打开软件应该有串口号,如图指示。一般笔记 本建议使用低速下载,台式可以使用高

10、速下载,如果笔记本使用高速下载的话 那么会报警波特率超时。 2. 芯片类型选择 STC90C5XX(具体的要根据您板子上使用的单片机型号) 如下图。 加载我们要下载到单片机里的程序,单击 ,选择下载的后缀为.Hex 的文件, 串口号 10 普中科技 18 打开后,会在文件名处有提示:文件路径,还有代码大小。 4 最后一步:点击下载程序 ,下载成功如图显示。 此时继电器工作会有小的啪啪的响声。 接下来我们用官方 STC 下载软件下载 代码大小 下载成功 ! 49c0ec54d24c1dc879581a53a996780f.pdf 19 1. 选择开发板上单片机型号,我们选 STC90C516 2

11、. 选择串口,可通过设备管理器查看 3. 打开需要下载到单片机的程序 4. 点击下载 点击下载按钮后会有这样的信息: 这时需要手动按开关键,关闭开关,打开开关这样一个过程,主要是给单片机 冷启动。 重新上电后,会出现 1 2 3 4 普中科技 20 开始下载程序,下载完成。上图表示下载成功。 现在用官方软件下载几乎都要手动重新给单片机上电过程。市面的开发板主要 也都是采用这种下载方式。 建议使用普中软件自动下载。 49c0ec54d24c1dc879581a53a996780f.pdf 21 第四讲 KEIL 软件使用及入门 led 灯 单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编

12、语言源程 序要变为 CPU 可以执行的机器码有两种方法,一种是手工汇编,另一种是机器 汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序 变为机器码,用于 MCS-51 单片机的汇编软件有早期的 A51,随着单片机开发 技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开 发软件也在不断发展,Keil 软件是目前最流行开发 MCS-51 系列单片机的软件, 这从近年来各仿真机厂商纷纷宣布全面支持 Keil 即可看出。Keil 提供了包括 C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完 整开发方案,通过一个集成开发环境(uVision)将

13、这些部份组合在一起。运行 Keil 软件需要 Pentium 或以上的 CPU,16MB 或更多 RAM、20M 以上空闲的硬 盘空间、WIN98、NT、WIN2000、WINXP 等操作系统。掌握这一软件的使用对于 使用 51 系列单片机的爱好者来说是十分必要的,如果你使用 C 语言编程,那 么 Keil 几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真 机也很可能只支持该软件) ,即使不使用 C 语言而仅用汇编语言编程,其方便易 用的集成环境、强大的软件仿真调试工具也会令你事半功倍。 我们将通过一些实例来学习 Keil 软件的使用,在这一部份我们将学习如 何输入源程序,建立工

14、程、对工程进行详细的设置,以及如何将源程序变为目 标代码。 在这里利用第二个例程,led 闪烁实验来建立 keil 工程。 打开 keil 软件,版本 Vision2 ,vision3, vision4 都一样,在这 里用 vision4 版本演示,打开之后如下图,有的时候会默认打开上次使用的 工程,单击 Project 菜单,选择 Close Project 关闭了默认打开的工程,显 示下图界面: 普中科技 22 我们要建立新的工程,选择 Project new vision projiect 选择工程要保存的路径,输入工程文件名,如图 点击保存后会弹出一个对话框,要求用户选择单片机型号,可

15、以根据用 户使用的单片机来选择,我们使用的 STC90 单片机是兼容 51 内核的,Keil 49c0ec54d24c1dc879581a53a996780f.pdf 23 C51 几乎支持所有的 51 内核单片机,51 内核具有通用型,如果程序用的资 源不是太复杂,我们可以选择任意一款 51 单片机内核就行。在稍后我们会 继续讲解怎么将 STC 单片机官方的头文件添加进来,在这暂不多介绍。Keil 软件的关键是程序代码的编写,而非是用户选择什么硬件。例程以添加 Atmel 的 AT89C51 来说明。如图,然后,单击 确定(OK) 。 如果出现下面的界面:单击是就可以,意思是将单片机的启动代

16、码添加 到工程,我们不用修改。 到目前我们还没建立一个完整的工程,只是有工程的名字,框架,工程 中还没有任何文件代码, (除了启动代码,有的 keil 版本不显示启动代码) , 接下来我们添加文件及代码。 单击菜单 FileNew 选项,或者单击界面上的快捷图标 ,新建文 件串口如下。 功能描述 普中科技 24 界面显示的 Text1 就是我们刚刚加入的文件,但是这个文件与我们的工 程还没有直接联系起来,单击图标 ,保存我们当前的 text1 文件,输 入要保存的文件名,同时要输入文件扩展名,扩展名很关键,用 C 语言编写 的程序,则必须为*.c,汇编语言必须为*.asm(*为文件名) ,文件

17、名是用 户自己取的。填好文件名后单击保存。 49c0ec54d24c1dc879581a53a996780f.pdf 25 回到编辑界面,单击 Target1 前面的“+”号,然后在 Source Group 1 上右键单击,选择 Add Files to Group Source Group1,选中我们刚才建立 的.c 文件,这里是 led test.c,单击 add,只需单击一次。之后单击 Close 就 可以。 回到主界面后,单击 Source Group 1 前的“+”号,刚刚添加的文件显示在里 面。 通过以上步骤我们就建立好了一个工程。接下来就可以写代码了。 在写代码之前介绍介个常用

18、的按钮: 按钮:用来编译我们正在操作的文件。 按钮:用来编译修改过的文件,并生成应用程序共单片机下载。 按钮:用来重新编译当前工程中所有的文件,并生成应用程序共单片机下 普中科技 26 载。 因为很多工程不止有一个文件,当有多个文件时,用它进行编译。 按钮:用来打开 “Option for Target”对话框,对当前工程进行设置。 工程的各个参数都可以在这里设置,具体的设置方法用到的时候,再和大家 详细讲述。 以上几个按钮是常用的,其他按钮在使用的时候再介绍。 1. 编写程序 我们以一个程序为例来练习编写:led 闪烁。 这个程序大家一定要弄懂,也算是一个基础,懂了这个程序,也算是进入单 片

19、机的领域了接下来我会详细讲解这个例程。另外需要注意的是单片机写程序 的时候,一定是英文状态下的字符,尤其注意“;”,往往就因为这个分号,程 序出现问题,所以输入时一定要注意是在英文状态下的。 我们在编辑框中输入以下程序: /* * LED 闪烁的简单试验 * */ #include /此文件中定义了 51 的一些特殊功能寄存器 void delay(unsigned int i); /声明延时函数 void main() while(1) P2 = 0 x00; /置 P0 口为低电平 delay(600); /调用延时程序 P2 = 0 xff; /置 P0 口为高电平 delay(600)

20、; / 调用延时程序 /*延时函数*/ void delay(unsigned int i) unsigned char j; 49c0ec54d24c1dc879581a53a996780f.pdf 27 for(i; i 0; i-) /循环 600*255 次 for(j = 255; j 0; j-); 我们先编译一下:第一次编译我们点击 ,看一下结果 结果的意思: 编译 led2.c 链接 data=9.0-占用内部 RAM9 个字节,xdata=0:外部 RAM 0 字节, Code=56 代码长度为 56 字节 生成单片机可下载的 HEX(十六进制)文件。 没有错误,没有警告。

21、在这里说明一点:生成 HEX 文件是我们自己设置的,默认的情况下不会生成 HEX 文件。单击 进行设置,如下图,选择 Output,勾选 Creat hex,后单 击确定。 普中科技 28 2. 接下来我们分析上面的程序: /* */作用,它是用来注释一段内容的,编译器不对其进行编译,只要在/* */直接的内容都被注释掉。 / 是用来注释其后面的内容,只能注释一行。 #include /这句告诉我们包涵 51 的头文件,那这个头文件里面 放的是什么东西呢?放的是 51 单片机对应的操作的寄存器地址,如我们直接用 来操作的 P1 口就是代表 0 x90 地址,我们可以将光标低位在上然后右 键 打

22、开头文件, #ifndef _REG51_H_ #define _REG51_H_ /* BYTE Register */ sfr P0 = 0 x80; sfr P1 = 0 x90; sfr P2 = 0 xA0; sfr P3 = 0 xB0; sfr PSW = 0 xD0; sfr ACC = 0 xE0; /* SCON */ 49c0ec54d24c1dc879581a53a996780f.pdf 29 sbit SM0 = 0 x9F; sbit SM1 = 0 x9E; sbit SM2 = 0 x9D; sbit REN = 0 x9C; sbit TB8 = 0 x9B;

23、 sbit RB8 = 0 x9A; sbit TI = 0 x99; sbit RI = 0 x98; #endif 头文件中定义了 51 系列单片机的所有功能寄存器,我们直接使用其代号就 可以,P0,P1 等。 如:sfr P0=0 x80,意思是把单片机内部地址 0 x80 处的寄存器重新起名字叫 P0,以后我们在程序中直接操作 P0,就相当于对单片机内部 0 x80 地址处的寄存 器进行操作。通俗的讲,也就是说,通过 sfr 这个关键字,让 Keil 编译器在单 片机与人之间搭建一个桥梁,我们操作 P0 口,单片机对应就去操作内部 0 x80 的地址。所以我们写程序要在开始处直接包涵单

24、片机的头文件。 sbit SM0 = 0 x9F;是定义位操作地址 0 x9F 的,这个地址只代表一个位。 我们操作 SM0,对应单片机就是操作位地址 0 x9F。 总结起来 sfr 与 sbit 区别 sfr 是定义字节的 8 位 sbit 是定义位的 1 位 我们在返回主程序: void delay(unsigned int i) unsigned char j; for(i; i 0; i-) for(j = 100; j 0; j-); 定义一个函数 delay();与 c 语言一样,要用一个函数,先定义,我们可以叫 它子函数,可以调用的。 void main() / 结构同 c 语言

25、一样,main()函数开始 / 大括号。 P2 = 0 x00; /置 P0 口为低电平 从这句开始,你现在控制单片机了,告诉单片机把你的 P2 口都输出 0,如 果你不操作 P2 口了,那么 P2 口一直保持这个状态,直到你去改变它。 普中科技 30 delay(1000); /调用延时程序 调用子函数 delay(),告诉单片机去执行 delay 那个函数,那么 P2 口一直保 持 0 这状态。 P2 = 0 xff; /置 P0 口为高电平 这时告诉 P2 口全部输出 1,(0 xff=1111 1111).状态从 0 变成 1 了,对应的 灯的输出也由低电平变成高电平了 delay(1

26、000); / 调用延时程序,再进行延时, 这个程序里执行完了一次又干什么呢, Keil 编译器会编译成一直重复执行 main()函数里面的代码,整个代码的效果就 是: P2 输出低电平 延时一段时间,目的是 P2 输出的低电平保持一段时间 P2 输出高电平 延时一段时间,目的是 P2 输出的高电平保持一段时间 重复到的过程 实际效果就是 led 一闪一闪 通过更改 delay(延时时间 i) ,参数 i,可以改变闪烁频率。 实际操作: 1. 打开软件 (提前装好驱动),点击打开文件,打开我们 刚刚编译的 led.hex 文件,下载程序,就会看到 led 闪烁。 49c0ec54d24c1dc

27、879581a53a996780f.pdf 31 我们再看一个例程,就是单片机最经典的流水灯例程: 以下是我们的硬件电路,led 一段接单片机 P2 口的 8 个引脚,另外一边接排阻 RP12 和 RP13,然后接到电源 基础知识介绍: 排阻: 一般在排阻上都标有阻值号,其公共端附近也有明显标记。如下下图表示为 472, 表示 47* =4700 欧姆,还有的标号如 3R0,表示阻2 值为 3 欧姆, 4K7 表示阻值为 4.7k, R002 表示阻值为 0.002 欧姆。 (2)发光二极管。它具有单向导电性,通过 5mA 左右电流即可发光,电流越 大,其亮度越强,但若电流过大,会烧毁二极管,

28、一般我们控制在 3 mA-20mA 之间。在这里,给发光二极管串联一个电阻的目的就是为了限制通过发光二极 管的电流不要太大,因此这个电阻又称为“限流电阻” 。当发光二极管发光时, 测量它两端电压约为 1.7V,这个电压又叫做发光二极管的“导通压降” 。图 2.2.9 和图 2.2.10 分别为直插式发光二极管和贴片式发光二极管实物图。发光二极管 正极又称阳极,负极又称阴极,电流只能从阳极流向阴极。直插式发光二极管 长脚为阳极,短脚为阴极。仔细观察贴片式发光二极管正面的一端有彩色标记, 通常有标记的一端为阴极。 普中科技 32 图 2.2.9 图 2.2.10 关于排阻大小的选择:欧姆定律想必大

29、家都清楚,U=IR,当发光二极管正常 导通时,其两端电压约为 1.7V,发光管的阴极为低电平,即 0V,阳极串接一电 阻,电阻的另一端为 Vcc , 为 5V,因此加在电阻两端的电压为 5V- 1.7V=3.3V,计算穿过电阻的电流,3.3 V/ 1000=3.3mA。即穿过发光管的电 流也为 3.3mA,若想让发光管再亮一些,我们可以适当减小该电阻。 看我们的原理图,可以知道:LED 的正极接在 VCC 上,只要给了低电平,那 么 LED 就会亮,低电平对应到单片机的逻辑就是 0,只要单片机的某一个管脚 输出 0,那么对应的发光二极管就会亮。我们看一下源码: /* * 实验名 : 左右流水灯

30、实验 * 使用的 IO : P2 * 实验效果 : 点亮的 LED 从右边往左边移动,到达左边再往右边移动,依此循环。 * 注意 : */ #include #include /因为要用到左右移函数,所以加入这个头文件 #define GPIO_LED P2 /将 P2 口另外取名为 GPIO_LED void Delay10ms(unsigned int); /误差 0us /* * 函数名 : main * 函数功能 : 主函数 * 输入 : 无 * 输出 : 无 */ void main(void) unsigned char n; GPIO_LED=0 xfe; while(1) 49

31、c0ec54d24c1dc879581a53a996780f.pdf 33 for(n=0;n0;b-) for(a=130;a0;a-); 以上程序实现点亮一盏 LED 之后左右移动。 讲解:移位操作 1. 左移。C51 中操作符为“ ,每执行一次右移指令,被操作的数将最低位 移入单片机 PSW 寄存器的 CY 位,CY 位中原来的数丢弃,最高位补 0,其他 普中科技 34 位依次向右移动一位,如下图所示。 3. 循环左移。最高位移入最低位,其他位依次向左移一位。C 语言中没有专门 的指令,通过移位指令与简单逻辑运算可以实现循环左移,或直接利用 C51 库中自带的函数_crol_实现,如下图

32、所示。_crol_函数所在的头文件是 4. 循环右移。最低位移入最高位,其他位依次向右移一位。C 语言中没有专门 的指令,通过移位指令与简单逻辑运算可以实现循环右移,或直接利用 C51 库中自带的函数-cror 实现,如下图所示。_cror_函数所在的头文件是 5. 讲解:PSW 寄存器 PSW (Program Status Word)全称为程序状态字标志寄存器,是一个 8 位寄 存器,位于单片机片内的特殊功能寄存器区,字节地址 DOH,用来存放运算结 果的一些特征,如有无进位、借位等,使用汇编编程时 PSW 寄存器很有用,但 在利用 C 语言编程时,编译器会自动控制该寄存器,很少人为操作它

33、,大家只 需做简单了解即可.其每位的具体含义如下图所示. 49c0ec54d24c1dc879581a53a996780f.pdf 35 1) CY 一进位标志位,它表示运算是否有进位(或借位).如果操作结果在最 高位有进位(加法)或者借位(减法),则该位为 1,否则为 0. 2) AC 一辅助进位标志,又称半进位标志,它指两个 8 位数运算低四位是 否有半进位,即低四位相加(或相减)是否进位(或借位),如有 AC 为 1,否则为 0e 3) FO 一由用户使用的一个状态标志位,可用软件来使它置 1 或清 0,也可 由软件来测试它,以控制程序的流向. 4) RS1, RSO-4 组工作寄存器区

34、选择控制位,在汇编语言中这两位用来选 择 4 组工作寄存器区中的哪一组为当前工作寄存区. 5) OV 一溢出标志位,反映带符号数的运算结果是否有溢出.有溢出时,此 位为 1,否则为 0. 6) P 一奇偶标志位,反映累加器 ACC 内容的奇偶性,如果 ACC 中的运算结果有偶数 个 I(如 11001100B,其中有 4 个 1),则 P 为 0,否则 P 为 1. 6. _cror_() ;函数 循环右移函数,包含在 intrins.h 的库函数里面。 7. _crol_() ;函数 循环左移移函数,包含在 intrins.h 的库函数里面。 普中科技 36 第五讲 蜂鸣器 蜂鸣器是一种一体

35、化结构的电子讯响器,采用直流电压供电,广泛应用于 计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时 器等电子产品中作发声器件。我们开发板上常用的蜂鸣器就是常常说的交流蜂 鸣器或直流蜂鸣器(自激式蜂鸣器) 。 直流蜂鸣器是给一定的驱动直流电压就 会响。而交流蜂鸣器是需要给蜂鸣器一个脉冲才会响。常见的有 PWM 波控制蜂 鸣器的频率。脉冲就是高低电平的切换,如下图:一个方波脉冲 我们用单片机的 IO 口实现一种这样高低电平的方波,驱动蜂鸣器发音。我们板 子上配的就是交流蜂鸣器。 接下来我们看一下蜂鸣器的硬件电路: 49c0ec54d24c1dc879581a53a996780f

36、.pdf 37 蜂鸣器通过 ULN2003 驱动。 这里 ULN2003 暂不多做介绍,详细介绍可参考步进电机篇。 我们看一下程序源码: /* * * 实验名 : 蜂鸣器实验 * 使用的 IO : P15 * 实验效果 : 蜂鸣器响。 * 注意 : * / #include sbit Beep = P15 ; void Delay(unsigned int i) ; /* * 函数名 : main * 函数功能 : 主函数 * 输入 : 无 * 输出 : 无 */ void main() Beep= 1; Delay(5); Beep= 0; Delay(5); /* * 函数名 : Dela

37、y() * 函数功能 : 延时函数 * 输入 : 无 * 输出 : 无 普中科技 38 */ void Delay(unsigned int i) char j; for(i; i 0; i-) for(j = 200; j 0; j-); 下载生成的 hex 文件,就可听到蜂鸣器发音。 第六讲 独立按键 按键是什么东西,我想这个就不必由我向各位阐述了。嗯,如你所见,按 键种类繁多,功能有简有繁,极大的充斥着我们的生活。但是无论如何,所有 的按键其实都有一个原型,来源于同一种原理,所有的按键无论多复杂,多华 丽,都是从这样一个原型发展而成的。好比你就算长的再帅,你也是只猩猩变 来的,呵呵。我们

38、平日所见到的绝大部分的按键,其实都可以归类为一种,叫 “接触式按键” 。下图为一个典型的接触式按键(又称轻触开关) 。 49c0ec54d24c1dc879581a53a996780f.pdf 39 需要特别说明的是,这里说的“接触”,是指机械层面上的接触,而不是 感光或者某些特殊涂层(比如触摸屏)一类的接触。所以,按键的工作特性其 实是一种机械特性,下文会详细说明。 , 如上图,请对照图一想象,1、2、3、4 分别对应按键的四个引脚,其中蓝 色的线表示按键未被按下之时的状态,我成为初始状态,它是不导通的;而绿 色的线是却永久导通的。各位明白了么,其实是两个相同的结构连在一起了。 我们只要将需

39、要按键开关作用的线路分别接在1、3 和2、4 的任意取一组合, 概括起来就是(1,2)、(1,4)、(3,2)、(3,4)四种组合,都可以起 到我们预期的开关作用。 相信以上说明使大家对按键的工作原理有了个比较清晰的认识了,现在来 说说一个小知识。先看下图(图4): 首先说明的是,上图的连法是不允许的,因为当按键按下之后,电源和地 短接,会将导线直接烧毁。但是此处用作特例,假设导线不会烧毁。现在来提 出一个问题,当按键按下以后,请问如果这时用万用表测量导线上任何一处的 电压,得到的结果是VCC 还是GND 的电压? 答案是:GND,即表示测出的电压为0V。为什么呢,因为导线上,对于两端 的电平

40、是一种类似于程序语言逻辑运算里面的“与”,即对于导线两端:有零 普中科技 40 即为零,只有全为一是才为一。理解了这点,按键的工作前提就有了。 键盘分为编码键盘和非编码键盘。键盘上闭合键的识别由专用的硬件编码 器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘。而靠软件编 程来识别的键盘称为非编码键盘,在单片机组成的各种系统中,用的较多的是 非编码键盘。非编码键盘又分为独立键盘和行列式键盘(常说的矩阵键盘) 。在 这一讲中我们介绍一下单片机中键盘使用。 单片机的 IO 口既可作为输出也可作为输入使用,当检测按键时用的是它的 输入功能,我们把按键的一端接地,另一端与单片机的某个 I/O 口

41、相连,开始 时先给该 IO 口赋一高电平,然后让单片机不断地检测该 I/O 口是杏变为低电平, 当按键闭合时,即相当于该 I/O 口通过按键与地相连,变成低电平,程序一旦 检测到 I/O 口变为低电平则说明按键被按下,然后执行相应的指令。 我们先来说一下,按键常常遇到的问题抖动问题。 还以图四为例,按键未按下之前,图四按键左端的导线因为连在VCC 上而 显示高电平,右端显示低电平,按键按下后,按键闭合,整个导线都显示低电 平,然后按键松开,又回到按键按下之前的点评状态。如果只考察按键左端的 电平变化,应该是上图中所显示的一个负脉冲波形。但是,实际上,正确的波 形应该是下图。相比于上图,大家都看

42、到了在高低电平直接有一段锯齿一样的 波形,这就是所谓的按键抖动。 为什么会有按键抖动呢,原因很简单,接触式按键是靠机械的接触来实现 49c0ec54d24c1dc879581a53a996780f.pdf 41 开关作用的。这种接触方式就注定了它要经历一个“接触不稳定正在稳定 中彻底稳定”的一种过程。就好比你用手抓紧一颗石头,即使你一开始就 很用力的握紧,也不可能马上就达到最紧的状态,也要经历一个从握住到最紧 握的过程。那么在这个过程里,接触式按键就处于一种徘徊在“闭合”与“断 开”两者之间的状态。体现在电路中,就是在一小段时间内有非常多的“按下 抬起”动作。而这段抖动的时间,大概是1020

43、毫秒,依不同的环境条件 而定。 解决这个问题常见的方法有软件去抖动和硬件去抖动。 我们解释一下抖动:关于按键去抖动的解释,我们在手动按键的时候,由 于机械抖动或是其它一些非人为的因素很有可能会造成误识别,一般手动按下 一次键然后接着释放,按键两片金属膜接触的时间大约为 50ms 左右,在按下 瞬间到稳定的时间为 5-10ms,在松开的瞬间到稳定的时间也为 5-10ms,如果我 们再首次检测到键被按下后延时 10ms 左右再去检测,这时如果是干扰信号将 不会被检测到,如果确实是有键被按下,则可确认,以上为按键识别去抖动的 原理。 独立按键: 我们先将一下独立按键的使用方法,开发板独立按键电路图如

44、下: 独立按键一共 5 个,分别连接在单片机的 P3.0 到 P3.4 口。去抖动的方式,我 们采用软件延时的方法。过程如下: 1. 先设置 IO 口为高电平(一般上电默认就为高) 普中科技 42 2. 读取 IO 口电平确认是否有按键按下 3. 如有 IO 电平为低电平后,延时几个 ms 4. 再读取该 IO 电平,如果任然为低电平,说明对应按键按下 5. 执行相应按键的程序 /* * 实验名 : 独立按键实验 * 使用的IO : LED使用P2,键盘使用P3.0、P3.1、P3.2、P3.3 * 实验效果 : 按下K1键,灭掉LED,按下K2键,打开所有的LED,按下K3键, LED左移一

45、位,按下K4键,LED右移一位。 * 注意 :由于P3.2口跟红外线共用,所以做按键实验时为了 不让红外线影响实验 *效果,最好把红外线先取下来。 */ #include #include #define GPIO_LED P2 sbit K1=P30; sbit K2=P31; sbit K3=P32; sbit K4=P33; void Delay10ms( ); /延时10ms /* * 函数名 : main * 函数功能 : 主函数 * 输入 : 无 * 输出 : 无 */ void main(void) unsigned int i,j; while(1) if(K1=0) /检测按

46、键K1是否按下 Delay10ms(); /消除抖动 if(K1=0) /再次检测按键是否按下 j=0; while(i50) i+; i=0; if(K2=0) /检测按键K2是否按下 Delay10ms(); if(K2=0) j=0 xff; while(i50) i+; i=0; if(K3=0) /检测按键K3是否按下 Delay10ms(); if(K3=0) if(j=0)|(j=0 xff) /如果当前状态是全亮的或者全灭 的,就点亮他的第一盏灯 j=0 xfe; else j=_crol_(j,1); /左移一位 while(i0;b-) for(a=130;a0;a-);

47、下载独立按键控制 led 灯.hex,观察实验结果。 实验效果是:按下 K1 键,灭掉 LED,按下 K2 键,打开所有的 LED,按下 K3 键, LED 左移一位,按下 K4 键,LED 右移一位。 49c0ec54d24c1dc879581a53a996780f.pdf 45 第七讲 静态数码管 我们先看看什么是数码管, 上图就是各种长相各种样子的数码管了,肯定很眼熟了吧。 普中科技 46 不管将几位数码管连在一起,数码管的显示原理都是一样的,都是靠点亮 内部的发光二极管来发光,下面就来我们讲解一个数码管是如何亮起来的。数 码管内部电路如下图所示,从右图可看出,一位数码管的引脚是 10

48、个,显示一 个 8 字需要 7 个小段,另外还有一个小数点,所以其内部一共有 8 个小的发光 二极管,最后还有一个公共端,生产商为了封装统一,单位数码管都封装 10 个 引脚,其中第 3 和第 8 引脚是连接在一起的。而它们的公共端又可分为共阳极 和共阴极,中间图为共阴极内部原理图,右图为共阳极内部原理图。 上图展出了常用的两种数码管的引脚排列和内部结构。总所周知,点亮发 光二极管就是要给予它足够大的正向压降。所以点亮数码管其实也就是给它内 部相应的发光二极管正向压降。如上图左(一共a、b、c、d、e、f、g、DP 八 段),如果要显示“1”则要点亮b、c 两段LED;显示“A”则点亮 a、b

49、、c、e、f、g 这六段LED;我们还知道,既然LED 加载的是正向压降,它 的两端电压必然会有高低之分:如果八段LED 电压高的一端为公共端,我们称 之为共阳极数码管(如上图中);如果八段LED 电压低的一段为公共端,则称 之为共阴极数码管(上图右)。所以,要点亮共阳极数码管,则要在公共端给 予高于非公共端的电平;反之点亮共阴极数码管,则要在非公共端给予较高电 平。 对共阴极数码来说,其8个发光二极管的阴极在数码管内部全部连接在一起, 所以称“共阴”,而它们的阳极是独立的,通常在设计电路时一般把阴极接地。 当我们给数码管的任意一个阳极加一个高电平时,对应的这个发光二极管就点 49c0ec54

50、d24c1dc879581a53a996780f.pdf 47 亮了。如果想要显示出一个8字,并且把右下角的小数点也点亮的话,可以给8 个阳极全部送高电平,如果想让它显示出一个0字,那么我们可以除了给第“g, dp”这两位送低电平外,其余引脚全部都送高电平,这样它就显示出0字了。想 让它显示几,就给相对应的发光二极管送高电平,因此我们在显示数字的时候 首先做的就是给0-9十个数字编码,在要它亮什么数字的时候直接把这个编码送 到它的阳极就行了。 共阳极数码管其内部8个发光二极管的所有阳极全部连接在一起,电路连接 时,公共端接高电平,因此我们要点亮的那个发光管二极管就需要给阴极送低 电平,此时显示

51、数字的编码与共阳极编码是相反的关系,数码管内部发光二极 管点亮时,也需要5mA以上的电流,而且电流不可过大,否则会烧毁发光二极管。 由于单片机的I/O口送不出如此大的电流,所以数码管与单片机连接时需要加驱 动电路,可以用上拉电阻的方法或使用专门的数码管驱动芯片,本实验板上使 用的是74HC573锁存器,其输出电流较大,电路接口简单,可借鉴使用。 一般共阳极数码管更为常用,为什么呢?这是因为数码管的非公共端往往 接在IC 芯片的IO上,而IC 芯片的驱动能力往往是比较小的,如果采用共阴极 数码管,它的驱动端在非公共端,就有可能受限于IC芯片输出电流不够而显示 昏暗(比如51单片机),要外加上拉电

52、阻或者是三极管加大驱动能力。所以使 用共阳数码管的好处是:将驱动数码管的工作交到公共端(一般接驱动电源), 加大驱动电源的功率自然要比加大IC芯片IO口的驱动电流简单许多。另一方面, 这样也能减轻MCU的负担。 当多位一体时,它们内部的公共端是独立的,而负责显示什么数字的段线 全部是连接在一起的,独立的公共端可以控制多位一体中的哪一位数码管点亮, 而连接在一起的段线可以控制这个能点亮数码管亮什么数字,通常我们把公共 端叫做“位选线”,连接在一起的段线叫做“段选线”,有了这两个线后,通 过单片机及外部驱动电路就可以控制任意的数码管显示任意的数字了。 一般单位数码管有10个引脚,二位数码管也是10

53、个引脚,四位数码管是12 个引脚,关于具体的引脚及段、位标号大家可以查询相关资料,最简单的办法 就是用数字万用表测量,若没有数字万用表也可用5V直流电源串接1k电阻后测 量,将测量结果记录,通过统计便可绘制出引脚标号。 普中科技 48 知识点:如何用万用表检浏数码管的引脚排列 对数字万用表来说,红色表笔连接表内部电池正极,黑色表笔连接表内部 电池负极,当把数字万用表置于二极管档时,其两表笔间开路电压约为1.5V, 把两表笔正确加在发光二极管两端时,可以点亮发光二极管。 如下图所示,将数字万用表置于二极管挡,红表笔接在脚,然后用黑表 笔去接触其他各引脚,假设只有当接触到脚时,数码管的a段发光,而

54、接触其 余引脚时则不发光。由此可知,被测数码管为共阴极结构类型,脚是公共阴 极,脚则是数码管的a段.接下来再检测各段引脚,仍使用数字万用表二极管 档,将黑表笔固定接在脚,用红表笔依次接触 、引脚时,数码管的其他段先后分别发光,据 此便可绘出该数码管的内部结构和引脚排列图。 检测中,若被测数码管为共阳极类型,则需将红、黑表笔对调才能测出上 述结果,在判别结构类型时,操作时要灵活掌握,反复试验,直到找出公共端 为止,大家只要懂得了原理,检测出各个引脚便不在是问题了。 数码管静态显示 当多位数码管应用于某一系统时,它们的“位选”是可独立控制的,而 “段选”是连接在一起的,我们可以通过位选信号控制哪几

55、个数码管亮,而在 同一时刻,位选选通的所有数码管上显示的数字始终都是一样的,因为它们的 段选是连接在一起的,所以送入所有数码管的段选信号都是相同的,那么它们 显示的数字必定一样,数码管的这种显示方法叫做静态显示。 49c0ec54d24c1dc879581a53a996780f.pdf 49 从电路图可以看出,本开发板使用的是共阴极数码管,在每段数码管端加 上一个限流电阻。 下面我们来看一下程序 打开 /* * 实验名 : 静态数码管实验 * 使用的IO : 数码管使用P0,键盘使用P3.0、P3.1、P3.2、P3.3 * 实验效果 : 按下K1键,显示1,按下K2键,显示 2,按下K3键,显示3,按下 K4键,显示4。 * 注意 :由于P3.2口跟红外线共用,所以做按键实验时为了

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