文档视界 最新最全的文档下载
当前位置:文档视界 › 第9章 Keil集成开发环境及Proteus ISIS仿真

第9章 Keil集成开发环境及Proteus ISIS仿真

第9章  Keil集成开发环境及Proteus ISIS仿真
第9章  Keil集成开发环境及Proteus ISIS仿真

第9章 Keil集成开发环境及Proteus ISIS仿真

随着微电子技术的迅速发展,单片机在工业控制、消费电子、家用电器、通信、办公自动化、医疗器械等方面应用越来越广泛。单片机作为嵌入式系统的核心器件,其应用系统设计包括硬件电路设计和软件电路设计两个方面,学习和应用过程中必须软件、硬件结合。单片机系统调试通常分为软件调试、硬件测试和整机联调三个部分。

单片机自身不具备开发功能,必须借助于开发工具。目前,国内外推出了许多基于个人计算机的单片机软或硬开发平台。硬件开发平台方面诸如开发板、实验箱、仿真器、编程器、示波器、逻辑分析仪等,但因其价格不菲,开发过程繁琐。因此在软件支持的前提下,应用最普遍的是软件仿真开发平台,其方便、快捷、节约。

单片机应用系统软件仿真开发平台有两个常用的工具软件:Keil和Proteus ISIS。Keil 主要用于单片机源程序的编辑、编译、链接以及调试;Proteus ISIS主要用于单片机硬件电路原理图的设计以及单片机应用系统的软、硬件联合仿真调式。

本章将以Keil μVision2、Proteus ISIS Professional Vision7.7 SP2版本为例详细介绍其在单片机开发中的应用方法,并通过一个实例详细介绍Keil与Proteus ISIS的联调使用方法。

9.1 Keil集成开发环境

一般情况下单片机常用的程序设计语言有两种:汇编语言和C语言。

汇编语言具有执行速度快、占存储空间少、对硬件可直接编程等特点,因而特别适合对实时性能要求比较高的情况下使用。使用汇编语言编程要求程序设计人员必须熟悉单片机内部结构和工作原理,编写程序比较麻烦一些。

与汇编语言相比,C语言在功能、结构性、可读性、可维护性、可移植性上都有明显优势,C语言大多数代码被翻译成目标代码后,其效率和准确性方面和汇编语言相当。特别是C语言的内嵌汇编功能,使C语言对硬件操作更加方便,并且C语言作为自然高级语言,易学易用,尤其是在开发大型软件是更能体现其优势,因此在单片机程序设计中得到广泛应用。

Keil μVision2是德国Keil Software公司推出的微处理器开发平台,可以开发多种8051兼容单片机程序。可以用来工程创建和管理、编辑、编译C源码和汇编源程序、链接和重定位目标文件和库文件、生成HEX文件、调试目标程序等完整的开发流程,具有丰富的库函数和功能强大的集成开发工具,全Windows操作界面,所以备受用户青睐。

9.1.1 Keil μVision2工作环境

正确安装后,用鼠标左键双击计算机桌面上Keil μVision2运行图标,或用鼠

标左键分别单击计算机桌面上“开始”—“所有程序”—“Keil μVision2”,即可

启动Keil μVision2,启动界面如图9-1所示,进入Keil μVision2集成开发环境后,其界面如图9-2所示。

图9-1 Keil μVision2启动界面

图9-2 Keil μVision2集成开发环境界面

从图9-2可以看出,Keil μVision2集成开发环境与其它常用的windows窗口软件类似,设置有菜单栏、可以快速选择命令的按钮工具栏、工程窗口、源代码文件窗口、对话窗口、信息显示窗口。Keil μ Vision2允许同时打开浏览多个源程序文件。

Keil μ Vision2 IDE提供了多种命令执行方式:一、菜单栏提供了诸如文件(File)操作、编辑(Edit)操作、视图(View)操作、项目/工程(Project)操作、程序调试(Debug)、闪存(Flash)操作、片上外设寄存器设置和观察(Peripherals)、开发工具选项(Tools)、软件版本控制系统菜单(SVCS)、窗口选择和处理(Window)、在线帮助(Help)等11 种操作菜单;

二、使用工具栏按钮可以快速地执行μVision2命令;三、使用键盘快捷键也可以执行μ Vision2命令,键盘快捷键根据使用习惯等需要还可以重新设置。下面的表格列出了μ Vision2菜单项命令、工具条图标、默认的快捷键以及它们的描述。

表9-1 文件菜单和命令(File)

表9-2 编辑菜单和编辑器命令(Edit)

表9-3 视图命令(View)

表9-4 项目菜单和项目命令(Project)

表9-5 调试菜单和调试命令(Debug)

表9-6 外围器件菜单(Peripherals)

表9-7 工具菜单(Tool)

表9-8 软件版本控制系统菜单(SVCS)

表9-9 视窗菜单(Window)

表9-10 帮助菜单(Help)

9.1.2 Keil工程的创建

使用Kei l μ Vision2 IDE的项目/工程开发流程和其它软件开发项目的流程极其相似,具体步骤如下:

1)新建一个工程,从设备器件库中选择目标器件(CPU),配置工具设置;

2)用C51语言或汇编语言编辑源程序;

3)用工程管理器添加源程序;

4)编译、链接源程序,并修改源程序中的错误;

5)生成可执行代码,调试运行应用。

为了介绍方便,下面以一个简单实例——单片机流水灯来介绍Keil工程的创建过程:1.源程序文件的建立

执行菜单命令File→new或者点击工具栏的新建文件按钮,即可在项目窗口的右侧打

开一个默认名为Text1的空白文本编辑窗口,还必须录入、编辑程序代码,在该窗口中输入以下C51语言程序:

/*定义头文件及变量初始化*/

#include

#include

#define uchar unsigned char

#define uint unsigned int

uchar temp=0xFE; //temp中先装入LED1亮、LED2~LED8灭的数据

//(二进制的11111110)

uchar count=0x64; //定义计数变量初值为100,计数100个10ms,即1S /*T0中断服务子程序*/

void timer0(void) interrupt 1 using 1

{TH0=-5000/256; //重装初值

TL0=-5000%256;

count--; //1S时间未到,继续计数

if(count==0)

{count=0x64; //1S时间到,重置count计数初值为100

temp=_crol_(temp,1); //将点亮的LED循环左移一位

}

}

/*主程序*/

void main(void)

{P1=0xff; //初始状态,所有LED熄灭

TMOD=0x01; //设置T0工作方式1

TH0=-5000/256; //设置10ms计数初值

TL0=-5000%256;

EA=1; //开放总中断

ET0=1; //开放T0中断

TR0=1; //启动T0

while(1) //死循环

{P1=temp;} //把temp数据送P1口

}

μVision2与其它文本编辑器类似,同样具有录入、删除、选择、复制、粘贴等基本的文本编辑功能。需要说明的是,源文件就是一般的文本文件,不一定使用Keil软件编写,可以使用任意文本编辑器编写,需要注意的是,Keil的编辑器对汉字的支持不好,建议使用记事本之类的编辑软件进行源程序的输入,然后按要求保存,以便添加到工程中。

在编辑源程序文件过程中,为防止断电丢失,需时刻保存源文件,第一次执行菜单命令File→Save或者点击工具栏的保存文件按钮,将打开如图9-3所示的对话框。在“文件名”

对话框中输入源文件的命名。注意必须加上后缀名(汇编语言源程序一般用.ASM或.A51为后缀名,C51语言文件用.C为后缀名),这里将源程序文件保存为Example.c。

图9-3 命名并保存新建源程序文件

2.建立工程文件

keil支持数百种CPU,而这些CPU的特性并不完全相同,在工程开发中,并不是仅有一个源程序文件就行了,还必须为工程选择CPU,以确定编译、汇编、链接的参数,指定调试的方式,有一些项目还会有多个文件组成等。因此,为管理和使用方便,keil使用工程(project)这一概念,即将源程序(C51或汇编)、头文件、说明性的技术文档等都放置在一个工程里,只能对工程而不能对单一的源文件进行编译(汇编)和链接等操作。

