nbhkdz.com冰点文库

51单片机实验手册

时间:2011-12-24


武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

实验一
keil C51 软件开发环境简介

开发环境介绍

KEILC51 标准 C 编译器为 8051 微控制器的软件开发提供了 C 语言环境,同时保留了汇编 代码高效,快速的特点。C51 编译器的功能不断增强,使你可以更加贴近 CPU 本身,及其它的 衍生产品。C51 已被完全集成到 uVision3 的集成开发环境中,这个集成开发环境包含:编译 器,汇编器,实时操作系统,项目管理器,调试器。uVision3 IDE 可为它们提供单一而灵活的 开发环境。C51 V7 版本是目前最高效.灵活的 8051 开发平台。它可以支持所有 8051 的衍生 产品,也可以支持所有兼容的仿真器,同时支持其它第三方开发工具。

1.1.1 keil C51 的突出特性
菜鸟的阿拉伯飞毯 高手的无剑胜有剑 —— —— 启动代码生成,自动引导,一日千里 软件模拟器,完全脱离硬件的软件开发过程

完善的开发环境

——

绝对的高性价比

——

C51 for Windows 和 for Dos 的集成 开发环境(IDE),可以完成编辑、编译、连接、 调试、仿真等整个开发流 国际品质,本土价格

1.1.2 产品模块介绍
?Vision3

调试器 dScope51和tScope51

性能分析器 ULINK2仿真器

标准C编译器

?Vision IDE 在全球拥有庞大的用户群,超过 10 万开发工程师在使用 Keil 开发工具。不 管以前是用 8 位、 位 MCU, 16 还是现在改用 ARM 32 位处理器, ?Vision IDE 简单易用, 能让您立马上手。

1

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

图 1.1 ?Vision3 IDE

? ?Vision3 IDE 主要特性:
l l l l l l l 功能强大的源代码编辑器; 可根据开发工具配置的设备数据库; 用于创建和维护工程的工程管理器; 集汇编、编译和链接过程于一体的编译工具; 用于设置开发工具配置的对话框; 真正集成高速 CPU 及片上外设模拟器的源码级调试器; 完善的开发工具手册、设备数据手册和用户向导。

? ?Vision3 设备模拟器
?Vision3 设备模拟器的功能强大,能模拟整个 MCU 的行为。使你在没有硬件或对目 标 MCU 没有更深的了解的情况下,仍然可以立即开始开发软件。

1.2 RealView 使用
1.2.1 创建一个工程
?Vision 是一个标准的窗口应用程序,可以点击程序按钮开始运行。为了创建一个 新的 ?Vision 工程必须作如下处理: ? 选择工具集 ? 创建工程文件 ? 选择设备

1.2.1.1 选择工具集
?Vision使用的工具集可以在 ?Vision IDE 的 Project – ManageComponents,Environment, and Books 对话框的 Folders/Extensions 页(见下图)中选择。

2

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

?

Development tool Folders 复选框表示本工程使用51单片机的开发工具。Cygnus Folder文本框指定开发工具的路径。 Keil 根目录的设置是基于 ?Vision/ARM 开发工具的安装目录的。对于 Keil ARM 工具 来说,工具组件的路径是在开发工具目录中配置的

?

1.2.1.2 创建工程文件
单击 Project ->New...->?Vision Project 菜单项,?Vision 3 将打开一个标准对话 框,输入希望新建工程的名字即可创建一个新的工程,建议对每个新建工程使用独立的文 件夹。例如,这里先建立一个新的文件夹,然后选择这个文件夹作为新建工程的目录,输 入新建工程的名字 Project1,?Vision 将会创建一个以Project1. Uv2 为名字的新工程文 件, 它包含了一个缺省的目标 (target) 和文件组名。 这些内容在ProjectWorkspace->Files 中可以看到。

1.2.1.3 选择设备
在创建一个新的工程时, ?Vision 要求为这个工程选择一款 CPU。 选择设备对话框显示 了 ?Vision 的设备数据库, 只需要选择用户所需的微控制器即可。 例如, 选择 AT89C52 微 控制器,这个选择设置了AT89C52 设备的必要工具选项、简化了工具的配置

3

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

图 1.6 选择设备

注意:
?

