十字路口交通灯Proteus仿真

十字路口交通灯Proteus仿真
十字路口交通灯Proteus仿真

《微机原理与接口技术》课程设计报告

题目:十字路口交通灯设计

学院:信息工程学院

专业:通信工程

目录

1、摘要 (1)

2、硬件电路图 (2)

3、AT89C51功能介绍 (3)

4、交通灯程序设计思路 (5)

5、交通灯运行流程图 (6)

6、源代码函数说明 (6)

7、交通灯设置红绿灯时间结果图 (8)

8、心得与体会 (9)

9、源程序代码 (10)

摘要

十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。通常,生活中常见的红绿灯控制为,红灯六十秒,绿灯四十五秒,黄灯三秒等,因道路,车辆,城市交通规划而异,此次,基于proteus仿真十字路口的交通灯控制系统,设定南北方向绿灯15秒,黄灯5s,东西方向绿灯10s,黄灯5s。系统基于MSC-51系列单片机89C51为中心器件来设计交通灯,显示器件为LED 红绿灯,LCD数码管。采用c51编程,简单易懂,将功能模块化,除了可以实现红绿灯按要求变化,还通过proteus里的按钮,设置了键盘函数,可以按要求调整红绿灯亮的时间,并且还有重置(初始化)按钮。

一.功能概述

1.设计任务:

交通灯的硬件设计和软件设计

2.设计目的:

(1).初步了解和认识51单片机的工作原理,引脚图。

(2).掌握单片机相关接口技术和相关外围芯片的特性。

( 3 ).通过实际的设计程序,查找资料,调试程序,熟悉keil和proteus软件仿真,理解并熟悉模块化程序设计方法和调试。

3.基本要求:

利用单片机的定时器产生秒信号,控制十字路口的红、绿、黄灯交替点亮和熄灭,并且用 4 只LED 数码管显示十字路口两个方向的剩余时间。当东西方向亮绿灯时,南北方向红灯亮起;反之,如果南北方向亮绿灯,同时东西方向亮绿灯;绿灯亮时车辆行驶,红灯亮时车辆停止。即在同一时间内保证只有两个对应方向的车辆可以行驶。要求能用按键设置两个方向的通行时间(绿、红等点亮的时间)和暂缓通行时间(黄灯点亮的时间)。系统的工作应符合一般交通灯控制的要求。

4.设计方案

设计系统单片机89C51 为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强、成本较低。本设计就是采用单片机模拟十字路口交通灯的各种状态显示。利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,数码管显示剩余时间。红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯,8 管共阴极数码管显示剩余时间,矩阵键盘用来设置交通灯的显示时间和状态。

二.硬件电路图一.总体电路图

二.部分电路图

VCC:供电电压

GND:接地。

P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于2 内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。

P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

P3.2 /INT0(外部中断0)

P3.3 /INT1(外部中断1)

P3.4 T0(记时器0外部输入)

P3.5 T1(记时器1外部输入)

P3.6 /WR(外部数据存储器写选通)

P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

XTAL2:来自反向振荡器的输出。

选用P0口驱动数码管,由于选用的数码管是共阴极两位数码管,因此P0口必须

接上拉电阻才能驱动数码管显示。

选用P1口驱动LED红绿灯亮,如此时P1=ox41;

选用P2口来产生选通信号,用动态显示驱动的时候P2.0、P2.1、p2.2、p2.3为低电平对应的数码管点亮。

XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz-24MHz内选择。电容取30PF左右

交通灯程序思路:

包含计时功能、动态扫描、以及状态的切换。南北方向各连接了一个数码管,东西方向也各连接了一个数码管,因此定义两组显示时间nbgreen,nbyellow,,dxgreen,dxyellow来分别表示南北东西绿灯时间,黄灯时间。为了让数码管正确显示时间,需要定义四个变量,shi1,ge1,shi2,ge2,将数码管中的“十位”和“个位”提取出来,用动态方式在数码管中显示出来,为了实现红绿灯状态的切换,定义了两个标志变量,count1,count2,通过判断标志变量的取值,来确定红绿灯和数码管显示的值。采用倒计时的方法,运用51单片机的计时电路,产生秒脉冲,当一个数码管的值倒计时到0时,切换成新的状态。