启动Keil μ Vision2 IDE 后,μ Vision2总是打开用户上一次处理的工程,要关闭它可以执行菜单命令Project→Close Project。建立新工程可以通过执行菜单命令Project→New Project,此时将出现如图9-4所示的Create New Project 对话框,要求给将要建立的工程在“文件名”对话框中输入名字,这里假定将工程文件命名为Example,并选择保存目录,不需要

扩展名。

点击“保存”按钮,打开如图9-5所示的Select Device for Target‘Target 1’的第二个对话框,此对话框要求选择目标CPU(即所用芯片的型号),列表框中列出了μ Vision2支持的以生产厂家分组的所有型号的CPU。Keil支持的CPU很多,这里选择的是Atmel公司生产的AT89S51单片机,然后再点击“确定”按钮,回到主界面。

图9-4 建立新工程

图9-5 选择目标CPU

另外,如果在选择完目标CPU后想重新改变目标CPU,可以执行菜单命令Project→Select Device for…,在随后出现的目标设备选择对话框中重新加以选择。由于不同厂家许多型号的CPU性能相同或相近,因此,如果所需的目标CPU型号在μ Vision2中找不到,可以选择其它公司生产的相近型号。

3.添加源程序文件到工程中

选择完目标CPU后,在工程窗口中,出现了“Target 1”,前面有“+”号,点击“+”号展开,可以看到下一层的“Source Group 1”,这时的工程还是一个空的工程,没有任何

源程序文件,前面录入编辑好的源程序文件需手工添加,鼠标左键点击“Source Group 1”使其反白显示,然后,点击鼠标右键,出现一个下拉菜单,如图9-6所示,选中其中的“Add file to Group‘Source Group 1’”,弹出一个对话框,要求添加源文件。注意,在该对话框下面的“文件类型”默认为C SOURCE FILE(*.C),也就是以C为扩展名的文件,假如所要添加的是汇编源程序文件,则在列表框中将找不到,需将文件类型设置一下,点击对话

图9-6 加入文件

框中“文件类型”后的下拉列表,找到并选中“ASM SOURCE FILE(*.A51,*.ASM)”,这样,在列表框中才可以找到汇编源程序文件了。

双击Example.c文件,将文件加入工程,添加源程序文件后的工程如图9-7所示,注意,在文件加入项目后,该对话框并不消失,等待继续加入其它文件,但初学时常会误认为操作没有成功而再次双击同一文件,这时会出现如图9-8所示的对话框,提示你所选文件已在列表中,此时应点击“确定”,返回前一对话框,然后点击“close”即可返回主界面,返回后,点击“Source Group 1”前的加号,会发现Example.c文件已在其中。双击文件名,即打开该源程序。

图9-7 添加源程序文件后的工程

图9-8 重复加入源程序文件错误警告

如果想删除已经加入的源程序文件,可以在如图9-7所示的对话框中,右击源程序文件,在弹出的快捷菜单中选择Remove File‘Example.c’,即可将文件从工程中删除。值得注意的是,这种删除属于逻辑删除,被删除的文件仍旧保留在磁盘上的原目录下,需要的话,还可以再将其添加到工程中。

4.工程的设置

在工程建立好之后,还需要对工程进行设置,以满足要求。打开工程设置对话框,方法有二:其一、右击工程管理器(Project Workspace)窗口中的工程名Target 1,弹出如图9-9所示的快捷菜单,选择快捷菜单上的Options for Target‘Target 1’选项,即可打开工程设置对话框;其二、在Project菜单项选择Options for Target‘Target 1’命令,也可打开工程设置对话框。从对话框可以看出,工程的设置分成10个部分,每个部分又包含若干项目。在这里主要介绍以下几个部分。

1)Target设置

主要用于用户最终系统的工作模式设置,决定用户系统的最终框架。打开对话框中的Target选项卡,Target设置界面如图9-10所示:

Xtal(MHz)是晶振频率值设置项,默认值是所选目标CPU的最高可正常工作的频率

图9-9 工程设置快捷菜单

图9-10 Target设置界面

值,对于示例所选的A T89S51而言是24M,本示例设定为12 M。设置的晶振频率值主要是在软件仿真时起作用,而与最终产生的目标代码无关,在软件仿真时,μVision2将根据用户设置的频率来决定软件仿真时系统运行的时间和时序。

Memory Model是存储器模式设置项,有3个选项可供选择:Small模式,没有指定存储空间的变量默认存放在data区域内;Compact模式,没有指定存储空间的变量默认存放在pdata区域内;Large模式,没有指定存储空间的变量默认存放在xdata区域内。

Use On-chip ROM为是否仅使用片内ROM选择项,打钩选择仅使用片内ROM,不打钩则反之。但选择该项并不会影响最终生成的目标代码量。

Code Rom Size是程序空间的设置项,用于选择用户程序空间的大小,同样也有三个选择项:Small模式,只用低于2K的程序空间;Compact模式,单个函数的代码量不能超过2K,整个程序可以使用64K程序空间;Large模式,可用全部64K空间。

Operating为是否选用操作系统设置项,有两种操作系统可供选择:Rtx tiny和Rtx full,通常不使用任何操作系统,即使用该项的默认值None。

Off-chip Code memory用于定义系统扩展ROM的地址范围:如果用户使用了外部程序空间,但在物理空间上又不是连续的,则需进行该项设置。该选项共有3组起始地址(Start)和地址大小(Size)的输入,μVision2 在链接定位时将把程序代码安排在有效的程序空间内。该选项一般只用于外部扩展的程序,因为单片机内部的程序空间多数都是连续的。

Off-chip Xdata memory用于定义系统扩展RAM的地址范围:主要应用于单片机外部非连续数据空间的定义,设置方法与“Off-chip Code memory”项类似。Off-chip Code memory、Off-chip Xdata memory两个设置项必须根据所用硬件来确定,由于本示例是单片应用,未进行任何扩展,所以均按默认值设置。

Code Banking为是否选用程序分段设置项,该功能较少应到。

2)Output设置

用于工程输出文件的设置。打开对话框中的Output选项卡,Output设置界面如图9-11所示:

图9-11 Output设置界面

Select Folder for Objects…用于设置输出文件存放的目录,一般选用当前工程所保存的根目录;Name of Executable用于设置输出目标文件的名称,默认为当前工程的名称。根据用户需要,可以进行修改;Debug Information用于设置是否产生调试信息,如果需要对程序进行调式,该项必须选中;Browse Information用于设置是否产生浏览信息,产生的浏览信息可以用菜单View-> Browse来查看,一般取默认值;Create HEX File用于设置是否生成可执行代码文件,可执行代码文件是最终写入单片机的运行文件,格式为Intel HEX,扩展名为.hex。默认情况下该项未被选中,在调试状态下,目标文件不会自动转换为HEX文件,如果要实现程序、电路联合软件仿真或程序在硬件上运行,该项必须选中,选中后在调试状态下,目标文件则会自动转换为可在单片机上执行的HEX文件。其他选项一般保持默认设置。

3)Listing设置

用于设置列表文件的输出格式。打开对话框中的Listing选项卡,Listing 设置界面如图9-12所示:

图9-12 Listing 设置界面

在源程序编译完成后将生成“*.lst”格式的列表文件,在链接完成后将生成“*.m51”格式的列表文件。该项主要用于细致的调整编译、链接后生成的列表文件的内容和形式,其中比较常用的选项是C Compiler Listing选项区中的Assembly Code复选项。选中该复选项可以在列表文件中生成C语言源程序所对应的汇编代码。其他选项可保持默认设置。

4)C51设置

用于对μVision2的C51编译器的编译过程进行控制。打开对话框中的C51选项卡,C51 设置界面如图9-13所示:

图9-13 C51 设置界面

其中比较常用的两项是代码优化等级Code Optimization|Level、代码优化侧重Code Optimization|Emphasis。

