2.2 Keil C51的使用

2.2.1 单片机最小系统

能让单片机工作的、由最基本元器件构成的系统称为单片机最小系统。构成51系列单片机最小系统的基本条件如下:

➢ 电源:单片机使用的是5V电源。

➢ 晶振电路:单片机是一种时序电路,必须有脉冲信号才能工作。在单片机内部有一个时钟产生电路,只要接上两个电容和一个晶振即可正常工作。

➢ 复位电路:启动后让单片机从初始状态开始执行程序。

引脚:连接到电源正极,表示使用内部程序存储器。

点亮发光二极管D1所需的单片机最小系统原理图如图2-23所示。

图2-23 点亮发光二极管D1所需的单片机最小系统原理图

注意:在 Proteus 中绘制仿真原理图时,最小系统所需的晶振电路、复位电路和引脚与电源的连接都可以省略,并不影响仿真效果。

2.2.2 实例3:用Keil C51编写点亮一个发光二极管的程序

本例在Keil C51下编写点亮图2-23中发光二极管D1的程序,并用Proteus软件对编写的程序进行仿真。

点亮发光二极管D1的工作原理很简单,只要让P1.0输出低电平,使D1正向偏置。在C语言中,只要输入以下语句即可。

可见控制语句很简单,但怎样将其写入单片机呢?换句话说,怎样让单片机明白我们的意思呢?这些工作需要用Keil C51软件来完成。

1.新建项目和源程序文件

Keil C51软件安装完成后,双击桌面上的“Keil μVision2”图标,进入“μVision2”工作界面。

1)新建项目

执行菜单命令“工程”→“新建”,弹出 “新建工程”对话框,如图2-24所示。指定好保存路径后,在“文件名”文本框中输入“ex3”,再单击“保存”按钮即完成新工程的创建(系统默认扩展名为“.uv2”)。此时系统弹出如图2-25所示的“为目标‘Target 1’选择设备”对话框,单击对话框左侧数据库内容中 Atmel 前面的图标“+”,在弹出的系列单片机型号中单击“89C51”,然后单击“确定”按钮即完成设备的选择。

图2-24 “新建工程”对话框

图2-25 为目标“Target 1”选择设备

设备选择结束后,在如图2-26所示的窗口左边的项目管理器中新增了一个“Target 1”文件夹,通过它可以对项目进行源程序添加和属性设置等操作。

图2-26 项目管理器中新增了“Target 1”文件夹

2)新建源程序文件

要编写程序,还需要新建一个源程序文件,再在该文件中编写程序。

执行菜单命令“文件”→“新建”,新建一个空白文档,如图2-27所示。

图2-27 新建源程序文件

输入以下C语言源程序:

执行菜单命令“文件”→“保存”,弹出如图2-28所示的“另存”对话框。指定好文件保存路径后,在“文件名”文本框中输入“ex3.c”。单击“保存”按钮完成源程序的保存。

图2-28 保存源程序文件的对话框

注意:源程序后缀“.c”必须手动输入,表示为 C 语言程序,让 Keil C51采用对应 C语言的方式来编译源程序。

2.将新建的源程序文件加载到项目管理器

单击项目管理器中“Target 1”旁的“+”图标,展开后在“Source Group 1”文件夹上单击鼠标右键,则弹出图2-29所示的快捷菜单。选择“增加文件到组‘Source Group 1’”命令,则弹出图2-30所示的对话框。在该对话框中选择文件类型为“C 源文件”,找到新建的“ex3.c”,然后单击“Add”按钮,“ex3.c”文件即被加入到项目中。此时对话框并不会消失,可以继续加载其他文件。单击“关闭”按钮将该对话框关闭。在 Keil 软件项目管理器的“Source Group1”文件夹中可以看到新加载的“ex3.c”文件,如图2-31所示。

图2-29 在快捷菜单中选择加载源程序文件的命令

图2-30 在对话框中选择要添加的文件

图2-31 “Source Group 1”文件夹下出现新加载的文件

3.编译程序

单片机不能处理 C 语言程序,而必须将 C 程序转换成二进制或十六进制代码,这个转换过程称为汇编或编译。Keil C51软件本身带有C51编译器,可将C程序转换成十六进制代码,即*.hex文件。用鼠标右键单击“Target1”,从弹出的快捷菜单中选择“目标‘Target1’属性”命令,弹出如图2-32所示的目标属性设置对话框。该对话框有8个标签页,其中“目标”和“输出”标签页较为常用,默认打开的是“目标”标签页。本书只需在“输出”标签页中选中“生成 HEX 文件”选项即可,如图2-33所示。选中该选项后,在编译时会生成扩展名为“.hex”的十六进制文件供程序烧录或 Proteus 仿真使用,最后单击“确定”按钮即可完成所需设置。设置完成后,单击图2-34中的图标,或者执行菜单命令“工程”→“重新构造所有目标”命令,软件就开始对源程序“ex3.c”进行编译。如果程序没有问题,将在输出窗口给出“0错误,0警告”的信息提示。

图2-32 目标属性设置对话框

图2-33 编译时生成十六进制文件“.hex”的设置

图2-34 程序编译后的提示信息

4.用Proteus软件仿真

程序经Keil软件编译通过后,就可以利用Proteus软件进行仿真了。在Proteus ISIS工作环境中绘制好仿真电路图,或者打开随书附件“仿真实例\第2章\ex3”文件夹内的“ex3.pdsprj”仿真原理图文件。用鼠标右键单击原理图中的 AT89C51,从弹出的快捷菜单中选择“Edit Properties”命令,弹出“Edit Component”对话框,在“Program File”文本框中载入编译好的“ex3.hex”文件,并在“Clock Frequency”文本框中输入“11.0592MHz”,然后单击“OK”按钮返回Proteus ISIS原理图工作界面。最后单击仿真运行按钮即可进行功能仿真,仿真原理图搭建效果如图2-35所示。从图中可以看出,发光二极管D1被点亮,达到了预期控制目的。

图2-35 点亮一个发光二极管的仿真原理图搭建效果