?

当创建一个新的工程时,?Vision 会自动为所选择的 CPU 添加合适的启动代码。 对于一些设备而言,?Vision 需要用户手动地输入额外的参数。请仔细阅读这个 对话框右边的信息,因为它可能包含所选设备的额外配置要求。

创建源文件以后, 就可以将这个文件添加到工程中。 ?Vision 提供了几种方法将源文件 添加到工程中。例如, 在 Project Workspace ->Files 页的文件组上点击鼠标右键,然后 在弹出的菜单中选择 Add Files 菜单项,这时将打开标准的文件对话框,选择我们创建的 asm 或 c 文件即完成源文件的添加。

1.2.2 编译、链接工程
1.2.2.1 设置目标硬件的工具选项
?Vision 可以设置目标硬件的选项。通过工具栏按钮或 Project - Options for Target 菜单项打开 Options for Target 对话框,在 Target 页中设置目标硬件及所选 CPU 片上组件的参数。下图是 MCS 89C52的一些参数设置。

4

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

对话框项 Xtal

图 1.7 设置目标硬件 描述

设备的晶振(XTAL)频率。此值是用来在软件仿真的时候使用的。在 设置的时候注意与要仿真硬件的晶振频率一致,以保证仿真的真实 性 Memory model 设置编译器编译时变量的编译类型, Code Rom Size 设置编译代码空间大小 Operating 编译器提供的操作系统 Off-chip Code memory 片外 ROM 空间 Off-chip Xdata memory 片外数据空间 Code Banking

1.2.2.2连接控制
设置keil51的链接有两种方式,一种是在target 对话框中以对话框的方式设置所拥有 的存储器的位置以及编译时把变量编译到哪个位置,然后在BL51 locate 选项中选择use memory Layout from target Dialog 。另外一种方式是在BL51 locate 选项中直接对编译 时生成的每一种数据类型的位置进行设置。

5

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

图 8.8 设置 BL51 Misc 选项

8.2.2.3 编译链接
一般来说,在新建一个应用程序的时候 Options ->Target 页中的所有的工具和属 性都要配置。单击 Build Target 工具栏按钮将编译所有的源文件,链接应用程序。当 编译有语法错误的应用程序时,?Vision 将在 Output Window ->Build 窗口中显示错误 和警告信息。单击这些信息行,?Vision 将会定位到相应的源代码处。

图 8.9 编译结果 源文件编译成功产生应用程序以后就可开始调试了,点击 Debug->Start/Stop debugsession (Ctrl F5)即进入调试模式。

1.2.3 程序调试
1、进入调试模式之后,可以选择单步、全速运行。可以设置断点等常规的调试。所有 有关调试的操作都可以在 Debug 菜单下找到。如下图所示为进入调试模式下时的界面。

6

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

图 1.10 simulator 调试

常用的调试手段:

§
§

单步、全速运行程序 F10 单步运行, F5 全速运行 对于各种模式下的寄存器,可以在左边的窗口查看对于 ARM 的 7 种模式下的寄 存器,都可以查看。当处理器处于任何一种模式时,可以查看 Current 中所有的 寄存器的值,处理器从一种状态改变到另外一种状态时,该模式下物理上独立的 寄存器将会被用到。 设置断点 选中需要设置断点的行,然后 F9 即在改行设置断点,程序运行到此处就停止运 行。 查看变量的实时值 对于 local 的变量,打开 View->Watch&Call Stack Window,在此 Window 中, 选择 Locals tab 就可以查看所有的 local 变量。对于全局变量,选择 Watch window 中的 Watch #1, 加入你需要查看的变量就可以查看实时的全局变量的 值。 外设模块仿真 因为我们选择的是 Simulator,所以可以通过 RealView MDK 强大的仿真功能来 调试程序。打开 Peripheral->GPIO 可以看到每一个 GPIO pin 的实时状态信息。 全速运行程序后,GPIO 的状态就开始按照程序的控制开始变化。

§

§

§

1.2.4 工程选项页概述
在 Project - Options 对话框页可以设置所有的工具选项。所有的选项都保存在 ?Vision 工程文件中。
7

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