Code Optimization|Level 是优化等级设置项,C51编译器在对源程序进行编译时,可以对代码多至9级优化,提供0~9 共10种选择,以便减少编译后的代码量或提高运行速度。优化等级一般默认使用第8级,但如果在编译中有时会出现一些错误,可以降低优化等级试试。本示例默认选择优化等级8(Reuse Common Entry Code)。在程序调试成功后再提高优化级别改善程序代码。

Code Optimization|Emphasis是优化侧重设置项,有3 种选项可供选择:选择Favor speed,在优化时侧重优化速度;选择Favor size,在优化时侧重优化代码大小;选中Default,为缺省值,默认的是侧重优化速度,可以根据需要更改。

5)Debug设置

用于选择仿真工作模式。打开对话框中的Debug选项卡,Debug设置界面如图9-14所示:

图9-14 Debug设置界面

右边主要针对仿真器,用于硬件仿真时使用,称为硬件设置,设置此种工作模式,用户可把Cx51嵌入到系统中,直接在目标硬件系统上调试程序;左边主要用于程序的编译、链接及软件仿真调试,称为软件设置,该模式在没有实际目标硬件系统的情况下可以模拟8051的许多功能,这非常便于应用程序的前期调试。软件仿真和硬件仿真的设置基本一样,只是硬件仿真设置增加了仿真器参数设置。由于本示例未涉及硬件仿真器,在此只需选中软件仿真Use Simulator单选项。

工程设置对话框中的其它选项卡与C51编译选项、A51编译选项、BL51链接器的链接选项等用法有关,通常均取默认值,基本不应做任何设置。

所需设置完成后按确认返回主界面,工程设置完毕。

5.工程的编译、链接和调试、运行

在工程设置好后,即可按照工程设置的选项进行编译和链接,其中还要修改语法错误,

其它错误(如逻辑错误)则必须通过调试才能发现和解决,以生成二进制代码的目标文件(.obj)、列表文件(.lst)、绝对地址目标文件、绝对地址列表文件(.m51)、链接输入文件(.imp)、可执行代码文件(.hex)等,进行软件仿真和硬件仿真。

1)源程序的编译、链接

分三种操作方式:执行菜单命令Project→Build target或单击建立工具栏(Build Toolbar)上的工具按钮,对当前工程进行链接,如果当前文件已修改,则先对该文件进行编译,

然后再链接以生成目标代码;执行菜单命令Project→Rebuild all target files或单击工具按钮

,对当前工程所有文件重新进行编译后再链接;执行菜单命令Project→Translate或单击工具按钮,则仅对当前文件进行编译,不进行链接。建立工具栏(Build Toolbar)如图9-15所示,从左至右分别是编译、编译链接、全部重建、停止编译和对工程进行设置。

图9-15 建立工具栏

上述操作将在输出窗口Output Window中的Build页给出结果信息,如果源程序和工程设置都没有错误,编译、链接就能顺利通过,生成得到名为Example.hex的可执行代码文件,如图9-16所示,如果源程序有语法错误,编译器则会在Build页给出错误所在的行、错误代码以及错误的原因,用鼠标双击该行,可以定位到出错的位置进行修改和完善,然后再重新编译、链接,直至没有错误为止,即可进入下一步的调试运行工作。

图9-16 程序语法正确时编译、链接的结果

2)调试运行

编译、链接成功后,执行菜单命令Debug→Start/Stop Debug Session或者单击文件工具栏(File Toolbar)上的工具按钮,即可进入(或退出)软件仿真调试运行模式,此时出

现一个调试运行工具条(Debug Toolbar),源程序编辑窗口与之前也有变化,如图9-17所示,图中上部为调试运行工具条,从左至右分别是复位、全速运行、暂停、单步跟踪、单步运行、跳出函数、运行到光标处、下一状态、打开跟踪、观察跟踪、反汇编窗口、观察窗口、代码作用范围分析、1#串行窗口、内存窗口、性能分析、工具按键等命令;图中下部为调试窗口,黄色箭头为程序运行光标,指向当前等待运行的程序行。

在μVision2 中,有5种程序运行方式:单步跟踪(Step Into),单步运行(Step Over),跳出函数(Step Out)、运行到光标处(Run to Cursor line),全速运行(Go)。首先搞清楚两个重要的概念,即单步执行与全速运行。使用F5快捷键,或执行菜单命令Debug→Go,或单击工

具按钮进入全速运行,使用Esc快捷键,或执行菜单命令Debug→Stop Running,或单击工具按钮停止全速运行,全速执行是指一行程序执行完以后紧接着执行下一行程序,中

间不停止,因此程序执行的速度很快,但只可以观察到运行完总体程序的最终结果的正确与否,如果中间运行结果有错,则难以确认错误出现在哪些具体程序行。单步执行是每次执行一行程序,执行完该行程序以后即停止,等待命令执行下一行程序,此时可以观察该行程序执行完以后得到的结果,是否与所需结果相同,从而发现并解决问题。

图9-17 源程序的软件仿真运行

使用F11快捷键,或执行菜单命令Debug→Step Into,或单击工具按钮以单步跟踪

形式执行程序,单步跟踪的功能是尽最大的可能跟踪当前程序的最小运行单位,在本示例C 语言调试环境下最小的运行单位是一条C语句,因此单步跟踪每次最少要运行一个C语句。如图9-17所示,每按一次F11快捷键,黄色箭头就会向下移动一行,包括被调用函数内部的程序行。

使用F10快捷键,或执行菜单命令Debug→Step Over,或单击工具按钮以过程单步形式执行程序,单步运行的功能是尽最大的可能执行完当前的程序行。与单步跟踪相同的是单步运行每次至少也要运行一条C语句;与单步跟踪不同的是单步运行不会跟踪到被调用函数的内部,而是把被调用函数作为一条C语句来执行。如图9-17所示,每按一次F10 快

捷键,黄色箭头就会向下移动一行,但不包括被调用函数内部的程序行。

通过单步执行调试程序,效率很低,并不是每一行程序都需要单步执行以观察结果,如本示例中的软件延时程序段若通过单步执行要执行多次才执行完,显然不合适。为此,可以采取以下方法:

第一,使用Ctrl+F10快捷键,或执行菜单命令Debug→Run to Cursor line,或单击工具按钮以运行到光标处。如图9-17所示,程序指针现指在程序行

{P1=0xff; //初始状态,所有LED熄灭//①

若想让程序一次运行到程序行

TR0=1; //启动T0 //②

则可以单击此程序行,当闪烁光标停留在该行后,执行菜单命令Debug→Run to Cursor line。运行停止后,发现程序运行光标已经停留在程序行②的左侧。

第二、使用Ctrl+F11快捷键,或执行菜单命令Debug→Step Out of current function,或单击工具按钮以跳出函数,单步执行到函数外,即全速执行完调试光标所在的子程序或

子函数。

第三、执行调用子函数行时,按下F10键,调试光标不进入子函数的内部,而是全速执行完该子程序。

3)断点设置

程序调试时,某些程序行必须符合一定的条件才能被执行到(例如利用定时/计数器对外部事件计数中断服务程序,串行接收中断服务程序,外部中断服务程序,按键键值处理程序等),这些条件往往是异步发生或难以预先设定的,这类问题很难使用单步执行的方法进行调试,此时就要使用到程序调试中的另一种非常重要的方法:断点设置。

在μVision2 的源程序窗口中,可以在任何有效位置设置断点,断点的设置/取消方法有多种。如果想在某一程序行设置断点,首先将光标定位于该程序行,然后双击,即可设置红色的断点标志。取消断点的操作相同,如果该行已经设置为断点行,双击该行将取消断点,也可执行菜单命令Debug→Insert/Remove BreakPoint设置/取消断点;执行菜单命令Debug →Enable/Disable BreakPoint开启或暂停光标所在行的断点功能;Debug→Disable All BreakPoint暂停所有断点;Debug→Kill All BreakPoint清除所有设置的断点以,还可以单击文件工具条上的按钮或使用快捷键进行设置。

