收藏 分销(赏)

单片机教学实验箱的开发与研究.doc

上传人:仙人****88 文档编号:9375732 上传时间:2025-03-24 格式:DOC 页数:17 大小:639.66KB 下载积分:10 金币
下载 相关 举报
单片机教学实验箱的开发与研究.doc_第1页
第1页 / 共17页
单片机教学实验箱的开发与研究.doc_第2页
第2页 / 共17页


点击查看更多>>
资源描述
牛丽婷:单片机教学实验箱的开发与研究 单片机教学实验箱的开发与研究 应用物理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个中断源,内有128个RAM单元及4K的ROM、16位定时计数器、4个8位并行输入口[5]。汇编语言 (Assembly Language)是面向机器的程序设计语言.是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言,比机器语言易于读写、调试和修改[11]。仿真实验箱包括流水灯、音乐播放、秒表、LCD显示、LED滚动显示、电子密码锁等应用。 1 实例介绍 1.1 流水灯 1.1.1 LED灯的仿真示例 实验要求能对Keil软件和Proteus软件有初步的认识和了解,学会使用Keil软件进行简单的程序编写和调试、链接,学会使用Proteus软件进行简单的实验仿真。单片机仿真实验箱要用到Keil软件和Proteus软件。下面介绍仿真实验的基本步骤[11]。 图1 启动 Keil μVision后的界面 (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)将源程序加入到工程中 单击工程工作空间Target1下方的Source Group1,使其反白显示,然后单击鼠标右键,在出现的快捷菜单中选择Add Files to Group ‘Source Group1’,出现如图6所示的对话窗口。Keil默认加入C源文件,因此要加入汇编语言源文件,需单击“文件类型”下拉列表右侧的下三角按钮,选“Asm Source file(*.s*;*.src;*.a*)”项,才能将文件夹下的*.asm文件显示出来。将这个文件加入到工程中。如果不再需要其他文件,单击Close按钮关闭这个对话框。 图4 为工程选择目标CPU 图5询问是否需要将8051的标准启动代码源程序复制到工程所在文件夹 图6 加入文件对话框 关闭对话框后回到主界面,刚加入的文件名出现在工程管理器的Source Group 1下一级。工程建好后,还要对工程做出进一步的设置,以满足每个工程个性化的要求。如图7,单击Output标签进入输出设置选项卡,一般设置都取默认值。如图8,要选中Greate HEX file。设置完毕后单击“确定”返回主界面,工程文件建立、设置完毕。 图7 存储器使用等状况的设置 图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,回到主界面,可以看到列表框中多出了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对话框。 图13 编辑元件对话框 这个对话框中需要设置Program File,即选择该芯片的运行程序。单击Program File后面的类似文件夹形状的按钮,找到先前生成的led灯.hex文件,选好后,还可以设置Clock Frequency,其默认值为12MHz,可设成自己需要的频率,选好程序文件后,单击程序窗口左下角的“运行”按钮,即可看见LED灯被点亮,如图14所示。 图14 程序运行结果 1.1.2 流水灯 返回 开始 取数0FEH加入A中 将数送入P1,A中的内容左移一次 调用延时子程序 流水灯是一个大家常见的小玩具,在这个实验中将八个灯围成圆形,当灯以不同的方式点亮时,可以变出各种花样,通过这个实验可以了解单片机内部的结构及I/O口的作用。流水灯的流程图如图15所示。 图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的值 音名 设置 C4 D4 E4 F4 G4 A4 B4 时间/μs 3817 3401 3030 2865 2551 2273 2024 常数/次 954 850 757 716 637 568 506 R7值 188 170 151 143 127 113 101 Y N 开始 判断P2接口是否为低电平? 把立即数送入R7中 P1.0接高电平 延时 图17 用指拨开关设置音调的流程图 按照上文步骤操作运行后,用鼠标单击指拨开关,将各位分别至于ON的位置,可以听到扬声器的声音发生了变化。运行时示波器显示的方波会随着音调发生变化。 图18 用指拨开关设置音调的仿真电路 1.2.2 简单音乐盒 设计一个特殊的“音乐播放器”,核心器件用AT89C51单片机,利用定时器产生 “Do”、“Re”、“Me”等音阶在内的各种频率声音。将各个音阶连接在一起,便可组成一支曲子或是演奏一段旋律。这里以音乐“千年缘”作为示例。简单音乐盒的流程图如图19所示。 开始 设定定时器工作模式 中断允许 音符、节拍表格地址送入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列,反复轮回。当轮回的速度足够快(每秒24次以上),由于人眼的视觉暂留现象,就能看到显示屏上稳定的图形。 图21 8×8点阵LED外观及引脚图 图22 8×8点阵LED等效电路 LED点阵显示模块进行的方法有两种: (1)水平方向扫描:用一个P口输出列码决定哪一列能亮,用另一个P口输出行码,决定该列上哪个LED亮。能亮的列从左到右扫描完16列即显示出一帧完整的图像。 图23“北”字的显示点阵 (2)竖直方向扫描:用一个P口输出决定哪一行能亮,另一个P口输出列码决定该行上哪些LED灯亮。能亮的行从上向下扫描完16行即显示一帧完整的图像。 Y N 开始 初始化 调用显示程序 调整数据指针 显示完? 汉字的显示一般采用图形的方式,事先提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字分左右两半,各占16B,左边为1、3、 5……右边为2、4、6……根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一个字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节……直到32B显示完就可以LCD上得到一个完整汉字。32个字节为“北”的显示点阵如图23所示。 图24 主程序流程图 这里要求设计一个16×16点阵LED汉字显示屏,显示屏各点亮度均匀、充足,显示的文字应稳定、清晰无串扰。主程序流程图如图24所示。 图25 点阵滚动显示效果图 按照上文操作,运行后会看见文字“欢迎乘坐邯郸市13路公共汽车,现在开往河北工程大学,请坐稳扶好,注意安全。”的滚动显示。效果如图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所示 开始 LCD初始化 写LCD指令 写入显示坐标的指令 写入点阵数据 结束 图26 AMPIRE128×64的引脚图 图27 LCD汉字显示主程序流程图 按照上文操作后运行可以看见LCD显示屏上依次出现“谢谢老师”四个字。仿真效果如图28所示。 图28 LCD汉字显示效果图 1.5 演示实验 1. 秒表 本实验用单片机和数码管组成数字电子秒表。电路主要有控制器AT89C51,计时与显示电路和回零、启动和停表电路等。秒表的流程图如图29所示。 开始 给存储地址赋值 调用定时中断子程序 调用时间调整子程序 调用显示子程序 结束 按上文所示步骤操作,运行后可以实现时时间的调整、暂停和复位等操作。仿真效果如图30所示。 图29秒表的流程图 图30 秒表的仿真效果 2.万年历 现在所使用的万年历,记录一定时间范围内的具体阳历或阴历的日期的年历,方便有需要的人查询使用,实验电路主要有主控制器单片机、显示电路、温度检测电路和闹钟设置电路,如图31所示。运行后会显示日期、时间、温度、并且可以设置闹钟。 图31 万年历的仿真电路 3.电子密码锁 电子密码锁是一种通过密码输入来控制电路或是芯片工作,从而控制机械开关的闭合,完成开锁、闭锁电子产品。实验以AT89C51芯片为核心,通过编程来实现的。电子密码锁的仿真电路如图32所示。主要有主控制器AT89C51、密码输入电路、报警电路和液晶显示电路 图32 电子密码锁的仿真电路图 2 结论 本文对软件使用做了基本介绍,又配合了很多具体的实例分析,介绍了仿真的单片机教学实验箱达到的预期效果。由于自身学识水平有限,设计中仍有缺陷,需要在以后的学习中对以下方面做出改进。 1.秒表的计时不够精确,LCD显示的汉字歪歪扭扭,达不到更好的效果,点阵滚动显示的汉字不够清楚。 2.实验只是现实生活中所有运用的基础理论,距离设计的真正实现还有一定的差距。 参考文献 [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
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服