在 Project Workspace ->Files 窗口点击鼠标右键,在弹出的菜单中可以设置文件夹 或单个文件的不同选项,这些选项在文件和文件夹选项中解释过。在这种情况下,可能有附 加的属性页及仅与所选项相关的对话框页。 下表概述了各种选项对话框的功能。 对话框页 Device Target Output Listing C Asm Linker Debug Utilities 描述 从 ?Vision 的设备数据库中选择选择设备。 为应用程序指定硬件环境。 定义工具链的输出文件,在编译完成后运行用户程序。 指定工具链产生的所有列表文件。 设置 C 编译器的工具选项,例如代码优化和变量分配。 设置汇编器的工具选项,如宏处理。 设置链接器的相关选项。 一般来说, 链接器的设置需要配置目标系统的存 储。 ?Vision 调试器的设置。 配置 Flash 编程实用工具。

实验二

搭建开发环境

实验内容:搭建单片机开发环境 实验目的:掌握搭建单片机的开发环境方法及开发环境的使用。 实验步骤:
一、USB_Driver 驱动程序的安装。
1、在学习光盘中找到USB_Driver.exe,路径:USB 驱动程序 USB 驱动程序 \XP\SETUP\USB_Driver.exe,然后双击USB_Driver.exe

8

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

下一步:

安装完成后,把 USB 数据线插到电脑上。如果 USB 设备还不能正常使用。此时设备管理器 中“端口(COM 和LPT) ”是感叹号。

此时需要手动安装,在 USB-SerialController点击右键,选择更新驱动程序(P)…

9

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

此时,弹出“硬件更新向导“,选择《自动安装软件(推荐)》

点击“下一步“

10

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

等待搜索。

点击“完成”USB 驱动安装成功。

11

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

设置端口:

点击属性弹出下面的对话框

12

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

点击“高级”选项,弹出下面对话框

在此处设置相应得串口。

二、安装单片机开发工具KEIL
1.记下安装序列号, 进入setup目录点击setup.exe进行安装; 2.选择Install Support....全新安装,以前没有安装过或者放弃以前的序列号安装; 选择Update Current Installation升级安装,将可以保持原来的序列号,不必再次输入 3.选择Full安装,Next->Yes(接受版权信息)->选择安装目录->Next->输入序列号、姓 名、公司等,除了序列号以外,都随意,可以如实输入你的姓名等。->next-> ....直到安装完成。 4.在有些电脑上,安装完KEIL后,在工程中找不到KEIL关联图标,以致打不开工程。因 此要手动找到UV3.exe 步骤:1.随便选个例程,在其中找一个扩展名.uv2的文件, 2.找到后,右键选打开方式,弹出一个打开方式的对话框,点击浏览 3.路径选到C盘(默认安装路径) C:\Keil\UV3\Uv3.exe 选中Uv3.exe点击"打开 ", "始终使用选择的应用程序打开文件"前的小框打上勾

注意: 1.每次安装都必须进行这几步,每次都需要重新写入AddOn标识;
13

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

2.假如安装过程中存在病毒防火墙,可能会产生xcopy错误使安装失败,此时请先 关闭病毒防火墙,然后再安装; 3.安装前必须退出正在运行的Keil软件,否则也会产生xcopy错误使安装失败; 4.安装过程中可能会出现安装Secrity Key错误,点击确定即可。

实验三

protel 环境搭建及使用

实验内容:搭建protel环境并用protel软件画原理图及pcb图 实验目的:掌握protel软件画原理图的方法及由原理图生成pcb图的 方法。 实验步骤:
一、 protel环境搭建。
第一步:运行Setup.exe安装 Protel 99 SE

单击 Next

14

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

输入 S/N 码(S/N 在安装说明里面) ,单击 Next

选择好安装路径,单击“下一步”

15

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

单击“下一步” 单击“下一步”

下一步

下一步

16

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

安装完成。

二、 protel软件使用。
1、 创建一个工程。

17

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

2、 创建原理图文件

18

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

3、画原理图

4、生成网表文件

19

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

5、在 pcb 中加载报表文件

20

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

6、画电路板

四、单片机 I/O 口编程
实验 1: 实验内容:I/O控制LED的亮灭,实现流水灯效果 实验目的:掌握对单片机I/O口的控制方法 实验步骤:
1、查看学习板原理图