状态表

南北方向东西方向

序号状态序号状态

1 绿灯亮15s,红黄灯灭

1 红灯亮20s,黄绿灯灭

2 黄灯亮5s,红绿灯灭

3 红灯亮15s,黄绿灯灭2

绿灯亮10s,红黄灯灭3 黄灯亮5s,红绿灯灭

系统结构图

流程图

源代码说明:

1.延时函数:delay(int x)主要用来控制数码管动态显示,x 控制延时长短。

2.字路口剩余时间数码管显示函数:display(uchar,uchar,uchar,uchar);给P0东西南北方向的数码管的十位和个位送数据

89c51

LED 共阴极数码管显示

LED 红黄绿灯

开始 交通初始化,南北绿灯,东西红灯

定时器开始计时 1*4按钮控制

调用子程序 调用键盘按钮

例如,P2=oxfe,P2.0~P2.7=11111110, W0=0,W1=W2=W3=1,(W0.W1,分别接上了南北数码管的控制端,W2,W3分别接上了东西数码管的控制端),W0=0表示南北共阴数码管的十位有效,(共阴极数码管控制端低电平有效),显示shi1(南北数码管值的十位),同理,P2=oxfd,显示ge1(南北数码管值的个位),P2=oxfb,显示shi2(东西数码管值的十位),P2=oxf7,显示ge2(东西数码管值的个位)。

3. 交通南北东西灯红黄绿工作顺序函数:traffic()。控制交通灯的运行规则

4.键盘子函数mkeys()

设定四乘四的键盘,从P3口输出数据,P3.0~P3.3作为行输出,P3.4~P3.7作为列输出。

P3.4 P3.5 P3.6 P3.7

P3.0 暂停(按钮1)设置(按钮2)设置完成后重启(按

钮3)

P3.1 南北绿灯+(按钮5)南北绿灯—(按钮

6)南北黄灯+(按钮7)南北黄灯—(按钮

8)

P3.2 东西绿灯+(按钮1)东西绿灯—(按钮

1)东西黄灯+(按钮1)东西黄灯—(按钮

1)

P3.3 nbnum=0

dxnum=5当

南北绿灯减

到0时,东西

的红灯显示

5s

count=1

nbnum=5

调整状态

南北黄灯亮,

显示5s

nbnum=0

dxnum=0

南北黄灯,东

西红灯都减到

count1=2,nbnum=15

count2=1,dxnum=10

调整状态,南北红灯亮值

为15,东西绿灯亮值为

10

dxnum=0

nbnum=5东

西绿灯减到0

时,南北红灯

显示为5s

count2=2

dxnum=5,

nbnum=5

调整状态,

东西黄灯亮

5s

nbnum=0

dxnum=0

南北红灯,

东西黄灯都

减到0

count1=3,nbnum=15

count2=3,dxnum=20

调整状态,南北绿灯亮值

为15,东西红灯亮值为20

例如设计南北绿灯10s,黄灯3s,东西绿灯15s,黄灯3s

1.先按下“设置”按钮

2.然后按下“按钮5”和“按钮6”,观察南北数码管,此时显示的是绿灯的值。根据观察,设定好绿灯值为10。

3.按下“按钮7”和“按钮8”,设定南北数码管,此时显示的是要设定的黄灯的值。根据观察,设定好黄灯值为3

4.按下“按钮9”和“按钮10”,设定东西数码管,此时显示的是要设定的绿灯的值。根据观察,设定好绿灯值为15

5.按下“按钮11”和“按钮12”,设定东西数码管,此时显示的是要设定的黄灯的值。根据观察,设定好黄灯值为3

结果如图:

