1、蒯学文 皖西学院 实 验 报 告 实 验 课 程:Protues仿真实验学 院:机电学院 专 业:电子信息科学与技术 班 级:1001班 姓名(学号):蒯学文(2010010501) 指 导 教 师:翁老师 二0一二年十一月实验一 模拟电路的仿真1:按下图连接电路。2:加示波器进行测量,记录数据。实验二 用汇编语言仿真跑马灯程序1:如图所示连接好电路图2:通过Keil编译汇编程序 ORG 0000H LJMP MAIN ORG 0030HMAIN: MOV A,#0FEH ;初值11111110送入A MOV 30H,#7 ;30单元作计数器,初始为左移次数LEFT: MOV P1,A ;A送
2、入P1口(初始点亮P1.0) LCALL DELAY ;延时 RL A ;循环左移 DJNZ 30H,LEFT ;未够7次继续左移 MOV 30H,#7 ;重置计数器,为右移次数RIGHT: MOV P1,A ;A送入P1口 LCALL DELAY ;延时 RR A ;循环右移 DJNZ 30H,RIGHT ;未够7次继续右移 AJMP MAIN DELAY: MOV R5,#195 ;延时C1: MOV R6,#255 DJNZ R6,$ DJNZ R5,C1 RET END3:实验的现象:发光二极管的灯亮来回往复运动。 实验三 模数转换实验1:如图连接好实验电路图2:用Keil对写好的程序
3、进行编译ADC0808数字电压表,测量范围05V#include #define uchar unsigned char#define uint unsigned intuchar a16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共阴极段码uchar b4;/存放4位显示的数sbit START=P24;sbit OE=P26;sbit EOC=P25;void mdelay(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void show(void) uint i; uchar
4、 c=0x01; for(i=0;i4;i+) P1=(ci); P3=bi; if(i=2)/显示小数点 P3=P3|0x80; mdelay(1); void main(void) uint shuju=0; while(1) START=1; START=0;/下降沿启动转换信号 while(EOC=0)/判断是否转换结束,EOC=0正在进行转换 OE=1; shuju=P0; shuju=shuju*1.0/255*500;/放大100倍 OE=0; b0=ashuju%10;/个位 b1=ashuju%100/10;/十位 b2=ashuju/100;/百位 b3=ashuju/10
5、00;/最高位始终为0 show(); TLC2543数字电压表,测量范围05V,1路模拟输入,采用4位数码管显示,仿真通过。#include #include #define uchar unsigned char#define uint unsigned intuchar a16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/共阴极段码uchar b4;/存放4位要显示的数sbit CLOCK=P27; /*2543时钟*/sbit D_IN=P26; /*2543输入*/sbit D_OUT=P24; /*2543输出*/sbit
6、_CS=P25; /*2543片选*/void mdelay(uint z)/1ms延时子程序 uint x,y; for(x=z;x0;x-) for(y=110;y0;y-);void delay(uchar n)uchar i;for(i=0;in;i+) _nop_();/* 名称:read2543 功能:TLC2543驱动模块 输入参数:port通道号 输出参数:ad转换值*/uint read2543(uchar port)uint ad=0,i;CLOCK=0;_CS=0;port=4;/通道号左移4位for(i=0;i12;i+)/没有设置控制字,默认输出数据为12位,高位先送
7、出,输出数据的格式为2进制 if(D_OUT) ad|=0x01;/转换后的值高位先送出 D_IN=(bit)(port&0x80);/通道值高位先送出 CLOCK=1; delay(3); CLOCK=0; delay(3); port=1; ad=1;/循环中多左移了一位return ad; void show(void)/数码管显示子程序 uint i; uchar c=0x01; for(i=0;i4;i+) P1=(ci); P3=bi; if(i=2)/显示小数点 P3=P3|0x80; mdelay(1); void main(void) uint ad=0; while(1)
8、ad=read2543(0); ad=ad*1.0/4096*500;/ b0=aad%10;/个位 b1=aad%100/10;/十位 b2=aad/100;/百位 b3=aad/1000;/最高位始终为0 show(); 实验四 电动机的转动实验1:如图所示,连接好电路图 2:通过Keil仿真实验实验程序如下:#include #include sbit K1 =P14 ; /加速键sbit K2 =P15 ; /减速键sbit K3 =P16 ; /正反控制键sbit CLK=P00 ; /PWM输出控制信号sbit ZF =P01 ; /正反控制信号unsigned char PWMH
9、=0x00; /调宽值unsigned char PWML=0x0f; void delay(unsigned char m);void main() CLK =0; TMOD=0x11 ; /两个定时器都工作在方式1 TH0=0x00 ; /65.535ms延时常数 TL0=0x00; TH1=PWMH ; TL1=PWML ; EA=1; /CPU允许中断 ET0=1; /允许定时器T0中断 ET1=1; /允许定时器T1中断 TR0=1 ; /定时器T0计数 while(1) if (K3=0) /高电平逆时钟转,低电平顺时钟转 ZF=0; else ZF=1; if(K1=0) /按下
10、加速键 delay(1); PWML+; /调宽值低四位加1 if(PWML=0x00) PWMH+; /调宽值高四位加1 if (PWMH=0xFF) /最大值时 PWMH=0xFE; if(K2=0) /按下减速键 delay(1); PWML- ; /调宽值低四位减1 if (PWML=0x00) PWMH-; /调宽值高四位减1 if (PWMH=0x00) PWMH=0x01; /最小值时 void timer0() interrupt 1 using 0 / 定时器0中断服务程序 TR1=0 ; TH0=0x00 ; TL0=0x00 ; TH1=PWMH ; TL1=PWML;
11、TR1=1 ; CLK=0 ; /启动输出void timer1() interrupt 3 using 0 / 定时器1中断服务程序 TR1=0 ; CLK=1 ; /结束输出void delay(unsigned char m) /MS延时 unsigned char i; while(m-) for(i=0;i5;i+); 3:实验现象:第一个键为启动键,第二个键是加速键,第三个键是转换反向键。 实验五 PCB版实验1:电路图如下所示2:进入ARES后,选择黄色的“Board Edge”进行选择板子的面积。3:按如图所示的图在Protues中检测器件是否都有封装方式,若是,则点击“ARE
12、S”,就可生成如下图所示的电路图,然后进行手动布线。4:对手动的电路图进行自动布线,对自动布线的电路图加上电源层,分别为地层和正电源层,则有如下图所示5:3D预览图如下: 实 验 小 结 Proteus是世界上著名的EDA工具,从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。此次实验我学习了Keil的安装及调试,Protues的安装及调试,并且可以将两者进行远程连接调试;学习了单片机的原理图的设计和程序的调试,并且通过ADC0808进行模数转换将数值显示在七段数码管上。学习了PCB板的制作,通过确认Protues中元器件的封装方式,然后将电路图加载到ARES中,通过圈定电路图的面积和手动布线后形成规则的电路图,最后进行自动布线和铺设电源层,完成了PCB板的制作。 本次仿真软件Protues的学习,让我了解到这不仅仅是一个软件的应用,更多的是使我们认识和学习到很多在课堂上无法得到的东西。最后在这里感谢认真负责的老师。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1