联合Keil C51在Multisim 10平台下实现单片机的仿真

2012-09-02 07:24杨莲红
昌吉学院学报 2012年2期
关键词:昌吉C语言元件

王 超 杨莲红 杨 奇

(1,2,3.昌吉学院物理系新疆昌吉831100)

联合Keil C51在Multisim 10平台下实现单片机的仿真

王 超1杨莲红2杨 奇3

(1,2,3.昌吉学院物理系新疆昌吉831100)

针对传统单片机课程实验、实训教学中出现的各种难点,将Keil C51编译软件与Multisim 10仿真软件相结合引入到教学中,借助第三方软件的优势完成实践教学任务,可以提高单片机的教学效果、缩短开发周期、节省成本,提高学生的动手操作能力。

Keil C 51;Multisim 10;单片机;仿真

1 引言

《单片机应用技术》课程是电子、电气信息类学生的必修课程,而实践、实验教学是该课程的重要组成部分,传统的方法是设计电路-面包板或实验箱实验-制版等一系列过程。但是,该过程开发周期长、调试繁琐,而且修改电路也比较困难,利用仿真软件Multisim 10则可以很好的解决这些问题。另外,借助于第三方编程调试软件Keil C51与Multisim 10联调可以在没有硬件实物的环境下建立虚拟硬件仿真平台,利用Keil C51软件强大的调试功能可以加快开发进程,更容易实现实验、实践的教学,为教学、实验提供一个方便灵活的环境,丰富实验内容,节约实验费用,而且仿真成功的电路可以直接在产品开发中使用。

2 Multisim 10与Keil C51

2.1 Multisim 10特点

Multisim 10软件是美国国家仪器(NI)公司推出的电子电路仿真软件,是目前的最新版本,它在原有基础上更新和改进了某些功能[1]。

(1)增加了大量的VHDL元件模型,可以仿真更复杂的数字元件、单片机。

(2)增强了软件的仿真测试功能,大大扩充了元件库中的数目,特别是增加了大量与实际元件对应的元件模型,使得仿真结果更精确、更可靠、更实用。

(3)加强了对汇编语言和C语言的支持,增加了反汇编以及调试功能。

(4)增加了部分3D实物元件和面包板,便于教学和实验使用。

2.2 Keil C51简介

Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,用过汇编语言后再使用C来开发,体会更加深刻。软件本身支持数百种51系列单片机芯片,可以用来编译C源码、汇编源程序、连接和重定位目标文件和库文件、创建HEX文件、调试目标程序等,是一种集成化的文件管理编译环境,具有强大的开发工具。虽然Multisim 10也支持C语言,但它的功能远不如Keil C51[2]。

目前在单片机的开发应用中,C语言已经成为主要的编程语言,用C语言编写单片机应用程序与标准的C语言程序在语法规则、程序结构及程序设计方法等方面基本相同,但C51程序与标准的C程序在以下几个方面是不同的:

(1)C51中定义的库函数和标准C语言定义的库函数不同;

(2)C51中数据类型与标准C的数据类型也有区别,在C51中还增加了集中针对MCS-51单片机特有的数据类型;

(3)C51变量的存储模式与C中变量的存储模式不一样,C51中变量的存储模式与MCS-51单片机的存储结构紧密相关的;

(4)C51与标准C的输入输出处理方式不一样,C51中的输入输出是通过MCS-51串行口来完成的,输入输出指令执行前必须对串行口进行初始化;

(5)C51与标准C在函数使用方面也有一定的区别,C51中有专门的中断函数。

3 仿真实例

下面以一个简单的0-99计数器电路为例介绍利用Multisim 10与Keil C51相结合实现单片机仿真的过程。

3.1硬件电路设计

(1)打开一个新的电路原理图并从元件库中放置8051单片机;

(2)根据MCU向导逐步执行:

首先,定义Workspace文件,包括Workspace的文件路径和文件名;然后再定义工程,包括工程类型、编程语言、汇编器/编译器工具和工程名;最后需要定义源文件,包括源文件的名字等。

按照同样步骤,放置电路中的其它元件,如果希望查看该元件的属性,可以采用右键单击选择属性即可,所有组件都可以采用默认设置来使用,硬件电路图如图1所示。