(1).初始时,南北绿灯,东西红灯

(2).南北黄灯,东西红灯

(3).南北红灯,东西绿灯。

心得与体会

通过这次课程设计,使我掌握了交通灯控制的基本思想与原理,学习到了一些有用的专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,电路图的绘制以及在常用编程设计思路技巧的掌握方面都向前迈了一大步。期间我查阅了许多资料,看了许多例子,也自己试着学习编程与调试。决定做交通灯的设计,是因为它具有实用性,原理很简单,程序思想明确,proteus内置了许多红绿灯的元件,如led灯,数码管等,程序编好后,出现了许多问题,如程序结果不是预期的结果,做好交通灯显示模块后,我参考网上的资料,加入了键盘函数,可以控制交通灯的运行,可以自己设置交通灯亮的时间,键盘的每个按钮的功能虽然简单,但是将其模块化却十分复杂,我体会到编程模块化思想的重要性,程序冗长但不失条理,添加一定的注释方便

理解并运用。由于使用的是单片机作为核心的控制元件,使得电路的可靠性比较高,功能也比较强大,而且可以随时的更新系统,进行不同状态的组合。但是在设计和调试的过程中,也发现了一些问题,不过设计也有很多不足之处,譬如红灯和绿灯的切换还不够迅速,红绿灯规则不效率还不是很高,键盘效率不太高等等,这需要在实践中进一步完善,希望在今后的学习中学习更多新知识然后得以完善。当然,通过这次课程设计,我也发现了自身的很多不足之处,在以后的学习中,我会不断的完善自我,将课本中的知识运用到实际的程序运用中。

源程序代码

#include

#define uchar unsigned char //定义unsigned char 为uchar

#define uint unsigned int //定义unsigned int 为uint

uchar code table[]={ //共阴数码管管表

0x3f,0x06,0x5b,0x4f,

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

0x7f,0x6f,0x77,0x7c,

0x39,0x5e,0x79,0x71,

0xC9,0xFF,0x40};//设置码,测试码,不计时码

void delay(uint x);//延时函数

void display(uchar,uchar,uchar,uchar); //数码管显示函数

void traffic(); //交通灯函数

uchar num,nbnum,dxnum, //nbnum表示南北方向数码管dxnum表示东西方向数码管

shi1,ge1,shi2,ge2,

nbgreen,nbyellow,//南北方向的绿灯时间黄灯时间

dxgreen,dxyellow,//东西方向的绿灯时间黄灯时间

count1,count2,flag1,flag2; //南北标记东西标记

void main()

{

TMOD=0x01;

TH0=(65536-45872)/256;

TL0=(65536-45872)%256;

EA=1; //c51的外部访问端接高电平

ET0=1;

TR0=1;

/*初状态南北方向的绿灯亮15s黄灯亮5s,东西方向的红灯亮20s*/

nbgreen=15; //南北方向绿灯默认值为15s,黄灯默认时间为5s

nbyellow=5;

dxgreen=10; //东西方向绿灯默认时间为10s,黄灯默认时间为5s

dxyellow=5;

nbnum=nbgreen; //南北数码管初始显示绿灯时间初始值15s

dxnum=nbyellow+nbgreen;//东西红灯时间=南北方向的绿灯时间+南北方向的黄灯时间初始值20s

shi1=nbnum/10; //南北数码管的十位

ge1=nbnum%10; //南北数码管的个位

shi2=dxnum/10; //东西数码管的十位

ge2=dxnum%10; //东西数码管的个位

P1=0x41;//初始状态:41H=10000010B,观察P1.0-1.7可知东西红灯亮南北绿灯亮/*这是交通灯运行过程,南北方向绿灯亮15s,然后亮黄灯5s,接着亮红灯15s,东西方向红灯亮20s,接着绿灯10s,黄灯5s*/

while(1){

if(num==20) //定时器1s

{

num=0;

nbnum--;

dxnum--;

traffic();

shi1=nbnum/10;

ge1=nbnum%10;

shi2=dxnum/10;

ge2=dxnum%10;

}

display(shi1,ge1,shi2,ge2);

}

}

