文档库 最新最全的文档下载
当前位置:文档库 › proteus 仿真大作业

proteus 仿真大作业

proteus 仿真大作业
proteus 仿真大作业

实验报告

Proteus

仿

课题:数字时钟实验报告

系部:电子工程系

班级:应用电子090132

姓名:关志超

指导老师:席东河

2011.6.10

前言

数字电子钟具有走时准确,一钟多用等特点,在生活中已经得到广泛的应用。另外数字钟还具备秒表和闹钟的功能,且闹钟铃声可自选,使一款电子钟具备了多媒体的色彩。单片机A T89C51在Proteus软件中实现数字时钟的定时、时间调整、闹正设置等功能。具有体积小、功能强可靠性高、价格低廉等一系列优点,不仅已成为工业测控领域普遍采用的智能化控制工具,而且已渗入到人们工作和和生活的各个角落,有力地推动了各行业的技术改造和产品的更新换代,应用前景广阔。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间。

Protues软件不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前最好的仿真单片机及外围器件的工具。已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus 是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、A VR、ARM、8086和MSP430等,它也支持IAR、Keil和MPLAB等多种编译器。

本文主要介绍用单片机内部的定时/计数器来实现电子时钟的方法,本设计由单片机AT89C51芯片和LED1602液晶显示屏为核心,辅以必要的电路,构成了一个单片机电子时钟。

目录

第一章电子时钟、单片机简介 (4)

1、电子时钟工作原理 (4)

2、单片机简介 (4)

第二章数字时钟电路设计 (5)

2.1 设计要求 (5)

2.2 数字电路模块图: (6)

2.3 (6)

2.2 模块简介: (6)

2.3 系统功能操作实现 (7)

2.4 方案设计元件清单 (8)

第三章Protues仿真电路 (9)

3.1 绘制数字时钟电路Protues仿真原理图: (9)

3.1.1 启动ISIS 7 Professional软件 (9)

3.1.2 仿真电路绘制 (9)

3.1.3 数字时钟原理图 (10)

3.1.4 电路检测 (11)

3.2 软件设计: (11)

3.2.1 运行keil软件编写程序 (11)

3.2.2 编译、连接 (12)

3.2.3 将程序烧入单片机 (12)

3.2.4、程序运行 (13)

附录 (13)

程序: (13)

总结 (23)

参考资料 (24)

第一章电子时钟、单片机简介

1、电子时钟工作原理

电子时钟是基于单片机的一种计时工具,采用延时程序产生一定的时间中断,用于一秒的定义,通过计数方式进行满六十秒分钟进一,满六十分小时进一,满二十四小时小时清零。从而达到计时的功能,是人民日常生活补课缺少的工具。

现在高精度的计时工具大多数都使用了石英晶体振荡器,由于电子钟、石英钟、石英表都采用了石英技术,因此走时精度高,稳定性好,使用方便,不需要经常调试,数字式电子钟用集成电路计时时,译码代替机械式传动,用LED显示器代替指针显示进而显示时间,减小了计时误差,这种表具有年、月、时、分、秒以及星期、温度等显示功能,还可以进行时和分的校对以及定时闹钟功能,片选的灵活性好。

该电子时钟由89C51,BUTTON,7SES六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。

2、单片机简介

1972年,美国Intel公司首先推出8位微处理器8008,并于1976年9月率先推出MCS-48系列单片机。在这以后,8位单片机纷纷面市。例如,莫斯特克和仙童公司合作生产的3870系列,摩托罗拉公司生产的6801系列等。随着集成电路工艺水平的提高,一些高性能的8位单片机相继问世。例如,1978年摩托罗拉公司的MC6801系列及齐洛格公司的Z8系列,1979年NEC公司的UPD78XX

系列。这类单片机的寻址能力达64KB,片内ROM容量达4--8KB,片内除带有并行I\O口外,还有串行I\O口,甚至还有A\D转化器功能。8位单片机由于功能强,被广泛用于自动化装置、智能仪器仪表、智能接口、过程控制、通信、家用电器等各个领域。单片机全称为单片机微型计算机(Single Chip Microsoftcomputer)。从应用领域来看,单片机主要用来控制,所以又称为微控制器(Microcontroller Unit)或嵌入式控制器。单片机是将计算机的基本部件微型化并集成在一块芯片上的微型

AT89C51是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash 存储单元,功能强大的微型计算机的AT89C51可为许多嵌入式控制应用系统提供高性价比的解决方案。

综上所诉,数字时钟设计方案采用单片机机型:A T89C51;计时方案设计采用单片机内部计数/定时功能,利用软件控制单片机实现数字时钟时间设置功能;显示方案中利用单片机并行I/O端口,实现LED动态显示;

第二章数字时钟电路设计

2.1 设计要求

设计并制作出具有以下功能的数字钟:

(1)自动计时,由六位LED显示器显示时、分、秒

(2)具备校准功能,可以设置当前时间。

(3)具备定时启闹功能,可以设置启闹时间,启闹10s后自动关闭闹铃

2.2 数字电路模块图:

2.2 模块简介:

(1)主程序函数main:完成系统初始化,包括时钟、闹铃初始参数及初始标志的设定;I/O端口、定时/计数器初始状态的设定:更新显示时间,循环扫描按键,根据案件分别进行闹铃和时钟的设置管理。

(2)LED显示函数dispiay:根据显示单元首地址显示时钟(或闹铃)时间,实现6位LED的动态显示功能。

(3)键盘检测函数keytest和查键值函数search:这两个函数都属于键盘扫描模块,函数keytest判断是否有按键输入,函数search识别并返回行列式按键的键号。

(4)时钟设置函数ftion0:根据用户按下0#键的次数,依次选择设置时钟的秒、分、时的修改标志位。加1修改功能函数将根据该标志位进行时钟时间的设置修改。

(5)闹铃设置函数ftion1:根据用户按下:1#键的次数,依次选择设置闹铃的分、时的修改标志位。加1修改功能函数将根据该标志位进行时钟闹铃的设(6)加1修改功能函数cum:用户按下2#键后,根据时钟和闹铃设置函数设置的标志位将时钟(或闹铃)相应的时、分、秒计数单元加1。

(7)闹铃判断启动函数alarm:半段闹铃启动时间到否,若时间到,则启动闹铃,延时10s后自动关闹铃,并清除闹铃设置标志。

(8)定时器中断函数clock:定时修改时钟参数中断服务子程序。

综上各模块功能,数字时钟设计方案采用单片机机型:A T89C51;计时方案设计采用单片机内部计数/定时功能,利用软件控制单片机实现数字时钟时间设置功能;显示方案中利用单片机并行I/O端口,实现LED动态显示;