如果设置了很多断点,就可能存在断点管理的问题。例如,通过逐个地取消全部断点来使程序全速运行将是非常烦琐的事情。为此,μVision2 提供了断点管理器。执行菜单命令Debug→Breakpoints,出现如图9-18所示的断点管理器,其中单击Kill All(取消所有断点)按钮可以一次取消所有已经设置的断点。

图9-18 断点管理器

9.1.3 存储空间资源的查看和修改

在μVision2 的软件仿真环境中,执行菜单命令View→Memory Windows可以打开存储器窗口,如图9-19所示,如果该窗口已打开,则会关闭该窗口。标准AT89S5l 的所有有效存储空间资源都可以通过此窗口进行查看和修改。

图9-19 存储器窗口

通过在存储器地址输入栏Address后的编辑框内输入“字母:数字”即可显示相应内存值,便于查看和修改,其中字母代表存储空间类型,数字代表起始地址。μVision2把存储空间资源分成4 种存储空间类型加以管理:可直接寻址的片内RAM(类型data,简称d)、可间接寻址的片内RAM(类型idata,简称i)、扩展的外部数据空间XRAM(类型xdata,简称x)、程序空间code(类型code,简称c)。例如输入D:0x08即可查看到地址08开始的片内RAM单元值,若要修改0x08地址的数据内容,方法很简单,首先右击0x08地址的数据显示位置,弹出如图9-20所示的快捷菜单。然后选择Modify Memory at D:0x08选项,此时系统会出现输入对话框,输入新的数值后单击OK按钮返回,即修改完成。

图9-20 在存储器对话框中修改数据

使用存储器对话框查看和修改其它类型存储空间,操作方法与data空间完全相同,只是将查看或修改的存储空间类型和起始地址要相应的改变。

值得注意的是:在标准80C51 中,可间接寻址空间为0~0xFF范围内的RAM。其中,地址范围0x00~0x7F内的RAM和地址范围0x80~0xFF内的SFR 既可以间接寻址,也可以直接寻址;地址范围0x80~0xFF 的RAM 只能间接寻址。外部可间接寻址64K 地址范围的数据存储器,程序空间有64K的地址范围。

9.1.4 变量的查看和修改

在用高级语言编写的源程序中,常常会定义一些变量,在μVision2 中,使用“观察”对话框(Watches)可以直接观察和修改变量。在软件仿真环境中,执行菜单命令View→Watch & Call Stack Windows 可以打开“观察”窗口,如图9-21所示。如果窗口已经打开,则会关闭该窗口。其中,Name栏用于输入变量的名称,V alue栏用于显示变量的数值。

图9-21 “观察”对话框

在观察窗口底部有4个标签:显示局部变量观察窗口Locals,自动显示当前正在使用的局部变量,不需要用户自己添加;变量观察窗口Watch #1、Watch #2,可以根据分类把变量添加到#1或#2观察对话框中;堆栈观察窗口Call Stack。

1.变量名称的输入

单击Name栏中的,然后按F2 键,此时可在处输入需查看或修改的变量名称,确认无误后按Enter键。输入的变量名称必须是文件中已经定义的。在图9-21中,temp是自定义的,而Pl是头文件reg51.h定义的。

2.变量数值的显示

在Value栏,除了显示变量的数值外,用户还可以修改变量的数值,方法是:单击该行的Value栏,然后按F2键,此时可输入修改的数值,确认正确后按Enter键。

9.1.5 外围设备的查看和修改

基于51单片机的乒乓游戏机设计附Proteus仿真_毕业设计

基于51单片机的乒乓游戏机设计附Proteus仿真 基于51单片机的乒乓游戏机设计附Proteus仿真 目录 1 绪论 (1) 1.1 本设计的研究背景和研究目的 (1) 1.2 国内外研究现状 (1) 1.3 本设计的任务和设计方法 (2) 1.3.1 设计任务 (2) 1.3.2 设计方法 (2) 2 乒乓游戏机设计方案 (3) 2.1 基于单片机的乒乓游戏机设计 (3) 2.1.1 硬件设计 (3) 2.1.2 软件设计 (4) 2.2 基于FPGA的乒乓游戏机设计 (4) 2.3 方案比较与选择 (5) 3硬件电路的设计 (6) 3.1 硬件核心电路选择 (6) 3.1.1 单片机STC89C51简介 (6) 3.1.2 单片机端口分配 (7) 3.2 电源电路的设计 (8) 3.3 时钟电路的设计 (9) 3.4 复位电路的设计 (10) 3.5 按键电路的设计 (10) 3.6 模拟球台电路的设计 (12) 3.6.1 译码器简介 (12) 3.6.2发光二极管简介 (14) 3.6.3 模拟球拍电路的设计 (15) 3.7 显示电路的设计 (15) 3.7.1 LCD1602简介 (15) 3.7.2 显示电路的设计 (16)

3.8 乒乓游戏机总电路的设计 (17) 4 乒乓游戏机的软件设计及编程 (18) 4.1 主程序的设计及功能实现 (19) 4.2 按键组的设计及功能实现 (20) 4.2.1 球拍模拟子程序 (20) 4.2.2 暂停/开始子程序 (20) 4.3 发球程序的设计及功能实现 (21) 4.4 线路程序的设计及功能实现 (21) 4.4.1 线路选择子程序 (21) 4.4.2 LED点阵子程序 (22) 4.5 回球程序的设计及功能实现 (22) 4.6 LCD显示程序设计及功能实现 (23) 4.7 设计源程序 (24) 5 系统调试及分析 (24) 5.1 仿真调试及分析 (24) 5.1.1 Proteus软件简介 (24) 5.1.2 Keil uVision4软件简介 (25) 5.1.3 仿真调试 (25) 5.1.4 仿真调试的结果分析 (28) 5.2 实物调试及分析 (28) 5.2.1 制作实物的过程 (28) 5.2.2 进行实物调试 (28) 5.2.3 实物调试的结果分析 (31) 6 结论与展望 (32) 谢辞(Acknowledge) (33) 参考文献 (34) 附录1:程序 (36) 附录2:元件清单 (51)

(整理)较为全面的基于PROTEUS仿真51单片机动态数码管课程设计(WORD版)

单片机课程设计 题目动态数码管显示 学院机电工程学院 专业班级电子信息工程12-1班 姓名 组员 指导教师张、王老师 2015 年 5 月30 日

课程设计量化评分标准

目录 一、概述 (1) 1. 单片机简介 (1) 2. Proteus简介 (2) 3. 设计任务与要求 (3) 二、硬件设计 (3) 1. 单片机最小系统设计 (1) 2. 数码管显示部分 (4) 3. 数码管驱动部分 (5) 三、软件设计 (6) 1. 仿真原理图 (6) 2. 仿真参数设置 (6) 3. 仿真结果 (7) 4. 程序流程图 (8) 5. 程序代码.................................................... .9 四、心得体会............................................... (11) 五、参考文献 (12)

精品文档 一、概述 1. 单片机简介 如图1.1和图1.2分别为PDI P封装的AT89C52引脚图和实物图 图1.1 引脚图图1.2 实物图 AT89C52是一个低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2 个读写口线,AT89C52可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的 Flash存储器可有效地降低开发成本。 AT89C52有PDIP、PQFP/TQFP及PLCC等三种封装形式,以适应不同产品的需求。本课程设计中使用的是PDIP封装的AT89C52单片机。 2.Proteus简介 如图1.3为Proteus7.0的工作界面图

ERP 仓库管理系统

