文档库 最新最全的文档下载
当前位置:文档库 › ARM7基础实验(proteus)

ARM7基础实验(proteus)

ARM7基础实验(proteus)
ARM7基础实验(proteus)

菜鸟的ARM学习笔记(第一阶段)

1.LED闪烁——ARM的Proteus实验

2.开关控制LED——ARM的Proteus实验

3.LCD——ARM的Proteus实验

4.UART——ARM的Proteus实验

5.Eint1外部中断——ARM的Proteus实验

6.多个外部中断——ARM的Proteus实验

7.中断结合串口——ARM的Proteus实验

8.定时器——ARM的Proteus实验

9.SPI通信——ARM的Proteus实验

10.SPI通信(多从设备)——ARM的Proteus实验

11.ADC数模转换——ARM的Proteus实验

LED闪烁——ARM的Proteus实验

实验原理

ARM(LPC21XX)的一个I/O口接LED,通过给它送0和1来设置LED的亮和灭。Proteus仿真电路图

步骤

KEIL

1.创建新工程

2.选择ARM型号(KEIL会自动生成启动代码startup.s)

3.添加源文件,编写程序

4.设置项目选项(是否输出hex、lst文件,设置linker script)

Proteus

1.绘制电路图

2.载入程序

3.仿真

C语言源程序

/******************************************************************

************/

/*

*/

/* led.c: 用ARM点亮一个led并闪烁,有点浪费…… */

/*

*/

/******************************************************************

************/

#include

/******************************************************************

*************

**函数名: delay()

**描述: 软件延时

*******************************************************************

*************/

void delay (void) {

unsigned volatile long i,j;

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

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

;

}

int main(void) {

PINSEL0 = 0; /*设置引脚为GPIO */

IO0DIR = 0x000001; /*将P0.0设置为输出 */

IO0SET = 0x000001; /*将P0.0置1,也就是让led灭 */

while (1) {

IO0CLR = 0x000001;

delay();

IO0SET = 0x000001;

delay();

}

}

开关控制LED——ARM的Proteus

实验

实验原理

ARM的P0.1口接按钮,再通过P0.0控制LED的亮、灭。本实验的电路图以及实验均在上一个实验基础之上修改。其中电路图只多了一个开关。

Proteus仿真电路图

实验步骤略(与上一实验相同)

C语言源程序

/******************************************************************

************/

/*

*/

/* led.c: 用ARM实现开关控制led并亮灭,还是有点浪费…… */

/*

*/

/******************************************************************

************/

#include

#define P0_1 0x02; /*P0.1*/ /******************************************************************

*************

**函数名: delay()

**描述: 软件延时

*******************************************************************

*************/

void delay (void) {

unsigned volatile long i;

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

;

}

int main(void) {

int p01State;

PINSEL0 = 0; /*设置引脚为GPIO */

IO0DIR = 0x000001; /*将P0.0设置为输出 */

IO0SET = 0x000001; /*将P0.0置1,也就是让led灭 */

while (1) {

p01State = IO0PIN&P0_1; /*读取开关状态*/

if(p01State == 0){

IO0CLR = 0x000001;

delay();

}

else{

IO0SET = 0x000001;

delay();

}

}

}

LCD——ARM的Proteus实验

实验原理

ARM的P0.0口到P0.10口接LCD,P0.11接LED。每过一段时间LED状态改变,LCD显

示LED的状态。

Proteus仿真电路图

C语言源程序

#include

#define rs (1<<8)

#define rw (1<<9)

#define en (1<<10)

#define busy (1<<7) //P0.7

typedef unsigned char uint8;

uint8 ledDown[]={"The LED is down!"};

uint8 ledUp[]={"The LED is up!"};

void waitLCD() /*等待LCD*/ {

IO0DIR=0xf00;

while(1)

{

IO0CLR=rs;

IO0SET=rw;

IO0SET=en;

if(!(IO0PIN & busy))break;

IO0CLR = en;

}

IO0DIR=0xfff;

}

void lcdOp(uint8 dat)/*送LCD控制码*/

{

waitLCD();

IO0CLR=rs;

IO0CLR=rw;

IO0CLR=0xff;

IO0SET=dat;

IO0SET=en;

IO0CLR=en;

}

void lcdData(uint8 dat)/*送LCD显示数据*/

