一、 实验目的 熟悉并掌握Multisim10对单片机的仿真过程。 加深对单片机硬件以及软件理论知识的理解。 二、 实验原理 1、Multisim10 美国国家仪器公司下属的ElectroNIcs Workbench Group在今年年初发布了Multisim 10。新版的Multisim10,加入了MCU模块功能,可以和8051等单片机进行编程联调,该软件元件丰富,界面直观,虚拟仪器的逼真度达到了让人相当高的程度,是电子设计、电路调试、虚拟实验必备良件。 工程师们可以使用Multisim 10交互式地搭建电路原理图,并对电路行为进行仿真。Multisim提炼了SPICE仿真的复杂内容,这样工程师无需懂得深入的SPICE技术就可以很快地进行捕获、仿真和分析新的设计,这也使其更适合电子学教育。通过Multisim和虚拟仪器技术,PCB设计工程师和电子学教育工作者可以完成从理论到原理图捕获与仿真再到原型设计和测试这样一个完整的综合设计流程。 下面将简单介绍一下Multisim10刚加进来的MCU模块的使用方法。 双击桌面上的multisim10图标,由于软件比较大,需要等待一定的时间才能进入以下界面(图一): 图一 Multisim10界面和Office工具界面相似,包括标题栏、下拉菜单、快捷工具、项目窗口、状态栏等组成。 标题栏用于显示应用程序名和当前的文件名。下拉菜单提供各种选项。 快捷工具分为:文件工具按钮,器件工具按钮,调试工具按钮,这些按钮在下拉菜单中都有,并经常用到,现在放在工具栏里是为了方便使用。 项目窗口中的电路窗口是用来搭建电路的,Design Toolbox工具栏是用来显示全部工程文件和当前打开的文件。 状态栏用于显示程序的错误和警告,如果有错误和警告那还还需要重新修改程序。直到没有错误为止才能正常加载程序。 在电路窗口的空白处点击鼠标右键,将出现如下菜单(图二): 图二 菜单包括:放置元件(place component)、连接原理图(place schematic)、放置图形(place graphic)、标注(place comment)等,这里我们最常用到的只有第一个放置元件: 点击菜单中第一个选项或者按“CTRL+W”会出现以下元器件选择对话框(图三): 图三 在Group中选择我们需要的器件的类别,在Family中选择我们需要的器件,点击“OK”即可。在选择805X和PIC等可编程器件时会出现如下对话框(图四): 图四 这时我们只要在“Please enter the workspace name”中输入英文的文件名就可以点击“Next”进入第二步(图五): 图五 在第二步中要选择的是:在“Programming language”中选择“ Assembly”,表示用汇编语言编写,如果选择“C”则表示用用C语言编写。点击“Finish”,完成了对单片机的设置。那么在软件界面左边的“Design Toolbox”中会出现新的文件,如下图(图六)所示: 图六 点击Circuit1项目窗口即显示电路窗口(图七): 图七 点击main.asm,项目窗口中就显示编程窗口(图八): 图八 回到电路窗口,按照下图选择元器件,并且按照下图(图九)将电路连接好: 图九 连好电路图以后,点击main.asm来到编程窗口(图十)进行程序的编写: 图十 程序写在“$MOD51”和“END”之间(图十一): 图十一 程序写完以后要进行程序载入,用鼠标右键点击Design Toolbox栏里的main.asm,选择“Build”,然后在软件的最下方的“Spreedsheet View”栏中会显示编程的错误和警告,如果出现错误会在该栏中显示并显示出错的具体位置,那么我们要回到编程窗口找到错误并修改,一直修改到0错误和0警告为止(图十二)。 图十二 以上工作完成以后,我们回到电路窗口,找到快捷工具栏中的“RUN”按钮(图十三中的第一个按钮) 图十三 按下“RUN”以后电路窗口中的LCD就开始显示了(图十四): 图十四
2、LCD的引脚和时序 1、VCC 接电源 +5V。 2、CV 接电源 +5V 调节显示屏灰度的,调节该端的电压,可改变显示屏字符颜色的深浅。(具体实物要看厂家的数据手册,有些VO要求接地) 3、GND 电源地,接地。 4、E 信号使能,E由1 -> 0的下降沿有效,LCD对RS和DATA进行取样和执行操作。 5、RS 数据/命令选择端,1-数据、0-指令。 6、RW 读写选择,1-读、0-写,如果LCD函数没有用到这个IO口的话就把它接地。 7、D7~D0 Data I/O,接单片机的IO口,用于输入数据或者指令。 LCD开始工作第一步要进行初始化,初始化程序: CLR P3.0;LCD SETB P3.1 MOV P1,#03H CLR P3.1 SETB P3.1 MOV P1,#0CH CLR P3.1 SETB P3.1 MOV P1,#06H CLR P3.1 初始化以后就可以进行指令和数据的读写了。 第一次显示数据以后要进行第二次数据显示,则需要进行清屏,清屏程序: CLR P3.0;LCD SETB P3.1 MOV P1,#01H CLR P3.1 SETB P3.0 接下去就可以再次进行数据和指令的读写了。 3、实现的功能 本次实验要求实现基于单片机的LCD显示,LCD分两次显示,第一次显示“0123”第二次显示“456789A”。LCD采用08x1的液晶显示器,单片机采用8051。 三、实验内容 1、建立工程存放文件夹: 打开“我的文档”,在National Instruments文件夹中打开Circuit Design Suite 10.0,然后在MCU Workspaces文件夹中新建一个文件夹,文件名为project。 2、双击桌面上的Multisim10的图标,软件打开需要等待一定的时间。 3、设置: 点击菜单栏中的“Options”,选择“sheet properties”,在Circuit中的 “NET names”栏里选中“Hide All”,然后再点击Workspace,在“Sheet size”栏中选择“A4”,点击“OK”。 4、保存工程文件: 点击File中的Save,在弹出的对话框中点击MCU Workspaces,然后点击自己新建的project文件夹,然后点击“保存”。 5、选择元器件:在空白纸上点击右键,然后选择“Place Component”,在弹出的对话框中的“Group”中选择“MCU Module”,然后在“family”中选择“805X”中的“8051”,点击“OK”,在图上适合的位置点击左键,在弹出的对话框中点击“Browse”,在“我的文档”中找到刚新建的project文件夹,点击该文件夹,然后点击确定。在“Please enter the work space name”中输入文件名“project”,点击“Next”,在“Programming language”中选择“Assembly”,然后点击“Finish”。 接着在“Group”中选择“Basic”,在“Family”中选择“RESISTOR”,在Component中点击“10K”电阻,点击“OK”,在适合的位置点击左键即可。 然后在“Family”中选择“CAPACITOR”,选择一个“10u”和两个“30p”的电容,然后放置到图纸上。 接着在“Group”中选择“Sources”,在“Family”中选择“POWER_SOURCES”,点击放置四个“DGND”和两个“VCC”。 然后在“Group”中选择“Advanced Peripherals”,在“LCDS”中选择“LCD_DISPLAY_08x1”,并放置在图纸的适当位置。 接着在“Group”中选择“Misc”,在“CRYSTAL”中选择“HC-49/U_25MHz”的晶振,放置在图纸上。 6、按照图9所示,连接好单片机的外围电路图并点击File中的Save: 7、保存好以后,在左侧的“Design Toolbox”中左键单击“Circuit1”前面的“+”号,然后一直点击“+”号,一直找到“main.asm”,双击该文件,在原图纸栏出现了编程界面,然后在该界面中输入以下程序: 8、程序: $MOD51 ; This includes 8051 definitions for the metalink assembler ORG 0000H CLR P3.0;LCD初始化 SETB P3.1 MOV P1,#03H CLR P3.1 SETB P3.1 MOV P1,#0CH CLR P3.1 SETB P3.1 MOV P1,#06H CLR P3.1 SETB P3.0;对LCD写数据 SETB P3.1 MOV P1,#30H CLR P3.1 SETB P3.1 MOV P1,#31H CLR P3.1 SETB P3.1 MOV P1,#32H CLR P3.1 SETB P3.1 MOV P1,#33H CLR P3.1 CLR P3.0;LCD清屏 SETB P3.1 MOV P1,#01H CLR P3.1 SETB P3.0 SETB P3.1;第二次对LCD写数据 MOV P1,#34H CLR P3.1 SETB P3.1 MOV P1,#35H CLR P3.1 SETB P3.1 MOV P1,#36H CLR P3.1 SETB P3.1 MOV P1,#37H CLR P3.1 SETB P3.1 MOV P1,#38H CLR P3.1 SETB P3.1 MOV P1,#39H CLR P3.1 SETB P3.1 MOV P1,#41H CLR P3.1 SJMP $ END 9、程序输入完成后,再用鼠标右键点击右边的“Design Toolbox”中的“main.asm”文件,点击出现的菜单中的“Build”。在最下方的窗口中提示0错误和0警告以后,即可点击“Design Toolbox”中的“Circuit1”,然后点击工具栏中的开关按钮“Run”,在弹出的对话框中点击“YES”,程序就开始执行,LCD开始显示。 四、实验报告与思考题 详细描述实验的过程,如实纪录本实验中间步骤和最终结果,还应纪录实验过程中的不正常现象以及解决办法。 思考题: 1、 如何在LCD08x1上分两次显示“R&B”和“NO.1”。 2、 如何在LCD16x2上一次显示:第一行“Hello Everyone!”第二行中间显示“^_^”并且循环显示。
|