身体仓库管理系统 1、模块说明:每个模块一般可分为六组:基本资料、日常作业、凭证打印、清单与报表、 批次处理、查询作业 1.1 基本资料:产品类别设定、编码原则设定、产品编码、仓别设定、单据性质设定 1.1.1 产品类别设定:此为后续报表数据收集索引和分类之依据 1.1.2 编码原则设定:据此不同公司可采取不同的分段和方式进行自动编码,包 括产品编码、供应商编码、客户资料编码、人员编码等, 都要依此进行自定义。 Eg: A 一般产品编码通用原则为:大分类(3码)+中分类(3码)+小分类(3码)+ 流水码(4码),共计13码左右即可。 Eg: B 编码不必赋予太多特殊意义,亦造成编码上的混乱,以简单明了,易 识别为原则。 1.1.3 产品编码:包括基本项目、采购、生管、仓库、业务、品管、生产、财务 会计、其它,其可根据不同部门使用状况来分类定义,同 时便于基础资料的收集与输入,及日后使用之管理和维护。 1.1.4 仓别设定:此为各仓别属性设定之基础 1.1.5 单据性质设定:此为各“日常作业”之单据性质设定基础。 Eg:A库存异动单对库存的影响可分为:增加、减少 调拨单对库存的影响为:平调 成本开帐/调整单对成本的影响可分为:增加、减少 Eg:B可依不的部门或个人进行单据别的区别使用和管理。 Eg:C单据的编码方式:单别+单据号,或可采用自由编码的方式进行等 Eg:D单据表尾的备注与签核流程等。 Eg:E单据电脑审核流程。 1.2 日常作业:库存异动建立作业、调拨建立作业、成本开帐/调整建立作业、盘点资 料建立作业、批号管理建立作业、借入/出建立作业、借入/出还回作 业 1.2.1 库存异动建立作业:此单据适用于非生产性物料的异动(或增或减),及库存 盘盈亏之调整用,如没有上线制令管理系统亦可通过 此作业进行库存异动作业。 1.2.2 调拨单建立作业:此单据适用于各仓之间的物料调拨之用,不对库存变化 产生影响。 1.2.3 成本开帐/调整建立作业:此单据适用于系统开帐之各仓库存成本资料的输 入,亦是日常“成本重计作业”所产生之单据。 1.2.4 盘点资料建立作业:此单据适用于盘点时库存数量之输入 1.2.5 批号管理建立作业:此单据适用于物料在产品生产过程中的使用和追溯的 管理,及先进先出原理 1.2.6 借入/出建立作业:此单据适用于所有借入/出作业记录之凭证 1.2.7 借入/出还回建立作业:此单据适用所有借入/出还回作业记录之凭证,如无 法归还之作业,则通过进货或销货来做关联性作 业。 1.3 凭证打印:库存异动单凭证、调拨单凭证、成本开帐/调整单凭证、盘点清单凭证、 批号管理凭证、借入/出凭证、借入/出还回凭证

实验一 Keil C51集成开发环境的使用练习、仿真与调试

实验一Keil C51集成开发环境的使用练习、仿真与调试 一、实验目的 1、熟悉Keil C51集成开发环境的使用方法 2、熟悉Keil C51集成开发环境调试功能的使用和DP-51PROC单片机综合 仿真实验仪的使用。 二、实验设备及器件 IBM PC机一台 DP-51PROC单片机综合仿真实验仪一台 三、实验内容 1、进行Keil C51集成开发环境的安装和使用练习。然后按照以下内容建立 文件并编译产生HEX文件。 ORG 0000H LJMP Main ORG 00F0H Main: MOV R7, #0 Loop: MOV R6, #0 DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJNZ R7, Loop CPL P1.0 ; P 1 .0 取反 CPL P1.1 ; P 1 .1 取反 CPL P1.2 ; P 1 .2 取反 CPL P1.3 ; P 1 .3 取反 CPL P1.4 ; P 1 .4 取反 CPL P1.5 ; P 1 .5 取反 CPL P1.6 ; P 1 .6 取反 CPL P1.7 ; P 1 .7 取反 SJMP Main ; END 2、进行Keil C51集成开发环境的仿真调试练习。然后按照以下内容建立文 件并编译仿真调试。 ORG 8000H LJMP Main ORG 80F0H Main: MOV R7, #0 Loop:

MOV R6, #0 DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJNZ R7, Loop CPL P1.0 ; P 1 .0 取反 CPL P1.1 ; P 1 .1 取反 CPL P1.2 ; P 1 .2 取反 CPL P1.3 ; P 1 .3 取反 CPL P1.4 ; P 1 .4 取反 CPL P1.5 ; P 1 .5 取反 CPL P1.6 ; P 1 .6 取反 CPL P1.7 ; P 1 .7 取反 SJMP Main END 四、实验要求 1、熟练掌握Keil C51集成开发环境的工程建立、编辑与编译功能。 2、熟练掌握结合DP-51PROC单片机综合仿真实验仪和Keil C51集成开发 环境进行仿真调试。 五、实验步骤 (1)用40针排线把DP-51PROC实验仪上 的A1区J76接口和A2区J79接口相 连,然后使用排线把A2区的J61接口 与D1区的J52接口相连。如右图所示。 (2)对DP-51PROC实验仪上电,然后设置 TKSMonitor5仿真器和使用软件 DPFLASH把MON51监控程序下载到 TKSMonitor5仿真器。 (3)关闭DPFLASH软件。把TKSMonitor5 仿真器的工作模式选择开关切换到 RUN处,然后按一下复位键(RST), MON51程序就开始运行了。此时,TKSMonitor5仿真器进入调试状 态。 (4)用户使用Keil C51集成开发环境建立工程、编辑与编译“实验内容” 所列的程序。然后按照(软件调试环境的设置)设置好,然后在编译 一次。 (5)此时用户就可以进行仿真调试。如果用户在退出仿真调试模式后想再进入仿真调试,可以先按一下TKSMonitor5仿真器的复位键(RST)。 用户可以在仿真调试环境下设置断点,单步,全速运行等。在调试过 程中用户可以看见D1区LED的亮灭是由用户程序来控制的。 六、实验思考题

PROTEUS 课程设计

课程设计任务书 学生姓名:专业班级:电子1102班 指导教师:工作单位:信息工程学院 题目:方波发生电路 初始条件: 计算机、Proteus软件、Cadence软件 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写 等具体要求) 1、课程设计工作量:1.5周 2、技术要求: (1)学习Proteus软件和Cadence软件。 (2)设计一个方波发生电路。 (3)利用Cadence软件对该电路设计原理图并进行PCB制版,用Proteus软件对该电路进行仿真。 3、查阅至少5篇参考文献。按要求撰写设计报告书。全文用A4纸打印,图纸应符合绘图规范。 时间安排: 2015.1.12做课设具体实施安排和课设报告格式要求说明。 2015.1.12-1.15学习Proteus软件和Cadence软件,查阅相关资料,复习所设计内容的基本理论知识。 2015.1.16-1.20对方波发生电路进行设计仿真工作,完成课设报告的撰写。 2015.1.21提交课程设计报告,进行答辩。 指导教师签名:年月日 系主任(或责任教师)签名:年月日

目录 摘要.....................................................................................................I Abstract................................................................................................II 1绪论.. (1) 2方案论证 (2) 3利用Proteus软件进行电路设计及仿真 (5) 4利用Cadence软件进行电路设计及PCB绘制 (9) 4.1电路原理图设计 (9) 4.2PCB设计 (10) 5心得体会 (13) 参考文献 (14)

仓库管理系统使用手册

仓库管理系统 ——使用手册

目录 第1章系统概述 (1) 1.1引言 (1) 1.2系统特点....................................................... 错误!未定义书签。第2章系统安装 ............................................ 错误!未定义书签。 2.1系统环境要求............................................... 错误!未定义书签。 2.2单机版的安装............................................... 错误!未定义书签。 2.3网络版的安装............................................... 错误!未定义书签。 2.3.1 程序包文件介绍....................................................... 错误!未定义书签。 2.3.2 数据库的安装与配置............................................... 错误!未定义书签。 2.3.3 客户端的安装与配置............................................... 错误!未定义书签。 2.4系统注册....................................................... 错误!未定义书签。第3章基本操作 (2) 3.1系统启动 (2) 3.2重新登录 (2) 3.3修改密码 (2) 3.4记录排序 (3) 3.5快速查找功能 (3) 3.7窗口分隔 (3) 3.8数据列表属性设置 (3) 3.9数据筛选 (4) 3.10数据导入 (4) 3.11报表设计 (5)