21

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

从原理图可以看出 LED 的阳极经过串联电阻接在 Vcc 上,阴极与单片机相接。因此, 当单片机端口输出低电平时,LED 灯被点亮,当单片机端口输出高电平时,LED 灯被熄灭。 由于 JP1 接口并没有与单片机接口直接相连, 因此, 在做实验之前需要将 JP1 口与单片机的 一个 P 口相连。这里把 JP1 口与 P1 口相接。

2、程序设计
分析电路图可知,当往 P1 口输出一个 8 位数时,输出电平为低的端口,对应的 LED 灯会被点亮,输出电平为高的端口,对应的 LED 灯会被熄灭。分析单片机 P 口的特点可知, 控制 LED 的亮灭,除了往 P 口整写一个字节的数以外,还可以对具体的位进行操作,这里采 用对整个 P1 口以字节形式控制的方法。 1、把 LED 被点亮的所有情况都以一个八位数形式存放在一个数组中,如下: Unsigned char code LED_state[] = {~0x01, ~0x02, ~0x04, ~0x08, ~0x10, ~0x20, ~0x40, ~0x80, ~0x00}; 2、不停的往 P1 输出控制 8 个 LED 灯状态的 8 位数,如 P1 = LED_state[i]; 3、软件延时。若是没有延时,所有有的灯都是被点亮,将得不到所期望的效果。 软件延时一般都是用一个不做任何事的 while 或 for 循环来时现。以下是一个典型的延时 函数。 Void delay(unsigned int count) { While(count --) ; } 下面是流水灯的代码片段: Main() { Unsigned char i = 0; While(1) { P1 = LED_state[i]; i ++; if(i >8) i = 0; delay(10000); } }

22

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

实验 2: 实验内容:I/O控制蜂鸣器 实验目的: 掌握蜂鸣器的工作原理及单片机I/O口控制蜂鸣器的方法。 实验步骤:
1、查看学习板原理图:

此图为蜂鸣器部分的电路原理图。蜂鸣器的正极接在了 VCC 上,负极串接一个电阻后接在 P1.5 上。跳线帽 J8 负责是否使 P1.5 口与蜂鸣器负极通路。在做蜂鸣器实验时,一定要把 J8 短接。

2 、程序设计:
蜂鸣器的鸣叫是通过对它的负极输入一个方波信号。 方波信号的频率及脉宽决定了蜂鸣 器发出的声音。因此在编程时只需要对 p1.5 输出一个方波信号即可。 如: delay(20); BEEP = 0; delay(20); BEEP = 1; 通过给延时程序设置不同的延时值,实现输出不同频率及脉宽的方波。 注意: 在实验时多取几组不同的延时值,验证不同的延时值给蜂鸣器声音带来的变化。

23

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

五、单片机汇编编程
实验 1: 实验内容:汇编程序实现流水灯控制 实验目的:掌握51汇编程序编程格式以及汇编控制I/O口的方法。 实验步骤:
1、参照上次实验LED的原理图。 2、程序设计。
程序的算法跟上面用C实现的算法一样,这里采用纯汇编的方法实现。 汇编起始段格式: ORG 0x0000 AJMP START 功能实现段格式 ORG 0x0100 START: MOV DPTR, #TABLE 延时程序段格式 DELAY: …… …… ……. RET 数表格式 TABLE: DB 0FEH, 0FDH, 0FBH, 0F7H, DB 0DFH,0BFH, 07FH, 0FFH

0EFH,

实验 2: 实验内容:汇编调用C函数实现流水灯的控制。 实验目的:掌握51汇编程序调用C函数的编程格式及方法。 实验步骤:
1、参照上次实验LED的原理图。 2、程序设计。

24

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

程序功能的实现通常是在C函数中实现的,汇编部分主要是起引导和一些初始化作 用。在编写程序时注意汇编调用C函数的格式以及它们之间参数的传递形式。

汇编部分:
声明要调用的函数,声明的方法参照下表:

例: EXTRN CODE (LED_FUN) 汇编起始段: ORG 0000H AJMP MAIN 汇编实现段: ORG MAIN: MOV LCALL 0030H SP, #0x80 LED_FUN

