中 文 摘 要
随着社会的发展,定时器在日常生活、工业控制、交通灯管理、检测、报警等方面的应用越来越广泛,同时人们对定时器的要求也越来越高。本课题设计一个基于STCS52构成的实用定时器,这在某些应用中具有一定的实用价值。
本课题设计了一个基于STCS52的定时器,首先介绍了设计内容及要求,介绍了定时器的设计思路以及功能模块的划分,并对各模块实现的具体功能进行了说明。然后结合框图,介绍了定时器的工作原理,之后详细介绍了定时器具体单元电路的设计与分析。 该定时器除具有基本的定时功能外,还具有定时时间连续可调、倒计时显示和定时开关功能。它造价低,功能全,整体功能性价比高,配以小键盘和LED显示器,它适应各种场合的定时预警之用。而且设计巧妙,体积小,功能强,计时范围大,用途广泛,操作携带方便,是一种较理想的定时工具。
关键词:定时器;STCS52;连续可调;倒计时显示
Multi-specific timer based on MCU
ABSTRACT
With the development of society, the timer in our daily lives, industrial control, traffic lights management, detection, alarm and so on, while people on the timer there are increasingly high requirements. The design of a subject with a practical STCS52 timer, which in some applications has some practical values.
This paper first introduced the design of the content and requirements on the design of the timer and the delineation of functional modules, each module and the specific functions of the note. Then with diagram, on the principle of the timer, after details of the specific unit timer circuit design and analysis.
The timer in addition to a basic function of the timing, but also with adjustable timing consecutive time, the countdown display and regularly switching function. it is low cost, full-featured, cost-effective overall function, together with a small keyboard and LED display, it is adapt to a variety of occasions for use in varieties of warning. And cleverly designed, small, strong function, wide time range, wide range of uses, easy to carry and operate, is an ideal timing tool.
Keywords: Timer; STCS52; continuously adjustable; the countdown show
目 录
第一章 前言 .........................................................4
1.1 设计背景 ............................................................................................................ 4
1.2 论文研究内容 ..................................................................................................... 6 1.3 论文结构安排 ..................................................................................................... 6
第二章 整体方案设计 .................................................7
2.1 设计任务及要求 ................................................................................................. 7
2.2 系统设计整体方案 .............................................................................................. 7
第三章 硬件电路设计 .................................................9
3.1 STC单片机 ........................................................................................................ 9
3.2 STC单片机的最小系统..................................................................................... 11
3.2.1 复位电路 ............................................................................................... 11 3.2.2 晶振电路 ............................................................................................... 12 3.3 LED与单片机接口电路 .................................................................................... 13 3.4 74HC573芯片 .................................................................................................. 14 3.5 器件选择 .......................................................................................................... 14 3.6 接口连接设计 ................................................................................................... 15 3.7 功能简介 .......................................................................................................... 16
第四章 软件设计 ....................................................17
4.1 主程序 ............................................................................................................. 17
4.2 发光二极管指示程序 ........................................................................................ 17 4.3 键扫描程序 ...................................................................................................... 18 4.4 定时器中断程序 ............................................................................................... 20
第五章 设计调试 ....................................................22
5.1 软件调试 .......................................................................................................... 22
5.1.1 Proteus的简介 ....................................................................................... 22
5.1.2 Keil软件及其调试功能简介 ................................................................... 23 5.1.3 Keil软件调试 ............................................................................................... 24 5.1.4 Proteus仿真 ................................................................................................... 27 5.2 硬件调试 .......................................................................................................... 29 第六章 总结 ........................................................31
参考文献 ...........................................................32 致 谢 ...........................................................33 附录 ...............................................................34
电路原理图 ............................................................................................................. 34
源程序 .................................................................................................................... 34
第一章 前言
目前单片机已渗透到生活的各个领域,几乎很难找到哪个领域没有单片机的足迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说全自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的工程师和科学家。科技越发达,智能化的东西就越多。看来学习单片机是社会发展的必然需求。
单片机即单片微型计算机,又称为微控制器,它的体积小,功能强,可靠性好,价格又便宜,成为传统工业技术改造和新产品更新换代的理想品种,具有广阔的发展前景,其中最具有代表性的就是Intel公司的8051系列单片机[1]。
本文在对单片机研究的基础上,以STCS52为核心,对定时器进行设计与应用,通过对其原理深入分析,探讨以STCS52单片机构成定时器的实现方法,介绍其设计原理及方法,给出定时器软件设计。考虑到存在的各种干扰对系统的影响,从软、硬件设计两个方面进行分析,采取相应的措施以增强系统的抗干扰能力。
1.1 设计背景
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月异地更新。定时、延时装置在工业控制中被广泛的应用。它可以实现信号的异步传送,根据控制要求设置接收到和做出相关反应的时间差。被广泛的用于仪表、通信、办公自动化、军工领域及各种控制柜、控制台,使用极为广阔。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,根据具体硬件结构及具体应用对象的特点,与软件相结合,加以完善。单片机之所以在工业控制中有大量的应用,就在于它有独特的定时、计数功能。在工业检测、控制中,许多场合都要用到计数或定时功能。例如,对外部脉冲进行计数、产生精确的定时时间等。人类最早使用的定时工具是沙漏或水漏,但在钟表诞生发展成熟之后,人们开始尝试使用这种全新的计时工具来改进定时器,达到准确控制时间的目的[2]。
“定时器”总的来说有两种类型。一种是基于模拟技术的传统产品,这种定
时器功能简单,尽管曾被广泛应用过,但已进入淘汰之列。另一种是基于数字技术的新一代产品,这种产品功能强,是前者的换代之物。随着单片机性能价格比的不断提高,新一代产品的应用越来越广泛,大可构成复杂的工业过程控制系统,完成复杂的控制功能,小则可以用于家电控制,甚至能够用来做儿童电子玩具。它功能强大,体积小,重量轻,灵活好用,配以适当的接口芯片,可以构造各种各样、功能各异的微电子产品[3]。
定时器按结构可分为机械式、电动式和电子式3类。
机械式定时器:以发条为原动力,用擒纵调速器控制走时精度,通过齿轮传动和凸轮,按时间控制机构预置的时段操纵执行机构动作。计时精度要求不高的定时器(如风扇定时器、洗衣机定时器、厨房用定时器、照相暗房用定时器、电视机控制用定时器、电灯开关定时器),一般采用无固有振动周期的调速器。这些定时器都是在手动上发条的同时预置时限,定时精度不高,但结构简单,使用方便。计时精度要求高、定时范围在3~12小时的定时器,一般采用摆轮游丝调速器。
电动式定时器:用交流同步电动机或石英步进电机驱动,通过齿轮传动和凸轮簧片触点机构,按预置的时段或时刻控制执行机构。其中短时段控制的电动式定时器可用于程序控制式洗衣机、洗碗机、微波炉、烘箱及时间继电器等;长时段电动式定时器是一种24小时或7天程序控制的开关装置,可预置开关动作多次,最短时间控制间隔一般为15分钟,可用于用户用电情况监控、照明控制、实验室装置控制、空调器控制和自动生产线上某些设备的定时控制等。
电子式定时器:利用石英振荡器或民用交流电的标准频率,经过分频计数组成时间累加器或数字钟,按照预置的时间编码输出控制信号。这种定时器走时精确,时间设定没有误差,定时精度高,控制程序多。其中长时段定时器最小控制时段一般为1分钟,配上微处理器后能精确地编制一年的时间程序,组成多路可编程序的定时器。电子式定时器在工业自动化控制系统中应用广泛,它也是节约能源管理中一种有效的技术措施。电子定时器类的电子定时开关钟,可用于按高、平、低峰用电收取不同电费制度的场合,它将一天内的用电高峰、平峰、低谷时间在定时开关中设定,并分别接通3种电表进行计费。电子式定时器在科学实验中和在微波炉、电饭锅、洗衣机等电器中也有使用[4]。
本设计开发了一种基于单片机的多用途定时器。它造价低,功能全,整体功能价格比高,配以小键盘和LED显示器,它适应各种场合的定时预警之用。而且设计巧妙,体积小,功能强,计时范围大,用途广泛,操作携带方便,是一种较理想的定时工具。
1.2 论文研究内容
基于单片机的定时器电路包含了如下的功能模块:1,基本的单片机系统;2,单片机的定时中断;3,单片机的外围电路;4,外部按键输入装置;5,数码管LED显示装置等。
该系统利用单片机的定时器定时,时间准确、稳定、可靠,并可以利用单片机的功能很好地进行时间的显示、指示,输出。原理简单,使用元器件少,相对来说在实物调试时出现的问题就少。而且成本低。用单片机完全可以实现定时功能。
1.3 论文结构安排
第一章,前言。介绍了本课题研究的目的背景和本次论文的结构框架。 第二章,整体方案设计。介绍了本设计的任务要求和整体的方案设计。 第三章,硬件电路设计。介绍了本设计所需要的各芯片及接口连接。 第四章,软件设计。介绍了所用到的软件和各模块的软件流程图。 第五章,设计调试。介绍软件仿真调试与硬件调试。 第六章,总结。对本次设计过程中的一些学习心得。
第二章 整体方案设计
2.1 设计任务及要求
设计一个基于单片机控制的专用定时器。要求定时器可以实现三个时间的显示,而且每个时间的初值都可以改变,完成系统的分析、设计和程序编写,记录开发过程中的问题及解决方法,要有计算过程和原理图,以及的稳定电源。
设计主要指标参数:
(1) 定时时间1。1s-99s,可调。 (2) 定时时间2。1s-99s,可调。 (3) 定时时间3。1min-99min,可调。 (4) 所有时间数字均可调。 (5) 用LED数码管显示剩余时间。
2.2 系统设计整体方案
利用单片机定时输出Y1、Y2、Y3(见图2.1),定时时间分别T1、T2、T3,并用发光二极管表示其时间长短,用LED显示定时的剩余时间。时间长短通过按键调节,串口用来对单片机在线编程。
Y1 T3 Y2 T3 Y3 T3 图2.1 定时器时间输出Y1、Y2、Y3
总体原理框图如图2.2所示:
发光二极管显示、指示 LED显示 按键调节、选择 STCS52 单片机 串口 图2.2 总体原理框图
74HC573 驱动
利用单片机的定时器定时的优点是时间准确、稳定、可靠,并可以利用单片机的功能很好地进行时间的显示、指示、输出。原理简单,使用元器件少,相对来说在实物调试时出现的问题就少。该方案还有一个好处就是成本低。
第三章 硬件电路设计
3.1 STC单片机
MCS-51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。近年来C51获得了飞速的发展,C51的发源公司INTEL由于忙于开发PC及高端微处理器而无精力继续发展自己的单片机,而由其它厂商将其发展,最典型的是PHILIPS和ATML公司,PHILIPS公司主要是改善其性能,在原来的基础上发展了高速I/O口,A/D转换器,PWM(脉宽调制)、WDT等增强功能,并在低电压、微功耗、扩展串行总线(I2C)和控制网络总线(CAN)等功能加以完善。PHILIPS公司在发展C51的低功耗,高速度和增强型功能上作了不少贡献,当初主要由其来发展C51单片机,他们的83Cxx和87Cxx系列省去了并行扩展总线,适合于作为家用电器类控制的经济型单片机[5]。
ATMEL公司推出的ATCxx系列兼容C51的单片机,完美地将Flash(非易失闪存技术)EEPROM与80C51内核结合起来,仍采用C51的总体结构和指令系统,Flash的可反擦写程序存储器能有效地降低开发费用,并能使单片机作多次重复使用。
Siemens公司也沿用C51的内核,相继推出了C500系列单片机,在保持了与C51指令兼容的前提下,其产品的性能得到了进一步的提升,特别是在抗干扰性能,电磁兼容和通信控制总线功能上独树一帜,其产品常用于工作环境恶劣的场合。亦适用于通信和家用电器控制领域。还有的WINBOND公司亦开发了一系列兼容C51的单片机,其产品通常具备丰富的功能特性,而且与其质优价廉在市场也占有一定的分额[6]。下面介绍的是STCS52。
STC单片机的内部框图如图3.1所示:
看门狗 E2PROM Data Flash 专用复位电路集成MAX810 1280B SRAM 8/16/32KB 内存 TAP 内置系统 ISP监控程序 P0口地址0E8H INT2/P4.3 INT3/P4.2 P4口均可位寻址 URT(串口)3个定时器 双数据指针 A/D STCS52微处理器 低功耗,高速(0~90MHz),高可靠掉电模式:<0.1uA,空闲模式:2mA 四个8位并行端口 P0 P1 P2 P3 A/D(高速)可做 按键扫描 电池电压检测 掉电检测 音量和频谱检测等 图3.1 STC单片机的内部框图 STCS52系列单片机是兼容8051内核的单片机,是高速、低功耗的新一代8051单片机,12时钟/机器周期和6时钟/机器周期可反复设置,最新的D版本内部集成MAX810专用复位电路。用STC提供的STC-ISP.exe工具将您原有的代码下载进STC相关的单片机即可,或用通用编程器编程。RC/RD+系列为真正的看门狗。默认为关闭(冷启动),启动后无法关闭,可放心省去外部看门狗。内部Flash擦写次数为100000次以上,STCC52RC/RD+系列单片机出厂时就已完全加密,无法解密。用户程序是用ISP/IAP机制写入,一边校验一边写,无读出命令,彻底无法解密[7]。
选用STCS52单片机的理由:加密性强,无法解密;超强抗干扰,轻松过4kV快速脉冲干扰(EFT);高抗静电(ESD),6kV静电可直接承受在芯片管脚
上;超低功耗,Power Down<0.1uA,可外部中断唤醒;中断优先级可设置成4级;PLCC-44封装,有P4口(可位寻址);并增加两个外部中断,Int2/P4.3、Int1/P4.2;6时钟/机器周期或12时钟/机器周期可任意设置;在系统可编程,无需编程器,可远程升级;可供应内部集成MAX810专用复位电路,原复位电路可以保留,也可以不用,不用时RESET引脚直接短接到地。
STC系列单片机大部分具有在系统可编程(ISP)特性,ISP的好处是省去了购买通过编程器的开销,单片机在用户系统上即可下载/烧录用户程序,无须将单片机从生产好的产品上拆下,再用通用编程器将程序代码烧录进单片机内部。由于可以将程序直接下载进单片机查看运行结果,故也可以不用仿真器[8]。
3.2 STC单片机的最小系统
3.2.1 复位电路
从原理上,一般采用上电复位电路。这种复位电路的工作原理是:通电时,电容两端相当于短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降到一定程序,即为低电平,单片机开始正常工作[9]。
该设计中复位电路选用10uF的电容和10k欧姆的电阻及IN4148二极管组成。在满足单片机可靠复位的前提下该复位电路的优点在于降低复位引脚的对地阻抗,可以显著增强单片机复位电路的抗干扰能力。二极管可以实现快速释放电容电量功能,满足短时间复位的要求。具体如图3.2所示:
图3.2 复位电路
3.2.2 晶振电路
单片机的晶振电路是一种典型的电路,分为内部时钟和外部时钟两种方式。内部时钟方式如图3.3所示:
图3.3 内部时钟晶振电路
内部时钟电路和晶振频率一般选择在4MHz~12MHz之间(该设计选用12MHz),外接两个谐振电容。该电容的典型值为30pF,该设计选用22pF[10]。
3.3 LED与单片机接口电路
常用的LED显示器有7段(或8段,8段比7段多了一个小数点“dp”段)。这种显示器有共阳极和共阴极两种。该设计中选用的是共阳极,LED与单片机的接线如下图3.4所示。
图3.4 LED与单片机的接线
共阳极LED显示器的发光二极管的阳极连接在一起,通常该共阳极接地。当某个发光二极管的阴极为低电平时,发光二极管点亮,相应的段被显示。
使用LED显示器时,为了显示数字或符号,要为LED显示器提供代码,因为这些代码是通过段的亮与灭来显示不同字形的,因此称之为代码。7段发光二极管,再加上一个小数点位,共计8段,因此提供给LED显示器的段码正好一个字节。各段字节中各位的对应关系如表3.1所示:
表3-1 LED各段字节各位的对应关系
显示数 0 1 2 3 4 5 dp 1 1 1 1 1 1 G 1 1 0 0 0 0 f 0 1 1 1 0 0 e 0 1 0 1 1 1 d 0 1 0 0 1 0 c 0 0 1 0 0 0 b 0 0 1 0 0 1 a 0 1 0 0 1 0 段码 C0H F9H A3H B0H 99H 92H 6 7 8 9 1 1 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 82H F8H 80H 90H 由于单片机I/O的电气特性决定了单片机的端口的驱动能力有限,一般地,单片机的端口只是驱动TTL电平,不提供或者提供很小的驱动电流,所以在带负载时,单片机应当在I/O口加上驱动芯片。该设计中使用74HC573驱动芯片。
3.4 74HC573芯片
由于使用了两根数码管,必须要有位选和段选,本次设计中采用两片74HC573分别进行段选和位选。下面本人将简要介绍74HC573芯片。
首先,74HC573是一款高速CMOS器件,74HC573引脚兼容低功耗肖特基TTL(LSTTL)系列。74HC573包含八路D 型透明锁存器,每个锁存器具有的D 型输入,以及适用于面向总线的应用的三态输出。所有锁存器共用一个锁存使能(LE)端和一个输出使能(OE)端。当LE为高时,数据从Dn输入到锁存器,在此条件下,锁存器进入透明模式,也就是说,锁存器的输出状态将会随着对应的D输入每次的变化而改变。当LE为低时,锁存器将存储D输入上的信息一段就绪时间,直到LE的下降沿来临。当OE为低时,8个锁存器的内容可被正常输出;当OE为高时,输出进入高阻态。OE端的操作不会影响锁存器的状态[11]。
然后,再简要介绍此芯片的特性。
(1)输入输出分布在芯片封装的两侧,为微处理器提供简便的接口。 (2)用于微控制器和微型计算机的输入输出口。 (3)三态正相输出,用于面向总线的应用。 (4)共用三态输出使能端。
3.5 器件选择
·STCS52:单片机,控制LED的数据显示。
·LED:两个一位的8段码LED,用于显示单片机的数据。
·74LS573:锁存器,74LS573输入的D端和输出的Q端依次排列在芯片的
两侧,为绘制印刷电路板时的布线提供了方便。
·ULN2803:驱动LED,相当于一个反相器。
·按键KEY_ST:KEY_ST未按时时间正常运行,按一下KEY_ST键后数码管显示的时间暂停,这时可以使用KEY_UP、KEY_DW自行加、减时间。
·按键KEY_UP:当时间暂停之后,按一次KEY_UP键数码管上的时间加1。
·按键KEY_DW:当时间暂停之后,按一次KEY_DW键数码管上的时间减1。
·按键KEY_T1:电路上电之后,按下KEY_T1键后,开启定时器0,时间从99s开始倒计时。
·按键KEY_T2:电路上电之后,按下KEY_T2键后,开启定时器1,时间从99s开始倒计时。
·按键KEY_T3:电路上电之后,按下KEY_T3键后,开启定时器2,时间从99min开始倒计时。
·L0—L2:发光二极管,通过单片机的P1.0-P1.2控制,用以观看使用的是哪一个定时器。
3.6 接口连接设计
·P0.0—P0.7:与74HC573芯片的8个输入口相接,然后输出口接上数码管的8个段选。
·P1.0—P1.2:分别和三个发光二极管相连,用以显示使用的是哪一个定时器。
·P1.5—P1.7:分别接KEY_UP、KEY_DW、KEY_ST三个按键,控制时间的自加、自减以及暂停。
·P2.7、P2.6:分别和芯片ULN2803的管脚2、3相连,然后接上数码管的2个位选端。
·P3.1—P3.3:分别接KEY_T1、KEY_T2、KEY_T3三个按键,控制定时时
间1、2、3。
3.7 功能简介
LED显示模块与单片机的连接中,对LED显示模块读写和字位、字段通道的选择是通过单片机的P2.7、P2.6口完成的。按键KEY_ST、KEY_UP、KEY_DW完成定时器的暂停、自加和自减功能。而发光二极管L0—L2则反映了选用的定时时间的不同。
第四章 软件设计
本章首先对设计思想即主程序进行介绍,然后对发光二极管指示程序、键扫描程序和数码管的显示程序的设计分别进行说明。
4.1 主程序
本次设计中,由于要求有定时器1、2、3,所以程序设计中使用了三个定时器分别进行定时。数码管显示部分由于最大数是99,所以使用两只数码管已绰绰有余。为了分清使用的是哪一个数码管,所以又用了三个发光二极管进行区分。
程序流程图如下图4.1所示。
开始 定时器初始化 设定初值 键扫描
LED显示
二极管显示
结束 图4.1 主程序流程图
4.2 发光二极管指示程序
发光二极管的亮灭指示了此刻数码管显示的时间是使用了三个定时器中的哪一个进行的定时。流程图如图4.2所示。
开始 N
KEY_T1按 下? 否
是 L0亮
KEY_T2 按 否 下?
是
L1亮
否
KEY_T3按 下?
是
图4.2 发光二极管指示流程图
L3亮
结束 4.3 键扫描程序
键扫描程序中主要是扫描判断KEY-ST、KEY-UP、KEY-DW这三个扫描程序如图4.3所示。
开始 延时 KEY_ST 按下? 延时 否 按下? KEY_ST 是 按下? KEY_UP 延时 KEY_UP 按下? 是 否 LED显示 按下? KEY_DW 延时 否 按下? KEY_DW 是 LED显示
图4.3 按键子程序流程图
4.4 定时器中断程序
程序设计中使用了单片机的三个定时器,虽然定时时间各不相同,但定时器中断流程图是相同的,所以此处只画出定时器0的中断流程图,如下图4.4所示:
开始重装初值 50ms到? t++ t=20? t=0 LED显示数减一 KEY_ST按下?
延时
否 KEY_ST按
下?
是 定时器0关闭
图4.4 定时器0的中断流程图
第五章 设计调试
5.1 软件调试
5.1.1 Proteus的简介
Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。
Proteus主要用于绘制原理图并可进行电路仿真,Proteus ARES主要用于PCB 设计。ISIS的主界面主要包括:1是电路图概览区、2是元器件列表区、3是绘图区。绘制电路图的过程如下:
单击2区的P命令即弹出元器件选择(Pick Devices)对话框,Proteus提供了丰富的元器件资源,包括30余种元器件库,有些元器件库还具有子库。利用该对话框提供的关键词(Keywords)搜索功能,输入所要添加的元器件名称,即可在结果(Results)中查找,找到后双击鼠标左键即可将该元器件添到2区,待所有需要的元器件添加完成后点击对话框右下角的OK按钮,返回主界面。接着在2区中选中某一个元器件名称,直接在3区中单击鼠标左键即可将该元器件添加到3区[12]。
由于是英国的软件,特别要注意的是绘图区中鼠标的操作和一般软件的操作习惯不同,这正像是司机座位和人行道走向和国内不同一样。单击左键是完成在2区中被选中的元器件的粘贴功能;将鼠标置于某元器件上并单击右键则是选中
该元器件(呈现红色),若再次单击右键的话则删除该元器件,而单击左键的话则会弹出该元器件的编辑对话框(Edit Component);若不需再选中任何元器件,则将鼠标置于3区的空白处单击右键即可;另外如果想移动某元器件,则选中该元器件后再按住鼠标左键即可将之移动。
元器件之间的连线方法为:将鼠标移至元器件的某引脚,即会出现一个“×”符号,按住鼠标左键后移动鼠标,将线引至另一引脚处将再次出现符号“×”,此时单击鼠标左键便可完成连线。连线时在需拐弯的地方单击鼠标左键即可实现方向的改变。绘制好电路后,可利用1区的绿色边框对3区的电路进行定位。 5.1.2 Keil软件及其调试功能简介
目前流行的51系列单片机开发软件是德国Keil公司推出的Keil C51软件,它是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为μVision(通常称为μV2)。Keil提供包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,由以下几部分组成:μVision IDE集成开发环境(包括工程管理器、源程序编辑器、程序调试器)、C51编译器、A51汇编器、LIB51库管理器、BL51连接/定位器、OH51目标文件生成器以及Monitor-51、RTX51实时操作系统。
应用Keil进行软件仿真开发的主要步骤为:编写源程序并保存——建立工程并添加源文件——设置工程——编译/汇编、连接,产生目标文件——程序调试。Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。首先选择菜单File—New„,在源程序编辑器中输入汇编语言或C语言源程序(或选择File—Open„,直接打开已用其他编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c;然后选择菜单Project—New Project„,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2);工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。这时工程管理窗口的文件页(Files)会出现“Target1”,将其前面+号展开,接着选择Source Group1,右击鼠标弹出快捷菜单,选择“Add File to Group ‘Source Group1’”,出现一个对话框,要求寻找并加入源文件(在加入一个源文件后,该对话框不会消失,而是等待继续加入其他文件)。加入文件后点close返回主界面,展开“Source Group1”前面+号,就会看到所加入的文件,双击文件名,即可打开该源程序文件。紧接着对工程进行设置,选择工程管理窗口的Target1,再选择Project—Option for Target‘Target1’(或点右键弹
出快捷菜单再选择该选项),打开工程属性设置对话框,共有8个选项卡,主要设置工作包括在Target选项卡中设置晶振频率、在Debug选项卡中设置实验仿真板等,如要写片,还必须在Output选项卡中选中“Creat Hex File”;其他选项卡内容一般可取默认值。工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。
成功编译/汇编、连接后,选择菜单Debug—Start/Stop Debug Session(或按Ctrl+F5键)进入程序调试状态,Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。Keil能以单步执行(按F11或选择Debug—Step)、过程单步执行(按F10或选择Debug—Step Over)、全速执行等多种运行方式进行程序调试。如果发现程序有错,可采用在线汇编功能对程序进行在线修改(Debug—Inline Assambly„),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(Debug—Insert/Remove Breakpoint或Debug—Breakpoints„等)。在模拟调试程序后,还须通过编程器将.hex目标文件烧写入单片机中才能观察目标样机真实的运行状况。
Keil软件Eval版(免费产品)的功能与商业版相同,只是程序的最大代码量不得超过2kB,但对初学者而言已是足够。Keil软件由于其强大的软件仿真功能,友好的用户界面以及易于掌握的特点而受到工程技术人员的欢迎,有人甚至认为Keil是目前最好的51单片机开发应用软件[12]。 5.1.3 Keil软件调试
软件的调试必须在开发系统的支持下进行。虽然是分别编写的各个模块程序,但是除了定时中断、数码管显示和初始化子程序外,其他的如按键扫描程序等都是直接放在主程序中,所以在调试时直接调试的总程序。下面概略介绍本人认为最重要的子程序—定时中断子程序。
如下所示是定时中断子程序,分为定时器0、定时器1、定时器2三个中断子程序。
void timer0() interrupt 1 {
TH0=(65536-50000)/256; //定时器0装初值 TL0=(65536-50000)%256;
}
t++;
if(t==20)
{
t=0; num--; if(num==-1) num=99;
//暂停键按下
if(!KEY_ST) { }
delay(5);
//按键消抖
if(!KEY_ST) { }
while(!KEY_ST);//等待按键释放 TR0=0;
}
void timer1() interrupt 3 {
TH1=(65536-50000)/256; //定时器1装初值 TL1=(65536-50000)%256; t1++; if(t1==20)
}
{ }
t1=0; num1--; if(num1==-1) num1=88;
if(!KEY_ST) //暂停键按下 { }
delay(5); //按键消抖 if(!KEY_ST) { }
while(!KEY_ST); //等待按键释放 TR1=0;
void timer2() interrupt 5 {
TH2=(65536-50000)/256; //定时器2装初值 TL2=(65536-50000)%256; t2++; TF2=0;
if(t2==1200)
{
}
}
t2=0; num2--; if(num2==-1) num2=77;
if(!KEY_ST) //暂停键按下 { }
delay(5); //按键消抖 if(!KEY_ST) { }
while(!KEY_ST); //等待按键释放 TR2=0;
5.1.4 Proteus仿真
在Proteus软件中画出总体原理图,如图5.1所示:
图5.1电路仿真图
程序编译成功后,将其下载到仿真图里,然后单击运行即可观察仿真结果。从Proteus里可以看到程序的运行效果很令人满意,时间显示正常,尽管计时存在一定的误差,但在允许的误差范围内。秒表在改变过程中没有明显抖动,证明消抖比较成功。
在调节时间和调整定时时间时,要调整的那位闪烁,在向上或向下调节时均能正常满足要求。
下图5.2所示为按下KEY_T1运行后的仿真结果。图中,发光二极管L0亮了,LED显示倒计时剩余时间,与设计要求显然相符。
图5.2 按下KEY_T1运行后的仿真结果
5.2 硬件调试
5.2.1 硬件实物图
在确定了设计方案后,买了元器件,焊接了单片机最小系统以及除此之外的其他电路,由于布线较为多,所以使用了一些杜邦线进行连接以减少焊接的麻烦程度,并且也便于查找错误及电路修改。下图5.3即为焊接的设计电路。
5.2.2 硬件调试及结果
在软件仿真结果正确,检查焊接电路以及杜邦线连接正确的情况下,上电后将程序下载到硬件当中,数码管显示的初始化界面是正确的,如下图5.4所示。
接下来,本人又分别调试了6个按键,功能和设计的要求一模一样,说明硬件演示也成功了。当按下键KEY_T2后,L1亮了,LED上显示从99s开始倒计时,如下图5.5所示。当按下暂停键KEY_ST后时间停止了,这时再按KEY_UP或KEY_DW时间便自加1或自减1,然后再按三个定时器中任一开关时间便从刚刚设定的开始倒计时,直到减为0,然后又将从装定都得初值开始倒计时,至此,设计要求的定时器就完全做好了。
第六章 总结
通过这次毕业设计,我拓宽了知识面,锻炼了能力,综合素质得到较大提高。安排毕业设计的基本目的,在于通过理论与实际的结合进一步提高自身,毕业设计也是对自己四年学习收获的检验,尤其是观察、分析和解决问题的实际工作能力,以便真正将自己打造成一个复合型人才。
作为整个学习体系的有机组成部分,毕业设计并不具有绝对的意义。它的一个重要功能,在于运用学习成果,检验学习成果。运用学习成果,把课堂上学到的系统化的理论知识,尝试性地应用于实际设计工作,并从理论的高度对设计工作的现代化提出一些有针对性的建议和设想。检验学习成果,看一看课堂学习与实际工作到底有多大距离,并通过综合分析,找出学习中存在的不足,以便为完善学习计划,改变学习内容与方法提供实践依据。
对我们自动化专业的本科生来说,实际能力的培养至关重要,而这种实际能力的培养单靠课堂教学是远远不够的,必须从课堂走向实践。这也是一次预演。通过毕业设计,让我找出自身状况与实际需要的差距,并在以后的学习期间及时补充相关知识,为求职与正式工作做好充分的知识、能力准备,从而缩短从校园走向社会的心理转型期。
在几个月的毕业设计之后,我们普遍感到不仅实际动手能力有所提高,更重要的是通过对课题设计的了解,进一步的学会了补差补缺以及了解了理论联系实际的重要性。
毕业设计虽然结束了,但设计过程中还是遇到了很多问题,如开始设计时自己居然盲目认为52与51单片机都只有2个定时器,经过此次的设计锻炼我才弄清楚了原来52居然有3个定时器,我觉得这对我来说真的是一个进步。其次,本次论文课题设计仍有很大的发展空间,如可以将两根数码管显示的倒计时定时器设计成用LCD液晶屏显示的通用电子表形式,有时有分有秒。
参考文献
[1],俞国亮.MCS-51单片机原理与应用[M].北京:清华大学出版社,2008,08. [2],邵贝贝.单片机认识与实践[M].北京:北京航空航天大学出版社,2006,08.
[3],许璟峰.看门狗定时器的设计与实施[J].电脑知识与技术,2010,31. [4],钱月.多功能定时器的设计与制作[J].内蒙古科技与经济,2006. [5],刘小成,吴清,夏春明. 单片机原理及C51应用[M].上海:华东理工大学
出版社,2009,01.
[6],薛庆军.单片机原理实验教程[M].北京:北京航空航天大学出版社,2008,
08.
[7],邹振春.MCS-51系列单片机原理及接口技术[M].北京:机械工业出版社,
2006,08.
[8],陈涛.单片机应用及C51程序设计[M].北京:机械工业出版社,2008,01. [9], 张靖龙,周灵彬.单片机原理、应用与PROTEUS仿真[M].北京:电子工业出版社,2008,8.
[10],范立南,谢子殿.单片机原理及应用教程[M].北京:清华大学出版社,2003.
[11],辛友顺. 74HC_HCT573.电子爱好者,2008.
[12], 陈海宴.51单片机原理及应用—基于Keil C与Proteus[M].北京:北京航空航天大学出版社,2010,07.
致 谢
合肥学院作为我人生成长当中的一个重要转折点,四年的大学生活给我创造了良好的环境,帮助我建立起l完整的知识体系,教会了我做人做事的道理,一步步将我打造成了一个有德有才的人。在这里我向她致敬!向这里所有的老师领导致敬!谢谢合肥学院,谢谢尊敬的各位领导和老师!
这次的毕业论文是在台德艺老师的悉心指导下完成的,这份大学的最后一份试卷的完成是台老师的指导与监督的成果。在此要特别感谢台老师,感谢他全程悉心的指导及帮助。在整个毕业设计过程中,老师对我热心指导,严格要求,在系统总体设计与编程调试上,给予宝贵的建议,帮助我建立了正确的设计思想,保证了毕业设计的顺利完成。至此毕业设计完成之际,谨向各位老师们致以衷心的感谢和崇高的敬意。
同时,还要感谢我的同学和父母,在遇到问题时向同学请教时他们总是耐心解答,他们给了我莫大的帮助。父母虽然不能在技术上帮助我,但他们的默默支持也是一种动力。非常谢谢我的同学和父母,谢谢他们的帮助与鼓励。 最后,衷心祝福我的大学,我的老师领导,我的同学和父母,祝愿你们身体健康、工作顺利。
附录
电路原理图
源程序
#include #define uchar unsigned char //宏定义 #define uint unsigned int sbit L0=P1^0; sbit L1=P1^1; sbit L2=P1^2; sbit KEY_UP=P1^5;//向上加数按键定义 sbit KEY_DW=P1^6;//向下减数按键定义 sbit KEY_ST=P1^7;//暂停键定义 sbit KEY_T1=P3^1; //定时器0定义按键 sbit KEY_T2=P3^2; //定时器1定义按键 sbit KEY_T3=P3^3; //定时器2定义按键 uchar TableLED[]={0XC0,0XF9,0XA4,0XB0,0X99,0X92,0X82,0XF8,0X80,0X90}; uchar A,C,D,F,G,H,t,t1,flag; char num,num1,num2; uint t2; uchar n,n1,n2; /*****延时函数*****/ void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } /*****初始化函数*****/ void init() { code TMOD=0x11; EA=1; //总中断 ET0=1; TR0=0; ET1=1; TR1=0; ET2=1; TR2=0; TH0=(65536-50000)/256;//定时器0赋初值 TL0=(65536-50000)%256; TH1=(65536-50000)/256;//定时器1赋初值 TL1=(65536-50000)%256; TH2=(65536-50000)/256;//定时器2赋初值 TL2=(65536-50000)%256; P2=0xFF; num=99;//定时器0显示值 num1=99;//定时器1显示值 num2=99;//定时器2显示值 } /****数码管显示函数*****/ void display(uchar shi,uchar ge) { P2=0x00; P0=TableLED[shi]; P2=0xBF; delay(20); P2=0x00; } /****主函数****/ void main() { init();//初始化 while(1) { if(!KEY_T1)//按下定时器0 { TR0=1; flag=0;//标志位 P0=TableLED[ge]; P2=0x7F; delay(20); } L0=0;L2=1;L1=1; delay(5); //按键消抖 if(!KEY_T1) { } while(!KEY_T1); //等待按键释放 if(!KEY_T2)//按下定时器1 { } { if(!KEY_T3)//按下定时器2 TR2=1; flag=2; L0=1;L2=0;L1=1; delay(5); //按键消抖 TR1=1; flag=1;//标志位 L0=1;L2=1;L1=0; delay(5); //按键消抖 if(!KEY_T2) { } while(!KEY_T2); //等待按键释放 } if(!KEY_T3) { } while(!KEY_T3); //等待按键释放 if(!KEY_UP)//按下向上加数键 { delay(15);//消抖 if(!KEY_UP) { while(!KEY_UP);//等待按键释放 if(flag==0)//标志位 { } if(flag==1)//标志位 { } if(flag==2)//标志位 num1++; if(num1==100) num1=0; num++; if(num==100) num=0; { } num2++; if(num2==100) num2=0; } } if(!KEY_DW)//按下向下减数键 { delay(15);//消抖 if(!KEY_DW) { while(!KEY_DW);//等待按键释放 if(flag==0)//标志位 { } if(flag==1)//标志位 { num1--; num--; if(num==-1) num=99; } } } if(num1==-1) num1=99; if(flag==2)//标志位 { } num2--; if(num2==-1) num2=99; if(flag==0) { } if(flag==1) { D=num1/10; F=num1%10; display(D,F);//显示定时器1的数值 A=num/10; C=num%10; display(A,C);//显示定时器0的数值 } } } if(flag==2) { } G=num2/10; H=num2%10; display(G,H); //显示定时器2的数值 void timer0() interrupt 1 { TH0=(65536-50000)/256; //定时器0装初值 TL0=(65536-50000)%256; t++; if(t==20) { t=0; num--; if(num==-1) num=99; //暂停键按下 if(!KEY_ST) { delay(5); //按键消抖 if(!KEY_ST) } } { } while(!KEY_ST); n++; if(n%2!=0) TR0=0; //等待按键释放 else TR0=1; } void timer1() interrupt 3 { TH1=(65536-50000)/256; //定时器1装初值 TL1=(65536-50000)%256; t1++; if(t1==20) { t1=0; num1--; if(num1==-1) num1=99; if(!KEY_ST) //暂停键按下 { } } } delay(5); //按键消抖 if(!KEY_ST) { } while(!KEY_ST); //等待按键释放 n1++; if(n1%2!=0) TR1=0; else TR1=1; void timer2() interrupt 5 { TH2=(65536-50000)/256; //定时器2装初值 TL2=(65536-50000)%256; t2++; TF2=0; if(t2==1200) { t2=0; num2--; if(num2==-1) num2=99; if(!KEY_ST) //暂停键按下 { delay(5); //按键消抖 } if(!KEY_ST) { while(!KEY_ST); n2++; if(n2%2!=0) TR2=0; else TR2=1; } } //等待按键释放 } 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo6.com 版权所有 湘ICP备2023023988号-11
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务