实验一Keil集成开发环境的使用

实验报告纸 (院、系)自动化专业班组单片机与嵌入式系统课 实验一Keil集成开发环境的使用一、实验目的 熟悉Keil C51集成开发环境的使用方法 二、实验内容 学习如何使用Keil编译器编写单片机程序并调试 三、实验设备 PC机 四、实验步骤 1.新建文件夹 2.新建工程 3.配置工程 (1)按以下内容新建experiment_1.asm文件 ORG 0000H AJMP MAIN ORG 0100H MAIN: MOV SP, #60 ;给堆栈指针赋初值 LIGHT:

CPL P1.0 CPL P1.1 CPL P1.2 ACALL DELAY AJMP LIGHT DELAY: MOV R7,#10H DELAY0: MOV R6,#7FH DELAY1: MOV R5,#7FH DELAY2: DJNZ R5,DELAY2 DJNZ R6,DELAY1 DJNZ R7,DELAY0 RET END (2)在工程窗口的Source Group 1处单击鼠标右键弹出菜单,点其中的选项Add Files to Group ‘Source Group 1’;添加文件。 (3)在Project菜单的下拉选项中,单击Option for Target ‘Target 1’.在弹出的窗口中要完成以下设置: A.选择单片机芯片。不需要向工程添加启动代码;

B. 晶振频率的设置 C. Output标签下的Create HEX File 前小框中要打勾D.Debug标签选择Use Simulator(软件模拟) 4.编译工程 5. 查看结果(要求截图写进实验报告) (1)进入调试状态 (2)选择单步方式运行,观察Port 1窗口状态变化 (3)在Project Workspace观察R5、R6、R7、SP等的变化进入调试时的初始界面

51单片机+proteus仿真PWM

#include unsigned char flag; unsigned int x; unsigned int y; #define time 800 void main() { EA=1; //开总中断 ET0=1; //定时器T0中断允许 TMOD=0x02; //使用定时器T0的模式2 TH0=0; //定时器T0的高8位赋初值 TL0=0; //定时器T0的高8位赋初值 TR0=1; //启动定时器T0 x=time; y=0; while(1)//无限循环等待中断 ; } /************************************************************** 函数功能:定时器T0的中断服务程序 **************************************************************/ void Time0(void) interrupt 1 using 0 //“interrupt”声明函数为中断服务函数 //其后的1为定时器T0的中断编号;0表示使用第0组工作寄存器{ if(flag==0) { TH0=256-y; //定时器T0的高8位重新赋初值 TL0=256-y; //定时器T0的高8位重新赋初

