单片机教学实验箱的开发与研究
应用物理0802 牛丽婷 指导老师 王学
摘要:在本文中,这个仿真实验箱的设计是为了方便8051单片机的学习,LED灯的仿真示例是AT89C51的一个很基础的应用,大家通过这个实验可以了解Keil μVision编程软件和Proteus 7 Professional仿真软件的使用。这里包含了流水灯,用指拨开关设置音调,音乐播放,秒表和LCD汉子显示以及点阵的滚动显示,电子密码锁等很多有趣的实验,可以增添初学者对单片机的兴趣. 关键词:单片机,仿真, AT89C51,实验箱
Abstract: In this paper, functional based simulator 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 lights,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, Experimental box
前言
AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,有乘(MUL)、除(DIV)、减(SUBB)、比较(PUSH)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5
[5]
个中断源,内有128个RAM单元及4K的ROM、16位定时计数器、4个8位并行输入口。汇编语言 (Assembly Language)是面向机器的程序设计语言。是一种功能很强的程序设计语言,也是利用计
[11]
算机所有硬件特性并能直接控制硬件的语言,比机器语言易于读写、调试和修改。仿真实验箱包括流水灯、音乐播放、秒表、LCD显示、LED滚动显示、电子密码锁等应用。
1 实例介绍
1。1 流水灯
1.1。1 LED灯的仿真示例
实验要求能对Keil软件和Proteus软件有初步的认识和了解,学会使用Keil软件进行简单的程序编写和调试、链接,学会使用Proteus软件进行简单的实验仿真.单片机仿真实验箱要用到Keil软件和Proteus软件。下面介绍仿真实验的基本步骤[11]。
图1 启动 Keil μVision后的界面
1
牛丽婷:单片机教学实验箱的开发与研究
(1)建立源文件和工程
打开Keil软件,出现如图1所示的界面。单击File→New,开启一个新的源程序编辑窗口,将下面的源程序输入其中。
CLR P1。0
HERE:SJMP HERE END
输入完毕后,单击File→Save,给该文件取名保存。一般汇编程序以“.asm\"或“.A51”为扩展名,如图2所示。
图2 源程序的保存
在项目开发中,除源程序外,还需要选择CPU,确定编译/汇编、链接的参数,制定调试的方法等。为管理和使用方便,Keil使用工程将所需设置的参数和文件都加在一个工程中,只对工程进行编译和链接等操作。建立工程的步骤如下:单击Project→New Project,出现创建新工程的对话框,如图3所示。要求起一个工程名并保存,一般应把工程和源文件保存在同一个文件夹中。进入下一步,选择目标CPU,如图4所示,这里选择Atmel公司的89C51为例,单击“确定”按钮可返回主界面。
图3 新工程的建立
工程建好后,会出现如图5所示的对话框,询问是否要将80C51的标准启动代码源程序复制到工程所在文件夹,并将这一源程序文件加入到工程中.使用C语言编程且要修改启动代码时应选“是\",使用汇编语言则应选择“否”。
2
牛丽婷:单片机教学实验箱的开发与研究
(2)将源程序加入到工程中
单击工程工作空间Target1下方的Source Group1,使其反白显示,然后单击鼠标右键,在出现的快捷菜单中选择Add Files to Group ‘Source Group1’,出现如图6所示的对话窗口。Keil默认加入C源文件,因此要加入汇编语言源文件,需单击“文件类型”下拉列表右侧的下三角按钮,选“Asm Source file(*。s*;*.src;*。a*)”项,才能将文件夹下的*。asm文件显示出来.将这个文件加入到工程中。如果不再需要其他文件,单击Close按钮关闭这个对话框。
图4 为工程选择目标CPU
图5询问是否需要将8051的标准启动代码源程序复制到工程所在文件夹
3
牛丽婷:单片机教学实验箱的开发与研究
图6 加入文件对话框
关闭对话框后回到主界面,刚加入的文件名出现在工程管理器的Source Group 1下一级.工程建好后,还要对工程做出进一步的设置,以满足每个工程个性化的要求。如图7,单击Output标签进入输出设置选项卡,一般设置都取默认值。如图8,要选中Greate HEX file.设置完毕后单击“确定”返回主界面,工程文件建立、设置完毕.
图7 存储器使用等状况的设置
4
牛丽婷:单片机教学实验箱的开发与研究
图8 对输出进行控制
设置好工程后,即可进行编译、链接。编译过程中的信息将出现在输出窗口的Build页。如果源程序中有语法错误,则会出现错误报告。源程序每修改一次都要再次编译,最终得到如图9所示
图9 编译、链接后得到正确的结果
的结果,提示生成了HEX格式的文件,在此过程中还会生成一些其他文件用于Keil的仿真与调试.单击桌面“开始→所有程序→Proteus 7 Professional”打开Proteus软件。如图10所示,单击左侧的器件选择按钮,将出现如图11所示的Pick Device对话框,其中左侧的Category列表框中为器件的分类。
器件选择按钮
图10 单击器件选择按钮
单击其中的Microprocess ICs,可在Sub—category列表框中找到8051 Family,单击后,在中间的列表框中就出现了所有可用的8051系列CPU,找到AT89C51芯片,单击该芯片名,在对话框的右侧分别显示该元件的电路原理图和封装图。选中芯片后单击“OK”按钮,或双击AT89C51,回到主
5
牛丽婷:单片机教学实验箱的开发与研究
界面,可以看到列表框中多出了AT89C51芯片,用同样的方法选中RESPACK-8和LED—BIBY。
在DEVICES列表中单击元件名,然后将鼠标移动到绘图区,鼠标形状变为笔状,在任意位置单击鼠标,则该元件出现在这一位置,并且自动命名。AT89C51元件被自动命名为U1。LED-BIBY即LED灯被命名为D1。单击元件,使其加亮显示,然后单击鼠标右键,可以变换元件的位置,使其合理放置。
图11 选择所需要的器件
单击左侧工具栏中的第八个按钮,切换到TERMINALS(终端模式),如图12所示。单击POWER即可既可增加一个电源端,双击该电源端,即出现Edit Terminal Label对话框.单击String后的下拉箭头,选中其中的VCC项即可。在绘图区加入电源,用线连接好。
图12 终端模式
单击U1以选中AT89C51芯片,再次单击该芯片,或者双击U1即出现如图13所示的Edit Component对话框。
6
牛丽婷:单片机教学实验箱的开发与研究
图13 编辑元件对话框
这个对话框中需要设置Program File,即选择该芯片的运行程序。单击Program File后面的类似文件夹形状的按钮,找到先前生成的led灯。hex文件,选好后,还可以设置Clock Frequency,其默认值为12MHz,可设成自己需要的频率,选好程序文件后,单击程序窗口左下角的“运行”按钮,即可看见LED灯被点亮,如图14所示。
图14 程序运行结果
1。1。2 流水灯
流水灯是一个大家常见的小玩具,在这个实验中将八个灯围成圆形,当灯以不同的方式点亮时,可以变出各种花样,通过这个实验可以了解单片机内部的结构及I/O口的作用。流水灯的流程图如图15所示.
开始 取数0FEH加入A中 将数送入P1,A中的内容左移一次 调用延时子程序 返回 7
牛丽婷:单片机教学实验箱的开发与研究
图15流水灯的流程图
按照上文步骤操作后,运行可以看到灯按不同的方式点亮,效果如图16所示.
图16 流水灯运行的效果图
1。2 音乐播放
1.2。1 用指拨开关设置音调
随着社会的发展,音乐逐渐成了我们生活中很重要的一部分,电子琴是现代电子科技与音乐结合的产物,这里用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的值
音名 设置 时间/μs 常数/次 R7值 C4 3817 954 188 D4 3401 850 170 E4 3030 757 151 F4 2865 716 143 G4 2551 637 127 A4 2273 568 113 B4 2024 506 101 8
牛丽婷:单片机教学实验箱的开发与研究 图17 用指拨开关设置音调的流程图
按照上文步骤操作运行后,用鼠标单击指拨开关,将各位分别至于ON的位置,可以听到扬声器的声音发生了变化.运行时示波器显示的方波会随着音调发生变化。
开始 判断P2接口是否为低电平? Y 把立即数送入R7中 N P1.0接高电平 延时
图18 用指拨开关设置音调的仿真电路
1.2.2 简单音乐盒
设计一个特殊的“音乐播放器”,核心器件用AT89C51单片机,利用定时器产生 “Do”、“Re”、“Me\"等音阶在内的各种频率声音。将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。这里以音乐“千年缘\"作为示例.简单音乐盒的流程图如图19所示.
9
牛丽婷:单片机教学实验箱的开发与研究
开始 设定定时器工作模式 中断允许 音符、节拍表格地址送入DPTR 调用T0中断子程序 调用T1中断子程序 结束 图19 简单音乐盒的流程图
本例的控制信号为P3。5引脚,电路如图20所示.按照上文所示步骤操作,运行后可以实现音乐播放。
图20 播放音乐“千年缘”的仿真电路图
1.3 点阵滚动显示
LED点阵显示器,以发光二极管为像素,16×16的点阵共有256个发光二极管,显然单片机没有这么多端口,如果我们采用锁存器来扩展端口,按8位的锁存器来计算,16×16的点阵需要256/8=32个锁存器.因此在实际应用中的显示屏几乎都不采用这种设计,而采用另一种称为动态扫描的显示方法,即逐行轮流点亮。16×16 LED点阵其实就是4块8×8点阵LED级联而成的,图21为8×8点阵LED外观及引脚图,其等效电路如图22所示,只要其对应的X、Y轴顺向偏压,即可使LED发亮。若想使左上角LED点亮,则令Y0=1,X0=0.应用时限流电阻可放在X轴或Y轴.而16×16就是在8×8原理的基础上将四块8×8级联而成。以16×16点阵为例,把所有同一行的发光管的阴极连在一起,把所有同一列的发光管的阳极连在一起(共阴的接法),先送出对应第1列发光管亮灭的数据并锁存,然后选通第1列使其燃亮一定的时间,然后熄灭;再送出第2列的数据并锁存,然后选通第2列使其燃亮相同的时间,然后熄灭;….第16列之后,又重新燃亮第1列,反复轮回。当轮回的速度
10
牛丽婷:单片机教学实验箱的开发与研究
足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形.
图21 8×8点阵LED外观及引脚图
图22 8×8点阵LED等效电路
LED点阵显示模块进行的方法有两种:
(1)水平方向扫描:用一个P口输出列码决定哪一列能亮,用另一个P口输出行码,决定该列上哪个LED亮。能亮的列从左到右扫描完16列即显示出一帧完整的图像。
图23“北”字的显示点阵
(2)竖直方向扫描:用一个P口输出决定哪一行能亮,另一个P口输出列码决定该行上哪些LED灯亮。能亮的行从上向下扫描完16行即显示一帧完整的图像。
11
牛丽婷:单片机教学实验箱的开发与研究
汉字的显示一般采用图形的方式,事先提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字分左右两半,各占16B,左边为1、3、 5……右边为2、4、6……根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一个字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节……直到32B显示完就可以LCD上得到一个完整汉字。32个字节为“北”的显示点阵如图23所示。
开始 初始化 调用显示程序 调整数据指针 N 显示完? Y 图24 主程序流程图
这里要求设计一个16×16点阵LED汉字显示屏,显示屏各点亮度均匀、充足,显示的文字应稳定、清晰无串扰.主程序流程图如图24所示.
图25 点阵滚动显示效果图
按照上文操作,运行后会看见文字“欢迎乘坐邯郸市13路公共汽车,现在开往河北工程大学,
12
牛丽婷:单片机教学实验箱的开发与研究
请坐稳扶好,注意安全.”的滚动显示。效果如图25所示。
1。4 LCD汉字显示
在日常生活中,液晶显示模块已作为很多电子产品的通用器件,如在计算器、万用表等很多家用电子产品中都可以看到,这里以汉字显示为例介绍LCD液晶显示的基本原理.液晶显示汉字原理见1。4。
AMPIRE128×64管脚共18个。CS1为左半屏片选端,CS2为右半屏片选端;VCC接电源,GND接地,连接滑动变阻器的控制端,RS为数据指令选择信号端,H时输入数据,L时输入指令,R/W读写选择信号端,H时为读选择信号,L时为写选择信号,E为LCD使能端,DB0~DB7为数据传输端口.RST为复位端.-Vout和V0类似,都是液晶显示驱动电压端。其引脚图如图26所示。主程序流程图如图27所示
图26 AMPIRE128×64的引脚图
开始 LCD初始化 写LCD指令 写入显示坐标的指令 写入点阵数据 结束 图27 LCD汉字显示主程序流程图
按照上文操作后运行可以看见LCD显示屏上依次出现“谢谢老师”四个字。仿真效果如图28所示.
13
牛丽婷:单片机教学实验箱的开发与研究
图28 LCD汉字显示效果图
1。5 演示实验
1。 秒表
本实验用单片机和数码管组成数字电子秒表。电路主要有控制器AT89C51,计时与显示电路和回零、启动和停表电路等.秒表的流程图如图29所示。
按上文所示步骤操作,运行后可以实现时时间的调整、暂停和复位等操作.仿真效果如图30所示。
开始 给存储地址赋值 调用定时中断子程序 调用时间调整子程序 调用显示子程序 结束 图29秒表的流程图
14
牛丽婷:单片机教学实验箱的开发与研究
图30 秒表的仿真效果
2。万年历
现在所使用的万年历,记录一定时间范围内的具体阳历或阴历的日期的年历,方便有需要的人查询使用,实验电路主要有主控制器单片机、显示电路、温度检测电路和闹钟设置电路,如图31所示。运行后会显示日期、时间、温度、并且可以设置闹钟.
图31 万年历的仿真电路
15
牛丽婷:单片机教学实验箱的开发与研究
3.电子密码锁
电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁电子产品。实验以AT89C51芯片为核心,通过编程来实现的.电子密码锁的仿真电路如图32所示。主要有主控制器AT89C51、密码输入电路、报警电路和液晶显示电路
图32 电子密码锁的仿真电路图
2 结论
本文对软件使用做了基本介绍,又配合了很多具体的实例分析,介绍了仿真的单片机教学实验箱达到的预期效果。由于自身学识水平有限,设计中仍有缺陷,需要在以后的学习中对以下方面做出改进。
1。秒表的计时不够精确,LCD显示的汉字歪歪扭扭,达不到更好的效果,点阵滚动显示的汉字不够清楚。
2。实验只是现实生活中所有运用的基础理论,距离设计的真正实现还有一定的差距。
16
牛丽婷:单片机教学实验箱的开发与研究
参考文献
[1] 李文超,浦南江,刘洋,李小虎,李晓磊。技术纵横[J],2011:72-90。 [2] 李全利.单片机原理及接口技术[M].2版.北京:高等教育出版社,2009。 [3] 陈章龙。国内外单片机的现状及未来发展[J].维普资讯,1990,6:2—3。 [4] 张志良。单片机原理与控制技术[M]; 北京,机械工业出版社,2008 [5] 于海生。微型计算机控制技术[M]; 北京,清华大学出版社,1999。3. [6] 何利民.单片机应用系统设计[M]; 北京,北京航天航空大学出版社,1990. [7] 孙育才.MCS-51系列单片机及其应用[M];东南大学出版社。 [8] 周坚。单片机应用与接口技术[M];机械工业出版社
17
因篇幅问题不能全部显示,请点此查看更多更全内容