资源描述
单片机电子时钟摘要:在日常生活中,电子时钟与我们密切相关,在很多地方都会用到电子时钟。除了专用的时钟、计时显示牌外,许多应用系统常常也带有实时时钟显示,如各种智能化仪器仪表、工业过程控制系统以及家用电器等。实现电子时钟的方法有多种,通过前面我们对单片机基本理论及相关知识的学习,在这里,要求用单片机为主控制芯片设计一简单的单片机电子时钟。近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。关键词:电子时钟;单片机;计时SCM Electronic ClockAbstract:In our daily life, the electronic clock is closely related to the electronic clock which will be used in many places. In addition to a dedicated clock, timing licenses, there are many applications which often with real-time clock display, such as a variety of intelligent instrumentation, industrial process control systems and home appliances. There are many ways to realize the Electronic clock, through the front of learning our SCM basic theory and related knowledge, here, the microcontroller-based control chip design a simple single-chip electronic clock. With the development of computer penetration in the social field and LSI in recent years, the using of microcontroller applications is constantly go deeper, because it has the features of a small size, low power consumption, cheap, reliable, easy to use. Therefore it is particularly suitable for the control of the system, more and more widely used in automatic control, Intelligent instruments, data acquisition, and military products and home appliances, SCM often used as a core component in the structure, according to the specific hardware and software for application-specific object characteristics combined to make perfect.Keywords: electronic clock; microcontroller; timing目录第一章 引言11.1课程设计的目的11.2课程设计内容1第二章 总体方案设计22.1 总体思想-方案论证22.2方案的选择2第三章 硬件系统设计43.1总电路设计43.2器件的介绍43.3单元模块设计6第四章 软件系统设计94.1软件程序思想94.2主程序及流程图94.3子程序及流程图12第五章 系统仿真165.1 KEIL 51介绍165.2 PROTEUS介绍205.3仿真过程及仿真结果28第六章 结束语29致谢30参考文献31第一章 引言1.1课程设计的目的本次设计中以单片机的发展过程和发展方向为背景,介绍了单片机的输入输出的工作原理和操作方法,中断的工作原理和操作方法,74LS164译码器的工作原理和与LED连接的方法。通过它可以进一步学习与掌握单片机原理与使用方法。目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。下面是单片机的主要发展趋势。单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。单片机模块中最常见的是数字钟,数字钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能酿成大祸。数字钟是采用数字电路实现对.时,分,秒.数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。1.2课程设计内容本次做的数字钟是以单片机(AT89C51)为核心,结合相关的元器件(共阴极LED数码显示器、数码管驱动器74LS164等),再配以相应的软件,是它具有星期,时,分,秒显示的功能,并且时,分,秒还可以调整。此次设计电子数字钟是为了了解电子数字钟的原理,从而学会制作电子数字钟。而且通过电子数字钟的制作进一步的了解各种在制作中用到的中小规模集成电路的作用及实用方法。第二章 总体方案设计2.1 总体思想-方案论证1计时方案单片机电子时钟计时有两种方法:第一种是通过单片机内部的定时器/计数器,采用软件编程来实现时钟计时,这种实现的时钟一般称为软时钟,这种方法的硬件线路简单,系统的功能一般与软件设计相关,通常用在对时间精度要求不高的场合;第二种是采用专用的硬件时钟芯片计时,这种实现的时钟一般称为硬时钟。专用的时钟芯片功能比较强大,除了自动实现基本计时外,一般还具有日历和闰年补偿等功能,计时准确,软件编程简单,但硬件成本相对较高,通常用在对时钟精度要求较高的场合。2显示方案对于电子时钟而言,显示是另一个重要的环节。显示通常采用两种方式:LED数码管显示和LCD液晶显示。其中LED数码管显示亮度高,显示内容清晢,根据具体的连接方式可分为静态显示和动态显示,在多个数码管时一般采用动态显示,动态显示时须要占用CPU的大量时间来执行动态显示程序,显示效果往往和显示程序的执行相关。LCD液晶显示一般能显示的信息多,显示效果好,而且液晶显示器一般都带控制器,显示过程由自带的控制器控制,不须要CPU参与,但液晶显示器造价相对较高。为了便于比较与学习,这里给出两种设计方案,一种是软件计时LED数码管显示的单片机电子时钟,另一种是硬件定时LCD液晶显示的单片机电子时钟。软件计时LED数码管显示的单片机电子时钟总体设计框图如图2-1所示。硬件定时LCD液晶显示的单片机电子时钟总体设计框图如图2-2所示。51单片机时钟电路复位电路LED按键 51单片机时钟电路复位电路LCD按键时钟芯片图2-1 软件计时LED显示时钟总体框图 图2-2硬件定时LCD显示时钟总体框图2.2方案的选择对于电子时钟而言,显示是另一个重要的环节。显示通常采用两种方式:LED数码管显示和LCD液晶显示。其中LED数码管显示亮度高,显示内容清晢,根据具体的连接方式可分为静态显示和动态显示,在多个数码管时一般采用动态显示,动态显示时须要占用CPU的大量时间来执行动态显示程序,显示效果往往和显示程序的执行相关。LCD液晶显示一般能显示的信息多,显示效果好,而且液晶显示器一般都带控制器,显示过程由自带的控制器控制,不须要CPU参与,但液晶显示器造价相对较高。掌握单片机最小系统的电路原理图;硬件的焊接、连接;独立编辑、编译软件;上电以后自动进入计时状态,起始于00:00:00。设计键盘调整时间,完成时间设计。定时时间为1/20秒,采用定时器实现。采用LED数码管显示,时、分,秒采用数字显示。采用24小时制,具有方便的时间调校功能。第三章 硬件系统设计3.1总电路设计软件计时LED数码管显示的时钟的具体硬件电路如图3-1所示,其中单片机采用应用广泛的AT89C51,系统时钟采用12MHz的晶振,8个数码管显示,小时与分钟、分钟与秒钟之间用短横线间隔,采用共阳极七段式数码管,由于并口上没有连接其它的硬件电路,所以P0口直接作段选码输出端,P2口作位选码输出端。采用简化按键方式,只设定3个开关K0、K1和K2,通过P1口低3位相连。其中K0键为调时模式选择键,K1为加1键,K2为减1健。图3-1 软件计时LED显示时钟硬件电路图3.2器件的介绍定时计数器:定时/计数技术在计算机系统中具有极其重要的作用。计算机系统都需要为CPU和外部设备提供定时控制或对外部事件进行计数。例如,分时系统的程序切换,向外部设备输出周期性定时控制信号,对外部事件个数统计等。另外,在检测、控制和智能仪器等设备中也经常会涉及到定时。因此,计算机系统必须有定时和计数技术。定时/计数的本质是计数,对周期性信号计数就实现定时。通常,实现定时的方法有三种:软件定时、硬件定时、可编程定时。软件定时是利用CPU执行指令需要若干指令周期的原理,运用软件编程,然后循环执行一段程序而产生延时,再配合简单输出接口可以向外送出定时控制信号。这种方法的优点是不需要增加硬件或硬件很简单,只需要编制相应的延时程序以备调用。缺点是执行延时程序占用了CPU时间,所以定时的时间不宜太长,且在某些惰况下不宜使用。硬件定时是通过硬件电路(多偕振荡器件或单稳器件)实现定时,故定时参数的调整不灵活,使用不方便,其成本较低。可编程定时结合了软件定时使用灵活和硬件定时独立的特点,它以大规模集成电路为基础,通过编程即可改变定时时间或工作方式,又不占用CPU的执行时间。在计算机系统中通常用到的是可编程定时,51单片机内部就集成了可编程的定时/计数器,它是51单片机中使用非常频繁的重要功能模块。LED显示器:LED数码管显示器是由发光二极管按一定的结构组合起来的显示器件。在单片机应用系统中通常使用的是7段或8段式LED数码管显示器,8段式比7段式多一个小数点。这里以8段式来介绍,单个8段式LED数码管显示器的外观与引脚如图3-2所示,其中a,b,c,d,e,f,g和小数点dp为8段发光二极管,位置如图中所示,组成一个“”形状。(a) 引脚图 (b) 共阴极 (c) 共阳极图3-2 8段式LED数码管引脚与结构8段发光二极管的连接有两种结构:共阴极和共阳极。如图3-2所示。其中,图(b)为共阴极结构,8段发光二极管的阴极端连接在一起,阳极端分开控制,使用时公共端接地,要使哪根发光二极管亮,则对应的阳极端接高电平;图(b)为共阳极结构,8段发光二极管的阳极端连接在一起,阴极端分开控制,使用时公共端接电源,要使哪根发光二极管亮,则对应的阴极端接地。LED数码管显示器显示时,公共端首先要保证有效,即共阴极结构公共端接低电平,共阳极结构公共端接高电平,这个过程我们称为选通数码管。再在另外一端送要显示数字的编码,这个编码称为字段码,8位数码管字段码为8位,从高位到低位的顺序依次为dp、g、f、e、d、c、b、a。如:共阴极数码管数字“0”的字段码为00111111B(3FH),共阳极数码管数字“1”的字段码为11111001B(F9H),不同数字或字符其字段码不一样,对于同一个数字或字符,共阴极结构和共阳极结构的字段码也不一样,共阴极和共阳极的字段码互为反码。MCS-51:MCS-51系列单片机是美国Intel公司在1980年推出的高性能8位单片机,它包含51和52 两个子系列。对于51子系列,主要有8031、8051、8751 三种机型,它们的指令系统与芯片引脚完全兼容,仅片内程序存储器有所不同,8031芯片不带ROM,8051芯片带4KB的ROM,8751芯片带4KB的EPROM。51子系列单片机的主要特点如下。l 8位CPU。l 片内带振荡器,频率范围1.2 MHz12MHz。l 片内带128B的数据存储器。l 片内带4KB的程序存储器。l 程序存储器的寻址空间为64KB。l 片外数据存储器的寻址空间为64KB。l 128个用户位寻址空间。l 21个字节特殊功能寄存器。l 4个8位的并行I/O接口:P0、P1、P2、P3。l 两个16位定时/计数器。l 两个优先级别的5个中断源。l 1个全双工的串行I/O接口,可多机通信。l 111条指令,含乘法指令和除法指令。l 片内采用单总线结构。l 有较强的位处理能力。l 采用单一+5V电源。对于52子系列,有8032、8052、8752 三种机型。52子系列与51子系列相比大部分相同,不同之处在于:片内数据存储器增至256B;8032芯片不带ROM,8052芯片带8KB的ROM,8752芯片带8KB的EPROM;有3个16位定时器/计数器;6个中断源。本书以51子系列的8051为例来介绍MCS-51单片机的基本原理。虽然MCS-51系列单片机的芯片有多种类型,但它们的基本组成相同。MCS-51单片机的基本结构如图3-3所示。图3-3 MCS-51的基本结构3.3单元模块设计51系列单片机是美国Intel公司在1980年推出的高性能8位单片机,它包含51和52 两个子系列。51单片机集成了中央处理器(CPU)、存储器系统(RAM和ROM)、定时计数器、并行接口、串行接口、中断系统及一些特殊功能寄存器(SFR),它们通过内部总线紧密的联系在一起。51单片机有40个引脚,在本次设计当中有很多口都没有使用,我们下面介绍的就是对本次设计最为重要的4个8位的并行I/O接口。表3-1 P3口的第二功能P3口第二功能P3.0RXD 串行口输入端P3.1TXD 串行口输出端P3.2INT0 外部中断0请求输入端,低电平有效P3.3INT1 外部中断1请求输入端,低电平有效P3.4T0 定时/计数器0外部计数脉冲输入端P3.5T1 定时/计数器0外部计数脉冲输入端P3.6WR 外部数据存储器写信号,低电平有效P3.7RD 外部数据存储器读信号,低电平有效51系列单片机有4个8位的并行I/O接口:P0、P1、P2和P3口。它们是特殊功能寄存器中的4个。这4个口,既可以作输入,也可以作输出,既可按8位处理,也可按位方式使用。输出时具有锁存能力,输入时具有缓冲功能。每个口的具体功能有所不同。P0口是一个三态双向口,可作为地址数据分时复用口,也可作为通用的I/O接口。它包括一个输出锁存器、两个三态缓冲器、输出驱动电路和输出控制电路组成。P1口只作通用I/O接口使用。P1口具有驱动4个LSTTL负载的能力。P2口有两种用途:通用I/O接口和高8位地址线。P3口除了作为通用I/O口使用外,它的每一根线还具有第二种功能,见表3-1。当P3口作为通用I/O接口时,第二功能输出线为高电平。当P3口作为第二功能时,锁存器的输出端必须为高电平,P3口的状态取决于第二功能输出线的状态。单片机复位时,锁存器的输出端为高电平。复位与复位电路复位是单片机的初始化操作,以便使CPU和系统中其他部件都处于一个确定的状态,并从这个状态开始工作。当单片机系统在运行出错或操作错误使系统处于死锁存时,也可按复位键重新启动。单片机复位后,PC内容初始化为0000H,那么单片机就从0000H单元开始执行程序。片内RAM为随机值,运行中的复位操作不改变片内RAM的内容。RST引脚是复位信号的输入端,复位信号是高电平有效,其有效时间应持续2个机器周期以上。按下复位按钮时,电源对外接电容器充电,使RST为高电平,复位按钮松开后,电容通过内部下拉电阻放电,逐渐使RST端恢复低电平。时钟信号有外部引入方式和内部振荡器方式两种方式。下面就来对两种方式进行简单地介绍:内部振荡方式51单片机内部有一个高增益的反相放大器,其输入端为引脚XTAL1,输出端为引脚XTAL2,用于外接石英晶体振荡器或陶瓷谐振器和微调电容,构成稳定的自激振荡器,其发出的脉冲直接送入内部的时钟电路。 外部引入方式常用于多片单片机组成的系统中,以便各单元之间的时钟信号同步运行。LED数码管是由发光二极管构成的,亦称半导体数码管。将条状发光二极管按照共阴极(负极)或共阳极(正极)的方法连接,组成“8”字,再把发光二极管另一电极作笔段电极,就构成了LED数码管。若按规定使某些笔段上的发光二极管发光,就能显示从09的系列数字。同荧光数码管(VFD)、辉光数码管(NRT)相比,它具有:体积小、功耗低、耐震动、寿命长、亮度高、单色性好、发光响应的时间短,能与TTL、CMOS电路兼容等的数显器件。+、-分别表示公共阳极和公共阴极。 ag是7个笔段电极,DP为小数点。另有一种字高为76mm的超小型LED数码管,管脚从左右两排引出,小数点则是独立的。 本系统利用6位LED数码管显示时间,共阴极结构。LED数码管由7段发光二极管组成,当要显示某个数字时只要将数字所对应的引脚送入低电平。本设计中主要有三个控制按键,按键功能为:(1)P3.2为调时间模式,长按P3.2进入调分状态:分单元闪烁,按P3.2加1,按P3.3减1.再长按P3.2进入时调整状态,时单元闪烁,加减调整同调分.按长按退出调整状态。 (2)按下P3.4进入秒表状态:再按P3.4秒表又启动,按P3.4暂停,再按P3.4秒表清零,按P3.4退出秒表回到时钟状态。第四章 软件系统设计4.1软件程序思想软件系统程序由主程序和子程序组成,主程序包含初始化参数设置、按键处理、数码管显示模块等,在设计时各个模块都采用子程序结构设计,在主程序中调用。时钟由定时/计数器0产生,采用中断方式工作,因此还要编写定时/计数器0中断服务子程序,在定时/计数器0中断服务程序中形成时钟关系。1主程序主程序先对显示单元和定时器/计数器初始化,然后重复调用数码管显示模块和按键处理模块,当有键按下时,则转入相应的功能程序。2数码管显示模块本系统共用8个数码管,从左到右依次显示时十位、时个位、横线、分十位、分个位、横线、秒十位和秒个位。数码管显示的信息用8个内存单元存放,这8个内存单元称为显示缓冲区,其中秒个位和秒十位、分个位和分十位、时个位和时十位分别由秒数据、分数据和小时数据分拆得到。在本系统中数码管显示采用软件译码动态显示。在存储器中首先建立一张显示信息的字段码表,显示时,先在P2口送出位选码,选中显示的数码管,然后从显示缓冲区中取出当前显示的信息,查表在字段码表中查出所显示的信息的字段码,从P0口输出,就能在相应的数码管上显示显示缓冲区的内容。3定时器/计数器T0中断服务程序计时选择定时器/计数器T0。具体处理如下:定时器/计数器T0选择方式1,重复定时,定时时间设为50ms,定时时间到则中断,在中断服务程序中用一个计数器对50ms计数,计20次则对秒单元加1,秒单元加到60则对分单元加1,同时秒单元清0;分单元加到60则对时单元加1,同时分单元清0;时单元加到24则对时单元清0,标志一天时间计满,这样就形成了时钟关系。在对各单元计数的同时,把它们的值放到存储单元的指定位置。4按键处理模块按键处理设置为:如没有按键,则时钟正常走时。当按K0键一次,时钟暂停走动进入调小时状态,再按K0键一次,进入调分状态,再按K0键一次,回到正常走时;对于K1和K2按键,如果是正常走时,按K1和K2不起作用,如果进入调时或调分状态,按K1可对时或分进行加1操作,小时加到24则回到0,分加到60则回到0;按K2可对时或分进行减1操作,小时减到负则回到23,分减到负则回到59。4.2主程序及流程图 使用AT89C51单片机,12MHz晶振,P0输出字段码,P2口输出位选码用共阳LED数码管,P1.0为调时模式按键,P1.1为加1键,P1.2为减1键片内RAM的70H到77H单元为LED数码管的显示缓冲区78H,79H,7AH分别为秒、分、小时计数单元7BH为50ms计数器,7CH为调时模式计数器 图4-1 主程序流程图 ORG 0000HLJMP STARTORG 000BH ;定时器/计数器T0中断程序入口LJMP INTT0主程序START: MOV R0,#70H MOV R7,#0CHINIT: MOV R0,#00H INC R0 DJNZ R7,INIT MOV 72H,#10 MOV 75H,#10 MOV TMOD,#01H MOV TL0,#0B0H MOV TH0,#03CH SETB EA SETB ET0 SETB TR0START1: LCALL SCAN LCALL KEYSCAN SJMP START1 ;延时1MS子程序DL1MS: MOV R6,#14HDL1: MOV R7,#19HDL2: DJNZ R7,DL2 DJNZ R6,DL1 RET ;延时20MS子程序DL20MS: ACALL SCAN ACALL SCAN ACALL SCAN RET ;数码管显示程序SCAN: MOV A,78H ;将小时、分钟和秒拆分成十位和个位 MOV B,#0AH;存入显示缓冲区的相应位置 DIV AB MOV 71H,A MOV 70H,B MOV A,79H MOV B,#0AH DIV AB MOV 74H,A MOV 73H,B MOV A,7AH MOV B,#0AH DIV AB MOV 77H,A MOV 76H,B MOV R1,#70H ;循环扫描显示 MOV R5,#0FEH MOV R3,#08HSCAN1: MOV A,R5 MOV P2,A MOV A,R1 MOV DPTR,#TAB MOVC A,A+DPTR MOV P0,A MOV A,R5 LCALL DL1MS INC R1 MOV A,R5 RL A MOV R5,A DJNZ R3,SCAN1 MOV P2,#0FFH MOV P0,#0FFH RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0BFH4.3子程序及流程图 图4-2 定时器/计数器T0中断服务程序流程图定时器/计数器T0中断服务程序INTT0: PUSH ACC PUSH PSW CLR ET0 CLR TR0 MOV TL0,#0B0H MOV TH0,#03CH SETB TR0 INC 7BH MOV A,7BH CJNE A,#14H,OUTT0 MOV 7BH,#00 INC 78H MOV A,78H CJNE A,#3CH,OUTT0 MOV 78H,#00 INC 79H MOV A,79H CJNE A,#3CH,OUTT0 MOV 79H,#00 INC 7AH MOV A,7AH CJNE A,#18H,OUTT0 MOV 7AH,#00OUTT0: SETB ET0 POP PSW POP ACC RETI图4-3 按键处理模块流程图按键处理程序KEYSCAN: CLR EA JNB P1.0,KEYSCAN0 JNB P1.1,KEYSCAN1 JNB P1.2,KEYSCAN2KEYOUT: SETB EA RETKEYSCAN0: LCALL DL20MS JB P1.0,KEYOUTWAIT0: JNB P1.0,WAIT0 INC 7CH MOV A,7CH CLR ET0 CLR TR0 CJNE A,#03H,KEYOUT MOV 7CH,#00 SETB ET0 SETB TR0 SJMP KEYOUTKEYSCAN1:LCALL DL20MS JB P1.1,KEYOUTWAIT1: JNB P1.1,WAIT1 MOV A,7CH CJNE A,#02H,KSCAN11 INC 79H MOV A,79H CJNE A,#3CH,KEYOUT MOV 79H,#00 SJMP KEYOUTKSCAN11: INC 7AH MOV A,7AH CJNE A,#18H,KEYOUT MOV 7AH,#00 SJMP KEYOUTKEYSCAN2:LCALL DL20MS JB P1.2,KEYOUTWAIT2: JNB P1.2,WAIT2 MOV A,7CH CJNE A,#02H,KSCAN21 DEC 79H MOV A,79H CJNE A,#0FFH,KEYOUT MOV 79H,#3BH SJMP KEYOUTKSCAN21: DEC 7AH MOV A,7AH CJNE A,#0FFH,KEYOUT MOV 7AH,#17H SJMP KEYOUT END第五章 系统仿真5.1 KEIL 51介绍1、Keil的使用通过用Project菜单下的New Project命令建立项目文件,过程如下。(1)选择Project菜单下的New Project命令,弹出如图5-1所示的Create new Project对话框。图5-1 Create New Project对话框(2)在Create New Project对话框中选择新建项目文件的位置,输入新建项目文件的名称,例如,项目文件名为IO,单击【保存】按钮将弹出如图5-2所示的Select Device for Target Target 1对话框,用户可以根据使用情况选择单片机型号。Keil Vision IDE几乎支持所有的51核心的单片机,并以列表的形式给出。选中芯片后,在右边的描述框中将同时显示选中的芯片的相关信息以供用户参考。图5-2 Select Device for Target Target 1对话框(3)选择Atmel公司的AT89C52。单击【确定】按钮,这时弹出如图5-3所示的Copy Standard 8051 Startup Code to Project Folder and Add File to Project确认框,C语言开发选择【是】,汇编语言开发选择【否】。单击后,项目文件就创建好了。项目文件创建后,这时只有一个框架,紧接着需向项目文件中添加程序文件内容。图5-3 确认框当项目文件建立好后,就可以给项目文件加入程序文件了,Keil Vision 支持C语言程序,也支持汇编语言程序。这些程序文件可以是已经建立好了的程序文件,也可以是新建的程序文件,如果是建立好了的程序文件,则直接用后面的方法添加;如果是新建立的程序文件,最好是先将程序文件用.asm或.C存盘后再添加,这样程序文件中的关键字才能够被认识。程序文件的添加过程如下。(1)在项目管理器窗口中,展开Target1项,可以看到Source Group1子项。(2)右击Source Group1,在出现如图5-4所示的菜单中选择Add Files to Group Source Group1命令。图5-4 选择Add Files to Group Source Group1命令(3)弹出如图5-5所示的Add Files to Group SourceGroup1对话框。在对话框中选择需要添加的程序文件,单击Add按钮,把所选文件添加到项目文件中,注意文件类型默认为C,如果是汇编程序则应选择文件类型为*.a*。一次可连续添加多个文件,添加的文件在项目管理器的Source Group1下面可以看见。当不再添加时,单击Close按钮,结束添加程序文件。如果文件添加得不对,则先选中对应的文件,用右键菜单中的Remove File命令把它移出去。(4)如果是已有的程序文件,则添加结束后,就可以做下一步的编译、连接工作;如果是新文件,则应先用File菜单下的New命令建立程序文件,输入文件内容,存盘(注意汇编程序扩展名为.ASM,C语言程序扩展名为.C),然后再添加到项目中。图5-5 Add Files to Group SourceGroup1对话框当把程序文件添加到项目文件中,并且程序文件已经建立好存盘后,就可以进行编译、连接,形成目标文件。编译、连接用Project菜单下的Built Target命令(或快捷键F7),如图5-6所示。编译、连接时,如果程序有错,则编译不成功,并在下面的信息窗口给出相应的出错提示信息,以便用户进行修改,修改后再编译、连接,这个过程可能会重复多次。如果没有错误,则编译、连接成功,并且在信息窗口给出提示信息。图5-6 编译、连接后的显示图2、调试当项目编译、连接成功后,就可以运行它来观察结果,运行调试过程如下。(1)先用Debug菜单下的Start/Stop Debug Session命令(快捷键Ctrl+F5)启动调试过程,结果如图5-7所示。图5-7 启动调试过程结果图(2)用Debug菜单下的Go连续运行。(3)用Debug菜单下的Step单步运行。子函数中也要一步一步地运行。(4)用Debug菜单下的Step Over单步运行。子函数体一步直接完成。(5)用Debug菜单下的Stop running命令停止运行。(6)用View菜单调出各种输出窗口观察结果,用Peripherals菜单观察51单片机内部资源。图5-8为调出Peripherals菜单下的P2口调试的结果。(7)运行调试完毕,先用Stop running命令停止运行,再用Debug菜单下的Start/Stop Debug Session命令结束运行调试过程。图5-8 Serial Windows #1窗口5.2 PROTEUS介绍在80C51单片机系统的P2口连接8个发光二极管指示灯,编程实现流水灯的控制,从低位到高位轮流点亮指示灯,一直重复。在KEIL 51中编程序,形成HEX文件,在PROTEUS中设计硬件,下载程序,运行看结果。Proteus ISIS处理过程一般如下: (1) PROTEUS ISIS软件打开后,系统默认新建一个名为UNTITLED(没有存盘的文件)的原理图文件,如图5-9所示。用户要存盘,则可用File菜单下的Save或Save as命令,这里设文件保存到D:IO文件夹下面(最好与KEIL 51编写的程序放在同一文件夹,这样使用方便),文件基本名为io,扩展名默认。图5-9 PROTEUS ISIS窗口图(2) 在主要模型下选择component mode选择元件工具,然后再选择图5-9的按钮P,打开元件选择对话框,如图5-10所示。图5-10 元件选择窗口(3) 在元件选择对话框的keywords窗口中输入元件关键字搜索元件,找到元件后,双击元件则可选中元件,添加元件device元件列表栏。本实例中,需要的元件依次为:单片机80c51、电阻RES、电容CAP、按键BUTTON、晶振CRYSTAL、发光二极管LED-RED。添加后如图5-11所示,选择了的元件列于device元件列表栏。图5-11 添加元件到device元件列表栏放置元件过程如下:(1) 选择component mode工具,这时devices元件列表将出现元件列表单,如图5-11所示。(2) 用鼠标左键单击devices元件列表中的元件名称选中元件,这时在预览窗口将出现该元件的形状,移动鼠标到编辑窗口,单击左键,在鼠标指针处会出现元件形状,再移动鼠标,把元件移动到合适的位置,单击左键,元件就被放在相应的位置上。通过相同的方法把所有元件放置到编辑窗口相应位置,电源和地是在配件的终端接口中。本实例放置情况如图5-12所示。图5-12 放置元件图元件放置后,如果元件位置不合适或不对,可通过移动、旋转、删除、属性修改等操作对元件编辑。对元件编辑时首先要选中元件,元件的选择分以下几种:鼠标左键单击选择;对于活动元件,如开关BUTTON等,通过用鼠标左键拖动选择;对于一组元件的选择,可以通过鼠标左键拖动选择框内的所有元件,也可按住Ctrl键再用鼠标左键依次单击要选择的元件。选中元件后,如果要移动元件,则用鼠标左键拖动所选元件即可;如要删除元件,按键盘的Delete删除键,或者在选中的元件上单击鼠标右键,在弹出的菜单中选择Delete Object选项;如果要旋转,则在右键菜单中选择相应的旋转选项。如果修改属性,则在右键菜单下选择Edit Properties选项,不同的元件,元件的属性不同,出现的元件属性对话框也不一样。 通过导线把电路图中放置的元件连接起来,形成电路图。在PROTEUS中元件引脚间的连接一般有两种方式:导线方式和总线方式。导线连接简单,但电路复杂时连接不方便,总线方式连接较复杂,但连接的电路美观,特别是适合连线较多的时候。1. 导线连接方式导线连接方式过程如下:1) 把鼠标指针移动到第一个元件的连接点,鼠标指针前会出现“”形状,单击左键,这时会从连接点引出一条导线。2) 移动鼠标指针到第二个元件的连接点,在第二个元件的连接点时,鼠标指针前也会出现 “”形状,单击左键,则在两个元件连接上导线,这时导线的走线方式是系统自动的而且是走直线,如果用户要控制走线路径,只须在相应的拐点处单击左键,如图5-13所示。 (a) 导线起点 (b) 导线终点 (c) 手动走线 图5-13导线连接用户也可用工具(Tools)菜单下面的自动走线命令(Wire Auto Router)取消自动走线,这时连接形成的就是直接从起点到终点的导线。另外,如果没有到第二个元件的连接点就双击左键,则从第一个元件的连接点引出一段导线。3) 导线加标签对于导线的连接,也可通过加标签的方法,给导线加标签用主要模型中的放置线标签工具。处理过程如下:单击放置线标签按钮,移动鼠标到需要加标签的导线上,这时鼠标指针前会出现“”形状,单击左键,弹出编辑线标签窗口,如图5-14所示。在String窗口中输入线标签名。图5-14 编辑线标签窗口在一个电路图中,标签名相同的导线在逻辑上是连接在一起的。2. 总线方式总线用于元件中间段的连接,便于减少电路导线的连接,而元件引脚端的连接必须用一般的导线。因此,使用总线时主要涉及绘制总线和导线与总线的连接。1) 绘制总线绘制总线通过用主要模型中的绘制总线(Buses Mode)工具。选中该工具后,移动鼠标到编辑窗口,在需要绘制总线的开始位置单击左键,移动鼠标,的结束位置再单击左键,便可绘制出一条总线。2) 导线与总线的连接导线与总线的连接一般是从导线向总线方向连线,连接时一般有直线和斜线两种,如图5-15所示,斜线连接时一般要取消自动走线。 (a) 直线连接 (b) 斜线连接图5-15 导线与总线的连接总线绘制好后,也可用放置线标签工具给总线加标签,给总线加标签时,可同时给总线中的一组信号线加标签,处理过程与导线一样,只是标签用成A0.7的形式,这时就给总线中的8根信号线加了标签,8根信号线的标签名分别为A0,A1到A7。连接在总线上的导线,标签名相同,则它们在逻辑关系上是连接在一起的,如图5-16所示。图5-16 总线上信号线的连接在这个实例中,线路比较简单,我们用导线方式连接,连接图如图5-17所示。图5-17 实例导线连接图当硬件线路连接,元件属性调整好后,就可以给单片机加载程序,加载的程序只能是HEX文件,可以在Keil 51软件中来设计,形成HEX文件。处理时软件程序文件最好与硬件电路文件保存在一个文件夹下面,在实例中,我们都保存在e:IO文件夹下面。软件源程序如下。ORG 0000HLJMP MAINORG 0100HMAIN:MOV A,#01HLOOP:MOV P2,A LCALL DELAY RL A SJMP LOOP SJMP $DELAY:MOV R2,#10HDELAY1:MOV R3,#0FFH DJNZ R3,$ DJNZ R2,DELAY1 RET END假定在Keil 51中我们已经编译形成了名为IO.hex的十六进制文件,则加载过程如下:在PROTEUS电路图中,左键单击单片机80C51芯片,选中,再次左键单击(或左键单击选择Edit Properties命令),打开单片机80C51的属性对话框,在属性对话框中的program file框中选择加载到80C51芯片中的程序。这里是同一个文件夹下面的IO.hex文件。如图5-18所示。图5-18 加载程序到单片机程序加载以后,就可以通过仿真工具中的运行按钮在51单片机中运行程序,运行后可以在PROTEUS ISIS中看到运行的结果。本实例结果如图5-19所示。如果要看51单片机的特殊功能寄存器、存储器中的内容,则可用暂停按钮使程序暂停下来,然后通过Debug(调试)菜单下面的相应命令打开特殊功能寄存器窗口或存储器窗口查看。图5-19 仿真结果图最后说明一下,在仿真调试时,如果因为程序有错,仿真不能得到相应的结果,则要在Keil uVision IDE中修改程序,程序修改后再对程序进行重新编译连接形成HEX文件,但在PROTEUS中不用再重新加载,因为前面以经加载了,直接运行即可,非常方便。因而现在使用Keil uVision IDE和PROTEUS仿真单片机应用系统非常广泛。5.3仿真过程及仿真结果按照线路图连接好线路后,下载程序,点击运行按钮,结果如图5-20仿真结果
展开阅读全文