单片机仿真实验报告姓名:学号:专业:班级:实验一基本开发环境及设备认识实验【实验目的】了解和熟悉Keil与Proteus软件的基本操作与运行步骤,为后面的仿真实验奠定基础。
【实验内容】1. Proteus软件的功能强大,它集电路设计、制版及仿真等多种功能于一身,而Keil是目前世界上最好的51单片机汇编和C语言的集成开发环境,它支持汇编和C的混合编程,同时具备强大的软件仿真和硬件仿真(用mon51协议,需要硬件支持)功能,Proteus能够很方便的和Keil等编译模拟软件结合,下面简要介绍。
2. Keil μVision系列是一个非常优秀的编译器,得到广大单片机设计者的广泛使用。
其主要特点如下:具有Windows风格的可视化操作界面,界面友好,使用极为方便; 支持汇编语言、C51语言以及混合编程等多种方式的单片机设计; 集成了非常全面的单片机支持,能够完成51系列单片机以及和51系列兼容的绝大部分类型单片机的程序设计和仿真;集成了丰富的库函数,以及完善的编译连接工具;提供了并口、串口、A/D、D/A、定时器/计数器以及中断等资源的硬件仿真能力,能够帮助用户模拟实际硬件的执行效果;可以与多款外部仿真器联合使用,提供了强大的在线仿真调试能力;内嵌RTX-51 Tiny和RTX-51 FULL内核,提供了简单而强大的实时多任务操作系统支持;在一个开发界面中支持多个项目的程序设计;支持多级代码优化,最大限度地帮助用户精简代码体积;由于Keil μVision具有最为广泛的用户群,因此相应的代码资源非常丰富,读者可以轻松地找到各类编程资源以加速学习和开发过程。
最新的ARM开发工具RealVIEW MDK依然采用Keil μVision3的开发环境和界面,给用户的升级带来极大的方便。
在安装好Keil μVision4集成开发环境后,打开一个工程项目,如图1-1所示,这里可以看到,Keil μvision4集成开发环境具有典型的Windows界面风格。
整个编程界面主要包括菜单栏、工具栏、项目管理区、源代码工作和输出信息窗口。
图1-1 Keil μVision4集成开发环境界面总揽按钮用于编译我们正在操作的文件。
按钮用于编译修改过的文件,并生成应用程序供单片机直接下载。
按钮用于重新编译当前工程中的所有文件,并生成应用程序供单片机下载。
因为很多工程有不止一个文件,当有多个文件时,我们可用此按钮进行编译。
Keil工程的建立进入Keil后出现的编辑界面,如图1-2所示。
图1-2 进入Keil软件后的编辑界面(1)建立一个新工程单击〖Project〗菜单中的〖New Project…〗选项,如图1-3所示。
图1-3 新建工程(2)选择工程要保存的路径,输入工程文件名。
Keil的一个工程里通常含有很多小文件,通常我们将一个工程放在一个独立的文件夹下,比如保存到clock文件夹,工程文件的名字为xiangmu,如图1-4所示,然后单击〖保存〗按钮。
工程建立后,此工程名变为xiangmu.uv2。
图1-4 保存工程(3)这时会弹出一个对话框,要求用户选择单片机的型号,可以根据用户使用的单片机来选择。
Keil C51几乎支持所有的51内核单片机,这里我们选择Atmel的AT89C51来说明,如图1-5所示,选择AT89C51之后右边〖Description〗栏里是对该型号单片机的基本说明。
图1-5 选择单片机型号(4) 完成上一步骤后,窗口界面如图1-6所示,到此为止,我们还没有建立好一个完整的工程,虽然工程名有了,但工程当中还没有任何文件及代码,接下来我们添加文件及代码。
图1-6 添加完单片机后的窗口界面(5)如图1-7所示,单击〖File〗菜单中的〖New〗菜单项,或单击界面上的快捷图标。
新建文件后窗口界面如图1-8 所示。
图1-7 添加文件图1-8 添加完文件后的窗口界面此时标在编辑窗口中闪烁,可以输入用户的应用程序,但此时这个新建文件与我们刚才建立的工程还没有直接的联系,单击图标,窗口界面如图1-9所示,在〖文件名(N)〗编辑框中输入要保存的文件名,同时必须注意输入正确的扩展名。
这里的文件名不一定要和工程名相同,用户可以随意填写文件名,然后单击〖保存〗按钮。
图1-9 保存文件(6) 回到编辑界面,单击〖Target 1〗前面的“+”号,然后在〖Source Group 1〗选项上单击右键,弹出如图1-10所示菜单。
然后选择〖Add File…〗菜单项,对话框如图1-11所示。
图1-10 将文件加入工程的菜单图1-11 选中文件后的对话框选中〖exampe_1.c〗,单击〖Add〗按钮,再单击〖Close〗按钮,然后我们在单击左侧〖Source Group 1〗前面的“+”号,屏幕窗口如图1-12所示。
图1-12 将文件加入工程后的屏幕窗口这时我们注意到〖Source Group 1〗文件中多了一个子项〖exampe_1.c〗,当一个工程中有多个代码文件时,都要加在这个文件夹下,这时源代码文件就与工程联系起来了。
(7) 回到Keil编辑界面,单击〖Project〗菜单,然后在下拉菜单中单击〖Options for Target `Target 1`〗项,或直接单击界面上的工程设置选项快捷图标,弹出如图1-13所示画面,单击〖Output〗,然后选中〖Create HEX File〗项,使程序编译后产生hex代码,供仿真实验或下载器软件下载到单片机中。
图1-13 选择生成hex文件3. Proteus软件是由英国Labcenter Electronics公司开发的EDA工具软件,已有近20年的历史,在全球得到了广泛应用。
Proteus软件的功能强大,它集电路设计、制版及仿真等多种功能于一身,不仅能够对电工、电子技术学科涉及的电路进行设计与分析,还能够对微处理器进行设计和仿真,并且功能齐全,界面多彩,是近年来备受电子设计爱好者青睐的一款新型电子线路设计与仿真软件。
本次实验主要是熟悉Proteus软件下的ISIS —智能原理图输入系统,系统设计与仿真的基本平台。
如图1-14 为ISIS 7 Professional 运行时的界面。
图1-14 ISIS 7 Professional 运行时的界面(1)此次实验来模拟电容充放电动态效果。
打开其应用程序后,将会出现图1-15所示ISIS 7 Professional的编辑界面,用鼠标左键单击界面左侧预览窗口下面的"P"按钮,如图1-16所示,弹出"Pick Devices"(元件拾取)对话框,如图1-16所示。
图1-15 ISIS 7 Professional 的编辑界面图1-16 元件拾取对话框(2)按照上图灯泡的拾取方法,依次把其他元件(直流电源、滑变变阻器、开关、电容)拾取到编辑面的对象选择器中,连接好电路图后如图1-17所示。
图1-17 电容充放电仿真电路图图1-18 电容充电过程的仿真(1)图1-19 电容充电过程的仿真(2)(3)单击Proteus ISIS 环境左下方的控制按钮中的运行按钮,开始仿真。
仿真开始后,用鼠标单击图中的K1开关,使先把电容与电源接通,如图1-18所示,这时能清楚地看到电容充电的动态效果,如图1-18和1-19所示。
电量充满后我们打开K1,电量保持不变,如图1-20所示。
(4)接上面的操作,我们闭合开关K2,会发现灯泡瞬间闪下就灭了,如图1-21所示,由于此电路时间常数较小,所以灯亮的时间很短。
如果放电时间常数再大,则不易观察到灯亮的效果。
在运行时,可以来回通断开关,反复观察充放电过程。
单击仿真控制按钮中的停止按钮,仿真结束。
图1-20 电容充电过程的仿真(3)图1-21 电容放电过程的仿真实验二流水灯实验【实验目的】学会用汇编语言和C语言编写流水灯程序,进一步熟悉软件仿真和硬件仿真的环境,掌握汇编语言从而为后边用C语言奠定基础。
【实验内容】(1)发光二极管简介:它具有单项导电性,通过5mA左右电流即可发光,电流越大,其亮度越强,但若电流过大,会烧坏二极管,一般我们控制在3~20mA之间。
在实际电路中,经常给发光二极管串联一个电阻目的就是为了限制通过发光二极管的电流不要太大,当发光二极管发光时,测量它两端电压约为1.7V,这个电压又叫做发光二极管的“导通压降”,二极管一般可分为直插式发光二极管和贴片式发光二极管,发光二极管正极又称阳极,负极又称阴极,电流只能从阳极流向阴极。
直插式发光二极管长引脚为阳极,短引脚为阴极。
仔细观察贴片式发光二极管正面的一端有彩色标记,通常有标记的一端为阴极。
(2)此次实验用到的主要仿真器件有AT89C51芯片和16个发光二极管LED-GREEN,分别为D1,D2,…,D16,晶振设置为12M。
(3)以下为源程序及其代码注释//(改进)流水灯实验源代码//用定时中断实现延时//************************************#include<reg51.h>#include<intrins.h> // 引用内部函数#define uchar unsigned char#define uint unsigned intuchar flag; //设置标志位void main() //主函数{flag=0;P2=0x80;P3=0x80;TMOD=0x01; //定时器T0,工作方式1 TH0=(65536-50000)/256; //装初值,定时50毫秒TL0=(65536-50000)%256;EA=1; //打开总中断ET0=1; //允许T0中断TR0=1; //启动定时器while(1) //主循环{if(flag==1){flag=0; //清零P2=_cror_(P2,1); //循环右移P3=_cror_(P3,1);}}}void Timer0() interrupt 1 //中断函数{TH0=(65536-50000)/256; //重装初值TL0=(65536-50000)%256;flag++;}图2-1 在Keil编辑界面中的编译结果图2-2 流水灯仿真电路图图2-3 流水灯仿真运行结果(1)图2-4 流水灯仿真运行结果(2)图2-5 流水灯仿真运行结果(3)(4)在Keil编辑界面中,输入代码后进行编译,编译结果如图2-1所示,在输出信息窗口中显示0错误,0警告,这表示此工程成功编译通过,同时也生成了"liuhui.hex"应用程序文件(实验一内有其步骤),可供后面的仿真实验单片机直接下载。
(5)应程序代码和实际功能要求,画好仿真电路图,如图2-2所示,然后将生成的"liushui.hex"文件下载到单片机内,如图2-2所示,我们将所有的二极管阳极接入单片机接口,阴极接地。