基于单片机的数字秒表设计.doc_第1页
基于单片机的数字秒表设计.doc_第2页
基于单片机的数字秒表设计.doc_第3页
基于单片机的数字秒表设计.doc_第4页
基于单片机的数字秒表设计.doc_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

河 南 农 业 大 学智能仪器设计实习秒表设计题 目: 姓 名: 指导教师: 成 绩: 时 间: 2014年12月5日 摘要 21世纪,单片机的发展非常的迅速。单片机是把主要计算机功能部件都集成在一块芯片上的微型计算机。它是一种集计数和多种接口于一体的微控制器,被广泛应用在智能产品和工业自动化上,而51单片机是个单片机中最为典型和最有代表性的一种。本设计的数字电子秒表系统采用STC89C52单片机为中心器件,利用其定时器/计数器定时和记数的原理,结合显示电路、LED数码管以及独立键盘来设计秒表,将软、硬件有机地结合起来。本设计的软件系统是用C语言编写的.包括一个定时器中断,4个独立键盘及软件消抖等。最后做成一个具有打开、关闭、复位、记忆功能的数字秒表。目 录1 引言1 1.1 单片机的背景及意义12 系统分析4 2.1 单片机的基本结构4 2.2 单片机的选择93.秒表的硬件设计12 3.1 LED显示电路12 3.2 键盘控制电路15 3.3 译码器的使用16 3.4 单片机晶振和复位电路174 秒表的软件设计19 4.1 C程序整体设计思路19 4.2 主程序设计20 4.3 中断设计215 软件调试和结果26 5.1软件调试与烧写26 5.2 硬件仿真27结束语30参考文献311 引言1.1 单片机的背景单片机即单片机微型计算机。用专业语言讲,单片机就是在一块硅片上集成了微处理器、存储器及各种输入输出借口的芯片,这样一块芯片就具有了计算机的属性,因为被称为单片机微型计算机,简称单片机。单片机的前身叫做单板机,是将CPU芯片、存储器芯片、I/O接口芯片和简单的I/O设备等装配在一块印刷电路板上,再配上监控程序,就构成一块单板机。单片机基本用于教学,后来发展为单片机。可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为它体积小,通常都藏在被控机械里。它在整个装置中,起着至关重要的作用,它出了毛病,整个装置就瘫痪了。现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词“智能型”,如智能型洗衣机、智能手机等。现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域。 2 整体设计方案2.1 单片机的基本结构单片机是一种可通过编程控制的微处理器,单片机芯片自身不能单独运用于工程或者产品上,它必须要依靠外围数字器件或者模拟器件的协调才能发挥自身的强大功能。单片机内部包含中央处理器CPU、程序存储器ROM、数据存储器RAM、I/O口、定时计数器、外部中断、串行通信等内部结构。 本设计采用ATMEL的AT89C52微处理器,主要基于以下几个因素:1) AT89C52为51内核,仿真调试的软硬件资源丰富。2) 性价比高,货源充足。3) 功耗低,功能强,灵活性高。4) DIP40封装,体积小,便于产品小型化。5) 为EEPROM程序存储介质,1000次以上擦写周期,便于编程调试。6) 工作电压范围宽:2.7V6V,便于交直流供电。2.2 单片机的选择单片机微型计算机是微型计算机的一个重要分支,也是颇具有生命力的机种。单片机微型计算机简称单片机,特别适用控制领域,故又称为微控制器。通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可称为一个单片机控制系统。89系列单片机以其卓越的性能、完善的兼容性、快捷便利的电擦写操作,低廉的价格、超强的加密功能,完全替代87C51/62和8751/52,低电压、低电源、低功耗,有DIP、PLCC、QFP封装,有民用型、工业级、汽车级、军品级等多种温度等级,是当今世界上性能最好、价格最低、最受欢迎的八位单片机。STC89C52为40 脚双列直插封装的8 位通用微处理器,采用工业标准的C51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主IC 内部寄存器、数据RAM及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外遥控信号IR的接收解码及与主板CPU通信等STC89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。3.秒表的硬件设计3.1 LED显示电路单片机系统中常用的显示器有:发光二极管LED(Light Emitting Diode)显示器、液晶LCD(Liquid Crystal Display)显示器、CRT显示器等。LED、LCD显示器有两种显示结构:段显示(7段、米字型等)和点阵显示(58、88点阵等)。这里我们采用的是发光二管LED。本次设计中,采用的是共阴极数码管。将共阴极数码管一端接地,一端接在单片机上,通过操纵单片机的高低电平,去控制数码管。LED显示器工作方式有两种:静态显示方式和动态显示方式。1静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5840根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢,实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。静态显示的特点是每个数码管的段选必须接一个8位数据线来保持显示的字形码。当送入一次字形码后,显示字形可一直保持,直到送入新字形码为止。这种方法的优点是占用CPU时间少,显示便于监测和控制。缺点是硬件电路比较复杂,成本较高。2.数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划a,b,c,d,e,f,g,dp的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低,如表1,为数码管显示的16进制代码。表1 8段数码管显示数表0x3f00x06 10x5b 20x4f 30x66 40x6d 50x7d 60x07 70x7f 80x6f 90x77 A0x7c B0x39 C0x5e D0x79 E0x71 F0x00无显示动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。3.2 键盘控制电路键盘是指经过系统安排操作一台机器或设备的一组键(如打字机、电脑键盘),主要的功能是输入资料.从编码的功能上,键盘又可以分成编码键盘和非编码键盘两种。1编码键盘 键盘上闭合健的识别由专用的硬件编码器实现,并产生键编码号或键值(计算机键盘靠软件编码来识别)。编码键盘是由硬件完成键盘识别功能的,它通过识别键是否按下以及所按下键的位置,由全编码电路产生一个唯一对应的编码信息(如ASCII码)。非编码键盘是由软件完成键盘识别功能的,它利用简单的硬件和一套专用键盘编码程序来识别按键的位置,然后由CPU将位置码通过查表程序转换成相应的编码信息。2非编码键盘靠软件编码来识别的键盘。非编码键盘的速度较低,但结构简单,并且通过软件能为某些键的重定义提供很大的方便。单片机一般都是编码键盘。而对于单片机的非编码键盘,又分为独立键盘和行列式键盘。行列式键盘又可称为矩阵键盘。矩阵键盘分为很多种,我们这里用的是4*4的矩阵键盘。很明显,共有16个按键,如果每个都当做是独立键盘使用的话,当应该有16个借口与此相连接,对于总共就40的借口的AT89C52单片机来说,实在是浪费资源。如果按键更多的话,则更加不好使用。所以出现了矩阵键盘。矩阵键盘,只用8个I/O接口,也就是P3口就控制了全部的16个键盘,十分的节省资源。对于这16个按键,我们可以把他们分成4行、4列。其中的4行分别接P3.0、P3.1、P3.2、P3、3。而他们的4列则接在P3.4、P3.5、P3.6、P3.7上。这样可以通过行与列的高低电平来判断哪个键盘被按下了。举个例子,我们现在按下了第一个键盘,但是计算机并不知道是哪个按键按下,这样计算机当然无法进行相应的操作。此刻,可以在程序中,对P3口分别赋值,进行4次判断,先判断到底是哪行被按下,这样就可以把范围缩小到某一行。然后在改行的判断语句中,再进行4次比较,找出是哪一列的键盘发生变化,这样就可以轻松的找到到底按下的是哪一个按键了。不过在程序中需要进行多次判断,也就是说,每一次按下按键后,计算机必须对所有的程序扫描一遍才可以。3.3 译码器的使用译码器的种类很多,但它们的工作原理和分析设计方法大同小异,其中二进制译码器、二-十进制译码器和显示译码器是三种最典型,使用十分广泛的译码电路。译码器是典型的组合数字电路,译码器是将一种编码转换为另一种编 译码器码的逻辑电路,学习译码器必须与各种编码打交道。从广义的角度看,译码器有四类:二进制码译码器,也称最小项译码器,N中取一译码器,最小项译码器一般是将二进制码译为十进制码;代码转换译码器,是从一种编码转换为另一种编码;显示译码器,一般是将一种编码译成十进制码或特定的编码,并通过显示器件将译码器的状态显示出来。编码器,一般是将十进制码转换为相应的其它编码,其实质与代码转换译码器一样,编码是译码的反过程。对于数码管的为选,我采用译码器与其连接。用Y0到Y7分别连接在8个数码管的为选,然后A0、A1、A2分别连接在P2.0、P2.1、P2.2口。这样可以对P2口赋值,实现控制数码管的过程,如表2,为译码器编译的二进制代码。表2 译码器编译表 输 入 输 出A2 A1 A0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 10 0 0 0 0 0 0 10 0 0 0 0 0 1 00 0 0 0 0 1 0 00 0 0 0 1 0 0 00 0 0 1 0 0 0 00 0 1 0 0 0 0 00 1 0 0 0 0 0 01 0 0 0 0 0 0 03.4 单片机晶振和复位电路对于单片机来说,想让单片机运行必须要有:电源、晶振和复位电路。如果没有这几个必备条件,单片机无法正常运行。晶振单片机系统里都有晶振。全称叫做晶体振荡器,如图4所示,他结合单片机内部电路产生所需的时钟频率,单片机晶振提供的时钟频率越高,哪儿单片机运行的速度就越快,单片机接的一切指令的执行都是建立在单片机晶振提供的时钟频率。单片机晶振的作用是为系统提供基本的时钟信号,晶振通常和锁相环电路配合作用,以提供系统所需的时钟频率。对于89S52来说,片内设有一个由反向放大器所构成的振荡电路,XTAL1和 XTAL2分别为振荡电路的输入和输出端,89S52单片机的时钟信号通常用两种电路形式得到:内部振荡方式与外部振荡方式。电容器C1、C2起稳定振荡频率、快速起振的作用,电容值一般为533pF。但在时钟电路的实际应用中一定要注意正确选择其大小,并保证电路的对称性,尽可能匹配,选用正牌的瓷片或云母电容,如果可能的话,温度系数尽可能低。本设计中采用大小为30pF的电容和12MHz的晶振。复位电路关于单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值,复位是一个很重要的操作方式。但单片机本身是不能自动进行复位的,必须配合相应的外部电路才能实现,如图5所示。当AT89C52单片机的复位引脚RST出现2个机器周期以上的高电平时,单片机就完成了复位操作。如果RST持续为高电平,单片机就处于循环复位状态,而无法执行程序。因此要求单片机复位后能脱离复位状态。而本系统选用的是12MHz的晶振,因此一个机器周期为1s,那么复位脉冲宽度最小应为2s。4 秒表的软件设计4.1 C程序整体设计思路一个程序应该包括两方面的内容。一个是对数据的描述,一个是对操作的描述。对数据的描述是指在程序中要指定数据的类型和数据的组织形式,即数据结构;对操作的描述即操作步骤,也就是算法。数据是操作的对象,操作的目的是对数据进行加工处理,已得到期望的结果。一个程序除了以上两个主要要素之外,还应当采用结构化程序设计方法进行程序设计,并且某一种计算机语言表示,在设计一个程序的时候要综合运用这几方面的知识。对于一个算法应该包括以下特点:1.有穷性2确定性3有零个或多个输入4有一个或多个输出5有效性我们在这个设计中,采用的就是C语言。4.2 主程序设计在本软件设计中,用到了6个数码管,3个独立键盘,一个定时器中断,还有一些复位电路等等。对于本程序设计的结果;首先,当硬件上电后在数码管上显示了6个零,最右边的两位数为秒位,最前面2位每一次循环是60次,没循环一次的时间是一秒钟。程序定义的3个独立键盘,第一个是启动秒表,按下去后,经过软件判断,秒表开始启动。第二个按键是停止按键,按下后,秒表停止,此刻显示的时间就是停止的时候的时间。最后一个按键是复位按键,按下后,时间归零,再按下第一个按键可以从新开始计时。以上是程序的大概要求。那么对于程序设计思路是:首先,开始,运行程序,接着进入主函数。第一步就是对程序的初始化了,对刚开始的数码管显示以及定时器的打开,定时器的高八位和第八位的复制,定时器的启动等进行初始化。完成了这个工作后,进入一个大循环,在该循环里,就是本程序的主要部分了。因为我是同时亮6个数码管,必然采用的是动态显示;因为有一个定时器中断,则必然有一个中断程序,由于采用的是T0定时器,所以优先级别是1.在主程序中,主要部分就是对按键的判别,因为有3个按键,所以要判别3次。对第一个按键,首先判定按键有没有按下,如果按下,什么也不做,直接判断有没有松开按键,一旦松开后,则立刻启动定时器,此刻定时器开始运行。对于第二个按键,还是首先判断有没有按下,一旦按下,立刻停止定时器,同时对16位定时计数器的高八位和第八位再赋值一次,和以前的赋值是一样的。此刻,数码管上的数字不再改变,秒表停止。接着是最后一个按键,还是判断有没有按下按键,一旦按下,对数码管运行的数全部清零,清零后,数码管再次显示6个零。如果此时再按下第一个按键,秒表从新开始运行,以此类推如图6所示。4.3 中断设计中断是指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。 中断是单片机实时地处理内部或外部事件的一种内部机制。当某种内部或外部事件发生时,单片机的中断系统将迫使CPU暂停正在执行的程序,转而去进行中断事件的处理,中断处理完毕后,又返回被中断的程序处,继续执行下去。对于51单片机内部一共有5个中断源,也就是说,有5中情况发生的时候,会使单片机去处理中断程序。而对于52单片机,多了一个T2定时器中断。对于单片机来讲,中断是指CPU在处理某一件事情A时候,突然发生了另外一件事B,请求CPU迅速去处理;CPU暂时停止当前的工作,转而去处理事件B;待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A。引起CPU中断的根源,称为中断源,如表3所示,该过程就叫做中断系统。中断的开启和关闭,设置启用那一个中断等都是由单片机内部的一些特殊功能寄存器决定的。同时,与中断有关的还有一个中断嵌套:单片机在处理事件A,此刻有了一个中断B,程序接着执行B,这个时候,又有了一个中断C,那么如果该C中断优先级高于B中断的话,可以先去执行C中断,执行完后再返回B,接着把B执行完,然后再返回A程序,继续执行以下内容。对于51单片机可以实现2级中断嵌套,对于52单片机可以实现4级中断嵌套。表3 单片机中断源中断源中断标志中断服务程序入口优先级顺序外部中断0IE00003H0 定时/计数器TF0000BH 1外部中断1IE10013H2定时/计数器1TF1001BH3串行口EI或TI0023H4如表3就是关于中断的优先级。这里介绍5个中断源。最高的为外部中断0,这个是P3.2口的第二功能引脚,低电平或者下降沿有效;其次为定时/计数器0,此为P3.4口得第二功能引脚有T0计数器计数满回零引起;第三位是外部中断1,此为P3.3口的第二功能引脚,低电平或者下降沿有效;第四是定时/计数器1,此为P3.5口得第二功能引脚,有T1计数器计满回零引起。TI/RI串行口中断,串行口完成一系字符发送/接收后引起。对于AT89C52来说,还多了一个T2定时/计数器2中断,是由T2计数器计满回零引起。对于单片机的中断来说,有4个寄存器至关重要,分别是中断允许寄存器IE;中断优先级寄存器IP;定时/计数器工作方式寄存器TMOD;定时/计数器控制寄存器TCON。1.IE该IE中断允许存器,用来设定各个中断源的打开和关闭,IE在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8HAFH,该寄存器可以进行位寻址,可以对该寄存器的每一位进行单独操作,如表4所示。表4 IE寄存器位序号D7D6D5D4D3D2D1D0位符号EA-ET2ESET1EX1ET0EX0位地址AFH-ADHACHABHAAHA9HA8H1)对于EA,是全局中断允许位。所有中断的开启都和此位有关。如果该位为低电平,那么所有的中断都不能用,没有开启。除非该位为高电平,开启总中断,其他中断才有可能开启。具体情况要根据具体的程序。2) 对于ET2是定时器/计数器0中断允许位。当EA打开时,如果ET2为高电平,则开启定时/计数器0,如果ET2为低电平,则关闭定时/计数器。3)对于ES,是串口中断允许位。当EA打开后,如果ES为高电平,那么串口中断打开,如果ES为低电平,那么串口中断关闭。4)对于ET1,是定时器/计数器1中断允许位。当EA打开后,如果ET1为高电平,则开启定时/计数器1中断,如果ET1为0, 则关闭该位。5)对于EX1,是外部中断1中断允许位。在EA开启后,如果EX1为高电平,则开启外部中断1,如果EX1为低电平,则关闭外部中断。6)对于ET0是定时器/计数器0中断允许位。当EA打开时,如果ET0为高电平,则开启定时/计数器0,如果ET0为低电平,则关闭定时/计数器。7)对于EX0是外部中断0允许位。当EA打开时,如果EX0为低电平,则开启外部中断0,如果EX0为低电平,则关闭定时/计数器。2.IP对于中断优先级寄存器IP是在特殊功能寄存器中,字节是B8H,位地址从B8H到BFH,IP用来设定各个中断源属于二级中断中的哪一级。该寄存器可进行位寻址,既可以对该位寄存器的每一位进行单独操作,如表5所示。1)PS为串行口中断优先级控制位。如果串行口中断定义为高电平则为高优先级中断,若定义为低电平则为低优先级中断。2)PT1为定时器/计数器1中断优先级控制位。如果PT1为高电平则其为高优先级中断,若为低电平则为低优先级中断。3)PX1为外部中断1中断优先级控制位。若PX1为高电平则为高优先级控制位,若为低电平则为低优先级控制位。4)PT0为定时器/计数器1中断优先级控制位。如果PT0为高电平则其为高优先级中断,若为低电平则为低优先级中断。5)PX0为外部中断1中断优先级控制位。若PX0为高电平则为高优先级控制位,若为低电平则为低优先级控制位。表5 IP寄存器位序号D7D6D5D4D3D2D1D0位符号-PSPT1PS1PT0PS0位地址-BCHBBHBAHB9HB8H3.TMODTMOD为定时器/计数器的工作方式寄存器,确定工作方式和功能。定时器/计数器工作方式寄存器在特殊功能寄存器中,字节地址为89H,不能位寻址,MOD用来确定定时器的工作方式及功能选择。由表6可以看出,TMOD的高四位用于设置定时器1,第四位用于设置定时器0,下面直说下后四位。表6 TMOD寄存器TMOD位D7D6D5D4D3D2D1D0字节地址GATEC/M1M0GATEC/M1M01)GATE为门控制位。当GATE为0时,定时器/计数器启动与停止仅受TCON寄存器中的TRX来控制。如果GATE为高电平,则其启动与停止由TCON寄存器中的TRX何外部中断引脚共同控制位。2)C/为定时器模式和计数器模式的选择位。如果为高电平,则为计数器模式,如果为低电平则为定时器模式。3)MIM0为工作方式选择位。当M1=0且M0=0的时候,为方式0,是13位定时/计数器;当M1=0且M0=1的时候,为方式1,是16位的定时/计数器。M1=1且M0=0的时候,为方式2,是8位初值自动重装的8位定时器/计数器;当M1=1且M0=1的时候,为方式3,是仅适用于T0,分成两个8位计数器,T1停止计数。4.TCONTCON为定时/计数器控制寄存器,也在特殊功能寄存器中,字节地址为88H,位地址分别是从88H到8FH,该寄存器可以进行位寻址。TCON寄存器用来控制定时器的启动、停止、标志定时器的溢出和中断情况,如表7所示。表7 TCON寄存器TCON位76543210字节地址TF1TR1TF0TR0IE1IT1IE0IT0 1)TF1为定时器1溢出标志位。当定时器1计满溢出时,由硬件使TF1置1,并申请中断。进入中断服务程序后,由硬件自动清零。 2) TR1为定时器1运行控制位。由软件清0关闭定时器1.当GATE为1时,且INT1为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1启动定时器。3)TF0为定时器1溢出标志位。当定时器0计满溢出时,由硬件使TF0置1,并申请中断。进入中断服务程序后,由硬件自动清零。4)TR0为定时器0运行控制位。由软件清0关闭定时器1.当GATE为1时,且INT0为高电平时,TR0置1启动定时器1;当GATE=0时,TR0置1启动定时器。5)IE1外部中断1请求标志。6)IT1为外部中断1触发方式选择位。如果为高电平,则是电平触发方式,引脚INT1上低电平有效。如果为低电平,则为跳变沿触发方式。7)IE0外部中断0请求标志。8)IT0为外部中断1触发方式选择位。如果为高电平,则是电平触发方式,引脚INT0上低电平有效。如果为低电平,则为跳变沿触发方式。5 软件调试和结果5.1软件调试与烧写单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,如图7所示。这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。图7 在KEIL中编辑程序Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil几乎就是你的不二之选(目前在国内你只能买到该软件、而你买的仿真机也很可能只支持该软件),即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。C51工具包的整体结构,uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及C51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。图8为在编辑程序时所用的软件KILE.通过此程序对软件进行编辑,编译,调试。 图8 STC-ISP下载程序软件通过这两种软件,把程序下载到单片机中,可最终得到所需要的结果。5.2 硬件仿真Proteus软件是英国Labcenter electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。Proteus软件具有其它EDA工具软件(例:multisim)的功能。比如:原理布图;PCB自动或人工布线;SPICE电路仿真;互动的电路仿真 ;用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。本次设计的硬件仿真,采用的就是proteus。进入软件后,在DEVICES中,可以找的到各种元器件。本次设计需要8个电阻,4个键盘,8个数码管,和一个52单片机,还有各种电源和接地。其中8个电阻的作用是起到上拉电阻的功能。因为在P0口,如果没有上拉电阻,那么P0口单独提供的电流很小,不能让数码管亮起来。如果加上8个电阻链接在P0口,在电阻的另外一端接上5V的电压。可以提高通过数码管的电流,使其发亮。由图6可以看出,左上角的8个电阻就是上拉电阻,和P0口连接在一起;同时数码管段选也同时全部连接在P0口;而数码管的位选连接在译码器74HC138上,而译码器连接在单片机的P2口,通过P2的三个口去操纵单片机的8个位,很节省资源;右下脚的4个独立按键,一端全部连接在地上,另一端连接在P3口上;数码管总共有8个,从左到右,前4个数码管,是秒表,前两位是秒,后两位记录60次为一秒;而后4个数码管有记忆功能,可以存储当前的时间,也可以存储一次记录的时间图9为仿真结果启动秒表以前 启动秒表后 复位键按下后暂停键按下以后按键左一为启动,左二为暂停,左三为复位软件运行原程序为:#include#include#define uint unsigned int;#define uchar unsigned char;sbit dula=P26;sbit wela=P27;sbit k1=P34;sbit k2=P35;sbit k3=P36;uchar a,b,x,num1,num2,num3,num4,num5,num6,temp1,temp2,temp3;uint c,temp;uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;void delay(unsigned int x);void init();void keyscan();void main()init();wela=1;P0=0xfe;temp=P0;wela=0;dula=1;P0=0x3f;dula=0;while(1)wela=1;P0=temp;wela=0;if(temp=0xfe)dula=1;P0=tablenum6;dula=0;if(temp=0xfd)dula=1;P0=tablenum5;dula=0;if(temp=0xfb)dula=1;P0=tablenum4;dula=0;if(temp=0xf7)dula=1;P0=tablenum3;dula=0;if(temp=0xef)dula=1;P0=tablenum2;dula=0;if(temp=0xdf)dula=1;P0=tablenum1;dula=0;delay(2);temp=_crol_(temp,1);if(temp=0xbf)temp=0xfe;if(c=1)num1+;c=0;if(num1=10)num1=0;num2+;if(num2=10)num2=0;num3+;if(num3=10)num3=0;num4+;if(num4=6)num4=0;num5+;if(num5=10)num5=0;num6+;if(num6=6)num6=0;keyscan();void delay(unsigned int x)for(a=x;a0;a-) for(b=110;b0;b-);void init()c=0;num1=num2=num3=num4=num5=num6=0;TMOD=0x01;TH0=(65535-10000)/256;TL0=(65535-10000)%256;EA=1;ET0=1;TR0=0;void timer() interrupt 1TH0=(65535-10000)/256;TL0=(65535-10000)%256;c+;void keyscan()k1=k2=k3=1;temp1=k1;temp2=k2;temp3=k3;if(temp1=0)TR0=0;if(temp2=0&TR0=0)TR0=1;if(temp3=0)TR0=0;num1=num2=num3=num4=num5=num6=0;结 论单片机可以应用于各个领域,而单片机本身也是融合了各个领域的知识。我们可以通过单片机去实现很多的电子产品,因为它的应用领域非常的广泛,所以发展很迅速。本次设计,先通过KEIL软件对软件进行编辑、调试、编译,通过此次长达数天的编辑,对单片机C语言编写应用的更加熟练;然后通过STC-ISP软件学习如果在单片机种下载程序代码;通过proteus软件,对数字秒表的硬件进行仿真。本次设计时以单片机为中心进行设计,但是仅仅有单片机的知识还不够,同时还需要具有硬件的知识和软件的知识,并将它们有机的结合起来。首先要通过硬件知识去设计整个电路,然后通过C语言去写数字秒表的C语言设计。同时,由于STC89C52单片机的ROM只有8KB,所以还要注意内存的应用;还要注意如何设计硬件和软件,去增加运行速度和计数精度。参考文献1阎石.数字电子技术基础M.北京:高等教育出版社,2006年5月第5版2胡健,刘玉宾,朱焕立等.单片机原理及接口技术M.北京:机械工业出版社,2009年7月第一版3郭天祥.51单片机C语言教程M.北京:电子工业出版社,2009年12月第一版4谭浩强.C程序设计M.北京:清华大学出版社,2005年7月第三版.5郑学坚,周斌.微型计算机原理及应用M.北京:清华大学出版社,第三版6Kai E, Sawata S, Lkebukuro K et al. Detection of PCR product in solution using surface plasmon resonance .Analytical Chemistry, 1999.7.1 :7968007毕维峰.

温馨提示

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

评论

0/150

提交评论