C函数部分: C函数的实现跟普通C函数的实现一样, 拥有同样的函数参数传递方式以及值的返回 方式 例: void led_fun(void) { ………………………. }

六、单片机 C 高级编程
实验内容:按键、led灯、蜂鸣器综合多模块编程 实验目的:掌握51C编程中多模块编程技巧。 实验步骤:
25

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

通常一个C51程序工程按功能可以分成多个模块, 一个模块通常由两个文档组成一个头 文件 *.h, 对模块中的数据结构和函数原型进行描述;另一个为C文件*.C , 对数据实例或 对象进行定义,以及函数算法的具体实现,如beep.c, key.c, led.c 等,为了文件的调用, 我们要为每个模块定义一个头文件,以led.c 来说,定义led.h。 led.h 实现: #ifndef LED_H #define LED_H //防止重复包含 #include <reg52.h> void led_fun(unsigned char show); ………………………………. #endif led.c 实现: #include "led.h" void led_fun(unsigned char show) { ……………… } …………………………………………. 模块化的程序是黑盒,只向外提供接口(全局变量、外部函数) ,而不需要让调用者了解其 中过程。 尽可能地少定义接口有利于保持模块的独立性 (不需要让使用者知道的内部函数与 静态全局变量不需要在H文件中给出以避免使用者疑惑)在需要调用此模块的文件中写入 include语句。一个好的工程,H文件的组织是很清晰的,只看H文件就能够写主程序调用相 应的C模块。 编程步骤: //引用标准库的头文件 //全局函数声明

1、 查看各个模块的电路原理图。 2、 分别实现按键、LED灯及蜂鸣器模块,包括各模块的 *.h ,*.c。具体 实现方法参考上面led模块。 3、 在主函数中调用各模块的接口函数,实现程序功能

七、单片机中断应用编程
实验内容:按键中断实现点亮led灯操作。 实验目的:掌握51单片机中断编程技巧。 实验步骤:
1、接好按键与外部中断端口的电路。 2、查看中断系统结构框图,确定要设置的寄存器。
26

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

0 IN T 0 1

TCON
IE 0 E X0 IT 0 TF 0 E T0 IE 1 E X1 IT 1 TF 1 E T1

IE

1 0 1

IP
P X0

高优先 中 断 优 先 级

中 断 入 口 地 址

T0

定 时 器 /计 数 器 0 0

P T0 0 1 P X1 0 1 P T1 0 1 PS ES EA 0

中断 请求

IN T 1

1

低优先 中 断 优 先 级

T1 T XD

定 时 器 /计 数 器 1 T1 串行口 R1

RX D

SC O N

3、查看要设置的寄存器。 TCON TFl TF0 IE1 IT1 IE0 IT0

IT1——外部中断1触发方式控制位。 (1)ITl=0,外部中断1为电平触发方式,低电平有效。 (2)ITl=1,外部中断1控制为边沿(先高后低的负跳变)触发方式。 IT0——外部中断0触发方式控制位。其操作功能与IT1类同。

IE EA

ES

ET1

EX1

ET0

EX0

EA——CPU中断总允许位。 EA=1,CPU开放中断,每个中断源是被允许还是被禁止,分别由各自的允许位确 定; EA=0,CPU屏蔽所有的中断请求,称关中断。 EX1——外部中断l允许位。EX1=1,允许外部中断1中断;EXl=0,禁止外部中断1中 断。 EX0——外部中断0允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中 断。

IP PS PT1 PX1 PX1 PX0

PX1——外部中断l中断优先级控制位。 PX0——外部中断0中断优先级控制位。 对应位为1,高优先级;为0,低优先级。当系统复位后,IP低5位全部清“0”,将所 有中断源设置为低优先级中断。

4、外部中断初始化
void INT_init(void) { // IT0 = 0; //低电平触发 IT0 = 1; //下降沿触发 EX0 = 1; // IT1 = 0; IT1 = 1; //低电平触发 //下降沿触发
27

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

EX1 = 1; EA |= 1; }

1.2 中断函数实现:
void { INT0_fun(void) interrupt 0

EX0=0; delay(100); if(P35 == 0) { key_value = 1; key_flag = 1; } EX0=1; }

//需要简单的延时,以消除抖动