2.3 系统功能操作实现

(1)键盘功能定义。系统采用4*3矩阵键盘。共计12个按键任务中使用了三个按键,0#、1#和2#键,其余按键为系统功能扩展预留。

0#键:时钟参数表修改功能选择键。按一次修改秒,按二次修改分,按三次修改小时,按四次确认修改完毕。

1#键:闹铃时间设置功能选择键。按一次修改分,按两次修改小时,按三次确认修改完成。

2#键:增1功能键,每按一次该键,根据0#、1#键的选择结果将相应单元内容加1。修改“小时”时,加到23后再加1“清零”;修改“分”时,加到59后再加1“清零”。

(2)显示定义。6位LED从左到右依次显示时、分、秒,采用24小时计时。

(3)系统工作流程设计

时间显示:上电后,系统自动进入时钟显示,从00:00:00开始计时。

时间调整:按下0#键,系统停止计时,进入时间设定状态,保持原有显示。按一次修改秒表,按二次修改分,按三次修改小时,直至按四次确认修改完成,系统由设定后的时间开始计时显示。

闹铃设置/启闹/停闹:按下1#键,数码管显示00:00:00,进入闹铃设置状态。等待键入启闹时间,按一次设置分,按两次设置小时,按三次确认设置完毕。将启动定时启闹功能,并恢复时间显示。当定时时间到,蜂鸣器鸣叫10s后停闹。在闹铃设置过程中,系统继续计时。

在时间调整和闹铃设置状态下,均可以按2#键,采用增1方式修改相应的参数。

2.4 方案设计元件清单

第三章Protues仿真电路

3.1 绘制数字时钟电路Protues仿真原理图:3.1.1 启动ISIS 7 Professional软件

元件的加载:找到原件后双击原件即可完成加载原件。

3.1.2 仿真电路绘制

放置元件→调整原布局→连线→绘制总线→放置网络标号

网络标号放置如下图所示。

3.1.3 数字时钟原理图

连线后最终数字时钟电路原理图如下

3.1.4 电路检测

电路连接完毕后,单击运行按钮(如下图)检测电路是否有误,

如果电路如果无误进行软件检测。3.2 软件设计:

3.2.1 运行keil软件编写程序

3.2.2 编译、连接

3.2.3 将程序烧入单片机

3.2.4、程序运行

附录

程序:

/***************数字钟程序***************/ #pragma SMALL

#include

#include

#define uchar unsigned char

sbit P2_7=P2^7; //定义蜂鸣器控制端口

/**************函数声明*************/

void delay(uchar x);

void display(uchar *p);

uchar keyscan(); //扫描键盘有无键按下

uchar search(); //按键识别

void alarm(); //闹钟判断启动

void ftion0(); //时钟修改

void ftion1(); //闹钟修改

void cum(); //加1修改

/***************全局变量定义****************/

uchar clockbuf[3]={0,0,0}; //存放时钟时分秒的十进制数uchar bellbuf[3]={0,0,0}; //存放闹钟时分秒的十进制数uchar msec1; //10ms中断次数

uchar msec2; //1s循环次数

uchar timdata,rtimdata; //时钟和闹钟修改位置标志

uchar count; //闹钟启动后10s计时单元

uchar *dis_p; //显示缓冲区指针

bit armbit; //闹钟标志,为0闹钟未设定,为1已设定bit rtimbit; //闹钟是否启动标志,为1已启动

bit rhourbit; //闹钟小时修改标志,为1正在修改闹钟小时bit rminbit; //闹钟分修改标志,为1正在修改闹钟分

bit hourbit; //时钟小时修改标志,为1正在修改时钟小时bit minbit; //时钟分修改标志,为1正在修改时钟分

bit secbit; //时钟秒修改标志,为1正在修改时钟秒

/****************主函数****************/

void main()