void traffic() //红绿灯主控制程序

{

if(nbnum==0){

count1++;

if(count1==1){

P1=0x42;//东西红灯南北黄灯 5 5

nbnum=nbyellow;

}

if(count1==2){

nbnum=dxgreen+dxyellow;//东西绿灯南北红灯10 15

P1=0x14;

}

if(count1==3){

P1=0x41;// 东西黄灯南北红灯5 5

nbnum=dxyellow;

count1=0;

}

}

if(dxnum==0){

count2++;

if(count2==1){

//P1=0x14;//东西绿灯南北红灯

dxnum=dxgreen;

}

if(count2==2){

P1=0x24;//东西黄灯南北红灯

dxnum=dxyellow;

}

if(count2==3){

dxnum=nbgreen+nbyellow; //东西红灯南北绿灯

nbnum=nbgreen;

count2=0;

}

}

}

void display(uchar shi1,uchar ge1,uchar shi2,uchar ge2) //数码管显示子函数{

uchar temp;

temp=P2;

P2=0xfe;

P0=table[shi1];

delay(5);

P2=0xfd;

P0=table[ge1];

delay(5);

P2=0xfb;

P0=table[shi2];

delay(5);

P2=0xf7;

P0=table[ge2];

delay(5);

}

void delay(uint x)//延时子函数

{

uint i,j;

for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

void T0_time() interrupt 1 //定时器T0 中断子程序{

TH0=(65536-45872)/256;

TL0=(65536-45872)%256;

num++;

}

void mkeys() //4*4矩阵键盘功能子函数

{

uchar temp,key;

P3=0xfe;//第一行线

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delay(10);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0){

temp=P3;

switch(temp)

{

case 0xee:

key=0;

break;

case 0xde:

key=1;

break;

case 0xbe:

key=2;

break;

case 0x7e:

key=3;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

if(key==0) {//按键1:暂停

TR0=~TR0; //定时器取反

flag1=~flag1;//南北能够设置标志0有效

flag2=~flag2;//东西能够设置标志

}

if(key==1&&flag1==0){ //按键2:设置时间按钮

TR0=0;

P1=0x44;//禁止东南西北车辆全为红灯可以设置

shi1=ge1=shi2=ge2=16;

}

if(key==2&&flag2==0){//按键3:设置完成重启

TR0=1;

num=0; //定时器初始化

P1=0x41; //重新开始初状态

nbnum=nbgreen; //南北数码管先绿灯时间

dxnum=nbyellow+nbgreen;//东西红灯时间

shi1=nbnum/10;

ge1=nbnum%10;

shi2=dxnum/10;

ge2=dxnum%10;

}

}

}

////////////////

P3=0xfd;//第二行线

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delay(10);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0){

temp=P3;

switch(temp)

{

case 0xed:

key=0;

break;

case 0xdd:

key=1;

break;

case 0xbd:

key=2;

break;

case 0x7d:

key=3;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

if(key==0&&P1==0x44){ //按键5:设置南北绿灯时间+

nbnum=nbgreen;

if(dxnum!=159){

nbnum++;

nbgreen=nbnum;

}

shi1=nbnum/10;

ge1=nbnum%10;

dxnum=nbgreen+nbyellow;//显示东西红灯时间

shi2=dxnum/10;

ge2=dxnum%10;

}

if(key==1&&P1==0x44){ //按键6:设置南北黄灯时间+

nbnum=nbyellow;

if(dxnum!=159){

nbnum++;

nbyellow=nbnum;

}

shi1=nbnum/10;

ge1=nbnum%10;

dxnum=nbgreen+nbyellow;//显示东西红灯时间

shi2=dxnum/10;

ge2=dxnum%10;

}

if(key==2&&P1==0x44&&nbgreen>3){ //按键7:设置南北绿灯时间- nbnum=nbgreen;

nbnum--;

nbgreen=nbnum;

shi1=nbnum/10;

ge1=nbnum%10;

dxnum=nbgreen+nbyellow;//显示东西红灯时间

shi2=dxnum/10;

ge2=dxnum%10;

}

if(key==3&&P1==0x44&&nbyellow>3){ //按键8:设置南北黄灯时间- nbnum=nbyellow;

nbnum--;

nbyellow=nbnum;

shi1=nbnum/10;

ge1=nbnum%10;

dxnum=nbgreen+nbyellow;//显示东西红灯时间

shi2=dxnum/10;

ge2=dxnum%10;

}

}

}