八、单片机定时器、计数器应用编程
实验 1:

实验内容:用定时器0实现led灯每两秒闪烁一次。 实验目的:掌握定时器的使用方法。 实验步骤:
1、 接好led 灯电路。 2、 查看定时、计数器逻辑工作原理图。

3、 查看定时、计数器的寄存器设置

28

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

方式寄存器TMOD

控制寄存器TCON

4、 初始化设置
⑴ 确定工作方式,对方式寄存器 TMOD 赋值 ⑵ 预置定时或计数初值,直接将其写入 T0、T1 中 ⑶ 根据需要对中断允许寄存器有关位赋值,以开放 或禁止定时/计数器中断 ⑷ 启动定时/计数器,将 TRi 赋值为“1” 参考代码片段: void timer0_init(void) { TMOD|= 0x01; TH0=0x3C; //12.000M TL0=0xB0; IE |= 0x82; TR0 = 1; }

5、 中断函数实现
void T0zd(void) interrupt 1 //3 定时器 1 的中断号 断号 0 外部中断 1 2 外部中断 2 4 串口中断 { TH0 = 0x3C; //12.000 TL0 = 0xB0; timer0_count ++; if( timer0_count > 40) { flag_2s = 1; timer0_count = 0; } } 1 定时器 0 的中//

29

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

实验 2: 实验内容:按键模拟计数器0的脉冲输入,并把脉冲的个数显示到8 个led上 实验目的:掌握计数器的使用方法及用led灯调试程序技巧 实验步骤:
1、连接按键与计数器脉冲输入接口,用按键的按下与释放来模拟一个时钟 脉冲。连接P0口与八个led灯接口。直接用led灯来显示P0口上的二进制 值。 2、在上面实验的基础之上,把定时器功能设置为计数器功能。每当一个脉 冲进来时产生一个中断。
初始化函数例子: void count0_init(void) { TMOD|= 0x05; TH0=0xfe; //12.000M TL0=0xff; IE |= 0x82; TR0 = 1; }

3、中断函数片段实现:
void count0_irq(void) interrupt 1 { TH0=0xfe; //12.000M TL0=0xff; flag_2 = 1; }

九、看门狗应用编程
实验内容:比较禁止看门狗、使能并定时喂狗、使能并不进行任何操 作三种情况下程序运行的状态。 实验目的:掌握看门狗的使用方法 实验步骤:
1、查看看门狗寄存器。
30

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

EN_WDT:看门狗允许位,当设置为“1”时,启动看门狗。 CLR_WDT :看门狗清“0”位,当设为“1”时,看门狗定时器将重新计数。硬件自动清 “0”此位。 IDLE_WDT:看门狗“IDLE”模式位,当设置为“1”时,看门狗定时器在单片机的“空 闲模式”计数,当清“0”该位时, 看门狗定时器在单片机的“空闲模式”时不计数。 PS2、PS1、PS0:看门狗定时器预分频值,不同值对应预分频数如下表所示

2、初始化看门狗寄存器:
unsigned int i = 0; WDT_CONTR = 0x35;

3、在程序体中喂狗
while(1) { P1 = LED_state[i]; delay(100); WDT_CONTR = 0x35; }

十、串行口通信应用编程
实验内容:串口接收pc发过来的数据,并把数据原样返回给pc 实验目的:掌握串口的使用技巧 实验步骤:
1、查看串口电路接口原理图。

31

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

1、查看串口结构原理框图。

2、查看串口功能寄存器。
SCON

SM0和SM1为工作方式选择位,可选择四种工作方式。 SM2,多机通信控制位,主要用于方式2和方式3。 REN,允许串行接收位。 TB8,在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。 RB8,在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的 标志位。 TI,发送中断标志位。 RI,接收中断标志位。 PCON

SMOD(PCON.7) 波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有 关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0。

32

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

3、初始化功能寄存器。

片段范例:
SCON = 0x50; TMOD|= 0x20; PCON|= 0x80; TH1 = 0xF3; TL1 = 0xF3; TR1 = 1; ES = 1; EA = 1; //REN=1允许串行接受状态,串口工作模式1 //定时器工作方式2 // 波特率4800、数据位8、停止位1。效验位无 (12M) //开串口中断

4、中断接受片段
void ser_int (void) interrupt 4 using 1 { if(RI == 1) //RI接受中断标志 { RI = 0; //清除RI接受中断标志 ReData = SBUF; //SUBF接受/发送缓冲器 SenData=ReData; Flag=1; } }

5、发送片段
SBUF=SenData; while(TI==0); TI=0; //SUBF接受/发送缓冲器

十一、红外通信
实验内容:红外遥控实验 实验目的:掌握红外通信的使用方法 实验步骤:
1、查看红外模块电路接口原理图

2、环境初始化。
代码片段:
33

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

IRIN=1; IE |= 0x81; TCON |= 0x01;

//I/O口初始化 //允许总中断中断,使能 INT0 外部中断 //触发方式为脉冲负边沿触发

3、红外接收实现。
当红接收到数据时会触发外部中断,代码片段范例 unsigned char j,k,N=0; EX0 = 0; delay(15); if (IRIN==1) { EX0 =1; return; } //确认IR信号出现 while (!IRIN) //等IR变为高电平,跳过9ms的前导低电平信号。 { delay(1); } for (j=0;j<4;j++) //收集四组数据 { for (k=0;k<8;k++) //每组数据有8位 { while (IRIN) //等IR变为低电平,跳过4.5ms的前导高电平信号。 { delay(1); } while (!IRIN) //等 IR 变为高电平 { delay(1); } while (IRIN) //计算IR高电平时长 { delay(1); N++; if (N>=30) { EX0 = 1; return; } //0.14ms计数过长自动离开。 } //高电平计数完毕 IRCOM[j]=IRCOM[j] >> 1; //数据最高位补“0” if (N>=8) { IRCOM[j] = IRCOM[j] | 0x80; //数据最高位补“1” } N=0; }//end for k }//end for j if (IRCOM[2]!=~IRCOM[3]) { EX0=1; return; }

34

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

十二、I2C 接口技术
实验内容:从串口输入字符并把字符存到E2PROM中,当字符数达到十 个时,把刚才存储的字符返回给串口。 实验目的: 掌握I2C通信协议及E2PROM的使用方法。 实验步骤:
1、查看电路接口原理图

2、初始串口。 4、启动I2C总线。
void Start_I2c() { …………………… } 发送或接收数据。 void SendByte(unsigned char c) { …………………………………. } unsigned char RcvByte() { ………………………………….. } 停止I2C总线 void Stop_I2c() { …………………………………. }

35

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

十三、实时时钟接口技术
实验内容:设置并读取时钟芯片DS1302中的值,并通过串口发送到 pc上 实验目的:掌握时钟芯片的使用方法 实验步骤:
1、查看电路接口原理图

2、初始化串口、初始化并设置DS1302。
uart_init() { …………….. } Set_RTC() { ………………. }

3、查看当前时间,每到一秒向串口发送当前时间信息
if(sec_last != l_tmpdate[0]) { sec_last = l_tmpdate[0]; time_send(); }

36

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

十四、A/D 转换接口技术
实验1: 实验内容:将AD0、AD1输入的模拟电压通过A/D转换器转换成数字量, 通过串口发送到pc上。 实验目的:掌握A/D转换器的工作原理及使用方法。 实验步骤:
1、查看A/D转换接口及模拟电压采样电路原理图。

2、初始化串口
uart_init() { ……………………………….. }

3、读取AIN0、AIN1口的数据并向串口发送采集到的数据。

实验2: 实验内容:光敏电阻、热敏电阻产生的模拟电压通过A/D转换器转换 成数字量,通过串口发送到pc上。 实验目的:掌握物理两转化为电量,在转换为数字量的设计思想。 实验步骤:
1、查看热敏电阻电路、光敏电阻电路接口原理图

37

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

2、连接J6 的1、2到A/D转换的AIN2、AIN3通道 3、初始化串口
uart_init() { ……………………………….. }

4、读取AIN0、AIN1口的数据并向串口发送采集到的数据。

十五、D/A 转换接口技术
实验内容:通过串口给单片机发一个数据,单片机把此数据输给D/A 转化器,完成D/A转换后用万用表测量模拟输出端口的电 压值 实验目的:掌握D/A转换器的工作原理及使用方法。 实验步骤:
1、初始化串口
uart_init() { ……………………………….. }

2、把从串口收到的数据写到 PCF8591 中

实现 D/A 转换

…………… DACconversion(PCF8591,0x40, rcvdata); …………… 用电压表测量输出通道的电压值,分析输入值与电压值的区别。

38

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

十六、键盘与 LED 数码管接口技术
实验1: 实验内容:静态显示 0~9 十个数字。 实验目的:掌握led数码管静态显示的编程方法。 实验步骤:
1、查看静态数码管接口电路

2、连接JP3口与P0口。 3、往P0输出要显示数字的段码。
……………….. P0 = LED7Code[i]&0x7f; //LED7 0x7f为小数点 共阴和共阳此处也是不一样; …………………..

实验2: 实验内容:动态显示 ’ xx-xx-xx’ 格式的时钟字样,如’ 12-00-00’。 实验目的:掌握led数码管动态显示的编程方法。 实验步骤:
1、查看动态数码管接口电路

39

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

2、连接 P0 口与 JP12、P1 口与 JP16。 3、设置段码表、位选控制表。 4、设置显示数据缓存 5、循环刷新要显示的数据。
while(1) { for( i=0; i<8; i++) { P0 = Disp_Tab[LedOut[i]]; P1 = dispbit[i]; //使用查表法进行位选 delay(150); //扫描间隔时间 太长会数码管会有闪烁感 } }

十七、LCD 液晶显示接口技术
实验内容:用lcd1602显示“hello world”字样。 实验目的:掌握lcd1602的使用方法。 实验步骤:
1、查看LCD1602模块电路接口原理图。

40

武汉华嵌-嵌入式培训专家

单片机实验手册

www.embedhq.org

400-027-8388

027-51783515

2、初始化 LCD1602 液晶模块。
void lcd_init(void); { …………………. ………………… }

3、设置要显示的位置
lcd_pos(unsigned char pos) { //设定显示位置 lcd_wcmd(pos | 0x80); }

4、往 LCD1602 中写数据
lcd_wdat(unsigned char dat) { ………………………………… }

41


赞助商链接

Easy51-B手册手册资料_图文

Easy51-B手册手册资料 - STC 单片机实验手册 Easy51-B 单片机实验手册 资源: 1 .采用 STC8951RC(与标准 51 指令、脚位完全兼容) ,支持在线串行 I...

STC89C52RC单片机实验板使用手册指导书_图文

STC89C52RC单片机实验板使用手册指导书 - TX-1B 单片机实验板使用手册 单片机实验板使用手册 山东单片机爱好者网 http://weisword.id666.com/ Ema...

单片机实验仪使用手册和实验指导_图文

48 1 单片机实验仪使用手册和实验指导 第一章 单片机实验仪说明 一、概述 单片机实验开发系统是一种多功能、高配置、高品质的 MCS-51 单片机教学与开发设 备。...

MSP430单片机基础实验手册

MSP430单片机基础实验手册_电子/电路_工程科技_专业资料。MSP430单片机基础实验手册1、MSP430 单片机基础实验 1.1、IO 口实验实验目的:学会 MSP430 单片机 IO 口的...

单片机实验箱使用手册

单片机原理及应用实验箱 使用手册编写:吴栋 南京师范大学物理科学与技术学院 2011...图 1-1 MCS-51 单片机子板的 RS232 接口 通过 RS232 接口,51 单片机可以...

KT800-USB单片机实验板用户手册

KT800/USB 单片机实验板用户使用手册 KT800/USB 单片机实验板 用户使用手册 (...? ISP 接口可以对实验板外的 51 系统进行编程,也可用实验 板 外的 ISP 下载...

EDA综合实验箱使用手册

EDA 综合实验箱使用说明手册一.系统概述 1. 系统结构及说明 系统结构如图 1.1 所示: 图 1.1 系统结构框图 2. 硬件资源 1.1 单片机资源 ◆完全兼容 51 ...

598k用户手册

598k用户手册 - DICEDICE-598K 单片机微机多合一实验系统 用户手册 启东计算机总厂有限公司 启东大森电子有限公司 www.dice.com.cn 技术支持:0513-8331...