P1=1; if((--x)==0) { flag=1; x=time; if((--y)==0) { y=100; } } } if(flag==1) { TH0=y; //定时器T0的高8位重新赋初值 TL0=y; //定时器T0的高8位重新赋初 P1=0; if((--x)==0) { flag=0; x=time; if((--y)==0) { y=100; } } } }

单片机原理与应用—基于Proteus和KeilC课后答案复习题解答.doc

第 2 章 MCS-51 单片机结构及原理习题 1. MSC- 51 单片机部由哪些功能部件组成,各有什么功能? 答:以 80C51 单片机为例,其部功能部件有: 控制器:是对取自程序存储器中的指令进行译码,在规定的时刻发出各种操作所需的控制信 号,完成指令所规定的功能; 运算器:根据控制器发来的信号,执行算术逻辑运算操作; 存储器:包括程序存储和数据存储器; 定时器计数器: 2 个 16 位定时器 / 计数器,可对机器周期计数,也可对外部输入脉冲计数; 中断系统:可响应三个部中断源和两个外部中断源的中断请求;输入输出接口: 4 个 8 位并行 口和一个全双工串行口; 2. MSC- 51 单片机外部引脚的名称是什么?各有什么功能? 答: (1)电源及晶振引脚 VCC(40 脚 ) : +5V 电源引脚 VSS(20 脚 ) :接地引脚 XTAL1(19 脚 ) ;外接晶振引脚(置放大器输入端) XTAL2(18 脚 ) :外接晶振引脚(置放大器输出端) (2)控制引脚 RST/VPD(9)为复位 /备用电源引脚 ALE/PROG(30)为地址锁存使能输出/编程脉冲输入 PSEN(29):输出访问片外程序存储器读选通信号 EA/ VPP (31):外部ROM允许访问/编程电源输入 (3)并行 I/O 口引脚 P0.0 ~ P0.7 ( 39~ 32 脚)—— P0 口; P1.0 ~ P1.7 ( 1~ 8 脚)—— P1 口; P2.0 ~ P2.7 ( 21~ 28 脚)—— P2 口; P3.0 ~ P3.7 ( 10~ 17 脚)—— P3 口。 3. 51 系列单片机的封装有哪些类型?请说明每一种封装引脚之间的距离。 答: 51 系列单片机的封装有: 40 引脚双列直插封装( DIP—— dual in-line package ),引脚之间的距离是 100mil(2.54mm) ; 44 引脚方形扁平封装( QFP —— quad flat package )方式,引脚之间的距离是 2.54mm;44 引脚带引线的塑料芯片载体PLCC(Plastic Leaded Chip Carrier) 。 4.什么是复位?单片机复位电路有哪几种,工作原理分别是什么? 答:复位——使单片机恢复原始默认状态的操作。 单片机复位电路有: 上电复位电路,由电阻和电容构成,通过上电时,电容相当于短路而使 复位引脚在晶振有效的情况下保持 2 个机器周期的高电平;按钮开关复位电路,由两个电阻

基于proteus的数字电子钟的仿真设计

题目:基于Proteus的数字电子钟的设计 与仿真 课程名称:单片机系统设计与Proteus仿真 学生姓名:马珂 学生学号: 1305010323 系别:电子工程学院 专业:通信工程 年级: 13级 任课教师:徐锋 电子工程学院 2015年5月

目录 一、设计目的与要求 (3) 二、设计内容与方案制定 (3) 三、设计步骤 (3) 1.硬件电路设计 (3) 1.1.硬件电路组成框图 (3) 1.2.各单元电路及工作原理 (4) 1.3.绘制原理图 (5) 1.4.元件清单列表 (6) 2.程序设计 (6) 2.1程序流程 (6) 2.2汇编程序 (7) 四、调试与仿真 (12) 五、心得体会 (14) 六、参考文献: (14)

基于Proteus的数字电子钟的设计与仿真 一、设计目的与要求 设计目的:通过课程设计,培养学生运用已学知识解决实际问题的能力、查阅资料的能力、自学能力和独立分析问题、解决问题的能力和能通过独立思考。 设计要求:设计一个时、分可调的数字电子钟、开机显示“9-58-00”。 二、设计内容与方案制定 具有校时功能,按键控制电路其中时键、分键两个键分别控制时、分时间的调整。按分键分加1;按时键时加1。 以AT89C51单片机进行实现秒、分、时上的正常显示和进位,其中显示功能由单片机控制共阴极数码管来实现,数码管进行动态显示。 三、设计步骤 1、硬件电路设计 1.1.硬件电路组成框图 1.2.各单元电路及工作原理 (1)晶振电路 单片机的时钟产生方法有两种:内部时钟方式和外部时钟方式。本系统中

AT89C51单片机采用内部时钟方式。采用外接晶体和电容组成的并联谐振回路。其电路图如下: (2)键盘控制电路 键盘可实现对时间的校对,用两个按键来实现。按时键来调节小时的时间,按分键来调节分针的时间。其电路连接图如下: (3)显示电路 LED显示器是现在最常用的显示器之一发光二极管(LED)分段式显示器由7条线段围成8字型,每一段包含一个发光二极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或符号。显示电路显示模块需要实时显示当前的时间,即时、分、秒,因此需要6个数码管,采用动态显示方式显示时间,其硬件连接方式如下图所示。

仓库管理系统需求分析说明书

智能仓库管理系统 需求规格说明书 拟制:仇璐佳日期:2010年3月17日星期三审核:日期: 批准:日期: 文档编号:DATA-RATE-SRS-01 创建日期:2010-03-17 最后修改日期:2020-04-24 版本号:1.0.0 电子版文件名:智能仓库管理系统-需求规格说明书-

文档修改记录

基于web智能仓库管理系统详细需求说明书(Requirements Specification) 1.引言 1.1 编写目的 本系统由三大模块构成,分别是:系统设置,单据填开,库存查询。 其中: 系统设置包括:管理员的增加,修改,删除,以及权限管理;仓库内货物的基本资料的增加,修改,删除;工人,客户等的基本资料的增加,修改,删除。 单据填开模块包括:出库单,入库单,派工单,等单据的填开及作废操作。 库存查询系统包括:库存情况的查询,各项明细的查询,工人工资的查询,正在加工产品查询等。 报表导出模块包括:按月,按季度,按年的报表导出功能。 1.2 背景说明 (1)项目名称:基于web智能仓库管理系统 (2)项目任务开发者:东南大学成贤学院06级计算机(一)班仇璐佳,软件基本运行环境为Windows环境,使用MyEclipse7.1作为开发工具,使用struts2作为系统基本框架,Spring作为依赖注入工具,hibernate对MySql所搭建的数据库的封装,前台页面采用ext的js框架,动态能力强,界面友好。 (3)本系统可以满足一般企业在生产中对仓库管理的基本需求,高效,准确的完成仓库的进出库,统计,生产,制造等流程。 1.3 术语定义 静态数据--系统固化在内的描述系统实现功能的一部分数据。

KeilC51开发系统基本知识.

Keil C51开发系统基本知识 Keil C51开发系统基本知识 1. 第一节系统概述 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编 相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇 编语言后再使用C来开发,体会更加深刻。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。 下面详细介绍Keil C51开发系统各部分功能和使用。 2. 第二节 Keil C51单片机软件开发系统的整体结构 C51工具包的整体结构,如图(1)所示,其中uVision与Ishell分别是C51 for Windows和for Dos的集成开发环境(IDE),可以完成编辑、编译、连接、调试、仿真等整个开发流程。开发人员可用IDE本身或其它编辑器编辑C或汇编源文件。然后分别由C51及A51编译器编译生成目标文件(.OBJ)。目标文件可由LIB51创建生成库文件,也可以与库文件一起经L51连接定位生成绝对目标文件(.ABS)。ABS文件由OH51转换成标准的Hex文件,以供调试器dScope51或tScope51使用进行源代码级调试,也可由仿真器使用直接对目标板进行调试,也可以直接写入程序存贮器如EPROM中。 图(1) C51工具包整体结构图 3. 第三节 Keil C51工具包的安装 1. 1. C51 for Dos 在Windows下直接运行软件包中DOS/C51DOS.exe然后选择安装目录即可。完毕后欲使系统正常工作须进行以下操作(设C:/C51为安装目录): 修改Autoexec.bat,加入 path=C:/C51/Bin Set C51LIB=C:/C51/LIB Set C51INC=C:/C51/INC 然后运行Autoexec.bat 2. 2. C51 for Windows的安装及注意事项: 在Windows下运行软件包中WIN/Setup.exe,最好选择安装目录与C51 for Dos相同,这样设 置最简单(设安装于C:/C51目录下)。然后将软件包中crack目录中的文件拷入C:/C51/Bin目录下。 4. 第四节 Keil C51工具包各部分功能及使用简介 1. 1. C51与A51 1. (1) C51 C51是C语言编译器,其使用方法为: C51 sourcefile[编译控制指令] 或者 C51 @ commandfile 其中sourcefile为C源文件(.C)。大量的编译控制指令完成C51编译器的全部功能。包控C51输出文件C.LST,.OBJ,.I和.SRC文件的控制。源文件(.C)的控制等,详见第五部分的具体介绍。 而Commandfile为一个连接控制文件其内容包括:.C源文件及各编译控制指令,它没有固定的名字,开发人员可根据自己的习惯指定,它适于用控制指令较多的场合。

51单片机行列式键盘的应用proteus仿真+源程序

51单片机行列式键盘的应用proteus仿真本人喜好单片机设计,精通单片机编程和硬件电路设计,在空余之际编一些小程序与大家分享,有哪位路过,请多多指教,希望大家在一起能互相学习,互相进步。这里的程序已经测试通过。发表出来,一来可以帮助同样爱好单片机的朋友们,二来,希望能结交一些同道中人,共同学习。 源程序: #include #include void delayms(unsigned char ms); unsigned char data dis_digit; unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0xff}; unsigned char data dis_index; void main() { P2=0xff; P1=0x00; dis_index=0; dis_digit=0x01; while(1) { P2=dis_code[dis_index]; P1=dis_digit; delayms(1); P1=0x00; dis_digit=_crol_(dis_digit,1); dis_index++; dis_index &=0x07; } } void delayms(unsigned char ms) { unsigned char i; while (ms--) {

for(i=0;i<120;i++); } } 仿真图:

如果您想做项目开发,或者是做课题,或者您只是有一个想法,亲联系我们,我们会尽最大努力帮您完成,您的需要就是我们奋斗的方向! 本人有给学生做课程设计的经验,欢迎亲们来本店咨询哦 淘宝店铺地址:https://www.docsj.com/doc/6a9060720.html, ; https://www.docsj.com/doc/6a9060720.html, QQ:1203026348;496617571 邮箱:1203026348@https://www.docsj.com/doc/6a9060720.html, ;496617571@https://www.docsj.com/doc/6a9060720.html, 电话:小陈:152******** 小张:158******** 阿里旺旺:tb3569_1968 ;zwjyln 我们拥有40G!!超大容量!!!是单片机入门者的首选经典资料!!! 您在单片机方面有任何问题,请及时和我们联系,我们会竭诚为您服务!! 承接单片机项目开发,同时包括软件开发和硬件开发。我们是一组拥有扎实的单片机基础知识的大学生,我们可以给您提供从项目开始到项目的完成整个过程的技术支持,其中包括原理图的设计、电路图的proteus软件仿真、程序的编写以及相关软件的使用等

(完整版)单片机原理及应用——基于Proteus和Keil_C 林立_张俊亮毕业论文

第一章习题 1.什么是单片机?单片机和通用微机相比有何特点? 答:单片机又称为单片微计算机,它的结构特点是将微型计算机的基本功能部件(如中央处理器(CPU)、存储器、输入接口、输出接口、定时计数器及终端系统等)全部集成在一个半导体芯片上。虽然单片机只是一个芯片,但无论从组成还是从逻辑功能上来看,都具有微机系统的定义。与通用的微型计算机相比,单片机体积小巧,可以嵌入到应用系统中作为指挥决策中心,是应用系统实现智能化。 2.单片机的发展有哪几个阶段?8位单片机会不会过时,为什么? 答:单片机诞生于1971年,经历了SCM、MCU、SOC三大阶段,早期的SCM 单片机都是8位或4位的。其中最成功的是INTEL的8031,此后在8031上发展出了MCS51系列MCU系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。然而,由于各应用领域大量需要的仍是8位单片机,因此各大公司纷纷推出高性能、大容量、多功能的新型8位单片机。 目前,单片机正朝着高性能和多品种发展,但由于MCS-51系列8位单片机仍能满足绝大多数应用领域的需要,可以肯定,以MCS-51系列为主的8位单片机,在当前及以后的相当一段时间内仍将占据单片机应用的主导地位。