////||||||||||||||||||

P3=0xfb;//第三行线

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0)

{

delay(10);

temp=P3;

temp=temp&0xf0;

if(temp!=0xf0){

temp=P3;

switch(temp)

{

case 0xeb:

key=0;

break;

case 0xdb:

key=1;

break;

case 0xbb:

key=2;

break;

case 0x7b:

key=3;

break;

}

while(temp!=0xf0)

{

temp=P3;

temp=temp&0xf0;

}

if(key==0&&P1==0x44){ //按键9:设置东西绿灯时间+ dxnum=dxgreen;

if(nbnum!=159){

dxnum++;

dxgreen=dxnum;

}

shi2=dxnum/10;

ge2=dxnum%10;

nbnum=dxgreen+dxyellow;//显示南北红灯时间

shi1=nbnum/10;

ge1=nbnum%10;

}

if(key==1&&P1==0x44){ //按键10:设置东西黄灯时间+

dxnum=dxyellow;

if(nbnum!=159){

dxnum++;

dxyellow=dxnum;

}

shi2=dxnum/10;

ge2=dxnum%10;

nbnum=dxgreen+dxyellow;//显示南北红灯时间

shi1=nbnum/10;

ge1=nbnum%10;

}

if(key==2&&P1==0x44&&dxgreen>3){ //按键11:设置东西绿灯时间- dxnum=dxgreen;

dxnum--;

dxgreen=dxnum;

shi2=dxnum/10;

ge2=dxnum%10;

nbnum=dxgreen+dxyellow;//显示南北红灯时间

shi1=nbnum/10;

ge1=nbnum%10;

}

if(key==3&&P1==0x44&&dxyellow>3){ //按键12:设置东西黄灯时间- dxnum=dxyellow;

dxnum--;

dxyellow=dxnum;

shi2=dxnum/10;

ge2=dxnum%10;

nbnum=dxgreen+dxyellow;//显示南北红灯时间

shi1=nbnum/10;

ge1=nbnum%10;

}

}

}

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的步进电机的设计仿真

