Proteus仿真单片机实验教程文件
- 格式:doc
- 大小:8.00 MB
- 文档页数:57
目录实验一I/O 口输出控制实验 (20)实验二I/O 口输入输出控制实验 (24)实验三中断程序设计练习 (34)实验四定时器、计数器实验 (32)Keil C51 集成开发环境介绍1、打开计算机,运行Keil C51 集成开发环境。
图1-1 第一次启动Keil C图1-2 Keil C μVision2 操作界面Keil C 软件菜单命令非常丰富,常用的菜单命令都有对应的快捷键和快捷图标,自己可以打开相应的菜单,熟悉各种命令。
2.选择“Project”-“New Project…”建立新的工程文件(注意工程文件放置的文件夹),输入文件名,选择“保存”。
图1-3 创建一个新工程图1-4 为新工程命名并保存3.工程保存后会弹出来一个器件选择窗口,这里需要选择单片机芯片类型。
器件选择的目的是告诉μVision2 最终使用的80C51 芯片的型号是哪一个公司的哪一个型号,因为不同型号的51 芯片内部的资源是不同的。
图1-5 器件选择窗口如果不知道自己需要使用什么型号的芯片,暂时选择“Atmel”下的“AT89C51”,然后在接下来的窗口中,选择“是”,加载芯片基本参数。
图1-6 选择AT89C51 芯片4.选择“File”-“New”或者点击新文件快捷图标,会打开一个文本编辑器窗口。
输入下列数据传送的程序,然后选择“File”-“Save…”,注意保存的时候给文件起名字以后,加个文件名后缀,Keil C 支持汇编语言及C 语言编程,它是依靠文件名后缀来判断文件是汇编语言还是C 语言格式的,如果是汇编语言,后缀为“.asm”,C 语言格式的,后缀为“.c”。
我们根据实验要求选择保存为汇编语言格式或C 语言格式。
注意此时程序中的一些代码和寄存器将会自动蓝色显示,方便观察。
图1-7 创建一个新文件图1-8 输入程序并保存文件5.选择“Project”-“Targets,Groups,Files…”,选择“Groups/Add Files”标签,首先点击下边窗口中的“Source Group 1”,然后选择下边的“Add Files to Group…”,在接下来的窗口中,首先选择你需要加入的文件的后缀名(默认是.c,我们可选择“Asm Sourcefile,即后缀为.asm”)。
单片机原理与接口技术实验指导书2009.10.28目录软件部分 (1)实验一赋值程序 (1)一实验目的 (1)二实验内容 (1)三程序流程图 (1)四实验步骤 (1)五参考程序 (1)实验二数据区传送程序 (3)一实验目的 (3)二实验内容 (3)三程序流程图 (3)四实验步骤 (3)五参考程序 (3)硬件部分 (5)实验一P1口亮灯实验 (5)一实验目的 (5)二实验内容 (5)三程序流程图 (5)四仿真电路 (6)五硬件实现电路 (6)六实验步骤 (7)七参考程序 (7)实验二P1口转弯灯实验 (8)一实验目的 (8)二实验内容 (8)三程序流程图 (8)四仿真电路 (8)五实验电路 (9)六实验步骤 (9)七参考程序 (9)附录一Keil Vison2使用入门 (11)附录二Protues使用入门 (13)附录三KeilC与Proteus连接调试 (15)软件部分软件实验中,涉及外部数据存储器扩展寻址操作,须按下图连接实验线路。
说明:1 将存储器单元的D0-D7与数据总线单元D0-D7相连;存储器单元的A0-A12与地址总线单元A0-A12相连。
2 存储器单元的WE/PGM与六位LED左下方单元的WR或IOWR相连。
3 存储器单元的CS1与六位LED右下方单元A15相连。
4 存储器单元的OE与六位LED左下方单元的RD或IORD相连实验一赋值程序一实验目的1 熟悉汇编指令2 掌握汇编语言程序设计的一般方法二实验内容编写程序实现存储块(2000H---20FFH)的赋值操作(如全为0FFH)。
三程序流程图图1 流程图四实验步骤1 编写程序并调试。
2 在实验箱上运行程序,并查看对应存储器和寄存器的内容。
五参考程序ORG 0000HLJMP MAINORG 0030HMAIN: MOV R0,#00HMOV DPTR,#2000HMOV A,#0FFHLOOP0:MOVX @DPTR,AINC DPTRINC R0CJNE R0,#00H,LOOP0;判断赋值是否完成LOOP1:SJMP LOOP1END实验二数据区传送程序一实验目的1 熟悉汇编指令2 掌握汇编语言程序设计的一般方法二实验内容编写程序实现内存块的移动操作(将20H单元开始的64字节数据移动到3000H开始的存储区)。
实验一:单片机仿真初步(二)-Proteus的使用用来仿真的单片机电路,如下图所示:电路的核心是单片机A T89C52,晶振X1和电容C1、C2构成单片机时钟电路,单片机的P1口接8个发光二极管,二极管的阳极通过限流电阻接到电源的正极。
特别注意:下面文中所有值为1K的电阻都修正成100 可以考虑把红色发光二极管换成黄色发光二极管一、新建一个设计。
单击“File”中“New Design……”,在Proteus中打开了一个空白的新电路图纸。
二、将需要用到的元器件加载到对象选择器窗口。
单击对象选择器按钮如图所示:弹出“Pick Devices”对话框,在“Category”下面找到“Mircoprocessor ICs”选项,鼠标左键点击一下,在对话框的右侧,我们会发现这里有大量常见的各种型号的单片机。
找到AT89C52,双击“AT89C52”。
这样在左侧的对象选择器就有了A T89C52这个元件了。
如果知道元件的名称或者型号我们可以在“Keywords”输入AT89C52,系统在对象库中进行搜索查找,并将搜索结果显示在“Results”中,如下图所示:在“Results”的列表中,双击“A T89C52”即可将AT89C52加载到对象选择器窗口内。
晶振CRY:无极性电容CAP:有极性电容CAP POL:红色发光二极管LED-RED:电阻RES经过前面的操作我们已经将A T98C52、晶振等元件加载到了对象选择器窗口内。
在对象选择器窗口内鼠标左键点击“AT89C52”会发现在预览窗口看到AT89C52的实物图,且绘图工具栏中的元器件按钮处于选中状态。
我们在点击“CRYSTAL”、“LED-RED”也能看到对应的实物图,按钮也处于选中状态,如图所示:三、将元器件放置到图形编辑窗口。
在对象选择器窗口内,选中A T89C52,如果元器件的方向不符合要求可使用预览对象方向控制按钮进行操作。
如用按钮对元器件进行顺时针旋转,用按钮对元器件进行逆时针旋转,用按钮对元器件进行左右反转,用按钮对元器件进行上下反转。
目录引言 (2)实验1 PROTUES环境及LED闪烁综合实验 (7)实验2 多路开关状态指示 (10)实验3 报警产生器 (13)实验4 I/O并行口直接驱动LED显示 (16)实验5 按键识别方法之一 (19)实验6 一键多功能按键识别技术 (22)实验7 定时计数器T0作定时应用技术 (25)实验8定时计数器T0作定时应用技术 (28)实验9 “嘀、嘀、......”报警声. (32)实验10 8X8 LED点阵显示技术 (36)实验11电子琴 (40)引言单片机体积小,重量轻,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。
以单片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。
在嵌入式系统的中,开发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。
利用Proteus我们可以很好地解决这个问题,由此我们可以快速地建立一个单片机仿真系统。
1. Proteus介绍Proteus是英国Labcenter Electronics公司开发的一款电路仿真软件,软件由两部分组成:一部分是智能原理图输入系统ISIS(Intelligent Schematic Input System)和虚拟系统模型VSM(Virtual Model System);另一部分是高级布线及编辑软件ARES (Advanced Routing and Editing Software)也就是PCB。
1.1Proteus VSM的仿真Proteus可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路。
Proteus可提供30多种元件库,超过8000种模拟、数字元器件。
可以按照设计的要求选择不同生产厂家的元器件。
此外,对于元器件库中没有的元件,设计者也可以通过软件自己创建。
除拥有丰富的元器件外,Proteus还提供了各种虚拟仪器,如常用的电流表,电压表,示波器,计数/定时/频率计,SPI调试器等虚拟终端。
实验报告一、实验目的熟悉Proteus仿真软件环境,掌握Proteus软件环境中绘制电路图的方法及仿真单片机的步骤。
二、实验设备PC机1台、Proteus软件1套三、设计内容1.在Proteus软件环境中绘制单片机及各类常用电子器件,连接元件引脚,熟悉软件绘图环境。
2.设计并行口直接驱动LED显示。
四、设计原理及步骤1.原理;将单片机P0口的P0.0~P0.7引脚连接到一个共阴数码管的a~b的笔段上,数码管的公共端接地。
在数码管上循环显示数字0~9数字,时间间隔0.2s。
2.硬件设计打开Proteus ISIS编辑环境,按表所列的清单添加元件。
全部虚拟元件添加完毕后,在Proteus ISIS的编辑区中按下面电路原理图连接硬件电路。
3.程序设计LED数码显示原理:7段LED显示器内部由7个条形发光二极管和1个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。
LED数码管的a~g7个发光二极管加正电压发亮,加零电压不发亮,不同亮暗的组合就能形成不同的字形,这种组合称为段码,共阴极的段码见表由于显示的数字0~9段码没有规律可循,只能采用查表的方式来完成所需的操作。
按着数字0~9的循序,把每个数字的笔段代码按顺序排好,在程序中建立段码表如下:“TABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH”。
五、设计程序程序框图:源程序:ORG 0000H ;汇编起始地址START: MOV DPTR,#TABLES1: MOV A,#00H ;立即数00H送给AMOVC A,@A+DPTR ;A、DPTR中原有的内容相加,传送给A,查表指令CJNE A,#01,S2 ; 不相等则转到S2LJMP START ;转到STARTS2: MOV P0,A ;A→P0LCALL DELAY ;调用DELAYINC DPTR ;加1LJMP S1 ;转到S1 DELAY: MOV R5,#20D2: MOV R6,#20D1: MOV R7,248DJNZ R7,$DJNZ R6,D1 ;减1不为0转到D1DJNZ R5,D2 ;减1不为0转到D2RET ;子程序返回TABLE: DB 3FH,06H,5BH,4FH,66H ;码段表DB 6DH,7DH,07H,7FH,6FHDB 77H,7CH,39H,5EH,79HDB 71H,01HEND ;结束调试结果:…………………………实验电路图:六、实验结论及体会结论:由实验电路图可知数码管的七个接线端接在单片机的P0.0—P0.6口,所以在编写程序时要对P0口操作,由上面的调试程序截图可知,程序没运行一次,对应的P0口的值都会变化一次。
实验二:⑴单片机仿真软件protues的使用⑵I/O口简单流水灯实验一、 实验目的1.通过学习专业仿真软件protues,使学生理解和掌握protues窗口菜单和工具条的使用、元件的查找和调用、电源符号的调用、电路连线技巧、元件参数修改、单片机程序的加载以及系统的仿真运行等。
2.初步掌握MCS-51单片机的电路设计原理和方法,加深对单片机应用系统中软件、硬件相结合的认识和理解。
3.理解和掌握指令的含义和使用,进一步提高编程的技巧和水平。
二、 实验仪器、材料1.微型计算机(PⅣ以上)2.编程、汇编与模拟平台软件Keil uVision33.电子技术专业仿真软件protues运行平台三、 实验内容1.学习电子技术专业仿真软件protues的使用方法和技巧;2.针对AT89C51单片机进行最小系统电路设计,有目的的进行简单外围电路设计;3.借助Keil程序设计与汇编平台,结合课本实例,完成针对硬件电路的程序设计、汇编;4.在仿真软件protues中的硬件电路中,运行汇编后的单片机程序,观察软件的运行过程;5.修改程序-仿真运行-再修改程序-再仿真运行…。
四、 实验项目与实验步骤1.仿真软件protues的简单使用操作1)在桌面的“开始”程序菜单中,在桌面上选择【开始】→【程序】→“Proteus 7Professional”,打开设计界面。
2)用鼠标左键单击界面左侧预览窗口下面的“P”按钮,弹出“Pick Devices”(元件拾取)对话框。
3)通过按类别查找和拾取元件或直接查找和拾取元件,把元件从元件拾取对话框中拾取到图形编辑界面的对象选择器中。
单片机、晶振、电阻、电容、发光二极管等4)把相应元件从对象选择器中放置到图形编辑区中,调整元件摆放位置和放置方向,进行电路连接,编辑修改元件参数,完成电路设计。
5)在资料盘上建立一个单独的文件夹,并进行取名存盘。
6)借助Keil程序设计与汇编平台,结合课本实例,完成针对硬件电路的程序设计、汇编,注意汇编后产生的“.HEX”文件的存储路径。
P r o t e u s仿真单片机实验目录引言 (3)实验1 PROTUES环境及LED闪烁综合实验 (10)实验2 多路开关状态指示 (13)实验3 报警产生器 (17)实验4 I/O并行口直接驱动LED显示 (20)实验5 按键识别方法之一 (23)实验6 一键多功能按键识别技术 (28)实验7 定时计数器T0作定时应用技术 (32)实验8定时计数器T0作定时应用技术 (36)实验9 “嘀、嘀、......”报警声 .. (41)实验10 8X8 LED点阵显示技术 (45)实验11电子琴 (49)引言单片机体积小,重量轻,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。
以单片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。
在嵌入式系统的中,开发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。
利用Proteus我们可以很好地解决这个问题,由此我们可以快速地建立一个单片机仿真系统。
1. Proteus介绍Proteus是英国Labcenter Electronics公司开发的一款电路仿真软件,软件由两部分组成:一部分是智能原理图输入系统ISIS(Intelligent Schematic Input System)和虚拟系统模型VSM(Virtual Model System);另一部分是高级布线及编辑软件ARES (Advanced Routing and Editing Software)也就是PCB。
1.1 Proteus VSM的仿真Proteus可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路。
Proteus可提供30多种元件库,超过8000种模拟、数字元器件。
可以按照设计的要求选择不同生产厂家的元器件。
此外,对于元器件库中没有的元件,设计者也可以通过软件自己创建。
除拥有丰富的元器件外,Proteus还提供了各种虚拟仪器,如常用的电流表,电压表,示波器,计数/定时/频率计,SPI调试器等虚拟终端。
支持图形化的分析功能等。
Proteus特别适合对嵌入式系统进行软硬件协同设计与仿真,其最大的特点是可以仿真8051,PIA,AVR,ARM等多种系列的处理器。
Protues包含强大的调试工具,具有对寄存器和存储器、断点和单步模式IAR C-SPY, Keil, MPLAB等开发工具的源程序进行调试的功能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视化进行仿真。
1.2 Proteus PCBProteus 的PCB设计除了有自动布线仿真功能外,还集成了PCB设计,支持多达16个布线层,可以任意角度放置元件和焊接连线;集成了高智能的布线算法,可以方便地进行PCB设计。
2. 一个基于Protesus的单片机实例2.1 软件的编写本例题采用8个LED,编写程序使之闪烁起来。
软件的编写是采用汇编语言,芯片的型号选择AT89C51, 编写LED.ASM文件,利用Proteus本身的51汇编功能进行编译,编译成功后生成LED.hex文件。
2.2 绘制电路图运行Proteus的ISIS,进入仿真软件的主界面,如图1所示。
主界面分为菜单栏,工具栏,模型显示窗口,模型选择区,元件列表区等。
图1 ISIS启动界面通过左侧的工具栏区的P(从库中选择元件)命令,在Pick devices窗口中选择系统所需元器件,还可以选择元件的类别,生产厂家等。
本例所需主要元器件有:AT89C51芯片,电阻、电容、石英晶振和发光二极管,详见表1。
表1 元器件清单选择元器件后连接图2所示电路。
图2 电路原理图Microproccessor ICs类的芯片的引脚与实际的芯片基本相同,唯一的差别是隐去了GND和VCC引脚,系统默认的是把它们分别连接到地和+5V直流电源。
故在电路连线时可以不考虑电源和地的连接。
电路连接完成后,选中AT89C51单击鼠标左键,打开“Edit Component”对话窗口如图3所示,可以直接在“Clock Frequency”后进行频率设定,设定单片机的时钟频率为12MHz。
在“Add/remove source file”栏中选择已经编好的LED.asm文件,然后单击“OK”按钮保存设计。
至此,就可以进行单片机的仿真。
图 3 单片机属性的设定2.3 Proteus仿真结果单片机的仿真结果图如图4,模拟信号经A/D转换后,结果送入单片机,再在数码管上显示;通过调节可调电阻的阻值,可以得到不同的显示结果。
仿真结果表明,系统达到了预先的设计要求。
在仿真的过程中每个管脚旁边会出现一个小方块,红色的方快表示高电平,蓝色的表示低电平。
通过方快颜色的变化可以很方便地知道每个管脚电平的变化,从而能对系统的运行有更直观的了解,这对程序的调试有很大的帮助。
图4 仿真结果3.总结本文结合一个LED闪烁的单片机电路详细说明了Proteus在单片机开发中的应用。
可以看出,Proteus功能十分强大,能仿真各种数字模拟电路,且操作简单,使用方便。
能快速地进行单片机仿真,加快系统开发的过程,降低开发成本。
实验1 PROTUES环境及LED闪烁综合实验1.实验任务做单一灯的左移右移,硬件电路如图所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出“0”时,发光二极管亮,开始时P1.0→P1.1→P1.2→P1.3→┅→P1.7→P1.6→┅→P1.0亮,重复循环。
2.电路原理图图13.程序设计内容我们可以运用输出端口指令MOV P1,A或MOV P1,#DATA,只要给累加器值或常数值,然后执行上述的指令,即可达到输出控制的动作。
每次送出的数据是不同,具体的数据如下表1所示:P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 说明L8 L7 L6 L5 L4 L3 L2 L11 1 1 1 1 1 1 0 L1亮1 1 1 1 1 1 0 1 L2亮1 1 1 1 1 0 1 1 L3亮1 1 1 1 0 1 1 1 L4亮1 1 1 0 1 1 1 1 L5亮1 1 0 1 1 1 1 1 L6亮1 0 1 1 1 1 1 1 L7亮0 1 1 1 1 1 1 1 L8亮4.程序框图图25.汇编源程序ORG 0START: MOV R2,#8MOV A,#0FEHSETB CLOOP: MOV P1,ALCALL DELAYRLC ADJNZ R2,LOOPMOV R2,#8LOOP1: MOV P1,ALCALL DELAYRRC ADJNZ R2,LOOP1 LJMP START DELAY: MOV R5,#20 ; D1: MOV R6,#20D2: MOV R7,#248 DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND实验2 多路开关状态指示1.实验任务如图1所示,AT89S51单片机的P1.0-P1.3接四个发光二极管L1-L4,P1.4-P1.7接了四个开关K1-K4,编程将开关的状态反映到发光二极管上。
(开关闭合,对应的灯亮,开关断开,对应的灯灭)。
2.电路原理图图13.程序设计内容3.1 开关状态检测对于开关状态检测,相对单片机来说,是输入关系,我们可轮流检测每个开关状态,根据每个开关的状态让相应的发光二极管指示,可以采用JBP1.X,REL或JNB P1.X,REL指令来完成;也可以一次性检测四路开关状态,然后让其指示,可以采用MOV A,P1指令一次把P1端口的状态全部读入,然后取高4位的状态来指示。
3.2 输出控制根据开关的状态,由发光二极管L1-L4来指示,我们可以用SETBP1.X和CLR P1.X指令来完成,也可以采用MOV P1,#1111XXXXB方法一次指示。
4.程序框图读P1口数据到A CC中A CC内容右移4次A CC内容与F0H相或A CC内容送入P1口图2 5.解决方案方法一(汇编源程序)ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR ARR ARR AORl A,#0F0HMOV P1,ASJMP STARTEND方法二(汇编源程序)ORG 00HSTART: J B P1.4,NEXT1CLR P1.0SJMP NEX1NEXT1: SETB P1.0NEX1: JB P1.5,NEXT2CLR P1.1SJMP NEX2NEXT2: S ETB P1.1NEX2: JB P1.6,NEXT3CLR P1.2SJMP NEX3 NEXT3: S ETB P1.2 NEX3: JB P1.7,NEXT4CLR P1.3SJMP NEX4 NEXT4: S ETB P1.3 NEX4: SJMP STARTEND实验3 报警产生器1.实验任务用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。
2.电路原理图图13.程序设计内容3.1 信号产生的方法500Hz信号周期为2ms,信号电平为每1ms变反1次,1KHz的信号周期为1ms,信号电平每500us变反1次;4.程序框图图2 5.汇编源程序FLAG BIT 00HORG 00HSTART: JB P1.7,STARTJNB FLAG,NEXTMOV R2,#200DV: CPL P1.0LCALL DELY500LCALL DELY500DJNZ R2,DVCPL FLAGNEXT: MOV R2,#200DV1: C PL P1.0LCALL DELY500DJNZ R2,DV1CPL FLAGSJMP START DELY500: MOV R7,#250 LOOP: NOPDJNZ R7,LOOPRETEND实验4 I/O并行口直接驱动LED显示1. 实验任务如图1所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地。
在数码管上循环显示0-9数字,时间间隔0.2秒。
2. 电路原理图图13 程序设计内容(1) LED数码显示原理七段LED显示器内部由七个条形发光二极管和一个小圆点发光二极管组成,根据各管的极管的接线形式,可分成共阴极型和共阳极型。
LED数码管的g~a七个发光二极管因加正电压而发亮,因加零电压而不以发亮,不同亮暗的组合就能形成不同的字形,这种组合称之为字形码,下面给出共阴极的字形码见表2“0”3FH “8”7FH“1”06H “9”6FH“2”5BH “A”77H“3”4FH “b”7CH“4”66H “C”39H“5”6DH “d”5EH“6”7DH “E”79H“7”07H “F”71H(2)由于显示的数字0-9的字形码没有规律可循,只能采用查表的方式来完成我们所需的要求了。