3.举例说明单片机的主要应用领域。 答:单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:智能仪器单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、电流、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(电压表、功率计,示波器,各种分析仪)。 工业控制 单片机具有体积小、控制功能强、功耗低、环境适应能力强、扩展灵活和使用方便等优点,用单片机可以构成形式多样的控制系统、数据采集系统、通信系统、信号检测系统、无线感知系统、测控系统、机器人等应用控制系统。例如工厂流水线的智能化管理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。家用电器现在的家用电器广泛采用了单片机控制,从电饭煲、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备和白色家电等。 网络和通信 现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。医用设备领域

proteus课程设计

沈阳航空航天大学电子信息工程学院 电子设计应用软件训练 总结报告 学生姓名: 专业: 班级: 学号: 指导教师: 训练时间:2013年7月8日至2013年7月12日 电子信息工程学院电子设计应用软件训练任务 【训练任务】:

1、熟练掌握PROTEUS软件的使用; 2、按照设计要求绘制电路原理图; 3、能够按要求对所设计的电路进行仿真; 【基本要求及说明】: 1、按照设计要求自行定义电路图纸尺寸; 2、设计任务如下: 51单片机内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚进行计数,将其数值P1口驱动LED灯上显示出来,由按键产生计数脉冲,LED 分别显示脉冲个数(10个以内)。 3、按照设计任务在Proteus 6 Professional中绘制电路原理图; 4、根据设计任务的要求编写程序,在Proteus下进行仿真,实现相应功能。 成绩: 一、任务说明 51单片机内部定时计数器T0,按计数器模式和方式1工作,对P3.4(T0)引脚

进行计数,将其数值P1口驱动LED灯上显示出来,由按键产生计数脉冲,LED分别显示脉冲个数(10个以内)。按照设计任务在Proteus 6 Professional中绘制电路原理图。 根据设计任务的要求编写程序,在Proteus下进行仿真,实现相应功能。 二、PROTEUS软件的使用 1、软件概述: Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。④具有强大的原理图绘制功能。总之,该软件是一款集单机和SPICE分析于一身的仿真软件,功能极其强大。 图1 proteus工作界面 2、对象的添加和放置 点击工具箱的元器件按钮,使其选中,再点击IsIs对象选择器左边中间的置P 按钮,出现“Pick Devices”对话框。在这个对话框里我们可以选择元器件和一些

仓库管理系统(软件需求说明书)

1引言 (2) 1.1编写目的 (2) 1.2背景 (2) 1.3定义 (3) 1.4参考资料 (3) 2任务概述 (3) 2.1目标 (3) 2.2用户的特点 (9) 2.3假定和约束 (9) 3需求规定 (9) 3.1对功能的规定 (9) 3.2对性能的规定 (9) 3.2.1精度 (9) 3.2.2时间特性要求 (9) 3.2.3灵活性 (9) 3.3输人输出要求 (9) 3.4数据管理能力要求 (10) 3.5故障处理要求 (10) 3.6其他专门要求 (10) 4运行环境规定 (11) 4.1设备 (11) 4.2支持软件 (11) 4.3接口 (11) 4.4控制 (11)

软件需求说明书 1引言 1.1编写目的 企业的物资供应管理往往是很复杂的,烦琐的。由于所掌握的物资种类众多,订货,管理,发放的渠道各有差异,各个企业之间的管理体制不尽相同,各类统计计划报表繁多,因此物资管理必须实现计算机化,而且必须根据企业的具体情况制定相应的方案。 根据当前的企业管理体制,一般物资供应管理系统,总是根据所掌握的物资类别,相应分成几个科室来进行物资的计划,订货,核销托收,验收入库,根据企业各个部门的需要来发放物资设备,并随时按期进行库存盘点,作台帐,根据企业领导和自身管理的需要按月,季度,年来进行统计分析,产生相应报表。为了加强关键物资,设备的管理,要定期掌握其储备,消耗情况,根据计划定额和实际消耗定额的比较,进行定额的管理,使得资金使用合理,物资设备的储备最佳。 所以一个完整的企业物资供应管理系统应该包括计划管理,合同托收管理,仓库管理,定额管理,统计管理,财务管理等模块。其中仓库管理是整个物资供应管理系统的核心。 开发本系统的目的在于代替手工管理、统计报表等工作,具体要求包括: 数据录入:录入商品信息、供货商信息、名片、入库信息、出库信息、退货信息等信息; 数据修改:修改商品信息、供货商信息、名片、帐号等信息; 统计数据:统计仓库里面的商品的数量,种类,并计算库存总价值; 数据查询:输入查询条件,就会得到查询结果; 数据备份:定期对数据库做备份,以免在数据库遇到意外破坏的时候能够恢复数据库,从而减少破坏造成的损失。

Keil C51集成开发环境的使用汇编

Keil C51集成开发环境的使用 Keil C51软件可以从相关网站下载并安装。安装好后,双击桌面快捷图标或在“开始”菜单中选择Keil μVision3,启动Keil μVision3集成开发环境,启动后界面如图4-3所示。 图4-3 Keil μVision3启动后的集成开发环境界面 (一)创建项目 Keil μVision3中有一个项目管理器,用于对项目文件进行管理。它包含了程序段环境变量和编程有关的全部信息,为单片机程序的管理带来了很大的方便。创建一个新项目的操作步骤如下: (1)启动μVision3,创建一个项目文件,并从器件数据库中选择一款合适的单片机型号。 (2)创建一个新的源程序文件,并把这个源文件添加到项目中; (3)为该单片机芯片添加或配置启动程序代码; (4)设置工具选项,使之适合目标硬件; (5)编译项目并创建一个*.hex文件。 下面以本章任务为例分别介绍每一步的具体操作。 1.新建项目文件 单击菜单“Project”→“New Project”命令,弹出如图4-4所示的新建项目对话框,指定保存路径,建议每个项目使用一个独立文件夹,例如本项目保存在“第4章”文件夹;然后,在“文件中名”输入项目名称,例如“4-1”,单击“保存”按钮即完成新项目的创建(系统默认扩展名为“.uv2”)。

保存路径 输入文件名 图4-4 新建项目对话框 此时弹出选择单片机的型号对话框,如图4-5所示,展开Atmel系列单片机,选择“AT89C51”,单击“确定”按钮完成设备的选择。 图4-5 选择单片机的型号对话框 单片机型号选择结束后,在μVision3工作界面左边的项目管理器中新增加了一个“Target 1”目标1文件夹,如图4-6所示。

基于51单片机的计算器(附Proteus仿真图且程序有详细注释)

#include #define uint unsigned int #define uchar unsigned char #define lint unsigned long int uchar SMG[10]={0x3f,0x06,0x5b,0x4f, //数码管取模 0x66,0x6d,0x7d,0x07, 0x7f,0x6f }; uchar DA TA1[8]={0,0,0,0,0,0,0,0}; //第一个数 uchar DA TA2[8]={0,0,0,0,0,0,0,0}; //第二个数 uchar RESUIT[8]={0,0,0,0,0,0,0,0}; //结果 uchar px1=0,px2=0,px3=0,flag=0,flag1=0,flag2=0,flag3=0,f1=0,f2=0,f3=0,f4=0; //各全局变量uchar temp,key; lint x1=0,x2=0,y=0; //输入的数及其结果 void Init(); //系统初始化 void keyscan(); //键盘检测 void delay(uint); //延时 void DataOper(); //数据运算 void DataHandle(); //数据接收 void DisplayHandle(); //显示处理 void display(uchar,uchar); //数码管显示函数 void main() { P2=0x00; while(1) { keyscan(); DataHandle(); DisplayHandle(); } } void Init() //初始化,所有数据归零 { uchar i; px1=0;px2=0;px3=0; flag=0;flag1=0;flag2=0;flag3=0; f1=0;f2=0;f3=0;f4=0; x1=0;x2=0;y=0; for(i=0;i<8;i++) {DA TA1[i]=0;DATA2[i]=0;RESUIT[i]=0;} } void delay(msx) //msx为延时毫秒数 { uint i,j;

相关文档
相关文档 最新文档