51系列单片机教学实验板硬件设计.doc_第1页
51系列单片机教学实验板硬件设计.doc_第2页
51系列单片机教学实验板硬件设计.doc_第3页
51系列单片机教学实验板硬件设计.doc_第4页
51系列单片机教学实验板硬件设计.doc_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

51系列单片机教学实验板硬件设计摘要51系列单片机教学实验板既是一块用户实验板,又是一种功能强大而实用的单片机开发调试工具。它与传统的教学实验板相比有如下的优点:(1)价格低廉。(2)使用简单方便,只要有带rs232串口的pc机就能进行实验。(3)功能全,基本上具备单片机常用的接口,如数模转换、模数转换、存储器、led数码管显示、键盘人机接口、并行接口、串行接口,等等。采用本仿真开发实验板,可使初学者迅速掌握单片机原理及应用,熟悉汇编语言、甚至单片机c语言。用本仿真开发实验板,对用户源程序进行实时在线调试,可极大地缩短单片机应用系统的开发时间。关键词:单片机;实验板;接口电路;汇编语言88the hardware designed of 51 serial single chip processor teaching experiment boardabstract51 serial single chip processor teaching experiment board is a user experiment board, and also a powerful and practical single chip processor develop and debug tools.compared with traditional teaching experiment board it has following advantages :( 1) cheap. (2) it is simple and convenient to use , so long as can carry on the experiment with a pc with rs232. ( 3) with complete function, possess the common user interface of the basic single chip processor, the adc block, the dac block, the memory , hid(human interface device, such as the led and the key board) , parallel interface, serial interface , and so on.with this experiment board, the beginners can easily to grasp the principle and application of the mcu,be familiar with assemble languages , even the c51 languages. the character of on system debug can shorten the time to study develop experiment board with emulation this, carry on to user source program real-time to debug online, can shorten construction period of the application system of the single chip processor greatly.key words: single chip processor; experiment board; interface; assemble 目 录中文摘要英文摘要0前言11硬件电路设计21.1 仿真实验板的概况2 1.2 仿真实验板的资源21.3 电路原理图说明 41.3.1单片机最小系统的电路说明 41.3.2 模数转换器adc0809的接口电路61.3.3 数模转换器dac0832的接口电路71.3.4 并行接口芯片8255a的接口电路81.3.5 数据/程序存储器hm62256 91.3.6 动态led显示与键盘101.3.7 蜂鸣器驱动电路131.3.8 电源131.3.9 rs-232串行接口142软件电路设计172.1 汇编由语言程序设计步骤172.2 软件实验172.2.1 内外存储器清零182.2.2 二进制转换bcd码以及bcd码求和、相减19 2.2.3 二进制转换成ascii202.2.4 内存块移动212.2.5数据排序232.2.6 程序跳转表252.2.7 延时程序262.3 硬件实验272.3.1 外部存储器控制信号检测以及读写实验27 2.3.2 d/a转换实验282.3.3 a/d转换实验322.3.4 定时器实验332.3.5 8255a输入输出实验 362.3.6 键盘扫描显示实验38总结46致谢47参考文献48附录a附录b附录c0前言近几十年来,单片机因其体积小,重量轻,耗能省,价格低,可靠性高和通用灵活等优点,在生产过程控制,制动检测,数据采集与处理,科技计算,商业管理和办公室自动化等方面获得了广泛的应用。近几年来,单片机的发展更为迅速,它已经渗透到许多学科和领域,以及人们生活的各个方面。单片机在各个科学技术领域中的迅速发展,与单片机所构成的技术及应用系统特点有关:单片机构成的应用系统有较大的可靠性。系统扩展和系统配置比较典型而规范,容易构成各种规模的应用系统。由于构成的应用系统是一个计算机系统,相当多的测控功能由软件实现,故具有柔性特点。 有优异的性能价格比.因此,单片机技术已经成为各高校自动化、测控、电子技术等相关专业的必修课程,社会上对该技术的需求也与日俱增。随着单片机技术的发展,要求从业人员不仅有理论基础,还要有实践能力,其教育市场十分广阔。单片机教学实验板是单片机简单设计系统,它体现了单片机系统的整体设计思路,熟悉这些应用接口以后在单芯片软硬件设计中受用无穷,因此近年来对这类实验板的需求大大增加。目前各高校广泛使用的单片机仿真实验多是采用仿真头或者外配jtag 边界扫描技术,仿真头每套需要千元左右,jtag接口也要300500元一个,价格昂贵,且不利于进行细致的调试。利用at89c52教学实验板来做8051实验,课程设计,将可以省下你许多宝贵的时间和体力,提高工作效率,不必浪费太多的时间不断尝试错误;同时它启发学生对科技的向往,激发创新意识,推动对新知识的学习,培养自学能力,锻炼动手的本领。本设计内容涉及的教学实验板,无需附加昂贵的仿真头或者jtag接口,也能实现在系统仿真调试,大幅度的降低了造价,因此高校在投入等量资金下获得更大的学生覆盖密度,增强实验效果;同时也满足了自学者少投入,高效能的要求,市场前景十分广阔。1硬件电路设计 1.1仿真实验板概述为了学生学习单片机时具备基本的实验条件,对单片机有形象而又具体的认识,专门设计了具有普遍适用的51系列教学仿真实验板。该教学实验板优点是:(1)价格低廉。(2)使用简单方便,只要有带rs232串口的pc机就能进行实验。(3)功能全,基本上具备单片机常用的接口,如adc、dac、存储器、led数码管、键盘、并行接口、串行接口,等等。由于同时具备上述特点,学生使用本实验板来学习单片机可以有兴趣、高效、自主地进行。51系列教学仿真实验板既是一块用户实验板,又是一种功能强大而实用的单片机开发调试工具,它充分利用pc机的系统资源,使用户可以轻松完成8051单片机应用系统的仿真调试工作,从而省去了价格昂贵的仿真器。用户在pc机上完成软件程序的编辑、编译、连接,通过串行口通信方式将目标程序下载到c51仿真开发实验板中,可对汇编语言和高级语言源程序进行跟踪调试,具有指令单步/过程单步运行,设置多个临时断点,随时察看内存数据或单片机内部资源,在线修改源程序等多种功能。并且将单片机的引脚全部引出,可作为外部仿真头使用。扩展了模拟信号发生电路(产生三角波、方波)、8255、ad0809、dac0832、62256、蜂鸣器、按键和led显示接口电路,此外还预留了若干译码输出口线,可供用户扩展。采用本仿真开发实验板,可使初学者迅速掌握单片机原理及应用,熟悉汇编语言、甚至单片机c语言。用本仿真开发实验板,对用户源程序进行实时在线调试,可极大地缩短单片机应用系统的开发时间。1.2教学仿真实验板的资源图2-1和2-2所示分别为实验板的电路原理图、pcb图(见附录)。实验板上主要有以下资源:1.2.1电源:采用单一+12v电源供电(通过电源适配器由220v得到),通过7905实现稳压的+5v和不稳压的-23v电源。其中+5v为单片机及其外围电路供电,-23v电源为运算放大器供。1.2. 2 配有32kram芯片62256,调试时用户程序被下载到该芯片中,调试完成后可将其换为固化有用户程序的2764/27256芯片,也可以保留62256用作为数据存储器,但要把程序写入at89c52中。 1.2. 3 at89c52单片机。仿真实验板仅仅占用单片机内部串行口和定时器t1。我们可以采用盲调的方式也可以在用户程序中使用单片机内部串行口和定时器t1。单片机全部引脚都引出,可作为仿真插头接口,还预置了若干译码输出端口(地址线)以及数据线以便于用户使用。1.2. 4 并行接口芯片8255。并行接口芯片8255是单片机系统最常用的器件,只要掌握了8255的接口技术,也就不难掌握其他的接口芯片了。1.2. 5 8位a/dc芯片adc0809。虽然adc0809已经落后,但采用它更便于学习和成本低廉。通过adc0809可以实现和掌握外围器件的接口和数据采集原理。1.2. 6 8位d/ac芯片dac0832。同样,虽然dac0832已经落伍,但采用它便于和掌握外围器件的接口和波形的产生。1.2. 7 动态扫描led。led显示是单片机应用系统常用的显示方式之一,而动态扫描led是较难掌握的难点之一。虽然现在已经很少采用8255来驱动led数码管,但采用它便于直观地观察实验现象,掌握动态扫描led的原理。1.2.8 动态扫描键盘。键盘是单片机应用系统最常用的人机对话接口,而且动态扫描键盘更是较难掌握的难点之一。本实验板配置动态扫描键盘是为了读者通过实验能够确实掌握动态扫描键盘。表1-1和1-2分别给出了跳线1和跳线2的作用。表1-3给出了单片机存储器空间的地址分配。表1-4和1-5分别给出了led显示器的显示码和位选码。这些数据在编程时是必不可少的依据。form 1-1 function of header 1表1-1 跳线1的作用跳线名连接方式说明netu11_13此两脚短路时分别接通ad0809的每一通道。inx ( x = 07 )form 1-2 function of header 2表1-2 跳线2的作用跳线名连接方式说明tri此两脚短路时将模拟信号发生器产生的三角波接入缓冲器。buffbuff此两脚短路时将模拟信号发生器产生的方波接入缓冲器。squform 1-3 address assignment表1-3 地址分配接口电路地址范围ad08090000 1fffhdac08322000 3fffh82554000 5fffh622568000 ffffhform 1-4 led show code表1-4 led显示码显示数字0123456789显示码0xc00xf90xa40xb00x990x920x820xf80x800x90form 1-5 led location selecting code表1-5 led位选码显示位12345678位选码0x7f0xbf0xdf0xef0xf70xfb0xfd0xfe1.3 电路原理说明1.3.1 单片机最小系统的电路原理图3-1.所示为单片机at89c52(图中标明为8952)及其外部地址译码、锁存电路图。at89c52的p2的作为高位地址a8a15,其中a15控制译码器74hc138的使能端、,因而74hc138有效输出片选信号时a15为低电平,即它所选的地址在低32k。同时a15、a14和a13又作为译码输入,确定了片选端y0、y1和y2分别为0000 1fffh、2000 3fffh和4000 5fffh。 图3-1单片机at89c52电路图 fig. 3-1 single chip processor of at89c52 circuit picture 74hc573作为低位地址锁存器,在ale的作用下锁存p0口输出的低位地址。请注意74hc573的输入端和输出端分别顺序排列在芯片两段,特别方便pcb版布线,因此建议读者采用74hc573作为地址锁存器,而不要像有些书籍所给的74hc3731。图3-2所示为单片机at89c52的晶振、复位和引脚引出电路。晶振采用11.0592 mhz,该频率有利于提高串口的通信可靠性,同时又保证单片机有较高的运行速度2。复位电路采用简单的rc充、放电电路,在实验板上电时,c103上的电压不能突变,使单片机的复位端(图中的rst点)处于高电平,在经过约200300 ms的时间后,由于经过r105的充电,rst点回到低电平,这一过程完成了单片机的复位。如果在调试过程中,出现死机、程序跑飞等情况,可以按下复位键s1强制单片机复位。 jp1的作用是把单片机的p1口和p3口的引脚引出,以方便读者进行一些扩展实验。图3-2单片机at89c52的晶振,复位和引脚电路fig. 3-2 single chip processor of at 89c52, restoring to the throne and pin circuit1.3.2 模数转换器adc0809的接口电路adc0809是一种8路模拟输入逐次比较型ad转换器,由于价格适中,与单片机的接口、软件操作均比较简单,目前在8位单片机系统中有着广泛的使用。adc0809由8路模拟开关、地址锁存与译码器、8位ad转换器和三态输出锁存缓冲器组成。图3-3所示为模数转换器adc0809的接口电路。片选信号y0用于选择adc0809。将y0与单片机写信号(图中标为wr)相或非后给adc0809的ale端以将通道选择信号add-aadd-c(分别接接单片机的地址信号a0a2)打入adc0809的通道选择寄存器用于选择adc0809的模拟输入通道,同时该信号还接adc0809的转换启动端start,在打入通道选择信号的同时启动adc0809的转换。将y0与单片机读信号(图中标为rd)相或非后给adc0809的数据读出使能端enable,用以从adc0809读出转换结果。adc0809的转换结束信号eoc通过或非门构成的反相器接单片机的外部中断端,单片机可以通过中断或查询方式来判断模数转换是否结束和结果数据是否准备好。单片机的ale信号通过计数器74ls393分频后提供给adc0809作为时钟信号,由clock端输入到adc0809。 图3-3模数转换器adc0809接口电路fig. 3-3 the dac block of adc0809 interface circuit为了保证模数转换的精度,adc0809采用模拟电路的电源供电以避免数字电路中难以避免的脉冲干扰。对adc0809的参考电源输入端采用一大一小两个电容进行滤波:大电容(10mf电解电容)用于滤除低频干扰,但由于大电解电容存在较大的分别电感,因而它滤除高频干扰的效果反而不如小电容,因此并联一个高频性能好的小电容用于滤除高频干扰。通常在pcb板上这两个电容都要尽可能地靠近adc0809参考电源输入引脚安装,以取得较好的效果3。1.3.3 数模转换器dac0832的接口电路 dac0832芯片的功能是将输入的数字量转换成与其成比例的模拟量。dac0832是用cmos工艺集成的8位数据输入d/a芯片,具有20个引脚,其输出模拟量可有个不同的等级。图3-4所示为数模转换器dac0832的接口电路。片选信号y1直接接dac0832的片选端cs的缓冲寄存器锁存端xfer,在与写信号(图中标为wr)共同作用下把需转换的数据经过总线打入dac0832的数据缓冲器。 图3-4数模转换器dac0832的接口电路fig. 3-4 the dac block of adc0832 interface circuit 由dac0832转换后的模拟信号是电流信号,经过运放ma741(图中标为ua741)构成的电流/电压转换电路变成电压信号输出,j2用于向外部引出由dac0832转换后的模拟信号。由于运放ma741输出的电压信号为负极性,因而运放ma741不仅需要正电源,还需要负电源。图中-agnd实际上是-23v的电源。为了简化电源的设计,仿真实验板的电源部分采用了特殊的设计,这将在后面加以详细地介绍。1.3.4 并行接口芯片8255a的接口电路8255a是intel公司开发的一个可编程并行接口器件,为40条引脚双列宣插式大规模集成电路。它采用单十5v电源供电、输入输出电平与ttl电路兼容。8255a广泛用于扩展单片机的并行接口电路中。图3-5所示为并行接口芯片8255a(图中标为8255,以下也简称为8255)的接口电路。片选信号y2直接接到8255的片选端,单片机写信号(图中标为wr)接8255的写信号,单片机读信号(图中标为rd)接8255的读信号,单片机的地址信号a11和a12分别接8255的地址信号a0和a1。单片机的复位信号rst接8255的复位信号reset。 8255的pa口和pb口用于动态地驱动led数码管,其中pa口用于驱动段信号,pb口用于驱动位信号。注意:单片机和绝大多数的器件低电平的驱动能力强但又很有限,因而段驱动采用低电平有效(led发光)和选用共阳极led数码管。r7101r7108为限流电阻。可见光的led的压降一般在1.61.8v,工作电流520ma,据此可以计算限流电阻的阻值。但在计算动态扫描显示的数码管的限流电阻时应该注意:(1)led的亮度与平均电流成正比,有n位数码管时,瞬时电流(用于计算电阻阻值的电流)应该比所需要亮度的工作电流(平均电流)大n倍。(2)注意瞬时电流不能超过25ma(8255的最大极限值),否则很容易烧毁8255。对于采用较小的数码管时,还要注意瞬时电流不能超过数码管的最大电流极限,特别是在调试和出现故障时,某位数码管由于较长时间地通过接近甚至超过其最大电流极限而烧毁。r7113r7120为驱动三极管的限流电阻。由于有三极管来驱动数码管的位(公共极阳极),因此限流电阻可以取较大的值。j1用于引出实验板上没有使用的pb口4个引脚pb47。 图3-5并行接口芯片8255的接口电路fig. 3-5 the parallel interface of parallel chip 82551.3.5 数据/程序存储器hm62256随机存贮芯片(ram)hm62256的存贮量为32kb,地址线有(a0a14),是单片机应用系统中最常见的数据存储器。在实验板中,hm62256(下面简称62256)更多的是充当程序存储器:在实验和调试程序时,在单片机89c52驻留的监控程序的控制下把用户程序下载到62256中。所以,在下载程序时,对单片机at89c52驻留的监控程序而言,62256是作为数据存储器,把pc通过rs232下载的程序作为数据存放在62256中。而在调试时,在监控程序的控制下,从单片机at89c52从62256中取出指令来执行。因而62256的接口设计有特殊的要求:单片机把62256中存储的内容既能作为数据读出,也能作为程序读出。前面我们已经说明,单片机在数据操作时间段中,从外部数据存储器读出数据时采用数据读信号,而在取指时间段中,从外部程序存储器读出指令时采用指令数据读信号。而62256只有一个读信号,所以,在实验板中采用和相与后接62256的端,称为von neumann接法。图10-8给出了数据/程序存储器62256的接口电路,图中62256的端标为oe。a15反相后接62256的端(图中标为oe),说明62256的地址分配为高32k(8000hffffh)。 图3-6数据/程序存储器62256接口电路fig. 3-6 the interface of data / program memory 622561.3.6 动态led显示器与键盘仿真实验板采用了4位一体的共阳极led数码管,这种数码管的各同名段连接在一起共用一个引脚引出,各位(每位数码管的公共端)单独引出。 由于段驱动电流较小,为简单起见,由8255的pa口直接驱动(加限流电阻)。而led数码管的位电流较大,故采用三极管来驱动。位扫描信号由8255的pc口给出。图3-7给出了动态led显示器电路原理图。相比于静态显示方式(1根口线驱动一个led),动态扫描方式需要的口线要少得多。如仿真实验板上有8位数码管,每位数码管有8个 led,如果采用静态驱动方式,则需要8864根口线来驱动。而采用动态驱动方式,只需要8(段驱动)8(位驱动)16根口线。动态方式利用了人眼的视觉暂留效应,每位数码管依次显示一个较短的时间,虽然每个瞬时只有一位数码管在显示,但对观察者看来,好像所有的数码管是在同时显示一样。图3-7动态led显示器与键盘接口电路fig. 3-7 dynamic led display and keyboard interface circuit虽然动态显示方式节省了口线,但对编程提高了要求。每位数码管显示的时间(或频率)需要在一个合理的范围:显示频率通常在25hz以上才能保证较好的显示效果。频率低于25hz时,观察者能够看出数码管在闪烁,频率在25hz左右,有相当一部分人能够感觉到数码管的闪烁,当频率增加到50hz时,数码管看上去就十分流畅、舒服了。但显示频率再增加,几乎没有人能够分辨出显示效果的改善。显示频率过高,显示程序耗时大幅度增加,编程困难,显示亮度下降。利用显示的位扫描,增加几个口线就可以实现扫描(阵列)式键盘。在led数码管显示时,每个瞬时8255的pc口给出位扫描信号只有1根口线为低电平。由pc口的口线组成“列”,而pb口的4根线组成“行”,在行列的焦点上放置一个按键。如果在某个瞬时单片机检测到pb口线上的低电平时,就可以根据检测到低电平的pb口口线和此时给出低电平的pc口口线判断出按键的位置,也就是键值。为了清楚起见,在中重新给出实验板阵列式键盘接口电路。8255pb0pb1pb2pb3pc0pc1pc2pc3图3-8阵列式键盘接口fig. 3-8 array type keyboard interface 在需要按键较多时,阵列式按键占用的口线较少,特别是在有led数码管动态扫描显示的情况下,能够大幅度节省口线,但阵列式按键的编程复杂,特别是需要作防抖处理时更为烦琐。因而,实际应用的单片机系统几乎都采用专门的、同时具备led数码管动态扫描显示驱动功能和阵列式按键管理功能的集成电路,不但没有提高成本,接口电路也大大地简化,编程也极为简单,耗用机时更少。这些芯片有ch451、bc728081和zlg7289a等。1.3.7 蜂鸣器驱动电路单片机口线的输出低电平的驱动能力比高电平要强得多,但在保证符合逻辑电平时也只有5ma左右,不需要保证逻辑电平时(如驱动led时可以有10多个ma)。因此,如果要驱动较大功率的器件:(1)应该以低电平有效;(2)外接功率驱动器件。蜂鸣器需要的驱动电流较大,根据上述考虑,仿真实验板采用了图3-9所示的蜂鸣器驱动电路。该电路结构简单、方便适用。虽然是采用分立元件,在需要驱动负载个数不多的情况下,采用这种电路是较为适宜的。如果需要驱动较多和较重的直流负载,可以选用像7反相功率驱动器mc14433这样一类集成电路比较合适4。 图3-9 蜂鸣器驱动电路 pig 3-9 buzzer drive the circuit 1.3.8 电源仿真实验板电源电路如2-10所示。220v的交流电适配器输出的12v直流由插座j1输入。经过c1001和c1002的滤波输入到三端稳压器7905。注意:7905是-5v输出的稳压集成电路,因而7905的输出端(3端)比接地端(1端)要抵5v。所以在电路中把3端作为地(gnd),而把1端作为vcc,以保证单片机的工作电压是所需的、稳定的+5v。而把7905的输入端(2端)作为模拟电路的负电源(-agnd)为运放等供电。图3-10中的led发光管1006有两个作用:(1)作为电源指示。(2)为模数转换器提供基准电源。由于发光管压降一般在1.61.8v之间,而模数转换器adc0809的参考电源需要2.5v,因此,串接一只普通的二极管1005,使基准电源vref1在2.22.4v之间,基本上满足电路的要求。仿真实验板的数字电路和模拟电路的电源线采用了各自走线的方法,以减少数字电路和模拟电路之间的相互干扰,特别是数字电路对模拟电路的干扰。如果采用完全独立的两套电源为数字电路和模拟电路分别供电,将显著地增加电路的复杂性和成本。电路中虚设两个电阻r1007和r1008,分别将数字电路和模拟电路的电源连接在一起。实际电路可以将r1007和r1008以导线直接短接来代替。这种方法在不增加电路的复杂性和成本的情况下,显著地降低数字电路和模拟电路之间的相互干扰1。 图3-10仿真实验板电源电路fig. 3-10 power circuit of emulation experiment board 1.3.9 rs-232串行接口实验板上的串行接口是实验板与pc通信的唯一通道,需调试的程序通过串行接口下载到实验板中,而实验板上程序的运行状态和部分结果也需通过串行接口上传到pc机。pc机上的串行接口是rs-232,rs-232包括了按位进行串行传输的电气和机械方面的规定。rs-232关于电气特性的要求规定,驱动器输出电压相对于信号地线在-5v-15v之间为逻辑1电平,表示传号状态;输出电压相对于信号地线在5v15v之间为逻辑0电平,表示空号状态。在接收端,逻辑1电平为-3v-15v,逻辑0电平为3v15v,即允许发送端到接收端有2v的电压降。这样的rs-232电平和ttl逻辑电路(单片机)产生的电平是不一样的,因此,pc机与单片机at89c52之间必须经过一定的电路转换逻辑电平。图3-11给出了实验板上的rs232串行接口逻辑电平转换电路。该电路由分立元件构成,它等同max202的电平转换功能。一个完整的rs-232接口有22根线,采用25根插针的标准连接器,各插针定义见表1-6。在使用pc机和单片机进行直接通信时,一股选用pc机端的9针串口,因此rs-232只需要少数几根线即可正常工作。txdrxd是一对数据线,txd为发送数据输出,rxd为接收数据输入,当pc机和单片机以全双工方式直接通信时,双方的这两根线应交叉连接。所有信号均通过信号地构成回路,双方的信号地相连。有以上这三条线(txd、rxd和信号地),单片机和pc机就可以分别对异步通信电路芯片编程,设置成不需要任何联络或握手信号、直接进行数据交换的方式。rs-232三线式直接数据通信接口如表1-7所示。图3-11 rs232串行逻辑电平转换电路 fig. 3-11 rs232 serial logic level transformation the circuitform1-6 definition of rs-232 signal表1-6 rs-232信号的定义引脚序号说明引脚序号说明1保护地13辅信道 允许发送(cts)2发送数据14辅信道 发送数据3接收数据15发送信号无定义dce为源4请求发送(rts)16辅信道 接收数据5允许发送(cts)17接收信号无定时6数传机准备好18未定义7信号地19请求发送(rts)8接收线信号检测20数据终端准备好9保留供数传机测试21信号质量检测10保留供数传机测试22振铃指示11未定义23数据信号速率选择12接收线信号检测24接收数据无定时form 1-7 rs-232 data communication interface 表1-7 rs-232三线式直接数据通信接口说明引脚序号引脚序号 保护地(接外壳) 1 1发送数据txd 2 2接收数据rxd 3 3信号地 7 7请求发送rst 4 4消除发送cts 5 5载波检测dcd 8 8数据装置准备好dtr 6 6数据终端准备好dsr 20 20振铃指示ri 22 22表1-7中,通常左边为连接pc机的25针插头时,右边连接单片机实验板只需2根信号线(另加1根地线)。信号线为双方的2、3端交叉连接,而其它7端对应连接,即完成了pc机与单片机仿真实验板的连接。仿真实验板配套的rs-232通讯线就是采用上述连接方式制成的。2软件设计 在微机应用系统的设计和开发中,主要工作集中在接口设计和程序涉及两个方面,而汇编语言程序设计是开发单片机应用系统软件的关键。在这里着重介绍程序设计的基本方法,并举例一些典型的汇编语言程序实例。2.1 汇编由语言程序设计步骤用微机完成某项任务时,往往应根据问题的要求对硬件,软件综合考虑。在总体硬件确定情况下,程序设计一般可按如下步骤进行。(1) 分析问题分析问题就是要熟悉和明确问题的要求,明确已知条件以及对运算与控制的要求,准确地规定要完成的任务,建立数学模型。(2) 确定算法根据实际问题的要求和指令系统的特点,选择解决问题的方法。算法是进行程序设计的依据,它决定了程序的正确性和程序的质量。(3) 设计程序流程图程序流程图是程序结构的一种图解表示法,它直观,清晰地体现了程序设计思想,是程序设计一种常用工具。设计程序流程图,是把算法转化成程序的准备阶段。(4) 分配内存单元分配内存工作单元,确定程序和数据区的起始地址。(5) 编写汇编语言源程序根据流程图和指令系统编写源程序。编写员程序时,力求简单明了,力求简单明了层次清晰。(6)调试程序源程序编制好以后,必须上机调试。先将源程序通过汇编生成目标程序,并消除愈发失误;然后再使用系统进行联调修改,直至预定一定的要求。2.2 软件实验51系列单片机具有丰富功能的指令系统,它集中反映了51系列单片机是一个面向功能很强的单片微型机。掌握指令系统,是熟悉和应用单片机的软件基础。但是,要真正掌握指令系统,一方面必须与单片机的硬件结构结合起来学习;另一方面要结合实际多做程序分析和进行简单的程序设计及调试,才能收到应有的效果。通过如下软件试验,我们能快速地掌握单片机工作原理和熟悉汇编语言的指令系统。说明:xcode-外部程序存储器 xdata-外部数据存储器 icode-片内rom 片内ram (00h7fh) idata-片内ram (80hffh) sfr-特殊寄存器(80hffh)为了锻炼学生的编程能力,同类型的编程只给出一个例程,思考部分要求学生课后自己完成。2.2.1 软件实验 存储器清零一、实验要求:指定存储器中某块的起始地址和长度,要求能将其内容清零。二、实验目的:1.掌握存储器读写方法2.了解存储器的块操作的方法三、实验说明通过本实验,学生可以了解单片机读写存储器的读写方法,同时也可以了解单片机编成,调试方法,如何将存储器块内容固定值?例程:清除片内数据存储器(data+idata)清除片内数据存储器(data+idata),即片内从00h至ffh所有单元。org 8000h ;实验板开始执行的第一条指令所处的地址ljmp main ;跳转到主程序org 8030h ;主程序开始的地址;避开中断入口地址main: mov r0, #0ffh ;使r0指向idata中的最大的地址ffh mov a, #0 ;清除累加器clr_ram: mov r0, a ;清除dptr所指向的idata单元djnz r0, clr_ram ;完成清除idatahalt: ljmp halt ;完成清除idata,在此死循环,实际程序中应为后续操作;= =;用以分隔程序,使程序清晰易懂end ;程序结束,编译程序不理会end以后的内容思考:如何编写清除外部数据存储器(xdata)的程序说明:89c52内部有多个存储空间,每个存储空间都是具有连续的字节地址空间,其地址都是从0开始至最大存储范围的字节地址,就是说它们的地址是全部重叠的。因为idata区的地址和sfr的地址是重叠,我们通过区分访问的存储区了解决地址重叠问题。sfr只能通过直接寻址来访问,而idata区只能通过间接寻址来访问。但是外部数据存储器(xdata)就只能使用dptr、r0或者r1间接寻址。2.2.2 软件实验 bcd码转换及运算一、实验要求1. 将给定的一个二进制数,转换成十进制(bcd)码2. 将二个给定bcd码进行求和及相减二、实验目的1. 掌握简单的数据转换算法2. 基本了解数值的各种表达方法3. 掌握求和相减要注意的地方三、计算机中的数值有各种表达方式,这是计算机的基础。掌握各种数值之间的转换是一种基本功。例程:二进制转换成十进制(bcd码)将二进制数(f3h)转换成十进制数存放在30h,31h,32horg 0000h ljmp mainorg 0030hmain: mov r0, #30h ;给出百位存放地址 mov a, #0f3h ;给出要转换的二进制数 mov b, #64h ;将数除100,得到百位数 div ab mov r0, a ;存百位数 inc r0 ;给出十位数的存放地址 mov a, b ;将余数除10,得到十位数 mov b, #0ah div ab mov r0, a ;存放十位数 inc r0 ;得个位数地址 mov r0, b ;存放个位数;= ;用以分隔程序,使程序清晰易懂 end ;程序结束,编译程序不理会end以后的内容 思考:1. bcd码求和有两个4位bcd码,分别放在片内ram的50h,51h单元和60h,61h单元中。求两数之和并存放在40h,41h单元中。2. 压缩的bcd码相减被减数和减数为压缩bcd码,分别存于r3和r4中,其差值也存进r3中。3. 如果是压缩bcd码相加的程序应该如何编程?说明:十位数相加时用addc指令,是考虑当个位数相加的结果超过9时,将产生进位,在对十位数相加时应该把它加进去。da a指令支队累加器a起作用,它不能单独使用并且在假发指令add和addc之后,也不适用于减法指令。为了能借用da a指令,可采用把减法变成补码相加的办法,用9ah减去减数,得到10为模的减数的补码。2.2.3 软件实验二进制转换成ascii一、实验要求 给出一个十六进制的数,将其转换成ascii值。二、实验目的1. 了解十六进制值和ascii值得区别2. 了解如何将十六进制转换成ascii值3. 了解如何查表进行数值转换及快速计算三、实验说明 此实验让我们了解数值的十六进制和ascii的区别,利用查表可能快速进行数值转换。进一步了解数值的各种表达方法。例程:由十六进制数0-9的ascii码为30h-39h和a-f的ascii码为41h-46h可知,如果十六进制数小于0ah,则像应该数的ascii码为a+30h;如果该数等于或大于0ah,则相应的ascii码为a+37h。org 0030hmov r0, #3bh ;给指定单元赋值 mov a, r0 ;取十六进制数高四位anl a, #0f0hswap a acall hexasc ;调用转换子程序 mov 30h, a ;将高四位运算结果放到30h单元mov a, r0 ;取十六进制数低四位anl a, #0fhacall hexasc ;调用转换子程序mov 31h, a ;把低四位运算结果放到31h单元hexasc: cjne a,#0ah,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论