{

uchar a;

armbit=0; //清零闹钟标志位

msec1=0; //设置10ms中断次数初值

msec2=0; //设置1s中断次数初值

timdata=0; //时钟内容修改位置记忆单元清零

rtimdata=0; //闹钟内容修改位置记忆单元清零

count=0; //闹钟启动后保持10s计时单元清零

TMOD=0x02; //定时器T0为工作方式2

TL0=0x06; //定时初始值为250us

TH0=0x06;

EA=1; //中断总允许位开启

ET0=1; //定时器0开中断

TR0=1; //启动定时器T0

dis_p=clockbuf; //将时钟值所在地址送入显示指针

while(1)

{

a=keyscan(); //调用键盘扫描子程序

if(a==0x0f)

{

display(dis_p); //无键输入调用显示程序

if(armbit==1)alarm(); //判断闹钟设定否,若设定则调用闹钟启动函数}

else

{

display(dis_p); //调用显示子函数作为延时去抖动

a=keyscan();

if(a!=0x0f) //没有抖动,表示有键按下

{

a=search(); //调用查键值子函数

switch(a)

{

case 0x00:ftion0();

break; //是时钟参数修改功能键,调用时钟设置子函数case 0x01:ftion1();

break; //是闹钟参数修改功能键,调用闹钟设置子函数case 0x02:cum();

break; //是加1功能键,调用加1修改功能子函数default:break;

}

}

}

}

}

void delay(uchar x)

{

char j;

while(x--)

for(j=0;j<123;j++);

}

//***************6位LED显示函数***************/

void display(uchar *p)

{

uchar buffer[]={0,0,0,0,0,0};

uchar k,i,j,temp;

uchar led[]={0x3f,0x06,0x58,0x4f,

0x66,0x6d,0x7d,0x07,

0x7f,0x6f

};

buffer[0]=p[0]/10;

buffer[1]=p[0]%10;

buffer[2]=p[1]/10;

buffer[3]=p[1]%10;

buffer[4]=p[2]/10;

buffer[5]=p[2]%10;

for(k=0;k<3;k++)

{

temp=0xfe;

for(i=0;i<6;i++)

{

P1=0xff; //关显示

j=buffer[i];

P1=led[j]; //P1送断码

P0=~temp; //P0对应端口低电平选位

temp<<=1;

delay(5);//每一位显示延时

}

}

}

/**************键盘扫描函数************/

uchar keyscan()

{

uchar c;

P0=0xf0;

c=P2;

c=c&0x07; //按键行输入为P2.0-P2.2,屏蔽无关位return(c);

}

/**************查键值函数*************/

uchar search()

{

uchar a,b,c,d,e;

c=0xfe; //首列扫描字送变量c

a=0; //首列号送a

while(1)

{

P0=c; //列扫描字送P0口

d=P2; //读入P2口的行状态

if(d&0x01==0){b=0;break;} //第0行有键按下,第0行行首号送

b

else if(d&0x02==0){b=4;break;} //第1行有键按下,第1行行

首号送b

else if(d&0x04==0){b=8;break;} //第2行有键按下,第2行行

首号送b

a++; //扫描列号加1

c<<=1; //修改列扫描字,扫描下一列

}

e=a+b; //将行首号与列号相加,求键号

do{display(dis_p);

}

while((d=keyscan())!=0x07); //等待释放按键

return(e);

}

/***********闹钟判断启动函数*************/

void alarm()

{

if((clockbuf[0]==bellbuf[0])&&

(clockbuf[1]==bellbuf[1]))

{

P2_7=0;rtimbit=1;

} //设置闹钟计时标志,时钟将进行10s计时标志else

{

if(count==10) //判断闹钟保持10s时间到否

{

count=0; //清除闹钟保持10s计时

P2_7=1; //清除闹钟

armbit=0; //清闹钟标志,否则闹钟设置将继续有效rtimbit=0;

}

}

}

/*************时钟设置函数*************/

void ftion0()

{

TR0=0; //关定时器

rhourbit=0; //禁止闹钟时间参数修改,请闹钟修改标志rminbit=0;

dis_p=clockbuf; //将时钟缓冲区首地址送显示指针

rtimdata=0; //清闹钟修改位置标志记录

timdata++; //将时钟修改记录值加1

switch(timdata){

case 0x01:secbit=1;break;

//记录值为1,则将时钟秒修改标志置1 case 0x02:secbit=0;minbit=0;break;

//记录值为2,则将时钟分修改标志置1

case 0x03:minbit=0;hourbit=1;break;

//记录值3,则将时钟时修改标志置1

case 0x04:timdata=0;hourbit=0;TR0=1;break;

//按4次则清时钟单元修改位置

//记录,定时器重新开启default:break;

}

}

/***************闹钟设置函数**************/

void ftion1()

{

secbit=0; //禁止时钟时间修改

minbit=0;

hourbit=0;

dis_p=bellbuf; //设置闹钟显示标志

timdata=0; //清时钟修改位置标志记录

rtimdata++; //将闹钟修改记录值加1

switch(rtimdata)

{

case 0x01:rminbit=1;break

;//记录值为1,将闹钟分修改标志置1

case 0x02:rminbit=0;rhourbit=1;break;

//记录值为2,将时钟分修改标志置1 case 0x03:rtimdata=0;rhourbit=0;

//按3次则清闹钟单元修改位置记录

armbit=1; //设置闹钟已设置标志位

dis_p=clockbuf; //恢复时钟显示标志

break;

default:

break;

}

}

Proteus仿真单片机实例

引言 单片机体积小,重量轻,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。以单片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。在嵌入式系统的中,开发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。利用Proteus我们可以很好地解决这个问题,由此我们可以快速地建立一个仿真系统。 2.Proteus介绍 Proteus是英国Labcenter Electro-nics公司开发的一款电路仿真软件,软件由两部分组成:一部分是智能原理图输入系统ISIS(Intelligent Schematic Input System)和虚拟系统模型VSM(Virtual Model System);另一部分是高级布线及编辑软件ARES(Adv-Ancd Routing And Editing Software)也就是PCB. 2.1 Proteus VSM的仿真 Proteus可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路。 Proteus可提供30多种元件库,超过8000种模拟、数字元器件。可以按照设计的要求选择不同生产厂家的元器件。此外,对于元器件库中没有的元件,设计者也可以通过软件自己创建。 除拥有丰富的元器件外,Proteus还提供了各种虚拟仪器,如常用的电流表,电压表,示波器,计数/定时/频率计,SPI调试器等虚拟终端。支持图形化的分析功能等。 Proteus特别适合对嵌入式系统进行软硬件协同设计与仿真,其最大的特点是可以仿真8051,PIA,A VR,ARM等多种系列的处理器。Protues包含强大的调试工具,具有对寄存器和存储器、断点和单步模式IAR C-SPY,Keil、MPLAB等开发工具的源程序进行调试的功能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视化进行仿真。 2.2 Proteus PCB Proteus 的PCB设计除了有自动布线仿真功能外,还集成了PCB设计,支持多达16个布线层,可以任意角度放置元件和焊接连线;集成了高智能的布线算法,可以方便地进行PCB设计。 3. 基于Protesus的简单数据采集系统。 3.1 软件的编写 本例题采用可调电阻调节电压值作为模拟信号的输入量,通过A/D转换芯片AD0808把模拟信号转换为数字量传送到单片机的P1口,并在P0口把转换的结果显示出来。 软件的编写可以在Keil C51 环境下进行,芯片的型号选择AT89C51,编写data.c文件,利用Keil C51进行编译,编译成功后生成data.hex文件。 3.2 绘制电路图 运行Proteus的ISIS,进入仿真软件的主界面,如图1所示。主界面分为菜单栏,工具栏,模型显示窗口,模型选择区,元件列表区等。

Proteus仿真软件简介

Proteus仿真软件简介

Proteus软件是英国Labcenter electronics公司出版的EDA工具软件,可完成从原理图布图、PCB设计、代码调试到单片机与外围电路的协同仿真,真正实现了从概念到产品的完整设计,是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC、A VR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。Proteus软件主要具有以下特点: ①具有强大的原理图绘制功能。 ②实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路的系统仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 ③支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、A VR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。 ④提供软件调试功能。具有全速、单步、设置断点等调试功能,同时可以观察各变量以及寄存器等的当前状态,并支持第三方编译和调试环境,如wave6000、Keil等软件。 1. 新建设计文件 运行ISIS,它会自动打开一个空白文件,或者选择工具栏中的新建文件按钮,也可以执行菜单命令:“File”→“New Design”,单击“OK”按钮,创建一个空白文件。不管哪种方式新建的设计文件,其默认文件名都是UNTITLED.DSN,其图纸样式都是基于系统的默认设置,如果图纸样式有特殊要求,用户可以从System菜单进行相应的设置。单击保存按钮,弹出“Save ISIS Design File”对话框,选择好设计文件的保存地址后,在文件名框中输入设计文件名,再单击“保存”按钮,则完成新建设计文件操作,其扩展名自动为.DSN。 2. 选取元器件并添加到对象选择器中 选择主模式工具栏中的按钮,并选择对象选择器中的P按钮,或者直接单击编辑工具栏中的按钮,也可以使用快捷键P(ISIS系统默认的快捷键,表示Pick),会出现如图1所示的选择元器件对话框。 图1选择元器件对话框

根据Proteus的步进电机的设计仿真

目录 目录 (1) 摘要 (2) 第一章 Proteus绘制仿真原理图 (3) 1.1 Proteus简介 (3) 1.2 Proteus ISIS简介 (3) 第二章硬件电路设计 (4) 2.1 步进电机 (5) 2.1.1 步进电机简介 (5) 2.1.2 步进电机的特点 (5) 2.2 STC8951单片机 (6) 2.2.1 总述 (6) 2.2.2 性能 (6) 2.2.3 结构概览 (7) 2.2.4 芯片的引脚排列和说明 (8) 2.3 ULN2003A介绍 (10) 2.4 复位电路和时钟电路 (11) 2.5 整个电路的原理 (12) 第三章软件系统设计 (13) 3.1 电路流程图 (13) 第四章电路仿真 (13) 4.1 Proteus原理图绘制过程 (13) 4.2 仿真设置 (16) 第五章硬件电路的制作与调试 (19) 5.1焊接准备与注意事项 (19) 5.2单片机程序写入 (20) 5.3 硬件安装 (21) 5.4硬件调试 (22) 总结 (23) 参考文献 (24) 附录(程序) (25)

摘要 步进电机广泛应用在生产实践的各个领域。它最大的应用是在数控机床的制造中,因为步进电机不需要A/D转换,能够直接将数字脉冲信号转化成为角位移,所以被认为是理想的数控机床的执行元件。本设计利用proteus仿真软件进行电路仿真,系统通过设置四个按键分别控制不进电机的起止、圈数、方向、不进速度,使用1602液晶显示以上参数。整个系统具有稳定性好,实用性强,操作界面友好等优点。本文应用单片机、步进电机驱动芯片、字符型LCD和键盘阵列,构建了集步进电机控制器和驱动器为一体的步进电机控制系统。二维工作台作为被控对象通过步进电机驱动滚珠丝杆在X/Y轴方向联动。文中讨论了一种以最少参数确定一条圆弧轨迹的插补方法和步进电机变频调速的方法。步进电机控制系统的开发采用了软硬件协同仿真的方法,可以有效地减少系统开发的周期和成本。最后给出了步进电机控制系统的应用实例。

实验一proteus仿真软件使用方法

实验一 Proteus仿真软件使用方法 一.实验目的: (1)了解Proteus仿真软件的使用方法。 (2)了解51单片机编程器Keil与Proteus仿真软件的联用方法。 二.实验要求: 通过讲授和操作练习,学会正确使用Proteus仿真软件及Keil编程及其联合调试。 三.实验内容: (1)Proteus 仿真软件介绍 Proteus 软件是由英国LabCenter Electronics 公司开发的EDA工具软件,由ISIS 和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,ARES是一款高级的布线编辑软件。它集成了高级原理布线图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完整的电子设计。 通过Proteus ISIS软件的VSM(虚拟仿真技术), 用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。 图1是Proteus ISIS的编辑窗口: 图1 ISIS的编辑界面 图中最顶端一栏是“标题栏”,其下的“File View Edit ……”是“菜单栏”,再下面的一栏是“命令工具栏”,最左边的一栏是“模式选择工具栏”;左上角的小方框是“预览窗口”,其下的长方框是“对象选择窗口”,其右侧的大方框是“原理图编辑窗口”。 选择左侧“模式选择工具栏”中的图标,并选择“对象选择窗口”中的P按钮,就会出现如图2的元器件选择界面:

图2 元器件库选择界面 在元器件列表框中点击你需要的器件类型(例如:电阻-Resistors,单片机芯片-MicroprocessorICs, LED-Optoelectronics)或在左上角的关键字(Keywords)框中输入你需要的器件名称的关键字(如:信号源 - Clock, 运放 - CA3140等),就会在图2中间的大空白框列出你所需的一系列相关的元件。此时,你可用鼠标选中你要的元件,则图2右上角的预览框会显示你所要元件的示意图,若就是你要的元器件,则点击OK按钮,该元器件的名称就会列入位于图1左侧的“对象选择窗口”中(参见图1左侧下方框)。 所需元器件选择好后,在“对象选择窗口”选择某器件,就可以将它放到图1中的“原理图编辑窗口”中(若器件的方向不合适,你可以利用图1左下角的旋转按钮来改变它)。将所要的元器件都选好后,将它们安放到合适的位置,就可以用连接线把电路连接好,结果存盘(请按规定的目录存盘,并记住其路径/目录/文件名[学号-实验序号])。 (2)51单片机编程器– Keil V3的使用 Keil编程器可用于MCS-51单片机软件编程与调试,它的工作界面如图3所示: Keil编程器是Keil Software Inc/Keil Electronic GmbH 开发的基于80C51内核的微处理器软件开发平台,可以完成从工程(Project)的建立和管理、程序的编译和连接、目标代码的形成、软件仿真等一套完整的软件开发流程。它与Proteus挂接,可以进行单片机应用系统的硬件仿真。 汇编语言编程方法: ①打开“File”菜单→选择新建“New...”→在弹出的文本框(Text1)中编写所需的汇编语言程序→程序写好后,保存(从File→Save As..→选择某目录,文件名.ASM, 存盘); ②打开“Project”菜单→选择新建工程“New Project...”→在弹出的窗口填写:工程名→保存(文件名的后缀是 .uv2 。此时图3的工程窗口中将建立Target1

流水灯(电路和汇编)-Proteus和Keil仿真演示实例知识讲解

流水灯(电路和汇编)-P r o t e u s和K e i l仿真演示实例

示例要求: 在80C51单片机的P2口连接8个发光二极管指示灯,编程实现流水灯的控制,轮流点亮指示灯。 在KEIL 51中编程序,形成HEX文件;在PROTEUS中设计硬件,下载HEX文件,运行看结果。 第1篇:PROTEUS电路设计 1、打开PROTEUS的ISIS软件,如图1所示。新建电路图文件,将文件保存到E:\projectio (新建文件夹projectio)下面,文件基本名为io,扩展名默认。 选择元 图1 ISIS窗口图 2、在component mode模式下单击选择元件按钮P,打开元件选择对话框,如图2所示。

图2 元件选择窗口 在元件选择对话框的keywords窗口中输入元件关键字可换搜索元件,找到元件后,双击元件则可选中元件,添加元件到图3的device列表栏。在这里依次添加元件单片机80C51、电阻RES、电容CAP、按键BUTTON、晶振CRYSTAL、发光二极管LED-RED,如图3所示。 图3 添加元件的device列表栏 3、选择devices元件列表中的元件放到工作窗口,注意放置在工作窗口合适的位置,在元件放置时可对元件进行移动、旋转等操作;如图4所示。电源(POWER)与地(GROUND):(右键-放置-终端里选)。

图4 放置元件图4、连接导线,如图5所示。连接后存盘。 图5 连接元件图

5、在Keil软件中设计软件程序,形成HEX文件(具体过程见第2篇Keil软件编程)。保存软件项目到电路文件相同的文件夹E:\projectio下。 6、在PROTEUS电路图中,单击单片机80C51芯片,选中,再次单击打开单片机80C51的属性对话框,在属性对话框中的program file框中选择下载到80C51芯片中的程序。这里是同一个文件夹下面的shili.hex文件。如图6所示。 图6 下载程序到单片机 7、单击仿真运行按钮play,运行程序。可通过LED二极管看到相应的结果。如图7所示。 图7 仿真结果图

直流电动机正反转proteus仿真设计-参考模板

直流电动机正反转Proteus仿真设计 引言 随着人民生活水平的提高,产品质量、性能、自动化程度等已经是人们选择产品的主要因素。其中,直流电动机正反转自动控制在生活中起了很大的作用,比如洗衣机的工作、遥控汽车的操作、DVD的应用等等,它在实际生活中给人们需求上提供了很大的方便与乐趣。不只是生活,它还在工业、农业、交通运输等各方面得到了广泛的应用,实现电动机正反转的控制是很多产品设计的核心问题。直流电动机显示出交流电动机不能比拟的良好启动性能和调速性能,比较广泛应用于速度调节要求过高,正反转频繁或多元同步协调运转的机械生产。因此,学会电动机正反转控制的原理是极其重要的。然而,在本直流电动机正反转仿真设计中,要借助Proteus软件、Keil软件和C语言的辅助进行仿真设计,通过仿真设计,让我们更清楚了解电动机正反转的原理和电路图,增强对直流电动机的认知。 在Proteus绘制好原理图后,调入已编译好的目标代码文件:*.HEX,可以在Proteus的原理图中看到模拟的实物运行状态和过程,Proteus还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似,但功能更多。这些虚拟仪器仪表具有理想的参数指标,例如极高的输入阻抗、极低的输出阻抗。这些都尽可能减少了仪器对测量结果的影响。在本设计中,Proteus软件采用了电容、电阻、晶振、电动机、LED、开关、电动机等多种元件进行绘图,并基于80C51和ULN2003A进行电路图设计,充分展示Proteus软件元件库量大,掌握它的基本绘图操作。而对于Keil软件,采取创建工程,创建执行文件,利用C语言编写程序,生成hex文件,为Proteus 仿真提供驱动控制,实现直流电动机正反转的设计。 在本论文设计中,主要介绍直流电动机正反转原理,Proteus软件功能绘图、仿真调试,以及Keil软件功能、程序编写和仿真程序文件生成。让大家更清楚了解Proteus软件、Keil软件、C语言在直流电动机正反转仿真设计的应用。

单片机PROTEUS仿真100实例

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例 第01 篇基础程序设计 01 闪烁的LED /* 名称:闪烁的LED 说明:LED按设定的时间间隔闪烁 */ #include #define uchar unsigned char #define uint unsigned int sbit LED=P1^0; //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { while(1) { LED=~LED; DelayMS(150); } } 02 从左到右的流水灯 /* 名称:从左到右的流水灯 说明:接在P0口的8个LED 从左到右循环依次点亮,产生走 马灯效果 */ #include #include #define uchar unsigned char #define uint unsigned int

//延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { P0=0xfe; while(1) { P0=_crol_(P0,1); //P0的值向左循环移动 DelayMS(150); } } 03 8只LED左右来回点亮 /* 名称:8只LED左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/ #include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) {

[整理版]proteus仿真单片机实例

[整理版]proteus仿真单片机实例 用器和存储器、断点和单步模式Proteus一部分是智能原理图输入系统引言Keil C51 运行可提供单片机体积小Proteus进行编译,编译成功后生成30的多种元件库,超过 ISIS,重量轻,进入仿真软件的主界面,如图等多种系列的处理器。IAR C-SPY,Keil,具有很强的灵活性而且价格便宜,具有逻辑判断,定时计数等多ISIS(Intelligent Schematic Input System)8000data.hex,也可以仿真模拟数字混合电路。种模拟、数字元器件。可以按照设计的要求选择、MPLAB文件。Protues 等开发工具的源程序进行调试的功包含强大的调试工具,具有对寄存1 所示。主界面分为菜单栏,工具3.2 绘制电路图,编写和虚拟系统模型 data.c文件,能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视化不同生产厂家的元器件。此外,对于元器件库中没有的元件,设计者也可以通过软件自己创VSM(Virtual Model System)利栏,模型显示窗口,模型选择区,元件列表区等。种功能,广泛应用于仪器仪表,家用电器,医用设备的智能化管理和过程控制等领域。以单;另一部分是高级布线及编辑软件 ARES(Adv-Ancd Routing 进行仿真。建。,nd Editing Software) 片机为核心的嵌入式系统已经成为目前电子设计最活跃的领域之一。在嵌入式系统的中,开除拥有丰富的元器件外, 2.2 Proteus PCB 也就是PCB. ProteusProteus 2.1 Proteus VSM还提供了

Proteus仿真软件使用方法

实验八 Proteus仿真软件使用方法 1.实验目的: (1)了解Proteus仿真软件的使用方法。 (2)了解51单片机编程器Keil与Proteus仿真软件的联用方法。 2.实验要求: 通过讲授和操作练习,学会正确使用Proteus仿真软件及Keil编程及其联合调试。 3.实验内容: (1)Proteus 仿真软件介绍 Proteus 软件是由英国LabCenter Electronics 公司开发的EDA工具软件,由ISIS和ARES两个软件构成,其中ISIS是一款便捷的电子系统仿真平台软件,ARES是一款高级的布线编辑软件。它集成了高级原理布线图、混合模式SPICE电路仿真、PCB设计以及自动布线来实现一个完整的电子设计。 通过Proteus ISIS软件的VSM(虚拟仿真技术), 用户可以对模拟电路、数字电路、模数混合电路,以及基于微控制器的系统连同所有外围接口电子元器件一起仿真。 图8-1是Proteus ISIS的编辑窗口: 图8-1 ISIS的编辑界面 图中最顶端一栏是“标题栏”,其下的“File View Edit ……”是“菜单栏”,再下面的一栏是“命令工具栏”,最左边的一栏是“模式选择工具栏”;左上角的小方框是“预览窗口”,其下的长方框是“对象选择窗口”,其右侧的大方框是“原理图编辑窗口”。 选择左侧“模式选择工具栏”中的图标,并选择“对象选择窗口”中的P按钮,就会出现如图8-2的元器件选择界面:

图8-2 元器件库选择界面 在元器件列表框中点击你需要的器件类型(例如:电阻-Resistors,单片机芯片-MicroprocessorICs, LED-Optoelectronics)或在左上角的关键字(Keywords)框中输入你需要的器件名称的关键字(如:信号源 - Clock, 运放 - CA3140等),就会在图8-2中间的大空白框列出你所需的一系列相关的元件。此时,你可用鼠标选中你要的元件,则图8-2右上角的预览框会显示你所要元件的示意图,若就是你要的元器件,则点击OK按钮,该元器件的名称就会列入位于图8-1左侧的“对象选择窗口”中(参见图1左侧下方框)。 所需元器件选择好后,在“对象选择窗口”选择某器件,就可以将它放到图8-1中的“原理图编辑窗口”中(若器件的方向不合适,你可以利用图1左下角的旋转按钮来改变它)。将所要的元器件都选好后,将它们安放到合适的位置,就可以用连接线把电路连接好,结果存盘(请按规定的目录存盘,并记住其路径/目录/文件名[学号-实验序号])。 (2)51单片机编程器– Keil V3的使用 Keil编程器可用于MCS-51单片机软件编程与调试,它的工作界面如图8-3所示: Keil编程器是Keil Software Inc/Keil Electronic GmbH 开发的基于80C51内核的微处理器软件开发平台,可以完成从工程(Project)的建立和管理、程序的编译和连接、目标代码的形成、软件仿真等一套完整的软件开发流程。它与Proteus挂接,可以进行单片机应用系统的硬件仿真。 汇编语言编程方法: ①打开“File”菜单→选择新建“New...”→在弹出的文本框(Text1)中编写所需的汇编语言程序→程序写好后,保存(从File→Save As..→选择某目录,文件名.ASM, 存盘); ②打开“Project”菜单→选择新建工程“New Project...”→在弹出的窗口填写:工程名→保存(文件名的后缀是 .uv2 。此时图8-3的工程窗口中将建立Target1及 Source Group 1);

PROTEUS仿真100实例(完整资料).doc

【最新整理,下载后即可编辑】 《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例 第01 篇基础程序设计 01 闪烁的LED /* 名称:闪烁的LED 说明:LED按设定的时间 间隔闪烁 */ #include #define uchar unsigned char #define uint unsigned int sbit LED=P1^0; //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { while(1) { LED=~LED; DelayMS(150); }

02 从左到右的流水 灯 /* 名称:从左到右 的流水灯 说明:接在P0口的 8个LED从左到右循环依次点亮,产生走马灯效果*/ #include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { P0=0xfe; while(1) { P0=_crol_(P0,1); //P0的值向左循环移动 DelayMS(150); } }

03 8只LED左右来回点亮 /* 名称:8只LED左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果*/ #include #include #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) { for(i=0;i<7;i++) { P2=_crol_(P2,1); //P2的值向左循环移动 DelayMS(150); }

单片机温度传感器proteus仿真

仿真程序仿真: LED_0 EQU 30H LED_1 EQU 31H LED_2 EQU 32H ADC EQU 35H TCNTA EQU 36H TCNTB EQU 37H H_TEMP EQU 38H L_TEMP EQU 39H FLAG BIT 00H H_ALM BIT P3.0 L_ALM BIT P3.1 SOUND BIT P3.7 CLOCK BIT P2.4 ST BIT P2.5 EOC BIT P2.6 OE BIT P2.7 ORG 00H SJMP START ORG 0BH LJMP INT_T0 ORG 1BH LJMP INT_T1 START:MOV LED_0,#00H

MOV LED_1,#00H MOV LED_2,#00H MOV DPTR,#TABLE MOV H_TEMP,#153 MOV L_TEMP,#77 MOV TMOD,#12H MOV TH0,#245 MOV TL0,#0 MOV TH1,#(65536-1000)/256 MOV TL1,#(65536-1000)/256 MOV IE,#8AH CLR C SETB TR0 WAIT:SETB H_ALM SETB L_ALM CLR ST SETB ST CLR ST JNB EOC,$ SETB OE MOV ADC,P1 CLR OE MOV A,ADC SUBB A,L_TEMP JC LALM MOV A,H_TEMP MOV R0,ADC SUBB A,R0 JC HALM CLR TR1 LJMP PROC1 LALM:CLR L_ALM SETB TR1 CLR FLAG LJMP PROC1 HALM:CLR H_ALM SETB TR1 SETB FLAG LJMP PROC1 PROC1:MOV A,ADC MOV B,#100 DIV AB MOV LED_2,A MOV A,B

Proteus电路仿真软件在电路设计方案中的应用

Proteus电路仿真软件在电路设计中的应用 摘要:随着现代计算机技术的迅速发展,使用EDA软件进行的电路设计与仿真已经成为现代电子技术系统设计的必然趋势,在实际电路设计中引入EDA技术能有效提高设计效率,该文介绍了Proteus软件的功能和特点,并结合了具体的例子说明了如何用Proteus实现EDA辅助设计与仿真。 关键词:EDA PROTEUS计算机辅助设计仿真 0引言 测井五公司技术研究室目前承担分公司各项科研工程和技术革新,在实际运行中涉及相关电路设计,电路的真实性需要成品验证,这种传统方法成本高风险大,实验周期长,根据实际需要和适用性,研究室引入了易用的小规模Proteus软件对设计电路进行仿真,提前对所设计电路进行仿真测试和评估,电路成品有很高的符合率,有效降低了设计成本和实验周期,以下简述Proteus电路仿真软件在实际电路设计中的应用,并以实例加以讲解。 1 Proteus简介 Proteus软件是英国Labcenter electronics公司的EDA工具软件,是一个电子设计的教案平台、实验平台和创新平台,涵盖了电工电子实验室、电子技术实验室、单片机应用实验室等的全部功能。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。该软件的特点是: ①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 ②支持主流单片机系统的仿真。目前支持的单片机类型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及Phil-lips公司的ARM(LPC系列)等。 ③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil、ADS等软件。 ④具有原理图绘制功能。能够进行SCH(原理图)和PCB(印刷板)电路的设计。 2 使用Proteus软件进行简单电路的仿真

创建基于DLL的Proteus仿真模型

创建基于DLL的Proteus VSM仿真模型 作者:silingsong 一、Proteus VSM仿真模型简介 在使用Proteus仿真单片机系统的过程中,经常找不到所需的元件,这就需要自己编写。Proteus VSM 的一个主要特色是使用基于DLL组件模型的可扩展性。这些模型分为两类:电气模型(Electrical Model)和绘图模型(Graphical Model)。电气模型实现元件的电气特性,按规定的时序接收数据和输出数据;绘图模型实现仿真时与用户的交互,例如LCD的显示。一个元件可以只实现电气模型,也可以都实现电气和绘图模型。 Proteus为VSM模型提供了一些C++抽象类接口,用户创建元件时需要在DLL中实现相应的抽象类。VSM模型和Proteus系统通信的原理如下图: 绘图模型接口抽象类: ICOMPONENT――ISIS内部一个活动组件对象,为VSM模型提供在原理图上绘图和用户交互的服务。 IACTIVEMODEL――用户实现的VSM绘图模型要继承此类,并实现相应的绘图和键盘鼠标事件处理。 电气模型接口抽象类: IINSTANCE――一个PROSPICE仿真原始模型,为VSM模型提供访问属性、模拟节点和数据引脚的服务,还允许模型通过仿真日志发出警告和错误信息。 ISPICECKT(模拟)――SPICE拥有的模拟元件,提供的服务:访问、创建和删除节点,在稀疏矩阵上分配空间,同时还允许模型在给定时刻强制仿真时刻点的发生和挂起仿真。 ISPICEMODEL(模拟)――用户实现的VSM模拟元件要继承此类,并实现相应的载入数据,在完成的时间点处理数据等。 IDSIMCKT(数字)――DSIM拥有的数字元件,提供的服务:访问数字系统的变量,创建回调函数和挂起仿真。

proteus实例简单电路

proteus 实例简单电路

作者:日期:

个人收集整理,勿做商业用途 实例1:用Proteus 做简单仿真电路 操作步骤: 1.运行Proteus 2.按键盘的字母“ p”,或者点击左侧字母P,如下左图所示位置

会弹出选择元件的对话框,如上右图所示,在keywords 中输入battery,则在元件搜索结果中出现跟“battery ”有关的元 件,如下图所示 Battery,可以通过“ proteus 常用元件中英文对照表”查出,这是电池。 3.按照上述方法,依次在keywords中输入“ pot-hg”、“lamp”、“fuse”,添加 上述几个元器件。 其中fuse 需注意选择库为ACTIVE的那个。 选中第一个(对应的库Library 为ACTIVE的那个),双击它,则会在左侧对象列表中出现刚才选中的元件。

到此,在左侧对象列表中,添加了 4 种元件,如上右图 然后关闭选择元件对话框。 其中: BATTERY 是电池, FUSE 是保险丝, LAMP 是灯, POT-HG 是可变电阻。 4. 将各元件放置到原理图编辑窗口中 方法:在对象列表中左键单击选中 battery ,然后将鼠标移至编辑窗口中间位 置,点击鼠标左键,即可。 5. 用导线将各元件连接,组成电路 依次放置各元件,如下图所示 旋转方法:右键单击可变电阻 RV1,在弹出菜单中选中箭头所指选项

个人收集整理,勿做商业用途 方法:鼠标左键点击各元件端点处,拖动鼠标连接。得下图 6. 调整电池电压大小 方法:鼠标移至左侧电池的“ 12V ”位置,并双击鼠标左键,弹出属性编辑窗 口,将 12V 改为 24V ,确定。 完成原理图的绘制,可以通过工具条中的按钮放大或缩小视图 7. 开始仿真 点击屏幕左下角的“启动”按钮 可以看到电路运行效果。

交通灯(proteus仿真设计+程序)

52单片机简易交通灯proteus仿真设计原理 交通灯作为日常生活中必不可少的交通标志,它的设计是单 片机初学者必不可少要接受的一项课题,下面简单介绍用proteus 仿真一个由52单片机控制的简易交通灯。 本设计主要要求以下几个方面:一是根据系统控制要求设计 硬件电路,这里是用PROTEUS软件来完成;二是根据硬件电路编写 相应的程序流程图然后编写相关程序,这里程序的编制主要是用KeilC51软件来完成;三是在KEIL上用已经编好的程序生成.hex 文件载入到PROTEUS中,实现PROTEUS与KEIL的联调,完成调试 和仿真,观察调试结果是否满足设计要求,。 一:设计方案及重点: 首先南北方向红灯、东西方向绿灯亮,南北方向红灯35秒、东西方向绿灯35秒,相应的数码管显示对应的数字并读秒,同时南北方向红色的交通灯和东西方向的绿色交通灯接通点亮显示,当东西方向的绿灯时间到,则东西方向的绿灯转为黄灯,同时数码管显示黄灯的时间3秒,东西方向的黄色二极管接通点亮,此时南北方向的红灯不变。南北方向的红灯和东西方向的黄灯时间同时到,此时南北方向的红灯跳转为绿灯,时间同北方向的绿灯时间到,南北绿灯跳转为黄灯,东西方向的红灯不变,当南北方向的黄灯和东西方向的红灯时间到,南北方向的黄灯跳转为红灯,东西方向的红灯跳转为绿灯。

设计重点: 1.数码显示管的计时 2.数码管控制交通灯的转换 3.锁存器与位选器端口的选择 4.电路连接与程序编写 二:仿真器件的介绍: 1.单片机芯片:AT89C52, AT89C52是一个低电压,高性能CMOS 8位单片机, AT89C52单片机在电子行业中有着广泛的应用。 2.数码管:7SEG-MPX2-CC,这是一个两位数共阴极的数码管, 1就是左边数码管的阴极2就是右边数码管的阴极,a,b,c,d,e,f,g,就是数码管的段码,dp就是数码管的小数点 3.锁存器与位选器:74HC573,具体作用:74HC573锁存器在数码管显示时作用的确是为了节省IO口,单片机P0口先发送abcdefghp段选信号,这时使用一个74HC573将段选信号保存住,单片机P0口再发送位选信号,此时单片机P0口信号不影响被锁存住的段选信号。,使用另一个74HC573锁存住位选信号。按以上循环,显示8位数码管只需要10个IO口。 4.上拉电阻:RESPACK-8,作用,拉高端口电压,稳定端口电压值。 5.交通灯:TRAFFIC LIGHTS。

Proteus仿真实验

Proteus仿真实验 矩阵式键盘识别一 一、实验目的 通过对实验环境调试程序的使用 设计出满足指标要求的电源电路 熟悉Proteus对电源电路的仿真、测试过程。设计一个4x4的矩阵键盘,以P3.0~P3.3作为行线,以P3.4~P3.7作为列线,在数码管上显示每个按键的0~F序号。 二、实验器件 单片机AT89C51、瓷片电容CAP22Pf、晶振CRYSTAL 11.0592MHz、电解电容CAP-ELEC、电阻RES、排阻RESPACLK-7、按钮BUTTON、共阳数码管7SEG-COM-AM-GRN。 三、实验原理 程序: #include"reg51.h" #define uchar unsigned char #define uint unsigned int uchar buff,times,j; uchar code dispcode[]={0xC0,0xF9,0xA4,0 xB0,0x99,0x92,0x82,0xF8,0x8 0,0x90,0x88,0x83,0xC6,0xA1, 0x86,0x8E}; uchar idata value[8]; void delay1ms(void) { uchar i; for(i=200;i>0;i--); } void delay5ms(void) { unsigned char i,j; for(i=5;i>0;i--) for(j=230;j>0;j--); } void key_scan(void) { uchar hang,lie,key;

P3=0xf0; if((P3&0xf0)!=0xf0) { delay1ms(); if((P3&0xf0)!=0xf0) {hang=0xfe; times++; if(times=9) times=1; while((hang&0x10)!=0) {P3=hang; if((P3&0xf0)!=0xf0) {lie=(P3&0xf0)|0x0f; buff=((~hang)+(~lie)); switch(buff) { case 0x11:key=0;break; case 0x21:key=1;break; case 0x41:key=2;break; case 0x81:key=3;break; case 0x12:key=4;break; case 0x22:key=5;break; case 0x42:key=6;break; case 0x82:key=7;break; case 0x14:key=8;break; case 0x24:key=9;break; case 0x44:key=10;break; case 0x84:key=11;break; case 0x18:key=12;break; case 0x28:key=13;break; case 0x48:key=14;break; case 0x88:key=15;break; } value[times-1]=key; } else hang=(hang<<1)|0x01; } } } } void main(void) { while(1)

Proteus使用心得

Proteus使用心得 网络转载 1.英国Labcenter electronics公司开发,集电路原理图设计、仿真、制版于一体的EDA软件 2.可以设计和仿真模拟电路、数字电路、数模混合电路、MCU系统 3.目前对单片机系统的开发只能输入汇编语言,但是可以和keil联合调试,在keil中将c代码转换成汇编代码输入到proteus中仿真验证 4.proteus的两种仿真方法:电路动态仿真与图表仿真,动态仿真便于观察电路运行状况,图表仿真便于观察精确的电路细节 5.预览窗口的蓝色方框是可编辑区的缩略图,绿色方框是当前编辑区在屏幕内的可视部分,绿色方框会随屏幕变化 6.常见快捷键: F6--以数表当前位置为中心放大 F7--缩小 F8--放大到屏幕 R--刷新 P--选取元器件快速线标--A 7.proteus中的文件格式:.DSN是设计文件,包含一个设计的全部信息 .SEC 设计图的一部分,用于导入导出 .SDF电路生成的网表文件 8.安装路径下的library.pdf文件有当前软件支持的库列表 9.电路的连接是以grid为端点的,所以设计的时候最好显示grid,grid的间距越小那么电路连接越精确 10.连线过程中每左击鼠标一下则设置一个断点,按住ctrl后不以直线走线 11.电路原理图的设计过程:先取所有元件--摆好位置连接导线--重新命名和设置器件参数值--加上图表或者虚拟仪器仿真 12.proteus数字电路仿真的输入有两种: logicstate输入和数字信号源输入 proteus数字电路仿真的输出有两种: logicprobe输出和电压探针输出(只有电压探针能用于数字电路检测) 13.调试菜单中只有watch窗口能够和电路运行同时显示 14.二极管共阳组接低电平时才亮,共阴组接高电平才亮 15.总线以双击结束,相类似连接以双击完成(便于画导线组) 16.proteus中单片机开发过程:选择单片机类型(对应不同生成工具) 编制source程序 build all程序生成hex文件 将hex文件装载进单片机中仿真验证 17.示波器DC是直流演示,AC是包含直流偏置的交流演示 18.单片机模型包括实际模型和总线式模型(将PO和P2作为地址总线)两种 19.数字电路中显示反变量,命名时应该输入$Q$ 20.PAT快速线标法:快捷键A, net=P1# 21.库中有直接带BCD译码器的数码LED管 22.快速布线:类似的端口上双击,会自动按上一次的布线布线 23.总线与分线是按照名称对应的,区分字母大小写,如果名称没有对应,则总线不会连接各分线 总线名只需与分线名对应,无需与芯片端口名对应,所以做线标是需要做总线和分线线标 仿真以后,没有连通的线以灰点显示,高电平以红点显示,低电平以蓝点显

用PROTEUS对单片机进行仿真的方法与实例

用PROTEUS对单片机进行仿真的方法与实例 Proteus软件是英国Labcenter Electronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计;ISIS模块用来完成电路原理图的布图和仿真。它可以进行模拟电路仿真、数字电路仿真,也可以进行单片机及其外围电路组成的系统的仿真;软件提供了各种虚拟仪器,如示波器、逻辑分析仪、信号发生器、电压表、电流表等。和其它仿真软件相比,Proteus ISIS最大特色是对单片机系统的仿真,目前支持的单片机类型有:68000系列、8051系列、ARM系列、AVR系列、PIC系列、Z80系列、HC11系列等。本文主要介绍Proteus 软件在单片机方面的仿真功能,即ISIS模块的用法。 在单片机学习开发的过程中,程序的调试是一个很重要的环节,要安装电路进行实验,而且电路在调试过程中往往要进行调整和改变,这不紧增加了费用和难度,而且也影响了学习和开发的进度,这也成了一些初学者学习的障碍。如果使用Proteus 软件就可以大大节省时间和开发费用,可以在软件仿真通过后再制作印刷电路板进行电路实验。 一、Proteus ISIS软件的工作环境和一些基本使用方法 下面通过一个流水灯的实例来说明Proteus的基本使用方法,使用的软件版本是Proteus.Professional 7.1 SP2。

流水灯使用AT89C51单片机,用P2口作输出口。先在Keil uVision编译器中输入下列程序: #include <reg51.h> void Delay1ms(unsigned int count)//延时子程序 { unsigned int i,j; for(i=0;i<count;i++) for(j=0;j<120;j++); } main() //主程序 { unsigned char LEDIndex = 0; bit LEDDirection = 1; while(1) { if(LEDDirection) P2 = ~(0x01<<LEDIndex); else P2 = ~(0x80>>LEDIndex); if(LEDIndex==7) LEDDirection = !LEDDirection; LEDIndex = (LEDIndex+1)%8;

相关文档
相关文档 最新文档