资源描述
摘 要
本文是基于51单片机的转速测量系统,其测量方法较多,随着单片机对脉冲信号的处理能力越来越强大,使得全数字量系统越来越普及,并且使转速测量系统也可以用全数字化处理。输出电压经整形电路送入STC89C51单片机进行数据处理并用四位7段LED显示器显示测量结果。文中首先阐述了构成该系统的原理、硬件的实现方法,在该系统中对信号频率进行测量是首要任务,通过各种测量方法的对比下,该系统应采用测频法测量。其次,在软件设计部分,此系统包含系统初始化程序的设计、数据接收和处理程序的设计、显示程序的设计三个模块。最终,给出各部分的原理框图、电路图及转速测量的程序流程图,并编出其具体的程序。
总之,本课题完成了硬件和软件系统的设计,实现了转速测量系统的测量,转速计算、显示功能,同时实现键盘的开始/停止功能,完成了设计的要求。
关键词 单片机、转速测量、脉冲信号
目 录
1 单片机的应用 1
1.1 单片机的介绍 1
1.1.1 单片机的发展历程 1
1.1.2 单片机的分类 2
1.1.3 单片机的应用与开发 3
1.2 单片机的结构 4
1.2.1 单片机的内部结构 4
1.2.2 单片机的引脚功能 6
1.2.3 单片机定时与工作方式 7
2 工作原理和设计思路及方案 8
2.1 基本原理 8
2.2 设计思路 9
2.3 设计方案 9
3 硬件电路设计 10
3.1 按键设计电路图 10
3.2 显示电路设计图 11
3.3 脉冲产生电路设计图 11
4 软件设计 12
4.1 主程序流程及说明 12
4.2 中断服务子程序 13
4.3 键盘扫描程序 14
5 四位数码管转速表的仿真 15
5.1 系统仿真软件介绍 15
5.1.1 Proteus软件介绍 15
5.1.2 Keil uVision3 软件介绍 17
5.2 系统的仿真 18
5.3 四位数码管转速表程序 20
总 结 25
致 谢 26
参考文献 27
单片机实训
1 单片机的应用
1.1 单片机的介绍
1.1.1 单片机的发展历程
自单片机出现至今,单片机技术已走过了近20年的发展路程。纵观20年来单片机发 展历程可以看出,单片机技术的发展以微处理器(MPU)技术及超大规模集成电路技术的发 展为先导,以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。 单片机长寿命 这里所说的长寿命,一方面指用单片机开发的产品可以稳定可靠地工作 十年、二十年,另一方面是指与微处理器相比的长寿命。随着半导体技术的飞速发展, MPU更新换代的速度越来越快,以386、486、586为代表的MPU,很短的时间内就被淘汰出 局而传统的单片机如68HC05、8051等年龄已有15岁,产量仍是上升的。这一方面是由 于其对相应应用领域的适应性,另一方面是由于以该类CPU为核心,集成以更多I/O功能 模块的新单片机系列层出不穷。可以预见,一些成功上市的相对年轻的CPU核心,也会随 着I/O功能模块的不断丰富,有着相当长的生存周期。新的CPU类型的加盟,使单片机队伍 不断壮大,给用户带来了更多的选择余地。 8位、16位、32位单片机共同发展 这是当前单片机技术发展的另一动向。长期以来,单 片机技术的发展是以8位机为主的。随着移动通讯、网络技术、多媒体技术等高科技产品 进入家庭,32位单片机应用得到了长足发展。以Motorola 68K为CPU的32位单片机97年的 销售量达8千万枚。过去认为由于8位单片机功能越来越强,32位机越来越便宜,使16位 单片机生存空间有限,而16位单片机的发展无论从品种和产量方面,近年来都有较大幅 度的增长。
单片机速度越来越快 MPU发展中表现出来的速度越来越快是以时钟频率越来越高为标志 的。而单片机则有所不同,为提高单片机抗干扰能力,降低噪声,降低时钟频率而不牺 牲运算速度是单片机技术发展之追求。一些8051单片机兼容厂商改善了单片机的内部时 序,在不提高时钟频率的条件下,使运算速度提高了很多,Motorola单片机则使用了琐 相环技术或内部倍频技术使内部总线速度大大高于时钟产生器的频率。68HC08单片机使 用4.9M外部振荡器而内部时钟达32M,而M68K系列32位单片机使用32K的外部振荡器频率 内部时钟可达16MHz以上。低电压与低功耗 自80年代中期以来,NMOS工艺单片机逐渐被CMOS工艺代替,功耗得以 大幅度下降,随着超大规模集成电路技术由3μm工艺发展到1.5、1.2、0.8、0.5、0.35 近而实现0.2μm工艺,全静态设计使时钟频率从直流到数十兆任选,都使功耗不断下降 。Motorola 最近推出任选的M.CORE 可在1.8V电压下以50M/48MIPS全速工作,功率约为 20mW。几乎所有的单片机都有Wait、Stop等省电运行方式。允许使用的电源电压范围也 越来越宽。一般单片机都能在3到6V范围内工作,对电池供电的单片机不再需要对电源采 取稳压措施。低电压供电的单片机电源下限已由2.7V降至2.2V、1.8V。0.9V供电的单片 机已经问世。 低噪声与高可靠性技术 为提高单片机系统的抗电磁干扰能力,使产品能适应恶劣的工 作环境,满足电磁兼容性方面更高标准的要求,各单片机商家在单片机内部电路中采取 了一些新的技术措施。如美国国家半导体NS的COP8单片机内部增加了抗EMI电路,增强了 “看门狗”的性能。Motorola也推出了低噪声的LN系列单片机。 OTP与掩膜 OTP是一次性写入的单片机。过去认为一个单片机产品的成熟是以投产掩膜 型单片机为标志的。由于掩膜需要一定的生产周期,而OTP型单片机价格不断下降,使得 近年来直接使用OTP完成最终产品制造更为流行。它较之掩膜具有生产周期短、风险小的 特点。近年来,OTP型单片机需量大幅度上扬,为适应这种需求许多单片机都采用了在片 编程技术(In System Programming)。未编程的OTP芯片可采用裸片Bonding技术或表面贴 技术,先焊在印刷板上,然后通过单片机上引出的编程线、串行数据、时钟线等对单片 机编程。解决了批量写OTP 芯片时容易出现的芯片与写入器接触不好的问题。使OTP的裸 片得以广泛使用,降低了产品的成本。编程线与I/O线共用,不增加单片机的额外引脚。而一些生产厂商推出的单片机不再有掩膜型,全部为有ISP功能的OTP。MTP向OTP挑战 MTP是可多次编程的意思。一些单片机厂商以MTP的性能、OTP的价位推出 他们的单片机,如ATMEL AVR单片机,片内采用FLASH,可多次编程。华邦公司生产的与 8051兼容的单片机也采用了MTP性能,OTP的价位。这些单片机都使用了ISP技术,等安装到印刷线路板上以后再下载程序。
1.1.2 单片机的分类
ATMEL公司的AVR单片机,是增强型RISC内载Flash的单片机,芯片上的Flash存储器附在用户的产品中,可随时编程,再编程,使用户的产品设计容易,更新换代方便.AVR单片机采用增强的RISC结构,使其具有高速处理能力,在一个时钟周期内可执行复杂的指令,每MHz可实现1MIPS的处理能力.AVR单片机工作电压为2.7~6.0V,可以实现耗电最优化.AVR的单片机广泛应用于计算机外部设备,工业实时控制,仪器仪表,通讯设备,家用电器,宇航设备等各个领域.
(1)Motorola单片机:
Motorola是世界上最大的单片机厂商.从M6800开始,开发了广泛的品种,4位,8位,16位32位的单片机都能生产,其中典型的代表有:8位机M6805,M68HC05系列,8位增强型M68HC11,M68HC12 , 16位机M68HC16, 32位机M683XX. Motorola单片机的特点之一是在同样的速度下所用的时钟频率较Intel类单片机低得多,因而使得高频噪声低,抗干扰能力强,更适合于工控领域及恶劣的环境 .
(2)MicroChip单片机:
MicroChip单片机的主要产品是PIC 16C系列和17C系列8位单片机,CPU采用RISC结构,分别仅有33,35,58条指令,采用Harvard双总线结构,运行速度快,低工作电压,低功耗,较大的输入输出直接驱动能力,价格低,一次性编程,小体积. 适用于用量大,档次低,价格敏感的产品.在办公自动化设备,消费电子产品,电讯通信,智能仪器仪表,汽车电子,金融电子,工业控制不同领域都有广泛的应用,PIC系列单片机在世界单片机市场份额排名中逐年提高.发展非常迅速.
工业级OTP单片机,Micon公司生产,与PIC单片机管脚完全一致,海尔集团的电冰箱控制器,TCL通信产品,长安奥拓铃木小轿车功率分配器就采用这种单片机。EM78系列OTP型单片机: 台湾义隆电子股份有限公司,直接替代PIC16CXX,管脚兼容,软件可转换.
(4)Scenix单片机:
Scenix公司推出的8位RISC结构SX系列单片机与Intel 的Pentium II等一起被<<Electronic Industry Yearbook 1998>>评选为1998年世界十大处理器.在技术上有其独到之处, SX系列双时钟设置,指令运行速度可达50/75/100MIPS(每秒执行百万条指令,XXX M Instruction Per Second) ;具有虚拟外设功能,柔性化I/O端口,所有的I/O端口都可单独编程设定,公司提供各种I/O的库函数,用于实现各种I/O模块的功能以及应用,如多路UART,多路A/D,PWM,SPI,DTMF,FS,LCD驱动等等. 采用EEPROM/FLASH程序存储器,可以实现在线系统编程.通过计算机RS232C接口,采用专用串行电缆即可对目标系统进行在线实时仿真.
(5)8051单片机:
8051单片机最早由Intel公司推出,其后,多家公司购买了8051的内核,使得以8051为内核的MCU系列单片机在世界上产量最大,应用也最广泛,有人推测8051可能最终形成事实上的标准MCU芯片.
1.1.3 单片机的应用与开发
单片机有多种类型,并且逐渐发展16位、32位单片机,但是掌握好基本的8031是十分重要的。开发单片机通常用到开发软件、仿真器、编程器,以及诸如逻辑笔、万用表等辅助工具,当然PC机是少不了的。
开发单片机应用系统,首先时软硬件设计,很难说谁先谁后,大致是更据应用的要求画出框图,想想哪些功能是由硬件实现的,哪些是由软件实现的,然后画出软件的流程图。当然设计中有的功能可由软件代替硬件实现,但要考虑编程的复杂性,有时虽然可以降低成本,但会给自己带来麻烦 。
一般有两种开发方法,其一是软件模拟仿真后把没有错误的程序用编程器写入EPROM或单片机内,廉价的PIC单片机开发系统就是这样,早期的sim51软件是对8031仿真的。有的是在PC上写好程序,检查无语法错误后用软件下载到编程器对AT89C51等单片机进行编程,或者对可在线编程的单片机有例如PIC16F84、PIC-BASIC(PS1016)等进行编程。对于这种“开发手段”,一般只能应用在软硬件比较简单的情况下,也特别适用于学生或者业余爱好者。
其二是采用通用实时再线仿真器,用设断点,单步运行,实时查看寄存器、I/O口、存储器内容等方法调试单片机系统真是感觉好极了,一切尽在掌握。通常仿真器通过RS-232串口于PC机连接,用软件编程调试,PC机显示器显示状态。高档的仿真器支持许多型号的单片机,并有WINDOWS下集成开发环境(包括编辑,汇编,仿真等),大多数做单片机系统的人都是采用这种方法开发,只是仿真器大多较贵,业余爱好者要根据自己的情况决定。
以前的开发要用EPROM,需要编程器(把程序写入EPROM中)和紫外线灯(EPROM擦除器),擦完后还要校验,非常不便。现在片内带有EEPROM的单片机开发起来很方便(就像CI取代 BIOS一样),EEPROM既像静态RAM那样读写简便,又在掉电时数据不会丢失的,大大简化应用系统结构。另外一般EPROM中的程序很容易被复制,OTP单片机可以把保密熔丝烧断以保密,而有的EEPROM单片机有种“锁”,使别人无法读取其中的程序,若要读,EEPROM中原来的信息会自动销毁,就达到了保密的目的。
近年来出现了IIC串行总线结构,这种总线是用两条数据线代替现行的8位数据总线,从而大大地减少了单片机引线,目前许多电子公司正在积极开发IIC总线的产品,也为我们使用提供了方便。
1.2 单片机的结构
1.2.1 单片机的内部结构
8051是MCS-51系列单片机的典型产品, 8051单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等几大单元及数据总线、地址总线和控制总线等三大总线,现在我们分别加以说明:
(1)中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。
(2)数据存储器(RAM):
8051内部有128个8位用户数据存储单元和128个专用寄存器单元,它们是统一编址的,专用寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户定义的字型表。
(3)程序存储器(ROM):
8051共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
(4)定时/计数器(ROM):
8051有两个16位的可编程定时/计数器,以实现定时或计数产生中断用于其中的控制程序转向。
(5)并行输入输出(I/O)口:
8051共有4组8位I/O口(P0、 P1、P2或P3),用于对外部数据的传输。
(6)中断系统:
8051具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,可满足不同的控制要求,并具有2级的优先级别选择。
(7)时钟电路:
8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的脉冲时序,但8051单片机需外置振荡电容。
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式,而后续产品16位的MCS-96系列单片机则采用普林斯顿结构。
下图是MCS-51系列单片机的内部结构示意图
图1.1 单片机结构图
1.2.2 单片机的引脚功能
MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,图2是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。现在对这些引脚的功能加以说明:
图1.2 单片机引脚功能图
(1)P0.0~P0.7
P0口是8位漏极开路型双向并行I/O端口。当访问外部存储器时,它分时作为低8位地址/数据总线。在EPROM编程时,由P0输入指令。在验证程序时,则输出指令。
P1.0~P1.7: P1口8位准双向并行I/O。在对8751片内EPROM编程校验时,用来传送低8位地址。
P2.0~P2.7: P2口8位准双向并行I/O。当访问外部存储器及8751片内EPROM编程时,用以传输高8位地址信号。
P3.0---P3.7: P3口8位准双向并行I/O线,另外其第二功能为:
P3.0---RXD (串行数据接收)
P3.1---TXD (串行数据发送)
P3.2--- (外部中断0请求)
P3.3--- (外部中断1请求)
P3.4---T0 (定时/计数器0外输入)
P3.5---T1 (定时/计数器1外输入)
P3.6--- (外部数据存储器写脉冲)
P3.7--- (外部数据存储器读脉冲)
(2)ALE/PROG地址锁存允许控制信号
当访问外部存储器时,ALE将P0口输出的低8位地址信号锁存,完成低 8位地址与数据的隔离。ALE信号的频率为振荡频率的1/6。它可用于对外输出时钟,定时等。另外它又可做为8751片内EPROM的编程脉冲输入端。
(3)外部程序存储器读选通信号
低电平有效,在读外部程序存储器时,每个机器周期内输出两次有效信号。在执行内部程序存储器中的程序时,该信号无输出,在访问外部数据存储器时,该信号将不会出现。
(4)EA/VPP
当EA为低电平时,CPU只访问外部程序存储器,当EA为高电平时,CPU访问片内程序存储器4KB的地址范围;如果PC值超出4KB地址时,将访问外部程序存储器。对于EPROM型单片机此引脚VPP为内部EPROM编程提供+21V的编程电压。
(5)主电源引脚VSS和VCC
VSS:接地。
VCC:主电源+5V。
(6)外接晶振引脚XTAL1和XTAL2
(7)RTS/VPD
单片机复位/备用电源引脚,当输入的复位信号延续2个机器周期以上高电平时为有效,用以完成对单片机的复位初始化操作。另外,此脚可接上备用电源,在VCC掉电时,可保护片内RAM中的信息不丢失。
1.2.3 单片机定时与工作方式
1. 单片机定时/计数器的四种工作方式
(1)工作方式0
定时器/计数器的工作方式0称之为13位定时/计数方式。它由TL(1/0)的低5位和TH(0/1)的8位构成13位的计数器,此时TL(1/0)的高3位未用,由我们根据需要自行决定。
(2)工作方式1
工作方式1是16位的定时/计数方式,将M1M0设为01即可,其它特性与工作方式0相同。
(3)工作方式2
通常这种式作方式用于波特率发生器(我们将在串行接口中讲解),用于这种用途时,定时器就是为了提供一个时间基准。计数溢出后不需要做事情,要做的仅仅只有一件,就是重新装入预置数,再开始计数,而且中间不要任何延迟,可见这个任务用工作方式2来完成是做好的。
(4)工作方式3
这种式作方式之下,定时/计数器0被拆成2个独立的定时/计数器来用。其中,TL0可以构成8位的定时器或计数器的工作方式,而TH0则只能作为定时器来用。我们知道作定时、计数器来用,需要控制,计满后溢出需要有溢出标记,T0被分成两个来用,那就要两套控制及、溢出标记了,从何而来呢?TL0还是用原来的T0的标记,而TH0则借用T1的标记。如此T1不是无标记、控制可用了吗?是的。一般情况处,只有在T1以工作方式2运行(当波特率发生器用)时,才让T0工作于方式3的。
2.定时器/计数器的定时/计数范围
工作方式0:13位定时/计数方式,因此,最多可以计到2的13次方,也就是8192次。
工作方式1:16位定时/计数方式,因此,最多可以计到2的16次方,也就是65536次。
工作方式2和工作方式3,都是8位的定时/计数方式,因此,最多可以计到2的8次方,也说是256次
2 工作原理和设计思路及方案
2.1 基本原理
本次课程设计用STC89C52作为主控器组成一个转速表。电机转速采用光电脉冲传感器来测量,通过设置定时器/计数器T0为1S,设置定时器/计数器T1为计数器对光电传感器传过来的脉冲进行计数,电动机测速采用测周法,即每旋转一周产生一个脉冲,则设在1s内测量的脉冲个数为n,故测到转速n就是脉冲频率,再乘以60就是电动机的转速,单位为r/min。在此期间定时1s,在1s内允许中断,每中断一次,软件计数器加1,1s后,关闭中断,则软件计数器即为1s内的脉冲数,通过计数一定时间内通过定时器的脉冲数通过软硬件结合工作即可测出电机的转速。
2.2 设计思路
为了确定其设计方案,首先必须构思好初步的设计思路。根据设计要求和实验仿真条件,初步的设计思路可以总结如下:
1) 用信号发生器来产生频率为0-500Hz的方波脉冲信号。
2) 当前转速与电动机的状态显示用4段LED数码管。
3) 键盘采用独立式键盘,需要3个键。
4) 采样时间用定时/计数器0来实现。
5) 用定时/计数器1来统计采样时间内的脉冲数,进而计算转速。
2.3 设计方案
在单片机中,定时功能既可以由硬件(定时/记数器)实现,也可通过 3软件定时实现。硬件定时是利用单片机内定时器定时,启动以后定时器可与CPU并行工作,不占用CPU时间,CPU有较高的工作效率。采用硬件定时和软件定时并用的方式,即用T0溢出中断功能实现50ms定时,通过软件延时程序实现1s定时。定时器的TMOD用于设置定时器/计数器的工作方式0~3,并确定用于定时还是用于计数。TCON主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。硬件电路设计如图2.1所示。
图2.1硬件电路设计
3 硬件电路设计
3.1 按键设计电路图
对于按键电路的设计可以有2种方式:一种方式是直接按键设计,也称独立按键,这种设计电路适用于按键较少的控制,具有按键电路简单,编程方便等优点;另一种方式是矩阵式键盘的设计,它适用于对控制按键较多的电路控制, 占用较少的I/O接口,但是按键电路复杂,编程比较复杂。本课题总共需要3按键,所以采用独立按键设计。设计图如3.1:由上到下的按键分别是复位、停止、启动。
图3.1按键电路
3.2 显示电路设计图
本课题所采用得是由LED(数码管)作为显示电路,用以显示由单片机所接收的脉冲转换来的BCD码,以及开始测速时的各种状态。硬件电路连接是单片机P0.0~P0.7接数码管的由A~G、DP 8个各管脚,P2.0~P2.3接数码管的控制端W4、W3、W2、W1采用共阳极连接的方法连接图如图3.2所示。
图3.2显示电路
3.3 脉冲产生电路设计图
在实际做试验是由另一块单片机产生脉冲,在本次设计中我让另一块单片机输入1Hz频率的脉冲,并把脉冲接到现实的单片机的P3.5口进行计数。如图3.3所示
图3.3脉冲电路
4 软件设计
4.1 主程序流程及说明
本次设计用T0做定时器定时时间为50ms 、T1作计数器,都设置为工作方式一。如图4-1所示。
图4-1 主程序流程图
4.2 中断服务子程序
中断服务子程序如图4-2所示。
图4-2 中断程序流程图
4.3 键盘扫描程序
数字转速表的键盘操作应具有3个功能,即:启动、停止、复位。本次采用的是直接连接的独立式按键,在键盘扫描过程中必须解决以下问题:
1、是否有键按下;
2、是哪一个键按下;
3是不是有抖动;
4、按键是不是松开。
故在程序应该注意以上问题,不然会产生问题,不能正确的对按键进行识别。图4-3为键盘流程图:
图4-3 按键流程图
5 四位数码管转速表的仿真
5.1 系统仿真软件介绍
5.1.1 Proteus软件介绍
Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者和从事单片机教学的教师以及致力于单片机开发应用的科技工作者的青睐。
1.功能特点:
Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是:
(1)原理布图
(2)PCB自动或人工布线
(3)SPICE电路仿真
2.显著的特点是以下几个方面:
(1)互动的电路仿真
用户甚至可以实时采用诸如LED/LCD、键盘、RS232终端等动态外设模型来对设计进行交互仿真。
(2)仿真处理器及其外围电路
可以仿真51系列、AVR、PIC等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。
3.本软件具有3大功能模块:
(1)—个易用而又功能强大的ISIS原理布图工具;
(2)PROSPICE混合模型SPICE仿真;
(3) ARES PCB设计;
4.Protues提供了丰富的资源:
(1)Proteus可提供的仿真元器件资源:仿真数字和模拟、交流和直流等数千种元器件,有30多个元件库。
(2)Proteus可提供的仿真仪表资源 :示波器、逻辑分析仪、虚拟终端、SPI调试器、I2C调试器、信号发生器、模式发生器、交直流电压表、交直流电流表。理论上同一种仪器可以在一个电路中随意的调用。
(3)除了现实存在的仪器外,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。
(4)Proteus可提供的调试手段 Proteus提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。
5.软件仿真功能如下:
支持当前的主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。
(1)提供软件调试功能;
(2)提供丰富的外围接口器件及其仿真;
RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。这样很接近实际,在仿真时,可以选择不同的方案。
(3) 提供丰富的虚拟仪器;
利用虚拟仪器在仿真过程中可以测量外围电路的特性,培养学生实际硬件的调试能力。
(4) 具有强大的原理图绘制功能;
6.电路功能仿真:
在PROTUES绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在PROTEUS的原理图中看到模拟的实物运行状态和过程。PROTEUS不仅可将许多单片机实例功能形象化,也可将许多单片机实例运行过程形象化。前者可在相当程度上得到实物演示实验的效果,后者则是实物演示实验难以达到的效果。它的元器件、连接线路等却和传统的单片机实验硬件高度对应。这在相当程度上替代了传统的单片机实验教学的功能,例:元器件选择、电路连接、电路检测、电路修改、软件调试、运行结果等。
课程设计、毕业设计是学生走向就业的重要实践环节。由于PROTEUS提供了实验室无法相比的大量的元器件库,提供了修改电路设计的灵活性、提供了实验室在数量、质量上难以相比的虚拟仪器、仪表,因而也提供了培养我们实践精神、创造精神的平台。
随着科技的发展,“计算机仿真技术”已成为许多设计部门重要的前期设计手段。它具有设计灵活,结果、过程的统一的特点。可使设计时间大为缩短、耗资大为减少,也可降低工程制造的风险。在单片机开发应用中PROTEUS获得愈来愈广泛的应用。
5.1.2 Keil uVision3 软件介绍
单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码用于用于MCS-51单片机的汇编软件有早期的A51,随着单片机开发技术的不断发展,从普通使用汇编语言到逐渐使用高级语言开发,单片机的开发软件业在不断发展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从今年来个仿真机厂商纷纷宣布全面支持Keil即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98、NT、WIN2000、WINXP等操作系统。掌握这一软件的使用对于使用51系列单系列单片机的爱好者来说是十分必要的,如果你使用C语言编程,那么Keil就是你的选择。即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
Keil C51开发系统基本知识Keil C51开发系统基本知识。
1、系统概述:
Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。
2、Keil C51单片机软件开发系统的整体结构:
C51工具包的整体结构,,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。
Keil uVision3是目前使用广泛的单片机开发软件,它集成了源程序编辑和程序调试于一体,支持汇编、C、PL/M语言。Keil uVision3是德国Keil 公司开发的基于Windows环境的8051软件开发平台,是一个集项目管理、源程序编辑、程序高度于一体的强大集成开发环境。uVision3支持Keil 的各种8051工具,包括C编译器、宏汇编器、连接/定位器及0bject-hex转换程序,以帮助用户快速有效地进行嵌入式系统的设计与调试.
5.2 系统的仿真
试验所涉及的2个软件Keil uVsion4和proteus,以下是仿真步骤。程序调试部分:Keil uVsion4先新建一个工程,选择芯片为AT89C52然后点击是,然后弹出是否加入标准启动文件,点击否,再新建一个文件,保存为“文件名.C”。然后点开工程窗口的Target右键单击出现弹出菜单,选择添加文件到工程,选到刚才新建的文件然后点击OK,输入程序,点击工程选择,选中Output中的Creat Hex File,然后编译,连接生成Hex文件,有错误修改后再编译链接。当编译结果中没出现错误时证明该程序已不存在语法错误。是否能完成课题所要求的功能则需要进行仿真。 仿真部分:运行proteus的ISIS后进入仿真界面将所需元件选择好,根据原理图画出仿真图,待仿真图换好后双击AT89C52导入Keil uVsion4所产生的后缀名为.HEX文件,按开始键进行仿真。 当输入脉冲为6HZ时输出为525rad/min。
图5.1原理图
图5.2仿真图
5.3 四位数码管转速表程序
#include<reg52.h> //头文件
#define uchar unsigned char //宏定义
#define uint unsigned int //宏定义
void Display(void);
uchar code table[]={0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F,
// 0 1 2 3 4 5 6 7 8
0x6F, 0x77, 0x7C, 0x39, 0x5E, 0x79, 0x71}; //共阴数码管代码 0-F
// 9 A B C D E F
uint Count=0; //定时器中断的次数
uint Key_State,T_State; //定义键的状态和定时器的状态
int second=0; //定时器1在1S内计数的次数
sbit Stop=P3^0; //停止
sbit Reset=P3^1; //复位
sbit Start=P3^2; //启动
void delay(uint ms) //延时子程序
{
uint i;
while(ms--)
for(i=0;i<120;i++);
}
void Display() //显示子程序
{
P2=0xFE; //显示个位
P0=table[second%10];
delay(10);
P2=0xFD; //显示十位
P0=table[second%100/10];
delay(10);
P2=0xFB; //显示百位
P0=table[second%1000/100];
delay(10);
P2=0xf7; //显示千位
P0=table[second/1000];
delay(10);
}
void Display2() //初始类容显示
{
P2=0xFE; //显示个位
P0=0x3f;
delay(10);
P2=0xFD; //显示十位
P0=0x38;
delay(10);
P2=0xFB; //显示百位
P0=0x79;
delay(10);
P2=0xf7; //显示千位
P0=0x76;
delay(10);
}
void Scan_Key() //键盘扫描子程序
{
if(Start==0) //启动功能键被按下
{
delay(10); //去抖
if(Start==0) //启动键被按下
{
if(Key_State==0) //假如键状态为0或3
{
TR0=1; //开启定时器/计数器0
TR1=1; //开启定时器/计数器1
Key_State=1; //把键状态设为1
}
while(!Start); //等待启动键释放
}
}
展开阅读全文