目录 目录 (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和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电路仿真软件在电路设计方案中的应用

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;

频率计设计 proteus仿真

频率计设计 Frequency count design 1 实验目的 1.会运用电子技术课程所学到的理论知识,独立完成设计课题。 2.学会将单元电路组成系统电路的方法。 3.熟悉中规模集成电路和半导体显示器件的使用方法。 4.通过查阅手册和文献资料,培养独立分析和解决实际问题的能力。培养严肃 认真工作作风和严谨的科学发展。 2.实验原理 2.1算法设计 频率是周期信号每秒钟内所含的周期数值。可根据这一定义采用如图1所示的算法。图2是根据算法构建的方框图。 图1算法

图2算法方框图 在测试电路中设置一个闸门产生电路,用于产生脉冲宽度为1s的闸门信号。该闸门信号控制闸门电路的导通与开断。让被测信号送入闸门电路,当1s闸门脉冲到来时闸门导通,被测信号通过闸门并到达后面的计数电路(计数电路用以计算被测输入信号的周期数),当1s闸门结束时,闸门再次关闭,此时计数器记录的周期个数为1s内被测信号的周期个数,即为被测信号的频率。测量频率的误差与闸门信号的精度直接相关,因此,为保证在1s内被测信号的周期量误差为10 3量级,则要求闸门信号的精度为10 ?量级。例如,当被测信号为1kHz时,在1s的闸门脉冲期间计数器将计数1000次,由于闸门脉冲精度为10 ?,闸门信号的误差不大于0.1s,固由此造成的计数误差不会超过1,符合5*10 3的误差要求。进一步分析可知,当被测信号频率增高时,在闸门脉冲精度不变的情况下,计数器误差的绝对值会增大,但是相对误差仍在5*10 3范围内。但是这一算法在被测信号频率很低时便呈现出严重的缺点,例如,当被测信号为0.5Hz 时其周期是2s,这时闸门脉冲仍是1s显然是不行的,故应加宽闸门脉冲宽度。假设闸门脉冲宽度加至10s,则闸门导通期间可以计数5次,由于数值5是10s 的计数结果,故在显示之间必须将计数值除以10。 2.2整体方框及原理 图3测量频率原理图 图4测量周期原理图 输入电路:由于输入的信号可以是正弦波,三角波。而后面的闸门或计数电路要求被测信号为矩形波,所以需要设计一个整形电路则在测量的时候,首先通过整形电路将正弦波或者三角波转化成矩形波。在整形之前由于不清楚被测信号

基于proteus的51单片机仿真实例六十

基于proteus的51单片机仿真实例五十九、1位数码管显示实例 1、数码管实际上是由7个发光二极管组成一个8字形,另外一个发光二极管做成圆点型,这样就构成了一个数码管。所有的8个二级管的正极或者负极都连到一个公共端点上,对于公共端连在正极的数码管,称为共阳极数码管,反之称为共阴极数码管。 根据数码管的内部结构原理,可以很清楚的知道数码管显示数字的原理。 2、由于单片机的IO口的驱动能力有限,而数码管点亮时需要较大的电流,所以在用单片机构成数码管显示系统时,需要增加驱动电路,最简单的驱动电路就是利用三极管的电流放大能力来输出较大的电流, 3、让数码管显示数字的步骤为: 1)使数码管的公共端连到电源(共阳极)或者地(共阴极)上。 2)向数码管的各个段输出不同的电平。 本例使用单个数码管循环显示0-9这10个数字。 4、在keil c51中新建工程ex47,编写如下程序代码,编译并生成ex47.hex文件 #include //包含头文件 //延时函数,延时约200ms void delay(void) { unsigned char i,j; for(i = 0; i < 255;i++) { for(j = 0;j < 255;j++); } } //主函数 void main(void) {

unsigned char i; unsigned char code Tab[10] = {0xc0,0xf9,0xa4,0xb0,0x99,0x82,0xf8,0x80,0x90}; //定义数字0-9的段码表 P2 = 0xfe; //P2.0输出低电平,数码管电源导通 while(1) { for(i = 0;i < 10;i++) //循环10次。数码管循环显示数字0-9 { P0 = Tab[i]; //P0口输出数字0-9对应的段码 delay(); //延时 } } } 5、在proteus中新建仿真文件ex47.dsn,电路原理图如下所示: 需要说明的是在proteus中,查找排阻(不带公共端)和数码管的方法。 查询数码管元件时,输入关键字“7seg-com..”后,就可以看到各种数码管的电路符号。根据需要选择相应数码管即可。排阻的查找方法:查找带公共端的排阻时,输入关键字“respack”即可。 不带公共端的排阻,输入关键字“RX8”即可

proteus自制元件实例