图1 硬件电路图

3.2软件程序设计

在Keil C51环境下,采用C语言完成软件程序的设计,在用C语言编写过程中要注意符合C语言的语法规则。

#include"htc.h"

unsigned char code table[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};

unsigned char count;

void delay10ms(void);延时函数

{unsigned char i,j;

for(i=02;i>0;i--)

for(j=02;j>0;j--);}

void main()

{count=0;

P3=table[count/10];个位数据

P1=table[count%10];十位数据

while(1)

{if(P37==0);检测P3.7的电平

{delay10ms();调用延时子程序

if(P37==0)

{count++;

if(count==100)

{count=0;}

P3=table[count/10];

P1=table[count%10];}}

在Keil C51环境下,选中Creat HEX File复选框以便生成“*.Hex”文件,如图2所示。

图2 设置HEX格式

3.3仿真调试

Multisim10支持第三方的编译器,可以将第三方编译器(Keil 51)生成的可执行代码,如“*.Hex”文件,直接导入到MCU中,然后进行仿真。

(1)建立外部可执行文件工程

在工程类型(project type)选项中选择Load External Hex File选项并命名,如图3所示。

图3 建立外部可执行文件

图4 添加外部可执行文件

(2)添加外部可执行文件

激活相应的工程文件后,打开“MCU CodeManager”对话框,即可加载相应的“*.Hex”文件,如图4所示。

(3)仿真运行

①执行菜单MCU/MCU8051/BUILD,对源程序进行编译,在窗口下方会显示编译时间,编译信息。编译会通过给出“0 error(s)0 warning(s)”的提示。如果有错会给出错误的行和错误的原因,以方便查错。编译显示结果如图5所示

图5 编译结果

②单步调试、设置断点观察结果

执行MCU/MCU8051U1/Debug View命令,进人调试窗口,在调试之前,执行MCU/MCU8051U1/ Memory View命令,打开存储器窗口,可以观察指令后的执行情况。可以查看SFR、内部RAM、内部ROM,外部RAM等存储器的状态,这些操作对于调试非常重要,另外,在调试过程中还可以在反汇编中窗口中设置断点、单步执行和连续执行等命令进行调试。调试过程如图6所示。

图6 调试过程

③单击运行按钮,就可以得到仿真运行结果,如图7所示。

图7 运行结果

4 结束语

本文介绍了在Multisim 10平台下联合编译软件Keil C51对单片机进行仿真的一种方法,该方法可以把传统的硬件设计、软件调试、仿真集成在一个软件环境下,能够做到边设计、边实验、边修改电路。在Multisim 10平台下全部采用的是虚拟元件和测量器件,实验成本低,速度快,修改调试也非常方便,突破了实验教学中的实验内容固定不变的局限。另外,借助第三方软件的优势,可以加速实验进程,增强学生的创新意识和提高学生的实际应用能力。对于单片机实践教学尤其是综合性实验、课程设计、电子竞赛等,这种仿真调试软件的使用会起到积极的推动作用。

[1]聂典,丁伟.Multisiml0计算机仿真在电子电路设计中的应用[M].北京:电子工业出版社,2009:20-50.

[2]范立南,李震,周胜来等.基于Keil C51的软件开门狗电路的设计[J].计算机发展与展望,2009,19(1):154-156.

(责任编辑:马海燕)

O411.3

A

1671-6469(2012)02-0075-06

2012-03-12

昌吉学院教学研究项目(11jyyb011)

王超(1980-),男,新疆玛纳斯县人,昌吉学院物理系,讲师,研究方向:自动化应用技术。

猜你喜欢
昌吉C语言元件
适宜在昌吉春麦区种植的早熟高产春小麦品种筛选
基于Visual Studio Code的C语言程序设计实践教学探索
以十九大精神为指引 展现新作为新气象,开创昌吉学院发展新局面
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
在昌吉,我们品尝到了丰收的味道——新疆昌吉汉和7S店无人机飞防作业小记
QFN元件的返工指南
在新兴产业看小元件如何发挥大作用
宝马i3高电压元件介绍(上)
论子函数在C语言数据格式输出中的应用