智能仪器实验指导PROTEUS仿真.docx
- 文档编号:7055542
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:33
- 大小:906.40KB
智能仪器实验指导PROTEUS仿真.docx
《智能仪器实验指导PROTEUS仿真.docx》由会员分享,可在线阅读,更多相关《智能仪器实验指导PROTEUS仿真.docx(33页珍藏版)》请在冰豆网上搜索。
智能仪器实验指导PROTEUS仿真
实验一智能仪器设计集成环境介绍
一、实验目的
1.掌握利用Proteus仿真平台进行电路设计的基本操作。
2.掌握利用Proteus软件和Keil联合仿真调试的操作。
二、实验仪器
计算机一台、Proteus软件
三、实验内容
ProteusISIS是英国LabcenterElectronics公司开发的EDA软件。
单片机是现代电子技术的新兴领域,它的出现极大地推动了电子工业的发展,已成为电子系统设计中最为普遍的应用手段。
近年来单片机技术得到了突飞猛进的发展,各种单片机开发工具层出不穷。
虚拟仿真就是近年来兴起的一种新型应用技术,采用虚拟仿真技术,在原理图设计阶段就可以对单片机应用设计进行评估,验证所设计电路是否达到所要求的技术指标,还可以通过改变元器件参数使整个电路性能达到最优化。
这样就无须多次购买元器件及制作印刷电路板,节省了设计时间与经费,提高了设计效率与质量。
英国Labcenter公司推出的Proteus软件是一款极好的单片机应用开发平台,它以其特有的虚拟仿真技术很好地解决了单片机及其外围电路的设计和协同仿真问题,可以在没有单片机实际硬件的条件下,利用PC以虚拟仿真方式实现单片机系统的软、硬件同步仿真调试,使单片机应用系统设计变得简单容易。
Proteus软件涵盖了PIC、AVR、MCS8051、68HC11、ARM等微处理器模型,以及多种常用电子元器件,包括74系列、CMOS4000系列集成电路、A/D和D/A转换器、键盘、LCD显示器、LED显示器,还提供示波器、逻辑分析仪、通信终端、电压/电流表、I2C/SPI终端等各种虚拟仪表,这些都可以直接用于仿真设计,极大地提高了设计效率和设计水平。
下面以一个“完成每隔1秒钟接在P1口的八个发光二极管循环闪亮”例子来说明实验过程。
实验硬件电路(如图1.1所示):
图1.1硬件电路图
源程序:
ORG0000H
LJMPSTART
ORG0030H
START:
MOVA,#0FEH
LOOP:
MOVP1,A
MOVR1,#10
DLE1:
MOVR2,#200
DLE2:
MOVR3,#126
DLE3:
DJNZR3,DLE3
DJNZR2,DLE2
DJNZR1,DLE1
RLA
LJMPLOOP
END
四、实验步骤
1、进入Proteus系统,画出实验电路图;
2、进入KeilC51软件的操作环境,编辑源程序并对源文件进行编译;
编译如图1.2所示:
图1.2编译
3、对Proteus系统和KeilC51系统进行联机设置,如图1.3、1.4所示;
联机设置:
首先要安装Proteus的Keil驱动,安装好驱动后,进入Keil界面进行设置,单击工具条中的
按钮,在弹出的表单中单击
选项卡,选择
的组合框,在下拉菜单中选中“ProteusVSMSimulator”选项即可,如果是联机进行联调,还要在其后的
按钮中进行适当的设置。
之后在Proteus界面下单击菜单栏中的
按钮,在下拉菜单选中
即可,至此完成了联调的基本设置。
图1.3在Keil中的联调的设置
图1.4Proteus中的联调的设置
4、在KeilC51系统中运行、调试程序,在Proteus系统中检查输出结果,如图1.5所示。
延时时间的计算:
执行一条DJNZRn,rel指令需要两个机器周期,因此只要计算出执行了多少该指令并结合计算其它处于延时程序中的各条指令的执行次数和周期数,就可以计算出延时程序的延时时间。
每个机器周期为12个时钟周期,结合晶振的周期就可以较精确的计算出延时时间。
图1.5联调结果
五、思考题:
1、总结Proteus系统的使用特点;
2、给实验源程序加上注释。
3、总结利用Proteus系统和KeilC51系统进行联机调试的电路设计过程。
实验二程序存储器与数据存储器扩展实验
一、实验目的
1.学习程序存储器的电路的扩展原理。
2.学习数据存储器的电路的扩展原理。
3.掌握利用Proteus软件和Keil联合仿真调试的操作。
二、实验仪器
计算机一台、Proteus软件
三、实验内容
在8051单片机外部扩展8KBRAM芯片6264,其地址范围为0000H~1FFFH,将一些特殊常数信息(如图片数据等)存放在单片机内ROM从1000H地址开始的地方,程序运行时将ROM中从1000H地址开始的内容转存到外部RAM中。
ORG0000H
MOVDPTR,#1000H
MOVR7,#0
LP:
MOVA,#0
MOVCA,@A+DPTR
MOVX@DPTR,A
INCDPTR
DJNZR7,LP
SJMP$
ORG1000H
DB0f0H,0f8H,0cH,0c4H,0cH,0f8H,0f0H,00H,03H,07H,0cH,08H,0cH,07H,03H,00H
DB00H,10H,18H,0fcH,0fcH,00H,00H,00H,00H,08H,08H,0fH,0fH,08H,08H,00H
DB08H,0cH,84H,0c4H,64H,3cH,18H,00H,0eH,0fH,09H,08H,08H,0cH,0cH,00H
DB08H,0cH,44H,44H,44H,0fcH,0b8H,00H,04H,0cH,08H,08H,08H,0fH,07H,00H
DB0c0H,0e0H,0b0H,98H,0fcH,0fcH,80H,00H,00H,00H,00H,08H,0fH,0fH,08H,00H
DB7cH,7cH,44H,44H,44H,0c4H,84H,00H,04H,0cH,08H,08H,08H,0fH,07H,00H
DB0f0H,0f8H,4cH,44H,44H,0c0H,80H,00H,07H,0fH,08H,08H,08H,0fH,07H,00H
DB0cH,0cH,04H,84H,0c4H,7cH,3cH,00H,00H,00H,0fH,0fH,00H,00H,00H,00H
DB0b8H,0fcH,44H,44H,44H,0fcH,0b8H,00H,07H,0fH,08H,08H,08H,0fH,07H,00H
DB38H,7cH,44H,44H,44H,0fcH,0f8H,00H,00H,08H,08H,08H,0cH,07H,03H,00H
DB00H,00H,00H,30H,30H,00H,00H,00H,00H,00H,00H,06H,06H,00H,00H,00H
DB00H,00H,00H,30H,30H,00H,00H,00H,00H,00H,08H,0eH,06H,00H,00H,00H
DB00H,80H,0c0H,60H,30H,18H,08H,00H,00H,00H,01H,03H,06H,0cH,08H,00H
DB00H,20H,20H,20H,20H,20H,20H,00H,00H,01H,01H,01H,01H,01H,01H,00H
DB00H,08H,18H,30H,60H,0c0H,80H,00H,00H,08H,0cH,06H,03H,01H,00H,00H
DB18H,1cH,04H,0c4H,0e4H,3cH,18H,00H,00H,00H,00H,0dH,0dH,00H,00H,00H
END
四、实验步骤
1、进入Proteus系统,画出实验电路图;
2、进入KeilC51软件的操作环境,编辑源程序并对源文件进行编译;
3、对Proteus系统和KeilC51系统进行联机调试并保存调试结果(利用软件抓图)。
五、思考题:
1、程序存储器与数据存储器进行扩展扩展时有何异同?
2、画出程序流程图。
3、程序执行后6264中的内容是什么?
实验三并行IO口扩展实验
1.实验目的
通过实验掌握8255扩展I/O口的方法。
进一步学习了解8255可编程芯片的结构及编程方法,要求编程实现8255的PA、PB和PC口的输入输出。
2.实验设备
微机1台、PROTEUS软件
3.实验线路及实验原理
8255的片选信号
连到8051的P2.7,端口地址选择信号A1、A2由P2.1、P2.0提供。
该电路中8255的PA、PB、PC以及控制口的地址分别为7CFFH、7DFFH、7EFFH、7FFFH。
编程实现8255的PA口按方式0输出,PB口按方式0输入,将PB口外接8个开关的状态通过PA口外接的LED灯反映出来。
4.实验内容
复习思考题
1若要求用8255的PB口作输出,PA口作输入,应如何修改实验程序?
2利用8255的方式1可实现与单片机的查询或中断方式接口,设计一个通过查询8255的PC1(IBFB)和PC7(OBFA)实现从PB口输入,从PA口输出的实验程序。
3如果需要采用8255的PC7输出连续方波,如何利用PC口的置位/复位控制命令来实现?
ORG0000H
PORTAEQU7CFFH;A口
PORTBEQU7DFFH;B口
PORTCEQU7EFFH;C口
CADDREQU7FFFH;控制字地址
SJMPSTART
ORG0030H
START:
MOVA,#82H;方式0,PA,PC输出,PB输入
MOVDPTR,#CADDR
MOVX@DPTR,A
loop:
MOVDPTR,#PORTB
MOVXA,@DPTR;读入B口
MOVDPTR,#PORTA
MOVX@DPTR,A;输出到A口
LCALLDELAY
LJMPloop
DELAY:
MOVR6,#0
DELAY1:
MOVR7,#0
DELAY2:
DJNZR7,DELAY2
DJNZR6,DELAY1
RET
END
实验四I2C总线扩展实验
采用8051单片机的P1.6和P1.7作为I2C总线的SCL和SDA,扩展一片24C02存储器,用软件模拟方式实现I2C总线操作时序,向24C02内部从00H开始的字节中写入16个数据。
ACKBIT10H;应答标志位
SLADATA50H;器件地址字
SUBADATA51H;器件子地址
NUMBYTEDATA52H;读/写字节数
SDABITP1.7
SCLBITP1.6;I2C总线定义
MTDEQU30H;发送数据缓存区首地址(30H-3FH)
MRDEQU40H;接收数据缓存区首地址(40H-4FH)
ORG0000H
AJMPMAIN
ORG0030H
;*********************************************************************
;名称:
IWRNBYTE
;描述:
向器件指定子地址写N个数据
;入口参数:
器件地址字SLA,子地址SUBA,发送数据缓冲区MTD,发送字节数NUMBYTE
;*********************************************************************
IWRNBYTE:
MOVR3,NUMBYTE
LCALLSTART;启动总线
MOVA,SLA
LCALLWRBYTE;发送器件地址字
LCALLCACK
JNBACK,RETWRN;无应答则退出
MOVA,SUBA;指定子地址
LCALLWRBYTE
LCALLCACK
MOVR1,#MTD
WRDA:
MOVA,@R1
LCALLWRBYTE;开始写入数据
LCALLCACK
JNBACK,IWRNBYTE
INCR1
DJNZR3,WRDA;判断是否写完
RETWRN:
LCALLSTOP
RET
;*********************************************************************
;名称:
IRDNBYTE
;描述:
从器件指定子地址读取N个数据
;入口参数:
器件地址字SLA,子地址SUBA,接收数据缓存区MRD,接收字节数NUMBYTE
;*********************************************************************
IRDNBYTE:
MOVR3,NUMBYTE
LCALLSTART
MOVA,SLA
LCALLWRBYTE;发送器件地址字
LCALLCACK
JNBACK,RETRDN
MOVA,SUBA;指定子地址
LCALLWRBYTE
LCALLCACK
LCALLSTART;重新启动总线
MOVA,SLA
INCA;准备进行读操作
LCALLWRBYTE
LCALLCACK
JNBACK,IRDNBYTE
MOVR1,#MRD
RON1:
LCALLRDBYTE;读操作开始
MOV@R1,A
DJNZR3,SACK
LCALLMNACK;最后一字节发非应答位
RETRDN:
LCALLSTOP
RET
SACK:
LCALLMACK
INCR1
SJMPRON1
;*********************************************************************
;名称:
STRRT
;描述:
启动I2C总线子程序—发送I2C总线起始条件
;*********************************************************************
START:
SETBSDA;发送起始条件数据信号
NOP;起始条件建立时间大于4.7us
SETBSCL;发送起始条件的时钟信号
NOP
NOP
NOP
NOP
NOP;起始条件锁定时间大于4.7us
CLRSDA;发送起始信号
NOP
NOP
NOP
NOP;起始条件锁定时间大于4.7us
CLRSCL;钳住I2C总线,准备发送或接收数据
NOP
RET
;*********************************************************************
;名称:
STOP
;描述:
停止I2C总线子程序—发送I2C总线停止条件
;*********************************************************************
STOP:
CLRSDA;发送停止条件的数据信号
NOP
NOP
SETBSCL;发送停止条件的时钟信号
NOP
NOP
NOP
NOP
NOP;起始条件建立时间大于4.7us
SETBSDA;发送I2C总线停止信号
NOP
NOP
NOP
NOP
NOP;延迟时间大于4.7us
RET
;*********************************************************************
;名称:
MACK
;描述:
发送应答信号子程序
;*********************************************************************
MACK:
CLRSDA;将SDA置0
NOP
NOP
SETBSCL
NOP
NOP
NOP
NOP
NOP;保持数据时间,大于4.7us
CLRSCL
NOP
NOP
RET
;*********************************************************************
;名称:
MNACK
;描述:
发送非应答信号子程序
;*********************************************************************
MNACK:
SETBSDA;将SDA置1
NOP
NOP
SETBSCL
NOP
NOP
NOP
NOP
NOP
CLRSCL;保持数据时间,大于4.7us
NOP
NOP
RET
;*********************************************************************
;名称:
CACK
;描述:
检查应答位子程序,返回值:
ACK=1时表示有应答
;*********************************************************************
CACK:
SETBSDA
NOP
NOP
SETBSCL
CLRACK
NOP
NOP
MOVC,SDA
JCCEND
SETBACK;判断应答位
CEND:
NOP
CLRSCL
NOP
RET
;*********************************************************************
;名称:
WRBYTE
;描述:
发送字节子程序,字节数据放入ACC
;*********************************************************************
WRBYTE:
MOVR0,#08H
WLP:
RLCA;取数据位
JCWRI
SJMPWRO;判断数据位
WLP1:
DJNZR0,WLP
NOP
RET
WRI:
SETBSDA;发送1
NOP
SETBSCL
NOP
NOP
NOP
NOP
NOP
CLRSCL
SJMPWLP1
WRO:
CLRSDA;发送0
NOP
SETBSCL
NOP
NOP
NOP
NOP
NOP
CLRSCL
SJMPWLP1
;*********************************************************************
;名称:
RDBYTE
;描述:
读取字节子程序,读出的数据存放在ACC
;*********************************************************************
RDBYTE:
MOVR0,#08H
RLP:
SETBSDA
NOP
SETBSCL;时钟线为高,接收数据位
NOP
NOP
MOVC,SDA;读取数据位
MOVA,R2
CLRSCL;将SCL拉低,时间大于4.7us
RLCA;进行数据位的处理
MOVR2,A
NOP
NOP
NOP
DJNZR0,RLP;未够8位,继续读入
RET
MAIN:
MOVR4,#0F0H;延时,等待其它芯片复位完成
DJNZR4,$
;发送数据缓存区初始化,将16个连续字节分别赋值为00H到0FH
MOVA,#00H
MOVR0,#30H
S1:
MOV@R0,A
INCR0
INCA
CJNER0,#40H,S1
;向24C02C中写数据,数据存放在24C02C中50H开始的16个字节中
MOVSLA,#0A0H;24C02C地址字,写操作
MOVSUBA,#50H;目标地址
MOVNUMBYTE,#16;字节数
LCALLIWRNBYTE;写数据
DELAY:
MOVR5,#20
D1:
MOVR6,#248
D2:
MOVR7,#248
DJNZR7,$
DJNZR6,D2
DJNZR5,D1
;从24C04C中读数据,数据送AT89C51中40H开始的16个字节中
MOVSLA,#0A0H;24C02C地址字,伪写入操作
MOVSUBA,#50H;目标地址
MOVNUMBYTE,#16;字节数
LCALLIRDNBYTE;读数据
SJMP$
END实验五DAC接口实验
采用DAC0832和单片机8051连接实现波形发生器电路,为了识别按键,对8051单片机的外部中断INT0进行扩展,可通过不同的按键产生阶梯波、三角波、方波和正弦波。
ORG0000H
START:
LJMPMAIN
ORG0003H;外部中断入口
LJMPINSER;转到中断服务程序
ORG0030H
MAIN:
MOVDPTR,#7FFFH;DAC0832地址
SETBEX0;允许中断
SETBIT0;负边沿触发方式
SETBEA;开中断
HERE:
JB20H.0,ST;阶梯波处理
JB20H.1,TRI;三角波处理
JB20H.2,SQ;方波处理
JB20H.3,SIN;正弦波处理
SJMPHERE;等待中断
INSER:
JNBP1.0,LL1;中断服务程序,查询按键
SJMPL1
LL1:
MOV20H,#00H
SETB20H.0;设置阶梯波标志
SJMPRT
L1:
JNBP1.2,LL2
SJMPL2
LL2:
MOV20H,#00H
SETB20H.1;设三角梯波标志
SJMPRT
L2:
JNBP1.4,LL3
SJMP
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 智能 仪器 实验 指导 PROTEUS 仿真
![提示](https://static.bdocx.com/images/bang_tan.gif)