1、单片机教学实验箱的开发与研究1单片机教学实验箱的开发与研究摘要:在本文中,这个仿真实验箱的设计是为了方便 8051 单片机的学习,LED 灯的仿真示例是 AT89C51 的一个很基础的应用,大家通过这个实验可以了解 Keil Vision编程软件和 Proteus 7 Professional 仿真软件的使用。这里包含了流水灯,用指拨开关设置音调,音乐播放,秒表和 LCD 汉子显示以及点阵的滚动显示,电子密码锁等很多有趣的实验,可以增添初学者对单片机的兴趣。关键词:单片机,仿真, AT89C51,实验箱Abstract: In this paper, functional based simu
2、lator has been designed to facilitate the study of the 8051 microcontroller, The simulation example of LED lamp is a basing application about AT89C51. everyone have some knowledge about the use of Keil Vision programming software and Proteus 7 Professional simulation software. This includes water li
3、ghts,the switch setting tone, music player, a stopwatch and LCD Chinese characters display and dot matrix rolling display, electronic password lock and many other interesting experiments, can be added to the interest of microcontroller beginners.Keywords: Microprocessor, Simulation, AT89C51, Experim
4、ental box前言AT89C51是一种带 4K字节 FLASH存储器的低电压、高性能 CMOS 8位微处理器,有乘(MUL) 、除(DIV) 、减(SUBB) 、比较(PUSH) 、16 位数据指针、布尔代数运算等指令,以及串行通信能力和 5个中断源,内有 128个 RAM单元及 4K的 ROM、16 位定时计数器、4 个 8位并行输入口 5。汇编语言 (Assembly Language)是面向机器的程序设计语言.是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言,比机器语言易于读写、调试和修改 11。仿真实验箱包括流水灯、音乐播放、秒表、LCD 显示、LED
5、 滚动显示、电子密码锁等应用。1 实例介绍1.1 流水灯1.1.1 LED 灯的仿真示例实验要求能对 Keil软件和 Proteus软件有初步的认识和了解,学会使用 Keil软件进行简单的程序编写和调试、链接,学会使用 Proteus软件进行简单的实验仿真。单片机仿真实验箱要用到Keil软件和 Proteus软件。下面介绍仿真实验的基本步骤11。图 1 启动 Keil Vision 后的界面(1)建立源文件和工程打开 Keil软件,出现如图 1所示的界面。单击 FileNew,开启一个新的源程序编辑窗口,单片机教学实验箱的开发与研究2将下面的源程序输入其中。CLR P1.0HERE:SJMP
6、HEREEND输入完毕后,单击 FileSave,给该文件取名保存。一般汇编程序以“.asm”或“.A51”为扩展名,如图 2所示。图 2 源程序的保存在项目开发中,除源程序外,还需要选择 CPU,确定编译/汇编、链接的参数,制定调试的方法等。为管理和使用方便,Keil 使用工程将所需设置的参数和文件都加在一个工程中,只对工程进行编译和链接等操作。建立工程的步骤如下:单击 ProjectNew Project,出现创建新工程的对话框,如图 3所示。要求起一个工程名并保存,一般应把工程和源文件保存在同一个文件夹中。进入下一步,选择目标 CPU,如图 4所示,这里选择 Atmel公司的 89C51
7、为例,单击“确定”按钮可返回主界面。图 3 新工程的建立工程建好后,会出现如图 5所示的对话框,询问是否要将 80C51的标准启动代码源程序复制到工程所在文件夹,并将这一源程序文件加入到工程中。使用 C语言编程且要修改启动代码时应选“是” ,使用汇编语言则应选择“否” 。(2)将源程序加入到工程中单击工程工作空间 Target1下方的 Source Group1,使其反白显示,然后单击鼠标右键,在出单片机教学实验箱的开发与研究3现的快捷菜单中选择 Add Files to Group Source Group1,出现如图 6所示的对话窗口。Keil默认加入 C源文件,因此要加入汇编语言源文件,
8、需单击“文件类型”下拉列表右侧的下三角按钮,选“Asm Source file(*.s*;*.src;*.a*) ”项,才能将文件夹下的*.asm 文件显示出来。将这个文件加入到工程中。如果不再需要其他文件,单击 Close按钮关闭这个对话框。图 4 为工程选择目标 CPU 图 5 询问是否需要将 8051 的标准启动代码源程序复制到工程所在文件夹单片机教学实验箱的开发与研究4图 6 加入文件对话框 关闭对话框后回到主界面,刚加入的文件名出现在工程管理器的 Source Group 1下一级。工程建好后,还要对工程做出进一步的设置,以满足每个工程个性化的要求。如图 7,单击 Output标签进
9、入输出设置选项卡,一般设置都取默认值。如图 8,要选中 Greate HEX file。设置完毕后单击“确定”返回主界面,工程文件建立、设置完毕。图 7 存储器使用等状况的设置单片机教学实验箱的开发与研究5图 8 对输出进行控制设置好工程后,即可进行编译、链接。编译过程中的信息将出现在输出窗口的 Build页。如果源程序中有语法错误,则会出现错误报告。源程序每修改一次都要再次编译,最终得到如图 9所示图 9 编译、链接后得到正确的结果的结果,提示生成了 HEX格式的文件,在此过程中还会生成一些其他文件用于 Keil的仿真与调试。单击桌面“开始所有程序Proteus 7 Professional
10、”打开 Proteus软件。如图 10所示,单击左侧的器件选择按钮,将出现如图 11所示的 Pick Device对话框,其中左侧的 Category列表框中为器件的分类。图 10 单击器件选择按钮单击其中的 Microprocess ICs,可在 Sub-category列表框中找到 8051 Family,单击后,在中间的列表框中就出现了所有可用的 8051系列 CPU,找到 AT89C51芯片,单击该芯片名,在对话框的右侧分别显示该元件的电路原理图和封装图。选中芯片后单击“OK”按钮,或双击 AT89C51,器件选择按钮单片机教学实验箱的开发与研究6回到主界面,可以看到列表框中多出了 A
11、T89C51芯片,用同样的方法选中 RESPACK-8和 LED-BIBY。在 DEVICES列表中单击元件名,然后将鼠标移动到绘图区,鼠标形状变为笔状,在任意位置单击鼠标,则该元件出现在这一位置,并且自动命名。AT89C51 元件被自动命名为 U1。LED-BIBY 即LED灯被命名为 D1。单击元件,使其加亮显示,然后单击鼠标右键,可以变换元件的位置,使其合理放置。图 11 选择所需要的器件单击左侧工具栏中的第八个按钮,切换到 TERMINALS(终端模式) ,如图 12所示。单击 POWER即可既可增加一个电源端,双击该电源端,即出现 Edit Terminal Label对话框。单击
12、String后的下拉箭头,选中其中的 VCC项即可。在绘图区加入电源,用线连接好。图 12 终端模式单击 U1以选中 AT89C51芯片,再次单击该芯片,或者双击 U1即出现如图 13所示的 Edit Component对话框。单片机教学实验箱的开发与研究7图 13 编辑元件对话框这个对话框中需要设置 Program File,即选择该芯片的运行程序。单击 Program File后面的类似文件夹形状的按钮,找到先前生成的 led灯.hex 文件,选好后,还可以设置 Clock Frequency,其默认值为 12MHz,可设成自己需要的频率,选好程序文件后,单击程序窗口左下角的“运行”按钮,
13、即可看见 LED灯被点亮,如图 14所示。图 14 程序运行结果1.1.2 流水灯流水灯是一个大家常见的小玩具,在这个实验中将八个灯围成圆形,当灯以不同的方式点亮时,可以变出各种花样,通过这个实验可以了解单片机内部的结构及 I/O口的作用。流水灯的流程图如图 15所示。返回开始取数 0FEH 加入 A 中将数送入 P1,A 中的内容左移一次调用延时子程序单片机教学实验箱的开发与研究8图 15 流水灯的流程图按照上文步骤操作后,运行可以看到灯按不同的方式点亮,效果如图 16所示。图 16 流水灯运行的效果图1.2 音乐播放1.2.1 用指拨开关设置音调随着社会的发展,音乐逐渐成了我们生活中很重要
14、的一部分,电子琴是现代电子科技与音乐结合的产物,这里用 AT89C51 单片机为核心控制元件,在主控模块上设有 7 个按键和扬声器,用来设置音调,介绍了电子琴的基本原理。音名与频率的关系 11如表 1所示。表 1 音名与频率的关系音名 C4 D4 E4 F4 G4 A4 B4频率/Hz 262 294 330 349 392 440 494实验所用的系统晶振为 12MHz,由产生方波的定时时间与延时常数的对应关系,得音名与设置的 R7的值11如表 2所示。其中指拨开关接在 P2口,扬声器接 P1.0引脚。用指拨开关设置音调的流程图如图 17所示表 2 音名与设置的 R7 的值音名设置 C4 D
15、4 E4 F4 G4 A4 B4时间/s 3817 3401 3030 2865 2551 2273 2024常数/次 954 850 757 716 637 568 506R7 值 188 170 151 143 127 113 101单片机教学实验箱的开发与研究9图 17 用指拨开关设置音调的流程图按照上文步骤操作运行后,用鼠标单击指拨开关,将各位分别至于 ON的位置,可以听到扬声器的声音发生了变化。运行时示波器显示的方波会随着音调发生变化。图 18 用指拨开关设置音调的仿真电路1.2.2 简单音乐盒设计一个特殊的“音乐播放器” ,核心器件用 AT89C51单片机,利用定时器产生 “Do”
16、、 “Re”、“Me”等音阶在内的各种频率声音。将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。这里以音乐“千年缘”作为示例。简单音乐盒的流程图如图 19所示。YN开始判断 P2接口是否为低电平?把立即数送入 R7中P1.0接高电平延时单片机教学实验箱的开发与研究10图 19 简单音乐盒的流程图本例的控制信号为 P3.5引脚,电路如图 20所示。按照上文所示步骤操作,运行后可以实现音乐播放。图 20 播放音乐“千年缘”的仿真电路图1.3 点阵滚动显示LED点阵显示器,以发光二极管为像素,1616 的点阵共有 256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来扩展端口,按
17、 8位的锁存器来计算,1616 的点阵需要256/8=32个锁存器。因此在实际应用中的显示屏几乎都不采用这种设计,而采用另一种称为动态扫描的显示方法,即逐行轮流点亮。1616 LED点阵其实就是 4块 88点阵 LED级联而成的,图21为 88点阵 LED外观及引脚图,其等效电路如图 22所示,只要其对应的 X、Y 轴顺向偏压,即可使 LED发亮。若想使左上角 LED点亮,则令 Y0=1,X0=0。应用时限流电阻可放在 X轴或 Y轴。而 1616就是在 88原理的基础上将四块 88级联而成。以 1616点阵为例,把所有同一行的发光管的阴极连在一起,把所有同一列的发光管的阳极连在一起(共阴的接法) ,先送出对应第 1列发光管亮灭的数据并锁存,然后选通第 1列使其燃亮一定的时间,然后熄灭;再送出第 2列的数据并锁存,然后选通第 2列使其燃亮相同的时间,然后熄灭;.第 16列之后,又重新燃亮第 1列,开始设定定时器工作模式中断允许音符、节拍表格地址送入 DPTR调用 T0中断子程序调用 T1中断子程序结束