基于MCS51单片机的在线仿真实验系统毕业论文.doc_第1页
基于MCS51单片机的在线仿真实验系统毕业论文.doc_第2页
基于MCS51单片机的在线仿真实验系统毕业论文.doc_第3页
基于MCS51单片机的在线仿真实验系统毕业论文.doc_第4页
基于MCS51单片机的在线仿真实验系统毕业论文.doc_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

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

文档简介

基于MCS-51单片机的在线仿真实验系统毕业论文目 录1 绪论11.1课题研究意义11.2 国内外研究现状和水平11.3 研究方向与趋势12 基本方案的确定22.1 设计流程22.2 设计工具的选择23 系统硬件的设计23.1 单片机最小系统23.1.1 AT89S51简介33.1.2 AT89S51引脚说明33.1.3 AT89S51电源与复位电路的设计53.1.4 AT89S51单片机时钟电路设计63.1.5 程序下载电路63.2 8路led灯73.3按键73.3.1 独立按键73.3.2 矩阵键盘83.4 译码器93.5 数码管113.5.1 静态式113.5.2 动态式123.6 LED点阵133.7 AD/DA转换模块143.8 RS232 串行模块153.9 液晶屏LCD1602163.10 555定时器173.11 继电器183.12 蜂鸣器183.13 液晶屏LCD(12864)194 系统仿真及实验设置214.1 系统实验设置概述214.2 单片机程序设计214.2.1 用C语言进行单片机程序开发的优点224.2.2 单片机 C 语言中的基本数据类型和基础语句224.2.3 单片机 C 语言程序工程的基础构成224.3 实验系统基本实验程序设计和仿真结果234.3.1 单片机 I/O 口控制实验234.3.2 闪烁灯实验264.3.4 驱动蜂鸣器实验284.3.5 定时器应用实验304.3.6 数码管静态显示实验324.3.7 数码管动态显示实验354.3.8 外部中断实验384.3.9 定时器中断应用实验404.3.10 点阵显示实验454.3.11 独立按键实验474.3.12 矩阵键盘实验514.3.13 串口应用实验534.3.14 A/D PCF8591 实验564.3.15 D/A PCF8591 实验604.3.16 1602 液晶显示实验604.3.17 液晶屏LCD(12864)显示实验635 总结66参考文献67外文资料原文68中文译文76致 谢83第 83 页 1 绪论1.1课题研究意义大学实验室是培养学生和开展课题研究的重要基地,以实验的形式来培养学生的动手能力和理解能力是高校教学中重要的一项手段。而由于51单片机的特殊性,它的程序存储器和数据存储器是分离的,单片机的数据与程序存储器一般相互独立,程序通过PSEN信号获取指令,调试程序只能在单片机开发系统进行,系统对自身的程序存储器不能进行写操作。所以,一套适合的单片机实验板对于学生的学习就至关重要。学生在做实验时无须连线即可进行接口实验的软件调试,从而避免将大量的时间花费在硬件的连接上,直接对8051程序进行修改和调试。1.2 国内外研究现状和水平51单片机技术自发展以来已走过了几十年的发展路程 。单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。而市场中叶出现了不少单片机仿真实验装置,以及个人设计的单片机仿真实验仪。种类繁多,各自的功能也简繁不一。由简单的只有下载器和支持51单片机的晶振、电源,也有适合实验用的包含不同模块可进行多种项目实验的实验板。技术已经很成熟,不同的产品都有不同的针对用户。1.3 研究方向与趋势在单片机课程的学习中,学生普遍感觉到课程内容比较困难,对理论知识难以理解、消化。其主要原因是学生只接触到了理论,对单片机并无实际的接触,不能很好理解,单片机系统的工作方式。MCS-51单片机仿真实验系统的开发,主要的发展方向就是更高效的辅助学生进行理论知识的学习,更快更好的掌握有关51单片机的知识。能够设计以51单片机为微控制器的控制电路。为实现以上的目的,51单片机仿真实验系统就需要实现更好的与计算机通信,以及全面直观的呈现51单片机的各种功能。将各个功能模块分开设计,可以进行独立的实验,便于学生循序渐进的掌握。实现在线实时仿真,以节约时间,更高效的进行实验。这些都是目前51单片机研究方向以及未来的发展趋势。2 基本方案的确定2.1 设计流程掌握51单片机原理,熟悉51单片机实验系统的结构确定51单片机实验系统模块的数量和类型分别设计各个模块内容,并编写各部分程序,仿真验证画出电路图,整体电路连接做出电路板,实际校正是否有错误 2.2 设计工具的选择电路原理的设计使用protel99SE和Proteus。Proteus是著名的仿真软件,广泛的受到了工程师和老师学生的喜爱。Proteus不仅可以仿真单片机CPU,也可以仿真外围的电路,并且能够实时显示电路动态,助于电路开发设计和学习。Proteus可是实现从制作元件,画原理图,PCB图,软件代码调试等一系列的任务,功能十分全面,可以支持8051、AVR、ARM等芯片。Protel是较早推出的软件,已经在广大高校和公司中普及,绝大部分的工厂支持Protel产生的PCB文件做电路板,因此选择此软件作为制图软件。软件的部分的设计由KeilC51软件进行。KeilC51是专门适用于MCS-51 单片机的编程软件,同时支持C语言和汇编语言,也是目前用于单片机编程最流行的软件。KeilC51集成了C编译器、宏汇编、连接器、库管理模块和一个功能强大的仿真模块。同时支持虚拟仿真器仿真和实物在线仿真,有助于软件的编写开发。3 系统硬件的设计3.1 单片机最小系统MCS-51系列单片机是8位增强型,其主要的技术特征是为单片机配置了完善的外部并行总线和具有多级识别功能的串行通讯接口(UART),规范了功能单元的SFR控制模式及适应控制器特点的布尔处理系统和指令系统。MCS-51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习3.1.1 AT89S51简介AT89S51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89S51提供了高性价比的解决方案。 主要特性:AT89S51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,5个中断源,可编程串行通道,低功耗的闲置和掉电模式,片内振荡器和时钟电路。AT89S51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。3.1.2 AT89S51引脚说明图3.1 AT89S51的引脚图图3.1为AT89S51的引脚图,各引脚功能如下:VCC:电源GND:地P0.0-P0.7:输入输出脚,称为P0口,是一个8位漏极开路型双向I/O口。内部不带上拉电阻,当外接上拉电阻时,P0口能以吸收电流的方式驱动八个LSTTL负载电路。对P0端口写“1”时,引脚用作高阻抗输入。通常在使用时外接上拉电阻,用来驱动多个数码管。 在访问外部程序和外部数据存储器时,P0口是分时转换的地址(低8位)数据总线,不需要外接上拉电阻。P1.0-P1.7:输入输出脚,称为P1口,是一个带内部上拉电阻的8位双向I/0口。P1口能驱动4个TTL负载。 通常在使用时外不需要外接上拉电阻,就可以直接驱动发光二极管。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。P2.0-P2.7:输入输出脚,称为P2口,是一个带内部上拉电阻的8位双向I/O口,P2口能驱动4个TTL负载。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。对内部Flash程序存储器编程时,接收高8位地址和控制信息。在访问外部程序和16位外部数据存储器时,P2口送出高8位地址。而在访问8位地址的外部数据存储器时其引脚上的内容在此期间会被锁存。P3.0-P3.7:输入输出脚,称为P3口,是一个带内部上拉电阻的8位双向I/O口,P3口能驱动4个TTL负载。端口P3置1时,内部上拉电阻将端口拉到高电平,作输入用。对内部Flash程序存储器编程时,接控制信息。P13端口在做输入使用时,因内部有上接电阻,被外部拉低的引脚会输出一定的电流。P3口亦作为AT89S51特殊功能(第二功能)使用,如表3-1所示。表3-1 AT89S51引脚号第二功能P3.0RXD(串行输入)P3.1TXD(串行输出)P3.2INT0(外部中断0)P3.3INT0(外部中断0)P3.4T0(定时器0外部输入)P3.5T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)RST:复位输入,在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引脚时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0P3口均置1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的0000H处开始运行程序。 ALE/PROG:访问外部存储器时,ALE的输出用于锁存地址低8位字节的输出脉冲。配合P0口引脚的第二功能使用,其下降沿用于吧片外存储器的低8位地址锁存到外部专用地址锁存器,以便空出P0.0-P0.7去传送数据。即使不访问外部存储器,ALE端仍以不变的频率输出脉冲信号(此频率是振荡器频率的1/6),可用来作为外部定时器或时钟使用。对Flash存储器编程时,这个引脚用于输入编程脉冲PROG。 PSEN:该引是外部程序存储器的选通信号输出端。当单片机从外部程序存储器取指令或常数时,PSEN每个机器周期输出2个脉冲即两次有效。但访问外部数据存储器时,将不会有脉冲输出。EA/Vpp:外部访问允许端。当该引脚访问外部程序存储器时,应输入低电平。要使AT89S51只访问外部程序存储器(地址为0000H-FFFFH),这时该引脚必须保持低电平。要执行内部程序指令,EA应接上VCC。对Flash存储器编程时,用于施加12伏的Vpp编程电压。XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。XTAL2:振荡器反相放大器的输出端。XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。3.1.3 AT89S51电源与复位电路的设计单片机正常工作需要5V的电源,复位使单片机处于起始状态,并从该起始状态开始运行。AT89S51的RST引脚为复位端,该引脚连续保持2个机器周期(24个时钟振动周期)以上高电平,则可使单片机复位。复位操作不会对内部RAM有所影响。当AT89S51通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。复位是单片机重新执行程序代码的意思。AT89S51的复位方式可以是自动复位,也可以是手动复位,见下图3.2。此外,RST还是一复用脚,Vcc掉电期间,此脚可接上备用电源, 以保证单片机内部RAM的数据不丢失。原理图如下图3.2。图3.2 单片机最小系统如图所示,RSTK为复位开关,单片机VCC引脚接入电源,电容C5首先进入充电状态,此时RST为高电平,单片机复位,此后C5会放电,RST变低,单片机正常工作。当单片机工作时,按下RSTK,RST管脚被拉高,单片机也会复位。3.1.4 AT89S51单片机时钟电路设计 AT89S51单片机内部有一个高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端,如果在引脚XTAL1和XTAL2两端跨接上晶体振荡器(晶振)或陶瓷振荡器就构成了稳定的自激振荡电路,该振荡器电路的输出可直接送入内部时序电路。AT89S51单片机的时钟可由两种方式产生,即内部时钟方式和外部时钟方式。由于内部时钟方式外部电路接线简单,单片机应用系统中大多采用这种方式。本设计中采用了内部时钟方式。内部时钟方式即是由单片机内部的高增益反相放大器和外部跨接的晶振、微调电容构成时钟电路产生时钟的方法,其工作原理如图 3.3所示。图3.3 晶振外接晶振(陶瓷振荡器)时,C1、C2的值通常选择为30pF(40pF)左右;C1、C2对频率有微调作用,晶振或陶瓷谐振器的频率范围可在1.2MHz 12MHz之间选择。为了减小寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机引脚XTALl 和XTAL2靠近。内部时钟方式产生的时钟信号的频率就是晶振的固有频率,常用fsoc来表示。如选择12MHz 晶振,则 fsoc=12106Hz。 3.1.5 程序下载电路ISP(In-System Programming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。本文中设计的单片机实验系统采用的就是ISP下载原理,接口原理图如下图3.4 。图3.4 ISP下载接口3.2 8路led灯发光二极管的种类很多,如图3.5,是常用普通发光二极管的图形符号。当在它的A和K两个电极加上合适的电压时,它就会亮起来。不同的发光二极管工作电压并不相同,一般是在1.6V-2.8V之间,而工作电流则一般是在2-30mA之间,但实际工作中选择的范围一般是4-10mA之间。AK图3.5 发光二极管符号图3.6所示是实验板上与Led相关电路,Led上串接电阻大小事1K。如果此时Led上的电压时2.0V,那么此时通过Led的电流则为3mA。可以点亮二极管。图3.6 二极管电路3.3按键按键是单片机系统中常用的信息输入部件,同时也是人机对话中不可缺少的输入设备。在单片机系统中,按键通常有两种不同的接法,一种叫做独立式按键,另外一种叫做行列式或者是扫描式按键。3.3.1 独立按键一般的按键从实物上来看,是个四端口器件,但实际它是个二端口器件。参照图3.7容易看出,在按下按键之前,两个触点之间是不导通的,按下的时候就导通,通过外部电路的不同接法,就可以使其中一个端口在按下和不按下的时候产生电平变化,而单片机正是通过检测这种变化来完成对按键输入信息的获得。假设P0.0口接S0的输出端。我们知道在P0口是接有上拉电阻的,所以在按键按下之前,S0对应的P0.0保持在高电平状态,当按键按下的时候,P0.0通脱S0接GND,这个时候就是低电平。所以当单片机程序不断检测P0.0的状态时,就可以根据检测结果判断是否有按键按下。图3.7 独立按键3.3.2 矩阵键盘矩阵键盘的优点:当在设计的电路中需要较多的按键的时候,使用矩阵键盘能够大大较少I/O口的占用数量。例如3*3矩阵键盘需要6跟I/O线,而4*4矩阵键盘只需要8根I/O线就可以,很明显增加了7个按键,可是只是多占用了两个I/O口。所以,在电路设计中需要较多的按键是,应该使用矩阵键盘。而且当矩阵键盘的线数越多的时候,这个区别也就会越来越明显,可以大大的提高的单片机的利用率。当然,矩阵键盘也有不好的地方,如实时性不如独立按键,需要更长的反应时间,在扫描和计算之后才能够得到准确的键值。不过,这仍然不能掩盖它的优势。矩阵键盘的结构和电气接线显然还是要比独立按键复杂很多的,识别的过程也是要更加的复杂。如下图3.8所示。所有的行线接在不同的I/O 口上,所有的列线也接在不同的I/O口上,而每一个按键的另外一个端口都经过一个电阻接电源。相当于按键一端的电平为“1”,另外一端的接I/O口。图3.8 矩阵键盘当按键无动作的时候,行线处于高电平的状态;当按键被按下的时候,行线的电平状态有于此行线相连接的列线电平决定。列线电平如果为低,则行线电平为低,否则,反之。这是识别按键状态的关键。常用的矩阵式键盘的按键识别方法:逐行扫描法和线性反转法。本设计中采用的逐行扫描法,原理如图3.8所示。用扫描法识别按键状态的时候分为两步。第一,识别是否有按键按下:让所有的列线置为低电平,检查各行线是否有电平变化。第二,采用扫描法识别具体的键值:逐列置低电平,其余各列置高电平,再来检查行线的变化。3.4 译码器74LS138的引脚图,如图3.9所示图3.9 74LS138的引脚图从表3-2中我们都可以看到74LS138的八个输出引脚,任何时刻要么全为高电平1芯片处于不工作状态,要么只有一个为低电平0,其余7个输出引脚全为高电平1。如果出现两个输出引脚同时为0的情况,说明该芯片已经损坏。表3-2 3线-8线译码器74LS138的功能表71LS138有三个附加的控制端、和。当S1输出为高电平(S1)时,译码器处于工作状态。否则,译码器被禁止,所有的输出端被封锁在高电平,如表3-2所示。这三个控制端也叫做“片选”输入端,利用片选的作用可以将多片连接起来以扩展译码器的功能。图3.10 138译码器接口电路本文设计中用用P2.2、P2.3、P2.4作为地址输入端,片选E3接VCC,E1、E2接GND。单片机直接输出不同的地址信号,译码器就会有对应的输出。如图3.10所示。3.5 数码管在数字系统中,经常需要将测量、时钟或数值运算结果等字符显示出来,便于人们监视数字系统的工作情况。可见,数字显示电路是数字设备中不可或缺的组成部分。同样,在嵌入式系统中数字显示器也是常用的外围设备之一。最常用的就是发光二极管七段显示器(也叫七段数码管)。它的每一个字段是一个发光二极管。我们可以通过控制每一个发光二极管的状态来控制显示的内容。数码管可以根据二极管的共极方向分为两种:共阴极和共阳极。1共阴极数码管7段荧光数码管有公共的地,即7个发光二极管的负极全部连接在了一起,只要给想点亮的二极管高电平就可以使其发光。这样做的好处是可以免去布线、相互间的干扰等很多麻烦。这种连接方式的数码管叫做共阴极数码管。2共阳极数码管如果有共同的正向电压,然后通过控制负极的电压来控制二极管的发光或者熄灭也是可行的。这种有通过控制负极的电压来控制二极管的发光或者熄灭的连接方式的数码管又叫做共阳极数码管。3.5.1 静态式静态显示驱动:静态驱动也称直流驱动,静态驱动是指每一个数码管显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU的开销小。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,增加了硬件电路的复杂性。本设计中应用静态式显示驱动的仅一个共阳极数码管,Led数码管的字形码如表3-3所示。表3-3 数码管共阳极字形码显示字符0123456789共阳极字形码C0HF9HA4HB0H99H92H82HF8H80H90H显示字符ABCDEF共阳极字形码88H83HC6HA1H86H8EH7段数码管共有七段led,加上小数点Dp和共极,有9个接口,其中8个分别为8个led的阴极,还有一个接口为共极。接线时要注意接口顺序,顺序正确才能正常显示,否则会乱码显示。电路接线如图3.11所示。图3.11 共阳极数码管3.5.2 动态式动态扫描要求在点亮多个各不同的 数码管的同时输入数据,但是由于要显示多个不同的数字,需要在多个周期内才能完成,即将时间分隔为多个周期的循环。当频率达到一定程度时(如1khz),其延时可达到较好的效果,利用视觉暂留可以达到动态显示的目的。数码管字形码输入a,bg,dp连接锁存器74HC573,保持输入的 稳定。数码管接线如图3.12 。数据锁存器,当输入的数据消失时,在芯片的输出端,数据仍然保持;同时可以加强驱动能力,并且具备数据缓冲的能力。图3.12 共阴极数码管和573锁存器3.6 LED点阵工作原理分析:从理论上说,不论显示图形还是文字,只要控制与组成这些图形或文字的各个点所在位置相对应的LED器件发光,就可以得到我们想要的显示结果,这种同时控制各个发光点亮灭的方法称为静态驱动显示方式。在实际应用中的显示屏都不采用这种静态驱动的设计方式,而采用另一种称为动态扫描的显示方法。动态扫描的意思简单地说就是逐行轮流点亮,这样扫描驱动电路就可以实现多行(比如8行)的同名列共用一套列驱动器。本设计中采用8*8的LED点阵,其元件示意图如图3.13所示。图3.13 led点阵原理图如图3.14所示,为led点阵的接口电路,J17和J18两个插座接led点阵;J19和J20接单片机I/O口,用于控制列线显示。图中DPa、DPbDPh是74hc573的输出接口,573锁存器可以提供驱动电流。图3.14 led点阵接口3.7 AD/DA转换模块PCF8591 是一种具有I2C总线接口的 8 位 A/D D/A 转换芯片,在与CPU的信息传输过程中仅靠时钟线 SCL 和数据线 SDA 就可以实现。I2C总线Philips(飞利浦)公司推出的串行总线,它与传统的通信方式相比具有读写方便,结构简单,可维护性好,易实现系统扩展,易实现模块化标准化设计,可靠性高等优点。引脚分布如下图3.15。图3.15 PCF8591引脚图内部结构及引脚功能描述 :PCF8591 为单一电源供电(2.5 6 V)典型值为 5 V,CMOS 工艺 PCF8591 有 4 路8 位 A/D 输入,属逐次比较型,内含采样保持电路; 1 路 8 位 D/A 输出,内含有 DAC的数据寄存器 A/D D/A 的最大转换速率约为 11 kHz,但是转换的基准电源需由外部提供 PCF8591 的引脚功能如下表所示。表3-4 PCF8591的引脚功能引脚序号引脚名称功能描述14AIN0AIN3模拟信号输入端05V57A0A2器件硬件地址输入端,由硬件电路决定16、8VDD、VSS电源、地9、10SDA、SCLI2C总线的数据线、时钟线11OSC 外部时钟输入端,内部时钟输出端12EXT时钟选择线,EXT=0,使用内部时钟;EXT=1使用外部时钟13AGND模拟信号地15AOUTD/A转换输出端,14基准电源端(0.65V),取值大小影响D/A转换输出电压。当取值等于为VDD时,输出电压为05V。I2C总线系统中的每一片PCF8591通过发送有效地址到该器件来激活。该地址包括固定部分和可编程部分。可编程部分必须根据地址引脚A0、A1和A2来设置。在I2C总线协议中地址必须是起始条件后作为第一个字节发送。地址字节的最后一位是用于设置以后数据传输方向的读/写位。本实验系统设计中,模拟量输入有AN0,AN1,AN2,AN3四个,将四个输入以及模拟量输出AOUT和GND都通过插头引出。在实验系统中AN0,AN1预先加上电压,方便实验。如实验需要,还可在模拟输入上加入不同的输入信号,如图3.16所示。图3.16 PCF8591接口电路3.8 RS232 串行模块RS232 串行接口电路由 MAX232 电平转换电路组成。MAX232 芯片可以将 TTL电平转换成 RS232 电平,以供单片机与 PC 机通信。数据转换通道由7、8、9、10、11、12、13、14脚构成两个数据通道。其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。RS232 串行接口电路如图3.17 所示:串行信号输入由通道2进入,经过RS232芯片转化成TTL/CMOS数据后,从T2OUT和R2OUT输出。图3.17 串行接口电路3.9 液晶屏LCD16021602液晶模块内带标准字库,内部的字符发生存储器(CGROM)已经存储了192个57点阵字符,32个510点阵字符。另外还有字符生成RAM(CGRAM)512字节,供用户自定义字符。图3.18 LCD1602引脚接线LCD1602共有16个引脚,如图3.18所示,引脚功能如下:第1脚:VSS为电源地,接GND。第2脚:VDD接5V正电源。第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:BLA背光电源正极(+5V)输入引脚。第16脚:BLK背光电源负极,接GND。 1602液晶显示模块接受数据之前要先检验忙标志位,只有在忙标志位位低电平的时候才可以执行指令,否则此指令失效。3.10 555定时器555定时器的功能主要由两个比较器决定。两个比较器的输出电压控制RS触发器和放电管的状态。在电源与地之间加上电压,当5脚悬空时,则电压比较器A1的反相输入端的电压为2VCC/3,电压比较器A2的同相输入端的电压为VCC/3。若触发输入端TRIG的电压小于VCC/3,则比较器A2的输出为1,可使RS触发器置1,使输出端Q=1。如果阈值输入端TH的电压大于2VCC/3,同时TRIG端的电压大于VCC/3,则A1的输出为1, A2的输出为0,可将RS触发器置0,使输出为0电平。555构成多谐振荡器,组成信号产生电路;如图3.19所示。振荡周期: T=0.7*(R1+2R2)*C。和单片机计数器配合,可以作为定时器使用,也可以单独作为方波发生器。图3.19 555定时器电路3.11 继电器本设计中使用常用的电器继电器。电磁继电器是一种控制器件,它有控制部分和被控部分组成。控制部分由线圈组成,可通过小电流,产生磁场,从而吸合开关。被控部分是一个开关,可承受较大的电压和电流。当控制部分有达到要求的电流通过的时候,开关闭合,电路导通。常用的电磁继电器原理一般如此。在电路设计中一般有自动控制、电路保护、转换电路的作用。继电器部分的电路设计如图3.20所示。图3.20 继电器电路3.12 蜂鸣器蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成,当接通电源后(1.515V直流工作电压),多谐振荡器起振,输出1.52.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。图3.21 蜂鸣器电路电磁式蜂鸣器的组成部分有振荡器、电磁线圈、磁铁、振动膜片及外壳等。振荡器在接通电源之后产生的音频信号,其电流通过电磁线圈,使电磁线圈产生磁场,从而振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。蜂鸣器发声原理是电流通过电磁线圈,使电磁线圈产生磁场来驱动振动膜发声的,因此需要一定的电流才能驱动它,单片机I/O引脚输出的电流较小,单片机输出的TTL电平基本上驱动不了蜂鸣器,因此需要增加一个电流放大的电路。本设计单片机实验板通过一个三极管C8550来放大驱动蜂鸣器,原理图如图3.21 。程序中改变单片机P1.5引脚输出波形的频率,就可以调整控制蜂鸣器音调,产生各种不同音色、音调的声音。另外,改变P1.5输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小,这些我们都可以通过编程实验来验证。3.13 液晶屏LCD(12864)通俗的讲,液晶显示屏上显示的字符和图形都是由液晶显示屏LCD显示器上面的点组成的。这些点按照一定的规律显示,就组成了人们用肉眼看到的不同的字和图形。一块液晶显示LCD显示器上有成千上万个点排列在一起,这样若干个点排列在一起就是点阵。控制显示器显示不同的字和图形,就是控制点阵上的点。液晶屏LCD(12864)是128*64点阵液晶显示模块,由ST7920芯片驱动。引脚功能定义如图3.22所示。图3.22 液晶屏接口电路表3-5 连接器引脚定义引脚号引脚符号定义1VSS电源地2VDD电源输入 +5V3V0对比度调整4RS(CS)寄存器选择/片选(串行模式)5RW/(SID)读写控制信号/串行数据输入6E/(SCLK)使能信号位/串行时钟输入7-14DB0-DB7数据通道,8位15PSB串并选择,高电平并行;低电平串行16NC17#REST复位信号,低电平有效18VOUT/NC19LEDALED背光源供电引脚20LEDKLEDA接+5V,LEDK接GND如图3.22所示,P0口是数据口,RD和WR分别是寄存器选择和读写控制,具体功能如下表3-6所示。表3-6 液晶屏寄存器选择和读写控制RDWR作用LL写指令到指令寄存器(IR)LH读忙标志位(BF)和地址计数器(AC)HL写数据到数据寄存器(DR)HH读数据从数据寄存器(DR)4 系统仿真及实验设置4.1 系统实验设置概述目前单片机教学主要的手段还是课程的讲授。按照计划和教学大纲,有条不紊的进行理论的学习。虽然这种教授的方法很系统,很全面,可是弊端也是很明显。学生被动的接受,老师不断不断的灌输,老一套的教学方法,不仅容易使人疲劳,而且学生的接受程度不高,不能很好记忆和理解,更谈不上实践应用。以此,单片机在许多学生的眼里是一门很难的课程。解决这种问题的方法就是从实验入手,一兴趣带动学习。充分开发的学生学习的主动性,主动的寻求相关的知识,以强烈的求知欲完成对单片机理论的学习。这样不仅轻松了老师,学生也会觉得更加的有趣,开发出更高的创造性。一开始的学习是很茫然的,甚至不知道从何处入手。以此设计一份由浅入深,由易入难的实验要求是十分必要的。从而带动学生一步步的深入,更好更快的完成单片机知识的学习。本文中设置的实验囊括了所有硬件电路可以实现的功能,针对每一份外设进行了不同的实验。主要学习单片机的应用,同时学习部分单片机常用的元件。在以后工作学习中,由此打下基础,可实现触类旁通。4.2 单片机程序设计目前,单片机编程应用广泛的是C语言,所以学习单片机C语言的应用是十分必要的。不过,汇编语言有利于掌握单片机的底层结构,所以在实验之初,汇编语言和C语言同时使用,以打下扎实的基础。本文中设置的实验,都给出了明确 的要求,学生可以按照要求进行实验,完成学习的过程。由于篇幅的限制,一下主要简略介绍C语言开发单片机的内容。4.2.1 用C语言进行单片机程序开发的优点开发计算机程序所用的语言家族中,C语言是应用最广泛的一种,并且还延伸拓展到许多其他的领域。C语言有许多优点,例如学习难度较小,支持平台广泛,技术资料也较多,喜爱用C语言进行程序开发的程序员也是最多。目前C语言在许多的硬件开发中叶得到了应用,譬如:MCS51单片机,AVR单片机,ARM单片机,以及DSP等等。C语言和底层硬件的关系并不是十分的密切,C语言编写的程序在经过简单修改后就可以应用不同的处理器,同时C语言编写的库函数可以直接利用,大大减少了开发的时间,提高了开发的效率。单片机系统在不断的发展过程中,也选择了使用C语言进行开发。C语言开发的单片机程序具有易读、高效、可移植、易维护等诸多的优点,所以现在单片机的应用中已普遍的采用C语言进行开发。C语言开发单片机程序相对于使用汇编语言有着明显的优势。首先,程序员不需要完全的掌握单片机指令系统,可以很容易的就学会使用C语言对单片机编程;其次,不需要分心管理寄存器和数据类型等各种细节问题,节省大量的时间。4.2.2 单片机 C 语言中的基本数据类型和基础语句 无论在什么样的编程语言中,都有各种不同的数据类型,而且不同的数据类型所占用的数据存储空间也是不同的。MCS-51单片机所拥有的存储空间总量是有限的,为了更节省的使用单片机的存储空间,给不同的数据变量赋予不同的数据类型是很必要的。数据类型能够提高单片机的利用效率。不同的数据类型不仅表示不同类型的数据,还有不同的数据表示范围。在使用某一个数据或者函数变量的时候,需要实现的声明数据的类型。C51的编译器能够根据这个声明明白不同的数据所属的类型,从而正确的分配存储空间。C语言中常用的数据类型如下表4-1所示:表4-1 常用数据类型数据类型表示符号表示范围无符号字符型Unsigned char0到255有符号字符型Char-128到127无符号整型Unsigned int0到65535有符号整型Int-32768到32767在单片机的C语言中也有不同的逻辑语句,其中常用的基础语句有:选择逻辑语句if,循环逻辑语句while、do while 、for,多分枝选择逻辑语句switch case五种语句。通常在单片机的C语言编程中也就使用这些逻辑语句了。4.2.3 单片机 C 语言程序工程的基础构成单片机C语言编写的工程项目可以分为C源文件和头文件两类。通常情况下,我们会将不同的函数写在不弄的C源文件中,这样编写项目组织明确,利于开发。在程序完全编写完之后将所有的源文件都链接到一起,这样再通过编译之后生成hex文件或者bin文件。不过常用的还是hex文件。C源文件的构成和常用的C语言构成完全相同,并且C元件也是以“.c”作为源文件的扩展名。一个C语言的源程序可以由不同功能的几个函数构成,也可由由单一功能的一个函数构成。不过在C语言的源程序中,一定会有一个主函数main()。程序运行会从主函数main()开始,在主函数中可以调用不能功能的其他函数。不过当调用的函数是外部函数的时候,需要在主函数之前先进行声明,如此才能正常的调用。程序在主函数内按顺序执行,当主函数内所有的语句都执行完毕的时候,程序结束。C语言的头文件主要包含了一定类型的函数和变量信息。当程序比较简单的时候我们可能用不到头文件。但是当程序比较复杂的时候,头文件就是必不可少的。因为在程序中会有许多的函数,而且函数之间可能因为互相的调用而又复杂的关系。此时函数的声明就是十分复杂繁琐的。如果把所有的函数声明都同意加到头文件中,然后在源程序开始的部分加上“#inculde *.h”,就可以很好的解决。同时函数中所用各种全局变量也可以放入头文件中。我们在单片机的C语言程序中,常用到的头文件是“reg51.h”。该头文件中包含了51系列单片机所有特殊功能寄存器和位寄存器以及各种端口、定时器定义等内容。在编写单片机C语言程序的时候,加上“#include reg51.h”,就可以直接使用我们熟悉各种特殊寄存器符号和端口符号等。其他常用的头文件还包括math.h,它包含了常用的各种数学函数。了解了单片机程序项目的结构之后,我们就可以尝试着编写单片机C语言程序了。编写C语言程序的时候,要注意形成良好的编程习惯。不同逻辑层次的语句用不同的缩进层次表现出来,然后还要注意个程序加注释。注释的方法有“/”和“/*/”两种。给程序加上注释之后,能够加强程序的可读性,并且对于程序的再利用和移植使用都有很大的帮助。4.3 实验系统基本实验程序设计和仿真结果为了配合本文中设计的单片机实验系统的使用,更大程度的发挥单片机实验系统的作用,编写了下面了实验。实验内同由浅入深,并且附录了部分实验的程序,可以供学生学习参考。因本文篇幅的限制,只列出了每个实验的基础要求和内容,其他的内容不再赘述。4.3.1 单片机 I/O 口控制实验实验目的:通过此实验学习 I/O 口的基本使用方法和如何编程。实验内容:利用P1口作为输出,线点亮二极管,这样观察二极管亮灭的情况。然后修改程序,使特定的一个或几个二极管点亮。这是单片机入门的第一个程序,总结单片机 C 语言的编程方法和思路,熟悉 C51 的基本结构,学会 KEIL 软件的使用。软件仿真:用keilc51编写程序,生成hex文件。一、打开keil软件之后,新建一个工程,保存文件,新建“.c”文档并加入工程中。设置软件,使keil软件能够产生hex文件。图4.1 keil软件2、 单击“FlashConfigure Flash Tools”,出现对话框options for target“Target1”。如图4.1 。图4.2 keil软件三、单击“output”选项,勾中选项“Creat Hex File”,如图4.2 。这样就设置好了。四、然后编写软件程序。由于只是点亮二极管,程序十分简单,只需要将P1置0就可以。单击“ProjectBuild Target”,编译连接之后,就会产生hex文件,文件在工程目录下。如下图4.3.图4.3 keil软件5、 将单片机的P1口与8支led等连接上。将hex文件导入单片机中,下图4.4是未运行程序是的画面;图4.4 led灯仿真下图4.5是程序运行时的画面。图4.5 led灯仿真仿真结果分析:仔细观察,可以看到图4.5中8支二极管同时点亮。程序已经正确运行。如果想要点亮不同的二极管,只需要改变P1口输出的值。P1口接二极管的阴极,所以任何一个P1口管脚输出为0电平,都会点亮一只二极管。4.3.2 闪烁灯实验 实验目的:本实验是单片机技术的基础训练,通过该实验使学生掌握单片机C语言程序的编写方法,熟悉掌握I/O口的基本使用。实验内容:一,在P1端口上接发光二极管,使二极管在不停地一亮一灭,一亮一灭的时间间隔为0.5秒左右。二,通过P1口接发光二极管,程序开始运行后,第一只二极管点亮,0.5秒后,第二只二极管点亮,第一只二极管灭;再0.5秒之后,第三只二极管亮,第二只二极管灭;如此,直至第八只二极管亮,0.5秒后,第一只二极管在点亮,第八只灭。一直循环,并且观察二极管是否如要求一样的点亮。程序流程图P1口置1延时0.5s延时0.5s开始P1口置零图4.6 闪烁灯流程图编写程序,例程如下:/*将P2口同8路led灯相连*/#include void delay(unsigned int i); main() P2 = 0x00; delay(600); P2 = 0xff; delay(600); /*延时函数*/void delay(unsigned int i) unsigned char j; for(i; i 0; i-) for(j = 150; j 0; j-);Proteus软件仿真结果如下图4.7 。图4.7 闪烁灯仿真仿真结果及分析:图4.7所示是led亮着时候

温馨提示

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

评论

0/150

提交评论