{

waitLCD();

IO0SET=rs;

IO0CLR=rw;

IO0CLR=0xff;

IO0SET=dat;

IO0SET=en;

IO0CLR=en;

}

void lcdInit(void)/*初始化LCD,DataSheet里有建议的初始化代码*/ {

/* LCD配置为两行,5*7字体 */

lcdOp(0x38);

lcdOp(0x38);

lcdOp(0x06);

lcdOp(0x0E);

lcdOp(0x01);

/* LCD配置为一行,5*10字体

lcdOp(0x34);

lcdOp(0x34);

lcdOp(0x06);

lcdOp(0x0E);

lcdOp(0x01);

*/

}

void lcdDisplay(uint8 addr,uint8 *p)/*LCD显示字符串*/

{

lcdOp(addr);

while(*p !='\0'){

lcdData(*(p++));

}

}

void lcdClear(void)/*LCD清屏*/

{

lcdOp(0x01);

}

void delay (void) {

unsigned volatile long i,j;

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

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

;

}

int main(void)

{

lcdInit();/*初始化LCD显示*/

IO0DIR=0xfff;//设置为输出口

IO0CLR=0xfff;

while (1) {

IO0CLR = 0x000800;

lcdDisplay(0x80,ledUp);

delay();

lcdClear();

IO0SET = 0x000800;

lcdDisplay(0x80,ledDown);

delay();

lcdClear();

}

}

UART——ARM的Proteus实验

实验原理

ARM的P0.0口接LED,串口接Proteus的虚拟终端。每隔一段时间改变一次LED的状态,并且在串口上输出LED的当前状态。

Proteus仿真电路图

C语言源程序

#include

#include "uart.h"

#define CR 0x0D

char ledDown[]={"The LED is down!\n"};

char ledUp[]={"The LED is up!\n"};

int putchar (int ch) {/* 向串口输出一个字符 */

if (ch == '\n') {

while (!(U1LSR & 0x20));

U1THR = CR; a

}

while (!(U1LSR & 0x20));

return (U1THR = ch);

}

void delay (void) {

unsigned volatile long i,j;

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

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

;

}

void serialPuts(char *p){/* 向串口输出字符串 */

while (*p != '\0'){

putchar(*p++);

}

}

int main (void) {

/* 开始初始化串口 */

PINSEL0 = 0x00050000;/* 设置引脚,开串口功能 */

U1LCR = 0x83;/* 8位数据,无效验,一个停止位 */

U1DLL = 97;/* VPB 15MHz的时候波特率为9600 */

U1LCR = 0x03;/* DLAB = 0 */

/* 结束初始化串口 */

IO0DIR = 0x000001;/*将P0.0设置为输出 */

while (1) {

IO0CLR = 0x000001;

serialPuts(ledUp);

delay();

IO0SET = 0x000001;

serialPuts(ledDown);

delay();

}

}

Eint1外部中断——ARM的Proteus

实验

实验原理

ARM的P0.25接一个LED,引脚设置时连接EINT1功能,按钮触发中断。中断服务程序另LED快速闪烁。

Proteus仿真电路图

C语言源程序

#include

#define LEDCON 0x02000000/*LED接在P0.25上*/

typedef unsigned int uint32;

void IRQ_Eint1(void) __attribute__ ((interrupt));/*声明某函数为中断服务子程序的方法*/

uint32 times = 100;/*循环次数默认为100*/

void IRQ_Eint1(void){

times = 5;

while((EXTINT&0x02)!=0){

EXTINT=0x02; //清除EINT1中断标志

}

VICVectAddr=0;

}

