资源描述
摘 要
摘 要
表决器是一种常见的电子产品,尤其是在各类投票中,为了实现投票的公平性,性能优良的表决器往往更能得到各单位的青睐。这里通过两种设计方案的对比,最终选定了用STC89C52单片机实现表决器电路。由于单片机具有可编程定时器和中断设备,便于实现显示表决人数和抢答是否成功的精确控制。所用方案电路结构简单,易于实现,它用3颗LED灯来进行显示,且具有简单精准的报警功能。所选方案的一个很重要的特点在于具有灵活性,投票的每个人可以根据自己的意愿选择“同意”、“反对”的两个不同按键。自行进行投票表决,这样进一步保证了公平性。由于它具有成本低廉,结构简单,且性能优良的诸多优点,必定会得到广泛的应用。
关键字:STC89C52单片机,LED灯,表决器,投票表决
27
Abstract
ABSTRACT
Voting is a common electronic product, especially in all kinds of voting, in order to achieve the fairness of voting, the performance of the voting machine is often better available to all units of all ages. Here through the comparison of two design options, the final selection with STC89C52single-chip implementation of the voting circuit. As the microcontroller has a programmable timer and interrupt devices, easy to achieve the number of voting and answer to achieve the success of the precise control. The circuit structure is simple, easy to implement, it uses three LED lights to display, and has a simple and accurate alarm function. A very important feature of the chosen program is the flexibility to vote for everyone who can choose "agree" and "oppose" the two different keys according to their own wishes. To vote on their own, so as to further ensure the fairness. Because of its low cost, simple structure, and excellent performance of many advantages, will be widely used.
Key Words: STC89C52 single chip, LED lights, voting machine, vote
目录
目 录
第1章 引言 1
第2章 STC89C52单片机 2
2.1 STC89C52单片机概述 2
2.2 STC89C52单片机设计要求 4
2.3 STC89C52单片机设计方案 5
2.3 STC89C52单片机硬件组成 5
2.4 STC89C52单片机引脚 7
2.4.1 STC89C52单片机引脚实物图 7
2.4.2 STC89C52单片机引脚功能 7
2.5 STC89C52单片机模块设计 9
2.5.1 STC89C52单片机主控制模块设计 9
2.5.2 STC89C52单片机按键模块设计 11
2.5.3 STC89C52单片机LED模块设计 12
第3章 三人表决器的功能调试 13
3.1 调试过程 13
3.2 检测电路 13
3.3 仿真调试 13
3.4 调试出现的问题 15
第4章 三人表决器软件设计 16
4.1.1 开发语言介绍 16
4.2开发软件介绍 16
4.2.1 Keil 4 16
4.2.2 Proteus ISIS 20
第5章 实物及程序展示 23
5.1实物展示 23
5.2程序展示 23
第6章 结论 24
参考文献 25
致谢 26
第1章 引言
第1章 引言
电子技术是电类相关专业的基础课程,近年来通过教学改革虽然精简了理论教学,加强了实践教学,但是有时理论和实践脱节。本文以三人表决器为例,介绍该课题的教学过程:复习导入、任务分析、设计安装、总结扩展。展示电子技术一体化教学及一体化教学课堂组织形式。
著名教育家苏霍姆林斯基说过: “教给学生能够借助已有的知识去获取新知识,这是最高的教学技巧之所在。”复习导入有利于学生从旧知识过渡到新知识,既巩固了旧知识,又为新知识作了铺垫,使学生感到新知识并不陌生,从而完成以旧引新的任务。
电子表决方式解决了以往举手表决所带来的弊端,使参会人员的意愿更加真实独立,即是对参会人员职权的尊重,又是对民主和法制的尊重。同时,电子表决结果自动生成,节省了会议时间和人力,提高了会议效率。与有线表决相比,无线电子表决系统在可靠性、安全性、以及易用性上更有优势,而且大幅度降低了会议成本,适合普及推广。
目前,市面上能够进行表决器的仪表种类繁多,但是同时具有按键表决,LED灯显示,且能报警的装置并不多。在某些需要表决的场合中,单一的表决这一基本功能已不能满足场景的要求,往往需要同时伴随灯光提示,对其结果进行不同颜色的提示。表决器的进一步优化,有助于人们在特定场合进行表决时,为进一步对提高表决效率、为特定的场合,大会的表决提供更好的支持。
会议表决器,是投票系统中的客户端,是一种代表投票表决装置。表决时,与会的有关人员“赞成”或“反对”,如果对某个决议有任意二到三人同意,那么此决议通过,如果对某个决议只有一个人或没人同意,那么此决议不通过。
第2章 STC89C52单片机
第2章 STC89C52单片机
2.1 STC89C52单片机概述
单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一块小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。
单片机也被称为微控制器(Microcontroler),是因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来。最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小,更容易集成进复杂的而对提及要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机是了解计算机原理与结构的最佳选择。
早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。
STC89C52是一种低功耗、高性能的8位CMOS微控制器,如图3-2所示,具有8K的可编程Flash 存储器。使用高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在线系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。STC89C52具有以下标准功能:8K字节Flash,256字节RAM,32位I/O 口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
STC89C52单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、掌上电脑以及鼠标等电脑配件中都配有1-2部单片机。而个人电脑中也会有为数不少的单片机在工作。汽车上一般配备40多部单片机,复杂的工业控制系统上甚至可能有数百台单片机在同时工作!单片机的数量不仅远超过PC机和其他计算的综合,甚至比人类的数量还要多。
STC89C52单片机内部也用和电脑功能类似的模块,比如CPU,内存,并行总线,还有和硬盘作用相同的存储器件,不同的是它的这些部件性能都相对我们的家用电脑弱很多,不过价钱也是低的,一般不超过10元即可......用它来做一些控制电器一类不是很复杂的工作足矣了。我们现在用的全自动滚筒洗衣机、排烟罩、VCD等等的家电里面都可以看到它的身影!它主要是作为控制部分的核心部件。
它是一种在线式实时控制计算机,在线式就是现场控制,需要的是有较强的抗干扰能力,较低的成本,这也是和离线式计算机的(比如家用PC)的主要区别。
STC89C52单片机是靠程序的,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性!
由于STC89C52单片机对成本是敏感的,所以目前占统治地位的软件还是最低级汇编语言,它是除了二进制机器码以上最低级的语言了,既然这么低级为什么还要用呢?很多高级的语言已经达到了可视化编程的水平为什么不用呢?原因很简单,就是单片机没有家用计算机那样的CPU,也没有像硬盘那样的海量存储设备。一个可视化高级语言可编写的小程序里面即使只有一个按钮,也会达到几十K的尺寸!对于家用PC的硬盘来讲没什么,可是对于单片机来讲是不能接受的。
2.2 STC89C52单片机设计要求
本系统由单片机STC89C52、LED灯、电阻、按键等电路组成。实际表决过程中要确保按键按下不会出错,采用单片机内部的锁存器,从而存储按键信息,保证按键信号正常。同时对投票的结果进行显示,显示的方法用LED灯显示,开始表决时,用黄色LED灯显示,表决通过时为绿色LED灯,表决未通过时为红色LED灯。
本方案采用单片机设计一个三人表决器,具体要求满足以下条件:
1. 要求采用51单片机作为微控制器;
2. 通过三个LED灯进行判断显示;
3.通过一个按键进行表决开始的操作;
3. 支持两键常规表决方式:“赞成”、“反对”;
4. 同时使用不同颜色的LED灯报警,通过显示黄灯,表示表决开始;显示绿灯,表示表决通过;显示红灯,表示表决未通过。
2.3 STC89C52单片机设计方案
方案一:
采用LED数码管动态扫描,LED数码管价格适中,对于显示数字合适,采用动态扫描法与单片机连接时,虽然占用的单片机口线少,但连线还需要花费一点时间,所以也不用此种作为显示。
方案二:
采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,若采用在显示数字显得太浪费,且价格也相对较高,所以在此也不用此种作为显示。
方案三:
采用1602液晶显示屏,该液晶显示屏的显示功能强大,内置192种字符,可显示大量符号、数字,清晰可见,而且功率消耗小寿命长抗干扰能力强。
方案四:
采用LED灯来进行显示,分别用不同的颜色来表示不同的状态,电路实现只需要加上一个电阻即可,然后用单片机进行控制,用黄色的LED灯光来表示表决开始,用红色的LED灯光来表示表决未通过,用绿色的LED灯光来表示表决通过。
比较以上四种方案,很容易看出,采用方案四,电路比较简单,软件设计容易实现,故实际设计中拟采用方案四。
2.3 STC89C52单片机硬件组成
为了实现功能,本表决器设计了相关的硬件电路和相关应用程序。硬件电路主要包括STC89C52单片机最小系统,LED显示电路、按键电路等。系统程序主要包括主程序,表决显示子程序,按键处理程序以及数据存储程序等。
在本系统的电路设计方框图如图3-1所示,它由三部分组成:
1.主控芯片STC89C52;
2.LED显示部分;
3.按键电路部分。
图2-1 系统总体框图
(1)控制部分
采用传统的数字模似电路,功能可以实现,但电路复杂,温度误差大,成本高,可靠性也比较差;于是我选择采用单片机89C52控制,它结构简单,可以减少外围电路的搭接,并且89C51使用方便,成本比较低,性能稳定,还可以控制各模块输入输出。
(2)显示部分
LED灯进行显示,用黄色的LED灯光来表示表决开始,用红色的LED灯光来表示表决未通过,用绿色的LED灯光来表示表决通过。
(3)按键部分
普通的矩阵按键即可。
2.4 STC89C52单片机引脚
2.4.1 STC89C52单片机引脚实物图
图2-2 STC89C52引脚实物图
2.4.2 STC89C52单片机引脚功能
图2-3 STC89C52引脚图
从引脚功能来看,可将引脚分为三部分:
1、电源及时钟引脚
VCC:接+5V电源;VSS:接地;XTAL1和XTAL2:时钟引脚,外接晶体引线端。当使用芯片内部时钟时,此两引脚端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。
2、控制引脚
RST/VPT:RST是复位信号输入端,VPT是备用电源输入端。当RST输入端保持2个机器周期以上高电平时,单片机完成复位初始化操作。当主电源VCC发生故障而突然下降到一定低电压或断电时,第2功能VPT将为片内RAM提供电源以保护片内RAM中的信息不丢失。
ALE/PROG:地址锁存允许信号输出端。在存取外存储器时,用于锁存低8位地址信号。当单片机正常工作后,ALE端就会周期性地以时钟振荡频率的1/6固定频率向外输出正脉冲信号。此引脚的第2功能PROG是对片内带有4K字节EPROM的8751固化程序时,作为编程脉冲输入端。
PSEN:程序存储允许输出端。是片外程序存储器的读选通信号,低电平有效。CPU从外部程序存储器取指令时,PSEN信号会自动产生负脉冲,作为外部程序存储器的选通信号。
EA/VPP:程序存储器地址允许输入端。当EA为高电平时,CPU执行片内程序存储器指令,但当PC中的值超过0FFFFH时,将自动转向执行片外程序存储器指令;当EA为低电平时,CPU只执行片外程序存储器指令。对8031单片机,EA必须接低电平。在8751中,当对片内EPROM编程时,该端接21V的编程电压。
3、I/O口引脚
P0.0~P0.7:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
P1.0~P1.7:P1口是一个具有内部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。在flash编程和校验时,P1口接收低8位地址字节。
P2.0~P2.7:P2口是一个具有内部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。P3.0~P3.7:P3口是一个具有内部上拉电阻的8位双向I/O口。作为输出口,每位能驱动4个TTL逻辑电平。P3口亦作为STC89C52特殊功能(第二功能)使用。在flash编程和校验时,P3口也接收一些控制信号。
2.5 STC89C52单片机模块设计
2.5.1 STC89C52单片机主控制模块设计
本设计中单片机主要负责对外设的控制和各个功能模块间的协调,没有复杂的数据计算,因此,8位的51系列单片机足以胜任。51单片机以其低廉的价格以及较出色的性能成了很多控制系统的首选。
单片机的最小系统如图2-4所示,单片机的XTAL0和XTAL1引脚用于连接晶振电路。XTAL0接外部晶振和微调电容的一端,在片内它是振荡器倒相放大器的输入,XTAL1接外部晶振和微调电容的另一端,在片内它是振荡器倒相放大器的输出。复位电路包括复位电容(C6)、复位电阻(R3)和复位开关(S4)。VSS为电源地,VCC为电源正。
图2-4 单片机最小系统
单片机复位电路、晶振电路简介
1、复位电路的使用
复位电路是使单片机的CPU或系统中的其他部件处于某一确定的初始状态,并从这上状态开始工作。
(1)常见的复位电路
通常单片机复位电路有两种:上电复位电路,按键复位电路。上电复位电路:上电复位是单片机上电时复位操作,保证单片机上电后立即进入规定的复位状态。它利用的是电容充电的原理来实现的。按键复位电路:它不仅具有上电复位电路的功能,同时它的操作比上电复位电路的操作要简单的多。如果要实现复位的话,只要按下RESET键即可。它主要是利用电阻的分压来实现的
在此设计中,采用的按键复位电路。按键复位电路如图2-5所示。
图2-5 复位电路
(2)复位电路工作原理
上电复位要求接通电源后,单片机自动实现复位操作。上电瞬间RESET引脚获得高电平,随着电容的充电,RERST引脚的高电平将逐渐下降。RERST引脚的高电平只要能保持足够的时间(2个机器周期),单片机就可以进行复位操作。上电与按键均有效的复位电路不仅在上电时可以自动复位,而且在单片机运行期间,利用按键也可以完成复位操作
2、晶振电路的使用
晶振电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信号控制下严格地工作。
通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,如图4.4中Y1、C1、C2。可以根据情况选择6MHz、12MHz或24MHz等频率的石英晶体,这里选择12MHz晶振。补偿电容通常选择30pF左右的瓷片电容。
图2-6 时钟振荡电路
2.5.2 STC89C52单片机按键模块设计
键盘在单片机应用系统中是一个很关键的部件,它能实现向单片机系统输入数据、发送命令等功能,是人工干预单片机的主要手段。考虑到本设计实际需要的按键较少,故采用独立式键盘接口电路。在程序查询方式下,通过I/O端口读入按键状态,当有按键按下时,相应的I/O端口变为低电平,而未被按下的按键在上拉电阻作用下为高电平,这样通过读I/O口的状态判断是否有按键按下。本设计中将8个按键分别接在单片的P3口,并公共端接地,采用高电平的触发方式。
图2-7 按键电路
2.5.3 STC89C52单片机LED模块设计
LED 的全称是 Lighy Emitting Diode,即发光二极管。LED 是一种半导体固体发光器件,它是利用固体半导体芯片作为发光材料,当两端加上正向电压,半导体中的载流子发生复合引起光子发射而产生光。LED 可以直接发出红、黄、蓝、绿、青、橙 、紫、白色的光。本设计中用黄色的LED灯表示表决开始,用红色的LED灯表示表决未通过,用绿色的LED灯表示表决通过,且分别接在单片机的P1.2、P1.4、P1.6口上。
图2-8 LED显示电路
第3章 三人表决器的功能调试
第3章 三人表决器的功能调试
3.1 调试过程
本系统的调试主要分为硬件调试、软件调试两大部分。经过初步的分析设计后,在制作硬件电路的同时,调试也在穿插进行。这样有利于问题的分析和解决,不会造成问题的积累,而且不会因为一个小问题而进行整体电路的检查,从而可以节约大量的调试时间。软件编程中,首先编写单元模块的程序,并且在硬件上调试成功问题,即可以做系统整体程序的调试。联机调试是最重要的一部分,同时也是本设计成功的关键。
3.2 检测电路
首先对电路进行通电,观察是否能正常工作,如不能正常工作,按原理图分模块进行电路检测,是否焊接正常,是否有虚焊或漏焊现象;如焊接正常,在按信号传递的方向逐级检测,找出出问题的一级,并向该级的上级进行检测,直到将故障排除。对于虚焊和漏焊的情况最好的办法是先找到一个比较大的电路回路,如果用的是指针式万用表,打到欧姆档1X10欧姆档就可以测,如果是指针摆到最右,说明我们的线路连接是正常的!如果用的是数字万用表,我们可以调整到短路档位,接上要测的点直接就可以测,如果有蜂鸣响说明线路连接正常。
3.3 仿真调试
模拟调试:当电路搭建好之后,选中单片机STC89C52,左键点击STC89C52,在出现的对话框里点击Program File按钮,找到刚才Keil软件编译得到的HEX文件,载入然后点击“OK”按钮就可以模拟了。点击模拟调试按钮的运行按钮,进人调试状态。图3-1为运行按键:
图3-1 运行按键
三人表决器初始化:
图3-2 三人表决器初始化
开始表决:
图3-3 开始表决
表决通过:
图3-4 表决通过
表决未通过:
图3-5 表决未通过
3.4 调试出现的问题
1、将所编程的程序烧写在单片机8051芯片中,然后将其加入硬件电路中,然后进行调试,发现不能实现其功能。
2、调整后继续进行调试,结果还是不能实现预期的功能,当按下的同意键大于反对建时,LED黄色灯亮;但当按下的反对建大于同意键时,仍然出现LED黄色灯亮;进一步对程序进行调试,后来发现是代码的LED引脚有错误,修正引脚之后,终于出现如期的性能。
第4章 三人表决器软件设计
第4章 三人表决器软件设计
4.1.1 开发语言介绍
C语言是在70年代初问世的。一九七八年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书[20]。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。
早期的C语言主要是用于UNIX系统。由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用。成为当代最优秀的程序设计语言之一。
C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,形成了多种版本的C语言。
C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。
4.2开发软件介绍
4.2.1 Keil 4
Keil 4是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。这款软件提供了丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的是,Keil 4软件编译后生成的汇编代码,就能展现出生成的目标代码效率非常高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
图4-1 Keil4开发环境
Keil软件中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,可载入Proteus仿真软件中的MCU中,进行功能仿真。
Keil使用“工程”(Project)的概念,对工程(而不能对单一的源程序)进行编译/汇编、连接等操作。工程的建立、设置、编译/汇编及连接产生目标文件的方法非常易于掌握。应用Keil进行软件仿真开发的主要步骤为:
1.编写源程序并保存;
2.建立工程并添加源文件;
3.设置工程;
4.编译/汇编、连接,产生目标文件;
5.程序调试。
Keil软件调试流程
首先选择菜单File-New…,在源程序编辑器中输入汇编语言或C语言源程序(或选择File-Open…,直接打开已用其它编辑器编辑好的源程序文档)并保存,注意保存时必须在文件名后加上扩展名.asm(.a51)或.c。
然后选择菜单Project-New Project…,建立新工程并保存(保存时无需加扩展名,也可加上扩展名.uv2),工程保存后会立即弹出一个设备选择对话框,选择CPU后点确定返回主界面。
图4-2 项目选择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 Fi”;其它选项卡内容一般可取默认值。工程设置后按F7键(或点击编译工具栏上相应图标)进行编译/汇编、连接以及产生目标文件。
图4-3 生成HEX文件
成功编译/汇编、连接后,选择菜单Debug-Start/Stop Debug Session(或按Ctrl+F5键)进入程序调试状态(如图6.3),Keil提供对程序的模拟调试功能,内建一个功能强大的仿真CPU以模拟执行程序。Keil能以单步执行(按F11或选择Debug-Step)、过程单步执行(按F10或选择Debug-Step Over)、全速执行等多种运行方式进行程序调试。
图4-4 仿真调试状态窗口
如果发现程序有错,可采用在线汇编功能对程序进行在线修改(Debug-Inline Assambly…),不必执行先退出调试环境、修改源程序、对工程重新进行编译/汇编和连接、然后再次进入调试状态的步骤。对于一些必须满足一定条件(如按键被按下等)才能被执行的、难以用单步执行方式进行调试的程序行,可采用断点设置的方法处理(Debug-Insert/Remove Breakpoint或Debug-Breakpoints…等)。在模拟调试程序后,还须通过编程器将.hex目标文件烧写入单片机中才能观察目标样机真实的运行状况。
Keil软件由于其强大的软件仿真功能,友好的用户界面以及易于掌握的特点,应用此软件来编写程序有着巨大的优势,熟悉此软件也是调试整个万年历系统的基础。
4.2.2 Proteus ISIS
Proteus ISIS是英国Labcenter Electronics公司开发的电路分析与实物仿真软件。它由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,它运行于Windows操作系统上,用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。
图4-5 Proteus仿真环境
Proteus软件运行流程
Proteus ISIS的工作界面是一种标准的Windows界面,如图所示。
包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
运行Proteus程序后,进入软件的主界面(如图6.4)。通过左侧工具栏中的P(从库中选择元件命令)命令,在Pick Devices 左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线。
Proteus ISIS的工作界面:
图4-6 Proteus ISIS的工作界面
将所需要的元器件放置好后,绘制成原理图
图4-7 仿真三人表决器的仿真图
系统流程图是描绘系统物理模型的传统工具。它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等),表达信息在各个部件之间流动的情况。
系统流程图表达的是系统各部件的流动情况,而不是表示对信息进行加工处理的控制过程。
系统流程图的作用表现在以下几个方面:
1,制作系统流程图的过程是系统分析员全面了解系统业务处理概况的过程,它是系统分析员做进一步分析的依据。
2,系统流程图是系统分析员、管理员、业务操作员相互交流的工具。
3,系统分析员可直接在系统流程图上画出可以有计算机处理的部分。
4,可利用系统流程图来分析业务流程的合理性。
图4-8 系统程序流程图
第5章 实物及程序展示
第5章 实物及程序展示
经过调试,软件和硬件调试最终完成,开板并焊接完成了三人表决器的实物制作。
5.1实物展示
图5-1 三人表决器实物图
5.2程序展示
图5-2 编程软件界面
第6章 结论
第6章 结论
至此,关于毕业设计的所有内容就介绍完了,进行这次毕业设计一切都是从零开始,从最简单查资料、了解各个元件的功能起步,再确定设计方案、画流程图、编写程序到最后进行仿真,这次课题设计可以说成功完成。系统的硬件、软件设计合理,功能完备,运行稳定、可靠。实验结果表明此表决器实现后具有显示直观、电路简洁等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。
在整个设计过程中,充分发挥了人的主观能动性,自主学习,学到了许多没学到的知识。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考查资料,和同学讨论,向老师请教,理清了思路,完成对程序的编写。通过设计提高了对单片机的认识,进一步熟悉和掌握单片机的结构及工作原理。通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术,提高软件设计、调试能力;通过这次设计熟悉以单片机核心的应用系统开发的全过程,掌握硬件电路设计的基本方法和技术,掌握相关电路参数的计算方法。最终较好的完成了设计,达到了预期的目的,完了最初的设想。
参考文献
参考文献
[1]李广弟等.单片机基础[M].北京航空航天出版社,2001.
[2]王东峰等.单片机C语言应用100例[M].电子工业出版社,2009.
[3]陈海宴.51单片机原理及应用[M].北京航空航天大学出版社,2010.
[4]刘守义等.单片机技术基础[M].西安电子科技大学出版社,2007.
[5]钟富昭等.8051单片机典型模块设计与应用[M].人民邮电出版社,2007.
[6]李平等.单片机入门与开发[M].机械工业出版社,2008.
[7] 李亚伯等编著,数字电路与系统,北京:电子工业出版社,2001
[8] 李双庆等编著,常用半导体器件简明手册,北京:电子工业出版社,1989
[9] 徐建仁主编,数字集成电路应用与实验,长沙:国防科技大学出版社,1990
[10] 郝鸿安编著,常用数字集成电路应用手册,北京:中国计量出版社,1987
[11] 曹汉房等编著,数字技术教程,北京:电子工业出版社,1995
致谢
致谢
首先衷心地感谢我的导师刘磊。本文从选题到完成,从理论上的探讨到实际问题的解决,无处不饱含着刘磊导师的心血。刘磊导师的悉心指导和建议给了我极大的帮助和支持,使我受益匪浅,在此论文完成之际,谨向刘磊导师致以深深的谢意和崇高的敬意。
此外,还要感谢我们班的全体老师,是他们给我打下了坚实的基础,为我的毕业设计做出了良好的铺垫,也为我的毕业设计提供了不少的意见和建议,在此表示衷心的感谢。
通过这次毕业设计,我学会了如何综合运用所学的专业知识,如何查阅相关资料,并从中提取有用信息来帮助我完成的设计。使使我深深地感到:作为一个设计者,如何进行一个产品的开发和设计,并对其设计过程如何进行优化选择有了初步的认识,为以后的工作打下了坚实的基础。我所获得的这些知识都是电子科技大学成都学院对我辛勤培养的结果。因此,我要感谢母校的各级领导及老师们,谢谢你们四年来对我的教育和引导。
译文
展开阅读全文