自制元件例一- CSI24WC02 CSI24WC02是串行E2PROM,兼容400 kHz I2C 总线控制。一个元件可以只实现绘图模型或电气模型,也可以电气和绘图模型都实现。该例子我们只实现绘图模型。 详细信息见帮助的Styles :Component creation或Styes: Component creation部分。 管脚描述 CSI24WCXX系列E2PROM提供标准的8脚DIP封装和8脚表面安装的SOIC封装。 其管脚功能描述如下: ●SCL 串行时钟 这是一个输入管脚用于产生器件所有数据发送或接收的时钟 ●SDA串行数据/地址 这是一个双向传输端用于传送地址和所有数据的发送或接收它是一个漏极开路端 因此要求接一个上拉电到Vcc 端典型值为100KHz 是为10K 400KHz 时为1K 对 于一般的数据传输仅在SCL为低期间SDA才允许变化在SCL为高期间变化留给 指示START开始和STOP停止条件 ●A0 A1 A2 器件地址输入端 这些输入端用于多个器件级联时设置器件地址当这些脚悬空时默认值为0 CSI24WC01 除外 ●WP 写保护 如果WP管脚连接到Vcc所有的内容都被写保护只能读当WP 管脚连接到Vss或悬空允许器件进行正常的读/写操作 绘制元件 ●单击2D Graphics Box Mode > COMPONENT,画一个框。 ●单击Device Pins Mode > DEFAULT,画管脚。 ●右击引脚> Edit Properties,输入管脚名称,例如A0;输入默认管脚号,例如1, 确定。 ●选择所设计的图形(翻红)> Library > Make Device…,在Device Name中输入器 件名,例如CSI24WC02;在Reference Prefix中输入引用前缀(放置器件时的默认

proteus仿真软件的使用大全.doc

伟福和Proteus ISIS仿真软件的使用第一部分伟福纯软件仿真器使用入门 一、概述 伟福纯仿真软件是伟福仿真器的配套软件,伟福仿真器是国内较好的仿真器之一,它能够仿真的CPU品种多、功能强。通过更换仿真头POD,可以对不同的CPU进行仿真。可仿真51系列,196系列,PIC系列,飞利蒲公司的552、LPC764、DALLAS320,华邦438等51增强型CPU。伟不论你是否购买了他们的硬件产品,伟福网站都提供免费下载和使用。现在伟福软件已经出了VW版。 伟福纯软件仿真器具有以下特点: 1.双平台:有DOS版本和Windows版本。其中Windows版本功能强大。中文界面,英文界面可任选。 2.双工作模式:软件模拟仿真(不要仿真器也能模拟仿真)和硬件仿真。 3.双集成环境:编辑、编译、下载、调试全部集中在一个环境下。多种仿真器,多类CPU仿真全部集成在一个环境下。 这里只说明Windows版本纯软件模拟仿真的使用方法,其他内容可以到伟福网站去查看,光盘\视频文件里面也有伟福软件的使用说明。 二、Windows版本软件安装 1.将光盘插入光驱,找到E6000W文件夹,打开。 2.双击SETUP文件。 3.按照安装程序的提示,输入相应内容。 4.继续安装,直至结束。 也可以将安装盘全部复制到硬盘的一个目录(文件夹)中,执行相应目录下的SETUP进行安装。最新的版本安装更简单。 三、软件的启动 1.点击开始菜单/程序/WAVE。 2.如果在桌面建立了快捷方式,直接双击其图标即可。 启动之后的界面大致如图1-1所示:

图1-1 这个窗口是经过调整后的样子。如果位置不合适,可以通过拖放来移动位置或调整大小。 四、软件的使用 详细的使用说明请看伟福的说明,这里只说明为了对51系列单片机进行纯软件仿真时要用到的一些项目和开始使用的几个必须步骤。 1.启动软件之后,根据需要设置仿真器: 点击菜单[仿真器]|[仿真器设置](点击菜单行中的[仿真器]项,然后在其下拉菜单中点击[仿真器设置]项,以后不再说明),出现如图1-2所示对话框: 图1-2 因为要使用纯软件仿真,所以要选中使用伟福软件模拟器;晶体频率可以根据需要设置;其他按照图示选择即可。 点击目标文件页,出现如图1-3所示对话框: 图1-3 按图示设置即可。 点击语言页,出现如图1-4所示对话框:

相关文档
最新文档