void delay100(void) {

unsigned volatile long i,j;

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

for(j=0;j

;

if(times > 100){

times--;

}else if(times <100){

times++;

}

}

int main(void)

{

IO0DIR = LEDCON;

PINSEL0 = 0x20000000;/*引脚选中EINT1功能*/

PINSEL1 = 0x00000000;

/*以下为中断控制部分*/

VICIntSelect=0;/*全部中断设置为IRQ,若某位为1是FIQ*/

VICIntEnable=0x00008000;/*使能EINT1,EINT为第15位*/

VICVectCntl1=0x2F;/*0xF,15号中断*/

VICVectAddr1=(int)IRQ_Eint1;/*设置中断服务子程序*/

EXTINT=0x07;

while (1) {

IO0CLR = LEDCON;

delay100();

IO0SET = LEDCON;

delay100();

}

}

多个外部中断——ARM的Proteus实

实验原理

ARM开启两个中断源Eint1与Eint2,分别用一个按钮来控制。在没有中断的时候两个LED都缓慢闪烁,当任何一个中断被出发的时候,对应的LED会急促闪烁,逐渐回复正常。

Proteus仿真电路图

C语言源程序

#include

#define LED1 0x02000000/*LED1接在P0.25上*/

#define LED0 0x01000000/*LED0接在P0.24上*/

typedef unsigned int uint32;

void Eint1_ISR(void) __attribute__ ((interrupt));/*声明某函数为中断服务子程序的方法*/

void Eint0_ISR(void) __attribute__ ((interrupt));

uint32 times = 40;/*循环次数默认为40*/

void delay40(void) {

unsigned volatile long i,j;

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

for(j=0;j

;

if(times > 40){

times-=2;

}else if(times <40){

times+=2;

}

}

void Eint0_ISR(void){

times = 0;

while(times!=40){

IO0CLR = LED0;

delay40();

IO0SET = LED0;

delay40();

}

while((EXTINT&0x01)!=0){

EXTINT=0x01;/*清除EINT0中断标志*/

}

VICVectAddr=0x00;

}

void Eint1_ISR(void){

times = 0;

while(times!=40){

IO0CLR = LED1;

delay40();

IO0SET = LED1;

delay40();

}

while((EXTINT&0x02)!=0){

EXTINT=0x02;/*清除EINT1中断标志*/

}

VICVectAddr=0;

}

int main(void)

{

IO0DIR = LED1|LED0;

PINSEL0 = 0x20000000;/*引脚选中EINT1功能*/

PINSEL1 = 0x00000001;/*引脚选中EINT0功能*/

/*以下为中断控制部分*/

VICIntSelect=0;/*全部中断设置为IRQ,若某位为1是FIQ*/

VICIntEnable=0x0000C000;/*使能EINT1、0,EINT1为第15位,0

为14位*/

VICVectCntl0=0x2E;/*EINT0最高优先级*/

VICVectAddr0=(int)Eint0_ISR;/*设置EINT0向量地址*/

VICVectCntl1=0x2F;/*0xF,15号中断*/

VICVectAddr1=(int)Eint1_ISR;/*设置中断服务子程序*/

EXTINT=0x07;

while (1) {/*无中断时,两灯一起缓慢闪烁*/

IO0CLR = LED1|LED0;

delay40();

IO0SET = LED1|LED0;

delay40();

}

}

中断结合串口——ARM的Proteus实

实验原理

同上多中断源实验相同,ARM开启两个中断源Eint1与Eint2,分别用一个按钮来控制。在没有中断的时候两个LED都缓慢闪烁,当任何一个中断被出发的时候,对应的LED会急促闪烁,逐渐回复正常。

此外,使用一个串口来发送当前状态,在无中断的时候发送正常状态报告,当有中断的时候,串口发送中断源。

Proteus仿真电路图

C语言源程序

文件一:main.c

#include

#include "uart0.h"

#define LED1 0x02000000/*LED1接在P0.25上*/

#define LED0 0x01000000/*LED0接在P0.24上*/

typedef unsigned int uint32;

void Eint1_ISR(void) __attribute__ ((interrupt));/*声明某函数为中断服务子程序的方法*/

void Eint0_ISR(void) __attribute__ ((interrupt));

uint32 times = 40;/*循环次数默认为40*/

char status[] = "Everytnig is fine.";

char eint0Str[] = "Interruption EINT0 activated!!!"; char eint1Str[] = "Interruption EINT1 activated!!!"; void delay40(void) {

unsigned volatile long i,j;

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

for(j=0;j

;

if(times > 40){

times-=2;

}else if(times <40){

times+=2;

}

}

void Eint0_ISR(void){

times = 0;

while(times!=40){

IO0CLR = LED0;

delay40();

IO0SET = LED0;

delay40();

serialPuts(eint0Str);

}

while((EXTINT&0x01)!=0){

EXTINT=0x01;/*清除EINT0中断标志*/

}

VICVectAddr=0x00;

}

void Eint1_ISR(void){

times = 0;

while(times!=40){

IO0CLR = LED1;

delay40();

IO0SET = LED1;

delay40();

serialPuts(eint1Str);

}

while((EXTINT&0x02)!=0){

EXTINT=0x02;/*清除EINT1中断标志*/

}

VICVectAddr=0;

}

int main(void)

{

IO0DIR = LED1|LED0;

PINSEL0 = 0x20000005;/*引脚选中EINT1功能,开串口UART0*/

PINSEL1 = 0x00000001;/*引脚选中EINT0功能*/

/*以下为中断控制部分*/

VICIntSelect=0;/*全部中断设置为IRQ,若某位为1是FIQ*/

VICIntEnable=0x0000C000;/*使能EINT1、0,EINT1为第15位,0为14位*/

VICVectCntl0=0x2E;/*EINT0最高优先级*/

VICVectAddr0=(int)Eint0_ISR;/*设置EINT0向量地址*/

VICVectCntl1=0x2F;/*0xF,15号中断*/

VICVectAddr1=(int)Eint1_ISR;/*设置中断服务子程序*/

EXTINT=0x07;

uart0Init();

while (1) {/*无中断时,两灯一起缓慢闪烁*/

IO0CLR = LED1|LED0;

delay40();

IO0SET = LED1|LED0;

delay40();

serialPuts(status);

}

}

文件二:uart0.c

#include

#include "uart0.h"

#define CR 0x0D

int putchar (int ch) {/* 向串口输出一个字符 */

if (ch == '\n') {

while (!(U0LSR & 0x20));

U0THR = CR;

}

while (!(U0LSR & 0x20));

return (U0THR = ch);

}

void serialPuts(char *p){/* 向串口输出字符串 */

while (*p != '\0'){

putchar(*p++);

}

putchar('\n');

}

void uart0Init(void){

U0LCR = 0x83;/* 8位数据,无效验,一个停止位 */

U0DLL = 97;/* VPB 15MHz的时候波特率为9600 */

U0LCR = 0x03;/* DLAB = 0 */

}

定时器——ARM的Proteus实验

实验原理

ARM的定时器实验,定时改变LED的状态。

Proteus仿真电路图

C语言源程序

#include

#define LED 0x000001

typedef unsigned int uint32;

typedef unsigned char uint8;

void timer0_ISR (void) __attribute__ ((interrupt));

uint8 timer0Times = 0;

void timer0Init (void) {

T0MR0 = 119999;/*匹配寄存器,120000-1,12000000为1秒*/ T0MCR = 3;/*产生中断,重置TC*/

T0TCR = 1;/*使能定时计数器0*/

VICVectAddr0 = (unsigned long)timer0_ISR;

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仿真软件使用方法 一.实验目的: (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

(完整word版)基于单片机仿真软件proteus的流水灯实验报告

单片机原理》实验报告 题目:流水灯设计 姓名:刘伟 学号:1042157110 专业:10 计科特色班院系:信息工程学院指导老师:史先桂 完成时间:2014 年 4 月19 日 安徽新华学院教务处制

一、实验目的 1、熟练掌握单片机仿真软件proteus 使用方法和注意事项。 2、了解简单单片机应用系统的设计方法。 3、帮助学生养成良好实验习惯。 二、实验内容单片机仿真软件proteus 上实现8个发光LED “流水”的现象,实现两个流水灯情况:1、先奇数 灯亮,再偶数灯亮;2、实现流水灯从两边向中间亮,再从中间到两边亮。并通过编写程序控制流水现象。 三、实验说明依照实验的硬件电路原理,在单片机仿真软件proteus 上进行硬件电路的模拟,然后进行实验。在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,像这样人眼就可以看到“流水” 的现象。 四、实验环境 硬件:pc 机;软件:单片机仿真软件proteus。 五、实验原理图 六、实验参考程序 #include #include void delay_ms(int n) { int i,j; for(i=0;i

proteus仿真实验

Proteus仿真实验 一、实验目的 1、通过实例熟悉proteus软件使用方法。 2、掌握具体电路proteus和keil仿真 二、实验要求 1、独立完成。 2、设计步骤符合标准规范。 三、实验设备 计算机,proteus软件 四、内容及步骤 一)、实验内容: 根据下图所示的电路图使用805l控制共阳七段显示器的显示:先搭建一个“8051基本IO实验”的仿真电路,使用8051的Port 1连接到一个共阳的七段显示器,然后让8051轮流显示0~9。当您连接好电路,并且完成程序之后,您将看到七段显示器依次显示0~9

二)、实习步骤: 1、在Protues中,绘制电路图,并调试。 2、编写程序并调试(在Keil c 或实验箱编译系统下均可)。

附录一Keil Vison2使用入门 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,该软件提供丰富的库函数和功能强大的集成开发调试工具。 按下面的步骤建立第一个项目: 1、点击Project--- New Project,在“文件名”中输入一个C程序项目名称。“保存”后的文件扩展名为uv2,这是KEIL uVision2 项目文件扩展名,以后可以直接点击此文件以打开先前做的项目。

2、选择所要的单片机,这里选择常用的Ateml公司的A T89C51。完成上面步骤后,就可以进行程序的编写了。 3、首先要在项目中创建新的程序文件或加入旧程序文件。点击File—New按钮,或快捷键Ctrl+N。出现一个新的文字编辑窗口, 4、保存源文件,扩展名为.C。并将该文件加入到刚才建立的项目中。 5、编译源文件。点击Build target或Rebuild all target files,查看编译结果是否有错,若有错,则修改源程序。否则,则可以进行调试。 6、进入调试模式如图2,调试程序。点击Debug---Start/stop Debug session,进入调试模式。可连续运行,也可以单步运行。

根据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的流水灯实验报告

《单片机原理》实验报告题目:流水灯设计 姓名:刘伟 学号:1042157110 专业:10计科特色班 院系:信息工程学院 指导老师:史先桂 完成时间:2014 年 4 月19日安徽新华学院教务处制

一、实验目的 1、熟练掌握单片机仿真软件proteus使用方法和注意事项。 2、了解简单单片机应用系统的设计方法。 3、帮助学生养成良好实验习惯。 二、实验内容 单片机仿真软件proteus上实现8个发光LED“流水”的现象,实现两个流水灯情况:1、先奇数灯亮,再偶数灯亮;2、实现流水灯从两边向中间亮,再从中间到两边亮。并通过编写程序控制流水现象。 三、实验说明 依照实验的硬件电路原理,在单片机仿真软件proteus上进行硬件电路的模拟,然后进行实验。在发光二极管两次点亮的间隔中加延时程序,让每次点亮停留一段时间,像这样人眼就可以看到“流水”的现象。 四、实验环境 硬件:pc机;软件:单片机仿真软件proteus。 五、实验原理图 六、实验参考程序 #include #include void delay_ms(int n) //延时n毫秒 { int i,j; for(i=0;i

void main() { int i, num; unsigned char p1; unsigned char p0, p; while(1) { for(i=0; i<3; i++) //间隔500ms先奇数亮再偶数亮,循环三次 { P1=0xaa; P0=p1; delay_ms(500); P1=0x55; P0=p1; delay_ms(500); } p1= 0xfe; num=3; while(num-- > 0) //一个灯上下循环三? { for(i=0; i<8; i++) { P0=p1; delay_ms(100); p1=_cror_(p1,1); } } //两个分别从两边往中间流动三? p1= 0xfe; p0= 0x7f; num=3; while(num-- > 0) { for(i=0; i<4; i++) //让LED灯从两边向中间点亮 { p1=_crol_(p1,1); p0=_cror_(p0,1); p=p1&p0; delay_ms(100); P1=p;

直流电动机正反转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入门实例

用单片机控制一个LED灯闪烁发光设计要求:用P1口的第一个引脚控制一个LED灯,1秒钟闪烁一次。1.PROTEUS电路设计 整个设计都是在ISIS编辑区中完成的。 (1)单击工具栏上的“新建”按钮,新建一个设计文档。单击“保存”按钮,弹出如图5-2所示的“Save ISIS Designe File”对话框,在文件名框中输入“LED”(简单实例的文件名),再单击“保存”按钮,完成新建设计文件操作,其后缀名自动为.DSN。 图5-2保存ISIS设计文件 (2)选取元器件 此简单实例需要如下元器件:

单片机:AT89C51 发光二极管:LED-RED 瓷片电容:CAP* 电阻:RES* 晶振:CRYSTAL 按钮:BUTTON 单击图5-3中的“P”按钮,弹出如图5-4所示的选取元器件对话框,在此对话框左上角“keywords(关键词)”一栏中输入元器件名称,如“A T89C52”,系统在对象库中进行搜索查找,并将与关键词匹配的元器件显示在“Results”中。在“Results”栏中的列表项中,双击“A T89C51”,则可将“A T89C52”添加至对象选择器窗口。按照此方法完成其它元器件的选取,如果忘记关键词的完整写法,可以用“*”代替,如“CRY*”可以找到晶振。被选取的元器件都加入到ISIS 对象选择器中。如图5-5所示。 图5-3单击“P”按钮选取元器件

图5-4选取元器件窗口 图5-5选取元器件均加入到ISIS对象选择器中 (3)放置元器件至图形编辑窗口 在对象选择器窗口中,选中AT89C51,将鼠标置于图形编辑窗口该对象的欲放置的位置、单击鼠标左键,该对象被完成放置。同理,将BUTTON、RES 等放置到图形编辑窗口中。如图5-6所示。 若元器件方向需要调整,先在ISIS对象选择器窗口中单击选中该元器件, 再单击工具栏上相应的转向按钮,把元器件旋转到合适的方向后再将其放置于图形编辑窗口。 若对象位置需要移动,将鼠标移到该对象上,单击鼠标右键,此时我们已经注意到,该对象的颜色已变至红色,表明该对象已被选中,按下鼠标左键,拖动鼠标,将对象移至新位置后,松开鼠标,完成移动操作。 通过一系列的移动、旋转、放置等操作,将元器件放在ISIS编辑窗口中合适的位置。如图5-6所示。 (4)放置终端(电源、地) 放置电源操作:单击工具栏中的终端按钮,在对象选择器窗口中选择“POWER”如图5-7所示,再在编辑区中要放电源的位置单击完成。放置地(GROUND)的操作与此类似。

传感器proteus虚拟实验

《传感器原理与应用》实验指导书 版本

实验1:基于DS18B20传感器温度测量实验 步骤:(1)在Proteus软件画出电路图 (2)用keil C 软件写出C程序,并生成.hex文件,导入到单片机当中,进行仿真,观察结果。 包括:2个头文件和; 1个源文件;代码如下 : #include <>据端口 ex文件,导入到单片机当中,进行仿真,观察结果。 压力测试仪 系统描述;输入 15--115kPA压力信号 输出 00h--ffh数字信号(adc0832) 在LCD上显示实际的压力值,如果超限则报警 线性区间标度变换公式: y=(115-15)/(243-13)*X+15kpa 作者: 单位: 日期: <> #include "" #define uint unsigned int #define uchar unsigned char ex文件,导入到单片机当中,进行仿真,观察结果。

#include <> 5 us SCK=0; DATA=1; 5 us SCK=0; DATA=1; //释放数据总线 temp_LL=val; } char write(unsigned char value) //写一个字节返回应答信号{ unsigned char i ; ack=0; for (i=0x80;i>0;i/=2) //释放数据总线 { if (i & value) DATA=1; //写入值 else DATA=0; SCK=1; //上升沿写入 _nop_(); _nop_(); _nop_(); //延时 SCK=0; } DATA=1; //释放数据总线 SCK=1; //第9个脉冲 if (DATA==1) ack=1; //读应答信号 SCK=0; return ack; //error=1 表示没有应答 } void start_sht11(void) //启动

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实例

《单片机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虚拟实验教学内容

传感器p r o t e u s虚拟 实验

《传感器原理与应用》实验指导书 Proteus-V1.0版本

实验1:基于DS18B20传感器温度测量实验 步骤:(1)在Proteus软件画出电路图 (2)用keil C 软件写出C程序,并生成.hex文件,导入到单片机当中,进行仿真,观察结果。 包括:2个头文件LCD1602.h和DS18B20.h; 1个源文件LCD_18b20.c;代码如下LCD1602.h: #include //用AT89C51时就用这个头文件 //#include //用华邦W78E58B时必须用这个头文件 #include //注意那个LCD_Wait()函数,它是判"忙"标志的,在实际硬件要把注掉的那种打开//Port Definitions********************************************************** sbit LcdRs = P2^0; sbit LcdRw = P2^1; sbit LcdEn = P2^2; sfr DBPort = 0x80; //P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口

//内部等待函数 ********************************************************************* ***** unsigned char LCD_Wait(void) { LcdRs=0; LcdRw=1; _nop_(); LcdEn=1; _nop_(); //while(DBPort&0x80);//在用Proteus仿真时,注意用屏蔽此语句,在调用GotoXY()时,会进入死循环, //可能在写该控制字时,该模块没有返回写入完备命令,即DBPort&0x80==0x80 //实际硬件时打开此语句 LcdEn=0; return DBPort; } //向LCD写入命令或数据 ************************************************************ #define LCD_COMMAND 0 // Command #define LCD_DATA 1 // Data #define LCD_CLEAR_SCREEN 0x01 // 清屏 #define LCD_HOMING 0x02 // 光标返回原点 void LCD_Write(bit style, unsigned char input) { LcdEn=0; LcdRs=style; LcdRw=0; _nop_(); DBPort=input; _nop_();//注意顺序 LcdEn=1; _nop_();//注意顺序 LcdEn=0; _nop_(); LCD_Wait(); }

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软件进行简单电路的仿真

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仿真单片机实验

目录 引言 (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.1 Proteus VSM的仿真 Proteus可以仿真模拟电路及数字电路,也可以仿真模拟数字混合电路。 Proteus可提供30多种元件库,超过8000种模拟、数字元器件。可以按照设计的要求选择不同生产厂家的元器件。此外,对于元器件库中没有的元件,设计者也可以通过软件自己创建。 除拥有丰富的元器件外,Proteus还提供了各种虚拟仪器,如常用的电流表,电压表,示波器,计数/定时/频率计,SPI调试器等虚拟终端。支持图形化的分析功能等。 Proteus特别适合对嵌入式系统进行软硬件协同设计与仿真,其最大的特点是可以仿真8051,PIA,A VR,ARM等多种系列的处理器。Protues包含强大的调试工具,具有对寄存器和存储器、断点和单步模式IAR C-SPY, Keil, MPLAB等开发工具的源程序进行调试的功能;能够观察代码在仿真硬件上的实时运行效果;对显示,按钮,键盘等外设的交互可视化进行仿真。 1.2 Proteus PCB Proteus 的PCB设计除了有自动布线仿真功能外,还集成了PCB设计,支持多达16个布线层,可以任意角度放置元件和焊接连线;集成了高智能的布线算法,可以方便地进行PCB设计。 2. 一个基于Protesus的单片机实例 2.1 软件的编写 本例题采用8个LED,编写程序使之闪烁起来。

计算机组成原理实验proteus的应用

南京理工大学紫金学院 计算机组成原理 实验报告

实验报告一:加法器实验操作 一、实验目的: 1.掌握 proteus 软件常用命令的使用方法 2.掌握加法器的基本使 用二、实验内容: 1. proteus 软件命令使用 2.串联加法器的连接 3.并联加法器的连接 三、实验步骤: (一 )proteus 软件界面的基本使用 ①通过 File 界面创建新文件或打开已有文件 ②所用的原件模型必须在蓝方框内放置

③Proteus 工具栏功能如上图 ④Proteus 中共有 36 种大的类别元件库,及超过 8000 种以上的具体元 件库文件添加 Proteus 中的元件并不是很全,有时需要添加第三方库文件才可进行仿真,可以通过 以下俩种方式进行添加 1、将第三方库文件拷贝至Proteus 程序目录下的LIBRARY 目录下,相应的元件模型文件也要

拷贝到 MODELS 目录下 2、将第三方库文件统一放至一个文件夹中,同时元件模型文件也要统一放至一个文件夹中,打 开Proteus 菜单 SYSTEM 下的 SET PATH?在弹出的 Path Configuration 对话框的 Library folders 中添加库文件目录,在 Simulation and folders 中添加元件模型文件目录 ⑤点击左侧工具栏按钮进入元件模式,再次点按钮,即可调出元件库 库元件分类说明: Analog Ics 模拟电路集成库 Capacitors 电容库 CMOS 4000 series CMOS 4000 库 Connectors 插座,插针,等电路接口连接库 Data Converters ADC,DAC 数 /模、模 /数库 Debugging Tools 调试工具 Diodes 二极管库 ECL 10000 Series ECL 10000 库 Electromechanica l 电机库 Inductors 电感 库 Laplace Primitives 拉普拉斯变换库 Memory ICs 存储元件库 Microprocessor ICs CPU 库 Miscellaneous 元件混合类型库 Modeling Primitives 简单模式库 Operational Amplifiers 运放库 Optoelectroni cs 光电元件库 PLDs & FPGAs 可编程逻辑器件 Resistors 电阻 库

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。

相关文档