单片机原理与应用毕业论文.docx_第1页
单片机原理与应用毕业论文.docx_第2页
单片机原理与应用毕业论文.docx_第3页
单片机原理与应用毕业论文.docx_第4页
单片机原理与应用毕业论文.docx_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理与应用毕业论文目录摘要IAbstractII1.绪论12.实习任务及要求23.基本原理及总体框图43.1总体设计思想43.2 STC89C52引脚及功能介绍54.硬件电路原理及设计说明74.1复位和时钟系统74.2基于STC89C52的单片机最小系统设计94.3 6位数码管显示电路设计104.4矩阵键盘原理及实现114.5串行通信原理及实现134.5.1串行通信概述134.5.2单片机串行通信电路144.5.3串行通信波特率的设定154.6整体电路设计165.软件设计175.1使用软件介绍175.2软件设计流程186.仿真结果及分析216.1数据输入216.2数据显示(在此以显示第一个和第二个为例)236.3数据通信246.4仿真结果分析:247. 实物展示258.心得体会279.参考文献281.绪论MCS-51是指美国Intel公司生产的一系列单片机的总称。这一系列单片机包括很多种,如8031、8051、8751、8032、8052、8752等。其中8051是最早、最典型的产品,该系列其他单片机都是以8051为核心发展起来的,都具有8051的基本结构和软件特征。8051单片机内部包含了作为微型计算机所必需的基本功能部件,各部件相互独立地集成在同一块芯片上。单片机微型计算机阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。创新模式获得成功,奠定了SCM与通用计算机完全不同的发展道路。在开创嵌入式系统独立发展道路上,Intel公司功不可没。微控制器阶段,主要的技术发展方向是不断扩展满足嵌入式应用时,对象系统要求的各种外围电路与接口电路,突显其对象的智能化控制能力。它所涉及的领域都与对象系统相关,因此,发展MCU的重任不可避免地落在电气、电子技术厂家。各大厂家将MCS-51从单片机微型计算机迅速发展到微控制器。STC公司的单片机主要是基于8051内核,是新一代增强型单片机,指令代码完全兼容传统8051,速度快812倍,有全球唯一ID号,加密性好,抗干扰强。现代人类生活中所用的几乎每件有电子器件的产品中都含有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电子产品中都含有单片机。汽车上一般配备40多片单片机,复杂的工业控制系统上甚至可能有数百片单片机在同时工作。单片机的数量远远超过PC机和其他计算机的总和。单片机的学习离不开编程,在所有的程序设计中C语言运用的最为广泛。C语言知识并不难,没有任何编程基础的人都可以学,大大提高了软件开发的工作效率,以及所设计的程序代码的可靠性、可读性和可移植性。使设计者可以将注意力更多的集中在充分发挥单片机的各种资源上。2.实习任务及要求1)利用上述材料完成包含如下系统功能组件的单片机最小系统的设计、焊接、调试(1)键盘一个4X4的矩阵键盘,其中,10个按键是09数字键;另外6个是功能键,用于功能选择和控制,如“数据输入”、“数据显示”、“串行通信”功能选择键,以及“回车”、“清除”、控制键。(2)显示电路由6个7段LED数码管组成的显示电路。(3)串口串行通信利用51的串口实现串行通信接口电路。2)完成ISP下载电路的设计、焊接3)完成系统软件的设计,包括程序结构设计、流程图绘制、程序设计,实现如下功能(1)功能选择通过功能选择键,使得单片机处于不同的工作状态并通过LED显示相应的内容;可选择的功能包括:数据输入;数据显示;串口通信(2)数据输入通过功能选择键选择“数据输入”后,可分次输入10个4位十进制数据,并将输入的数据保存在内部RAM中。数据输入要求:1) 第一步输入序号09,表明输入的是第几个4位十进制数据;2) 第二步按下回车键,完成序号输入;3) 第三步输入最多4位的十进制数据;4) 第四步按下回车键,完成数据输入;5) 重复第一步,开始新数据的输入;6) 输入数据的显示格式是:最左边是序号,然后是空格,之后是从右到左的最多4位十进制数;7) 若在输入过程中(第一步或第三步)出现错误,按“清除”键,重新从第一步开始输入数据。或者,自己设计10个十进制数的输入及显示方式。(3)数据显示通过功能选择键选择“数据显示”后,可显示之前输入的10个4位十进制数据中的任一个,要求:1) 第一步输入序号09,表明显示的是第几个4位十进制数据;2) 第二步显示相应的数据;3) 重复第一步、第二步,显示其他的数据;4) 数据的显示格式是:最左边是序号,然后是空格,之后是要显示的数据,从右到左最多4位十进制数。或者,自己设计数据的显示方式。(4)数据通信将两个单片机最小系统通过串口连接起来,其中一个作为主系统,另一个作为辅系统。当通过功能选择键选择“串行通信”后,当在主系统上按下数字键后主系统的LED按从左向右移东的方式显示按键输入的数字,同时辅系统的LED上显示与主系统同样的内容。4)利用仿真软件完成系统仿真工作5)在单片机最小系统硬件上实现任务3中规定的功能3.基本原理及总体框图3.1总体设计思想本次课程设计是基于单片机最小系统进行功能扩展及实现的,单片机的最小系统是指用最少的原件组成的单片机可以工作的系统,对于51系列的单片机,最小系统必备的条件是需要ROM存储程序,需要RAM保存中间数据,需要时钟、电源和复位。由于51系列单片机片内有ROM和RAM,只需要外接晶振电路、复位电路即可构成单片机的最小系统电路。单片机的接口电路主要用来连接计算机和其他外部设备。根据设计要求可知本次设计主要需要扩展的功能有,数码管显示,键盘电路,串行通信三个模块。由此可以得出本次硬件设计的原路框图,如图3.1所示。 STC89C52数码管显示晶振电路矩阵键盘复位电路串口 图3.1 硬件设计原理框图说明:STC89C52与复位电路、晶振电路再加上电源就可以构成单片机最小系统,这是单片机可以工作的最小系统。矩阵键盘用于作为数据输入键和系统控制功能键,包括输入数字09,数据输入、数据显示、串口通信键及回车、清除、清零键。6位数码管显示电路用于输入时显示输入输出数据,在串口通信功能中显示发送的数字。串口下载电路用于将单片机通过USB转串口线与电脑连接,向单片机写入编好的程序,方便调试。3.2 STC89C52引脚及功能介绍STC89C52片内集成256字节程序运行空间、8K字节Flash存储空间,支持最大64K外部存储扩展。根据不同的运行速度和功耗的要求,时钟频率可以设置在0-33M之间。片内资源有4组I/O控制端口、3个定时器、8个中断、软件设置低能耗模式、看门狗和断电保护。可以在4V到5.5V宽电压范围内正常工作。不断发展的半导体工艺也让该单片机的功耗不断降低。同时,该单片机支持计算机并口下载,简单的数字芯片就可以制成下载线,仅仅几块钱的价格让该型号单片机畅销10年不衰。根据不同场合的要求,这款单片机提供了多种封装,本次设计根据最小系统有时需要更换单片机的具体情况,使用双列直插DIP-40的封装。STC89C52引脚图如图3.2: 图3.2 STC89C52引脚图STC89C52芯片共40引脚,各引脚功能如下:VCC(40引脚):电源电压VSS(20引脚):接地RST复位端P0端口(P0.0P0.7,3932引脚):P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。P0端口需要外加上拉电阻。P1端口(P1.0P1.7,18引脚):P1口是一个带内部上拉电阻的8位双向I/O口。P2端口(P2.0P2.7,2128引脚):P2口是一个带内部上拉电阻的8位双向I/O端口。在访问外部程序存储器和16位地址的外部数据存储器(如执行“MOVX DPTR”指令)时,P2送出高8位地址。P3端口(P3.0P3.7,1017引脚):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写入1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。P3口除作为一般I/O口外,还有其他一些复用功能。4.硬件电路原理及设计说明4.1复位和时钟系统复位和时钟是单片机系统的必要组成部分,控制单片机的机器周期和功能复位。简单地说,单片机的额复位就和计算机的重新启动是一样的概念,任何单片机在工作之前都要进行复位的过程,复位对单片机来说,是程序还没有开始执行时在做准备工作或单片机已经工作实现重新启动。如何进行复位呢?只要在单片机的RST引脚上加上高电平持续大概5ms,直至系统电源稳定后,撤销复位信号。为了达到这个要求,需要在外部设计复位电路。复位电路的实现可以用很多种方法。但是从功能上一般分为两种:一种是电源复位,即外部的复位电路在系统通上电源之后直接是单片机复位的电路,为了可靠起见。电源稳定后还要经过一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位;另一种是在复位电路中设计按键开关,通过按键开关触发复位电平,控制单片机的复位。复位电路由按键复位和上电复位两部分组成。(1)上电复位STC89系列单片及为高电平复位,通常在复位引脚RST上连接一个电容到VCC,再连接一个电阻到GND,由此形成一个RC充放电回路保证单片机在上电时RST脚上有足够时间的高电平进行复位,随后回归到低电平进入正常工作状态,这个电阻和电容的典型值为10K和10uF。(2)按键复位按键复位就是在复位电容上并联一个开关,当开关按下时电容被放电、RST也被拉到高电平,而且由于电容的充电,会保持一段时间的高电平来使单片机复位。电路图如图4.1所示 图4.1 复位电路单片机为什么要用晶振?简单地说,没有晶振,就没有时钟周期,没有时钟周期,没有时钟周期,就无法执行程序代码,单片机就无法工作。单片机工作时,是一条一条地从ROM或Flash中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,就是一个时间基准。传统的C51单片机的一个机器周期包括12个时钟周期。如果一个单片机选择了12MHZ晶振,它的时钟周期是1/12us,它的一个机器周期是12(1/12)us,也就是1us。在51单片机内有一个高增益的反相放大器,反相放大器的输入端为XTAL1,输出端为XTAL2,由该放大器构成的振荡电路和时钟电路一起构成了单片机的时钟方式,根据硬件电路的不同,单片机的时钟连接方式可分为内部时钟方式和外部时钟方式。在内部方式时钟电路中,必须在XTAL1和XTAL2引脚两端跨接石英晶体振荡器和两个微调电容构成振荡电路。STC89C51使用11.0592MHz的晶体振荡器作为振荡源由于单片机内部带有振荡电路所以外部只要连接一个晶振和两个电容即可电容容量一般在15pF至50pF之间。其电路原理图如4.2所示。对于外接时钟电路,要求在XTAL2脚接外部时钟,对于外部时钟信号并无特殊要求,只要保证一定的脉冲宽度,时钟频率低于单片机要求的最高频率即可。外部时钟多采用有源晶振或从其他器件出入所需的时钟信号。图4.2 振荡电路4.2基于STC89C52的单片机最小系统设计 单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的以单片机为核心的并具有特定功能的单片机系统,是单片机产品开发的核心电路;同时,它应具有上电复位和手动复位的功能,并且单片片内程序存储器存放用户程序。 对于STC89C52单片机,要使系统正常工作,必须具有4个基本电路:电源电路;时钟电路;复位电路;程序存储器选择电路。基于STC89C52的单片机最小系统如图4.3所示图4.3 单片机最小系统电路:单片机芯片的第40脚为正电源引脚VCC,一般外接+5V电压,第20脚为接地引脚GND。时钟电路:在XTAL2、XTAL1之间接12MHZ晶振,再加上2个33pF的瓷片电容,即可构成单片机所需的时钟电路。复位电路:采用上电复位和按键复位组合电路构成系统的复位电路。程序存储选择电路:单片机芯片的为内部和外部程序存储器选择输入端。当引脚接高电平时,CPU先访问片内4KB的程序存储器,执行内部程序存储器中的指令。当程序计数器超过0FFFH时,将自动转向片外程序存储器,即从1000H地址单元开始执行指令;当引脚接低电平时,不管片内是否有片外程序存储器,CPU都只访问片外程序存储器。STC89C52内部有4KB的程序存储器,所以根据该脚的引脚功能,将接高电平,才能先从片内程序存储器开始取指令。4.3 6位七段数码管显示电路设计LED数码管有显示亮度高,响应速度快的特点。最常用的是七段LED数码管,七段数码管内部有7个条形发光二极管和一个小圆点发光二极管组成,根据各管的亮暗组合成字符。数码管根据公共端不同,分为共阴极和共阳极两种形式。图4.4为共阴极数码管内部电路,图4.5为共阳极数码管内部电路。图4.4为共阴极数码管内部电路 图4.5为共阳极数码管内部电路。本次需要采用6个数码管,若单独采用数码管连线时比较麻烦,故设计采用 2个3位一体的共阳极数码管来实现6位一体的共阳极数码管功能,若使 6 个数码管显示正常时间,必须采用数码管的动态扫描方式,即每一时刻只有一个数码管点亮,采用软件延时和人眼的视觉暂留效果, 使人眼看到的数码管是同时点亮的。因此需要用6个端口控制数码管的位选,即决定哪个数码管点亮。而六个数码管的位选端则分别接到单片机的P1.0P1.5口,此位选端用来控制哪个数码管亮。每个数码管的8个数据口控制数码管的段选,即决定数码管显示什么字符。考虑到数码管采用动态扫描方式,即循环扫描数码管的 6 位,并将显示字符送入段选位,我们采用P0口控制数码管的8个段选位。图4.6 数码管显示电路4.4矩阵键盘原理及实现键盘输入就是给单片机输入一些电平信息,单片机根据具体的电路原理来处理这些信息,根据这些信息解码出需要的数据,在数字电路中我们用高、低来表示电路的状态,在逻辑电路中分别用“1”、“0”来表示高电平和低电平。通常我们用“1”来表示低电平,即所谓的正逻辑表示。在单片机的一个I/O接入高电平,我们读取I/O口的状态为高电平,于是我们就说此I/O口输入为1。同理,在一个I/O口接入低电平,我们用0来表示其输入的状态。 当按键较少时可接成线性键盘,当按键较多时,这样的接法占用的口线较多。当按键接成矩阵的形式,可以节省口线,本次设计用P2口接成44矩阵。键盘接口均要解决如下三个主要问题: (1)去抖动。消除按键抖动通常有两种方法:硬件消抖和软件消抖。硬件消抖是通过在按键输出电路上加入一定的硬件线路来消除抖动,一般采用RS触发器或单稳态电路。 另一种方法是利用软件延时。当键数较多时经常用软件延时的方法来消除抖动。当CPU检测出有键按下后,先执行一个延时20ms的子程序,待前沿抖动消失后再判断此次按键是否按下,如果没有则表示是误按;如果键盘仍然闭合,则又执行一次延时20ms的子程序以键盘后延抖动的影响,然后再检测下次按键。(2) 串键保护。串键保护是指两个键同时按下时产生的保护作用。最简单的办法是当只有一个键按下时才读取键盘的输出,最后仍被按下的键是有效的正确按键。当用软件扫描键盘时常借助这种方法。(3) 按键识别。识别键盘中被按键对应的编码。非编码键盘要通过编程方式提供按键编码,其优点是结构简单,成本低廉。图4.7 矩阵键盘电路图矩阵式键盘的工作过程可分为两步:第一步是CPU首先检测键盘上是否有键按下;第二步是识别是哪一个键按下。首先将全部行线Y0-Y3置低电平,然后检测列线的状态。只要有一列的电平为低,则表示键盘中有键被按下,而且闭合的键位于低电平线与4根行线相交叉的4个按键之中。若所有列均为高电平,则键盘中无键按下。然后判断闭合键所在的位置,在确认有键按下后,即可进入确定具体闭合键的过程。其方法是:依次将行线置为低电平,即在置某根行线为低电平时,其它线为高电平。在确定某根行线位置为低电平后,再逐行检测各列线的电平状态。若某列为低,则该列线与置为低电平的行线交叉处的按键就是闭合的按键。4.5串行通信原理及实现4.5.1串行通信概述 串行通信中,数据的各位按时间顺序依次在一根传输线上传输,数据的各位依次由源到达目的地。其特点是通信线路简单,只要一对传输线就可以实现双向通信,并可以利用电话线,从而大大降低了成本,特别适用于远距离通信。在数据位数较多、传输距离较长的情况下,这个优点更为突出,但相对于并行通信,其传送速度较慢。所以串行通信适于长距离、中低速的通信。 在串行通信中,数据通常在两个站之间双向传送。这种传送又根据需要分为单工传送、半双工传送和全双工传送。串行通信是通过串行接口实现的,串行通信接口通常具有实现数据格式化、进行串并转换、控制数据的传输速率、传输差错控制进行TTL和ELA电平转换的任务。串口是计算机上一种非常通用设备通信的协议,不要与通用串行总线Universal Serial Bus或者USB混淆。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议,很多GPIB兼容的设备也带有RS-232口。RS-232C是EIA(美国电子工业协会)1969年修订RS-232C标准。RS-232C定义了数据终端设备(DTE)与数据通信设备(DCE)之间的物理接口标准。其功能特性如图4.8所示图4.8 RS-232标准接口4.5.2单片机串行通信电路通信速率和通信距离这两个方面是相互制约的,降低通信速率,可以提高通信距离。对于不同的通信距离,串行通信有不同的连接方法。对于近距离单片机与单片机之间的通信,可以使用如图4.9所示的方法,由于传输距离近,不需要使用RS-232电平,仅使用TTL电平即可,所以直接将两个单片机串行接口线RxD和TxD互相交叉连接,GND相连即可RxDTXDGND RxD TXD GND图4.9 单片机与单片机近距离通信的连接如果要实现单片机与PC的通信,必须要使用RS-232接口。由于PC上的串行接口使用的是RS-232标准,而单片机上的RxD和TxD使用的是TTL电平,所以单片机和PC之间需要一块电平转换芯片如(MAX232)。PC与单片机通信电路如图4.10所示图4.10 PC与单片机通信电路注:左边TxD和RxD为单片机最小系统的端口4.5.3串行通信波特率的设定波特率是指每秒传输字符的位数,其代表了串行通信发送或接受速率。串行通信的收发双发的速率要求一致。对于51系列单片机,产生波特率的时钟来源有两个:一个是来源于对系统时钟信号的分频,这种方式下的波特率都是固定的;另一个来源是定时器T1,T1工作于自动重载计数方式,即方式2下,波特率取决于定时器T1的溢出率,这种方式下的波特率是可变的。若要对波特率进行倍增,则需要设置特殊功能寄存器PCON的SMOD位的值,若SMOD=1则波特率倍增。51单片机的串行口是一个可编程的接口,其中串行口控制寄存器SCON中的SMO、SM1位指定串行口的工作方式SM0 SM1:00-方式0 波特率 /12 01-方式1 波特率 (T1溢出率) 10-方式2 波特率 ()/64 11-方式3 波特率 (T1溢出率) T1溢出率= ( X为T1计数初值)。 方式0:方式0为移位寄存器方式,是一种同步通信方式。其数据格式为8位,低位在前,高位在后,RxD为串行数据的发送端或接收端,TxD输出频率为/12的时钟脉冲。波特率固定为/12(为单片机晶振频率)。这种方式多用于并行接口的扩展。 方式1:为10位异步通信方式,每帧数据有一个起始位“0”,8个数据位和1个停止位“1”共10位构成。其中起始位和停止位在发送时是自动插入的。以TxD为串行数据的发送端,定时器T1提供移位时钟,RxD为数据的接收端,是波特率可变方式。方式2:11位异步发送/接收方式,即每帧数据由一个起始位“0”,9个数据位和1个停止位“1”组成,波特率固定。方式3:数据格式同方式2,不同的是波特率可变。4.6整体电路设计 图4.11 总设计电路图5.软件设计5.1使用软件介绍(1)利用protel进行硬件设计PROTEL是Altium公司在80年代开发的一款电子设计自动化软件,用于原理图、PCB、FPGA设计。该软件结合了板级设计与FPGA设计。2005年之后,软件改名为Altium designer。收购来的PCAD及TASKKING成为了 altium designer 的一部分。2009年推出altium designer winter09。在高速电路板布线方面,可进行差分对布线。 大型电路布线时处理速度较pads慢。在电子行业的CAD软件中,它当之无愧地排在众多EDA软件的前面,是电子设计者的首选软件,并且它在国内的普及率很高。(2) 利用Keil4软件完成应用系统设计(C语言)Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil则为其提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。2009年2月发布Keil Vision4,Keil Vision4引入灵活的窗口管理系统,使开发人员能够使用多台监视器,并提供了视觉上的表面对窗口位置的完全控制的任何地方。新的用户界面可以更好地利用屏幕空间和更有效地组织多个窗口,提供一个整洁,高效的环境来开发应用程序。新版本支持更多最新的ARM芯片,还添加了一些其他新功能。 2011年3月ARM公司发布最新集成开发环境RealView MDK开发工具中集成了最新版本的Keil uVision4,其编译器、调试工具实现与ARM器件的最完美匹配。(3) 利用protues软件进行仿真设计Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是比较好的仿真单片机及外围器件的工具。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是现今世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。(4) 利用stc-isp软件完成在系统编程、下载、并完成系统软件调试 STC-ISP 是一款单片机下载编程烧录软件,是针对STC系列单片机而设计的,可下载STC89系列、12C2052 系列和12C5410等系列的STC单片机,使用简便,现已被广泛使用。5.2软件设计流程 开始1)键盘扫描流程是否有键按下 否 是延时去抖后判断是否有键按下延时延时时延时获得键值 否 是 图5.1 键盘扫描流程输入模式2)输入功能实现流程 输入序号 回车 输入四位数据 否 是 保存数据 回车 结束 是 图5.2 输入功能实现流程 输出模式3)输出功能实现流程 输入序号 显示数据 结束 图5.3 输出功能实现流程4)串口通信流程(这里以发送流程的设计为例,已设定好串口通信模式和波特率) 通信模式 中断开启 开中断否否是 发送数据 发送完 显示数据 是图5.4 串口通信发送流程6.仿真结果及分析6.1数据输入(1) 点击运行按钮 图6.1 开始画面(2) 输入数据,在此以输入第一个数据和第二个数据为例 图6.2 点击“输入”按键 图6.3 输入序号1图6.4 按下“回车”键图6.5 依次输入四位数据 图6.6 按下回车,完成第一个数据的输入,准备输入第二个数据图6.7输入序号图6.8 输入四位数据6.2数据显示(在此以显示第一个和第二个为例)图6.9 按下模式“显示”键图6.10 输入序号“1”,显示第一个数据图6.11 输入序号“2”,显示第二个数据6.3数据通信图6.12开始画面图6.13 点击“通信”按钮图6.14 输入数据进行通信6.4仿真结果分析: 从仿真结果可以看出,本次实验设计电路满足数据输入、数据输出、数据通信的要求,功能选择键“回车”,“输入”,“显示”,“通信”等也运行正常,因此可以知道此次设计是成功的。7. 实物展示图7.1 输入输出显示图7.2 输出显示图7.2 串口通信8.心得体会本次课程设计是基于单片机最小系统的功能扩展,通过分析课程设计的要求,对每个模块进行具体设计。结合所学习的单片机的基础知识,将硬件和软件的知识全都联系起来。对于所需设计的模块,虽然是平时上课学过的东西,但是到了真正用到实际中的时候就发现书本上的知识根本不够,比如芯片的选取,电路的连接以及仿真过程中要进行所有模块的组合。通过借阅图书馆中的相关书籍并查阅有关资料,慢慢有了一些进展,首先通过protues进行原理图仿真,其中最重要的一部分便是通过Keil编写程序,程序的编写是非常繁重和复杂的过程,编写正确的程序以确保功能的正确实现,然后用Altiun Designer 进行电路图绘制和PCB设计。最后完成实物图的焊接。完成实物的焊接之后要借助STC-ISP烧录软件将程序烧进单片机中。通过本次课程设计,我不仅学到了关于单片机技术方面的许多专业知识,而且了解到了如何有效和快速的找到资料的方法。在出现问题时,通过与同学的交流,往往能解决自己不能发现的细微的问题。在交流中,不仅强化了自己原有的知识体系,也扩展了自己的思维。课设是一个通过思考、发问、自己解惑并动手、提高的过程。我会在以后的学习中不断学习。积累经验,完善自己。9.参考文献1 尹勇撒继铭等,单片计算机原理及应用(第1版), 科学出版社, 2013年2 谢自美.电子线路设计实验测试(第三版).武汉:华中科技大学出版社3 李群芳. 单片微型计算机与接口技术(第3版).电子工业出版社,20084 刘教瑜. 单片机原理及应用.武汉理工大学出版社,20115 张东亮. 单片机原理与应用.人民邮电出版社,20096张丽娜、刘美玲等51单片机系统开发与实践.北京航空航天大学出版社 ,20137郑峰、王巧芝等.51单片机应用系统典型模块开发大全,中国铁道出版社43附录:元件清单序号元件数量1电路板2块2单片机STC89C521只3晶振12MHz1只430PF瓷片电容2只510k电阻1只6100uF/25V电解电容1只71k电阻9只810k/9脚排阻1只95V/500mA直流电源1个10排针、按钮、LED、导线等若干11电烙铁1个12MAX2321片130.1uF瓷片电容 4只14DB9插座 1只15RS-232C串口电缆(9针)1根16四角开关17个173位共阳极数码管2个附录:总程序设计主系统程序:#includereg52.hvoid delay(unsigned char s);void keyscan(void);void keydown(void);void input(void);void screen(int smode);int test = 0;unsigned char int_on = 0; /用于刚进入通信模式时的初始化 只有在通信模式下需要打开中断1为中断已开化unsigned char temp; /读按键用的测试变量 unsigned char key;/按键序号 unsigned char MODE = 3; /模式选择,0为输入模式,1为显示模式,2为串口通信模式 unsigned char FUNC = 0;/功能选择,1为回车,2为清除 unsigned char reg104; /输入内容存放的数组 unsigned char dis_buf6;/显示缓存 unsigned char inputmode;/通过回车键来判断输入模式,0为输入序号,1为输入4位十进制数据 unsigned char group,datpos;/分别存储数据的组数和十进制数据位数unsigned char LedNum=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x84;void delay(unsigned char s) /延时函数int i,j;for(j=s;j=0;j-)for(i=125;i0;i-);void screen(int smode) /对数码管操作的函数 1为清空显示0号位光标 2为移位int p; if(smode=1)for(p=0;p0;p-)/显示缓存移位 dis_bufp = dis_bufp-1;void keyscan(void)/按键扫描函数 P2=0x0F; /低四位输入列为高电平行为低电平 temp=P2; /读P2口 temp=temp&0x0F;temp=(temp|0xF0);switch(temp)case 1: key = 0; break; / p2.0 被拉低 case 2: key = 1; break; / p2.1 被拉低 case 4: key = 2; break; / p2.2 被拉低 case 8: key = 3; break; / p2.3 被拉低 default: key = 16;temp = 0;P2=0xF0; /高四位输入行为高电平列为低电平 /delay(1);temp=P2; /读P2口 temp=temp&0xF0; /屏蔽低四位temp=(temp4)|0xF0);switch(temp)case 1:break; / p2.4 被拉低 case 2:key = key+4; break; / p2.5被拉低 case 4:key = key+8; break; /p2.6 被拉低 case 8:key = key+12;break; / p2.7 被拉低 default:key = 16;switch(key)case 3: /模式选择为输入 MODE = 0;inputmode=0; /从数据序号开始输入 key=16; /键盘序号置空 FUNC=0; /功能键置空 screen(1);break;case 7: /模式选择为显示 MODE = 1;key=16; /键盘序号置空 screen(1);break;case 11: MODE = 2;break;case 14: FUNC = 1;break;/按键功能选择 case 15: FUNC = 2;break;case 12: MODE = 3;break; /模式3为空余模式,可自定义或欢迎界面 default: switch(key)case 0:case 1:case 2: key+=7; break;case 8:case 9:case 10:key-=7; break;case 13:key=0;datpos+; /存数位数加一 if(datpos=4) datpos = 0;P2 = 0xf0;while(P2!=0xf0); /保证按键弹起后再跳出程序 void keydown(void) P2=0xF0;/delay(1);if(P2!=0xF0) /判断按键是否按下 如果按钮按下 会拉低P2其中的一个端口 keyscan(); /调用按键扫描程序 void input(void) if(FUNC=1) /回车时 输入模式切换 if(inputmode=1)screen(1);/清屏并在0号位输入光标else dis_buf2 = 0x08;/在2号位输入光标 inputmode=1-inputmode;FUNC = 0; /切换完成 功能变量置空 if(FUNC=2) inputmode = 0; /重新从数据组数开始输入 reggroup0 = 0;/清空已输入的错误数据 reggroup1 = 0;reggroup2 = 0;reggroup3 = 0;screen(1);FUNC = 0; if(key10) if(inputmode=0) group = key;/序号确认 dis_buf0 = LedNumgroup;datpos = -1;/数据键入位置归零 else if(inputmode=1) /对应组数据输入 dis_bufdatpos+2 = LedNumkey; reggroupdatpos = key; /*delay(1); */ void main()unsigned char LedSele=0x01,0x02,0x04

温馨提示

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

评论

0/150

提交评论