PROTEUS仿真实例

合集下载

Proteus虚拟仿真案例---流水灯制作

Proteus虚拟仿真案例---流水灯制作

Proteus虚拟仿真案例-——流水灯制作一、原理图设计1.打开proteus,新建文件2.选择元器件(1)选择单片机芯片左侧快捷菜单栏里按下,按下P,在“关键字”栏中输入“8951”,选择AT89C51(2)选择晶振:输入crystal,选择CRYSTAL(3)选择电容:输入22p,左边类别中选择Capacitors,右边选择CERAMIC22P(4)选择电阻:输入10k,左边类别中选择Resistors,右边选择RESISTORS库的3WATT10K(5)选择led:输入led,左边类别中选择Optoelectronics,右边选择led—yellow(6)选择按钮:输入button,选择USERDVC库的BUTTON(7)选择好的元器件如图所示3.放置器件振荡电路:(1)放置AT89C51单片机:在DEVICES栏中选中AT89C51,然后在绘制区放置到合适的位置(2)放置晶振,隐藏text属性(菜单-模板—设置设计默认值—显示隐藏文本不勾选)(3)分别将晶振的两脚与AT89C51的19、18脚相连(4)放置两个22p的电容,一端与晶振相连,另一端互连(5)放置地节点(左侧快捷菜单栏里按下—-GROUND),与两个电容相连复位电路:a.放置电源节点(左侧快捷菜单栏里按下——POWER)b.放置地节点c.放置电容,电阻,电阻一端接地,一端与电容相连,电容一端接+5V电源d.AT89C51第9脚接电阻、电容中间e.放置按钮,接电容两端f.右击按钮——编辑属性——元件参考:BUTTON,并取消“本元件不用于PCB制版”g.修改C3电容的值:右击——编辑属性—-Capacitance改为10u绘制流水灯:a.放置电阻、led,右击led——编辑属性——隐藏元件值,连接电阻和ledb.使用块复制,复制7组电阻和ledc.放置电源,分别与D1—D8的一端连接d.总线绘制:左侧选择“总线模式”,绘制一条总线,连接P1口与R2-R9e.使用属性分配工具进行快速网络标号:按下a,出现属性分配窗口,“字符串”框输入“net=D#”,单击P0口的8条线,进行编号,再次按下a,出现属性分配窗口,“字符串”框输入“net=D#”,单击R2—R9的8条线,进行编号f.批量修改R2-R9的值:按下a,出现属性分配窗口,“字符串”框输入“VALUE=100”,确定二、系统仿真1.编写源代码(1)菜单——源代码——添加/删除源文件—-new——文件名输入pmd。

Proteus-仿真实例

Proteus-仿真实例

/* 主程序 */
void main()
{
STB=1;
IE=0x85; //开外部中断:EA=1,EX1=1,EX0=1 即 IE=10000101B=85H
PX0=1;
//提升外部中断优先级
PX1=1;
IT0=1;
//外部中断设置为边沿触发
IT1=1;
output_led(LED_SEG[16]); //熄灭7段LED数码管(2位LED,所以 送两次)
}
/*******读出数据送显*********/
void int1() interrupt 2
{
uchar content,valueH,valueL; //声明内存变量
content=Read_One_Byte(0x04); //从AT24C02中04H单元读出数据
valueL=content%16;
参考C程序
#include<reg52.h> //包含头文件 #include<stdio.h> #include<absacc.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int #define DELAY_TIME 60 //定义常量 #define TRUE 1 #define FALSE 0 sbit SCL=P1^0; //用P1.0、P1.1 模拟I2C 总线
/*输入模块子程序*/ uchar pdat_in() {
uchar counter; uchar data_buf; counter=8; do { ACC=ACC<<1; SCLK=0; A0=SDAT; SCLK=1; } while(--counter!=0); SCLK=0; data_buf=ACC; return(data_buf); }

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

[整理版]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还提供了各种虚拟仪器,如常用的电流表,电压表,的PCB设计除了有自动布线仿真功能外,还集成了的仿真 Proteus可以仿真模拟电路及发板成本高,特别是对于大量的初学者而言,还可能由于设计的错误导致开发板损坏。

利用示波器,计数数字电路PCB设计,支持多达/定时/频率计,16个布线层,可以任意角度放置元件和焊接连线;集成了高智能的布线算法,可以方便地进行SPI调试器等虚拟终端。

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

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

【最新整理,下载后即可编辑】《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例第01 篇基础程序设计01 闪烁的LED/* 名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit 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<reg51.h>#include<intrins.h>#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<reg51.h>#include<intrins.h>#define uchar unsignedchar#define uint unsignedint//延时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);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code Pattern_P0[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0x ff,0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f, 0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff, 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xf e,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};uchar code Pattern_P2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0x ff,0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f, 0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00, 0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;while(1){ //从数组中读取数据送至P0和P2口显示for(i=0;i<136;i++){P0=Pattern_P0[i];P2=Pattern_P2[i];DelayMS(100);}}}05 LED模拟交通灯/* 名称:LED模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。

基于proteus的51单片机仿真实例七十七、使用555实现定时功

基于proteus的51单片机仿真实例七十七、使用555实现定时功

基于proteus的51单片机仿真实例七十七、使用555实现定时功能应用实例
1、555芯片能够实现精确的定时功能。

在延时模式下,利用外部的电阻和电容可以实现比较准确的定时。

本例即利用这个功能:程序启动后,按下按键会使555输出一段时间的高电平,小灯也被点亮,同时单片机检测到高电平后,让蜂鸣器发出声音,延时时间结束后,小灯熄灭,蜂鸣器停止鸣叫。

2、在keil c51中新建工程ex65编写如下程序代码,编译并生成ex65hex文件
//555定时器实验,
#include <reg51.h>
sbit signal = P1^0;
sbit BEEP = P3^7;
//延时函数
void delayms(unsigned int x)
{
unsigned char i;
while(x--)
{
for(i = 0;i < 120;i++);
}
}
//主函数
void main(void)
{
while(1)
{
if(signal) //检测555输出的电平高低
{
BEEP = ~BEEP; //
delayms(3);
}
}
}
3、在proteus中新建仿真文件ex65dsn,电路原理图如下所示
4、将ex65hex文件载入at89c51中,启动仿真,按动拨码开关,观察运行结果。

下图是某一时刻程序运行结果。

proteus实例

proteus实例

proteus实例:32位超级流水灯Proteus 是个很优秀的单片机外围器件模拟软件,它可以仿真51 系列、AVR,PIC 等常用的MCU 及其外围电路器件,如: LCD,RAM,ROM,键盘,马达,LED,AD/DA等等。

虽然也有很多非常成熟实用的硬件仿真器,但proteus还是有着不少的特点和优势,如:可以随意方便的更换和改变电路中的器件及线路,仿真的过程中不会损坏器件,从而降低了产品开发的成本.今天用proteus来做一个流水灯的实例 ,模拟89c51的32个IO口来驱动32个LED做流水灯的演示.图1是做好后运行时的效果.图1下面简要说说原理图的编辑及仿真过程.绘制原理图启动proteus后将本是实例所需要的元件放入原理图编辑区中,并将位置摆放好.元件的添加可通过点击左边工具栏中的,然后点打开元件挑选对话框,在keywords框中输入所需元件的型号,按OK后元件就会在元件列表中显示出来,然后选择要添加的元件,将鼠标移到右边的原理图编辑区,点击左键即将元件添加到原理图编辑区中,(见下图中的红色框和红色字).这个例子中所需的元件型号有: 单片机AT89C51、显示组件LED-BARGRAPH-RED、电阻MINRES2OOR . 添加完元件后如下图:元件添加完成放置完元件后按照图1连好线.仿真1.添加仿真文件按右键选择AT89C51,点左键即可打开AT89C51的元件编辑对话框,单击Program File 选项后面的,出现文件浏览对话框,选择所需仿真的程序文件,单击OK即完成仿真文件添加.2.仿真添加仿真文件后单击仿真工具栏中的即开始仿真.为单步运行,为暂停,为停止.流水灯的程序大家可以根据自己喜欢的花样去编写,也可以下载我写的几个流水灯花样先感觉一下,另外还提供了做好的proteus供下载.各位朋友如果对上面的文章有什么不同的看法或不明之处可以与我联系,大家互相学习.流水灯程序点击下载proteus文件点击下载。

arduino 用proteus仿真基础知识和实例

arduino 用proteus仿真基础知识和实例

arduino 用proteus仿真基础知识和实例Proteus 是一款功能强大的电子设计自动化软件,它可以帮助我们进行电路设计、仿真和制板。

在使用 Proteus 进行 Arduino 仿真时,需要了解一些基础知识和实例。

首先,需要在 Proteus 中创建一个新的项目,并选择适当的模板。

然后,可以在原理图编辑器中绘制电路原理图,添加 Arduino 芯片和其他元件。

在添加 Arduino 芯片时,需要选择正确的型号和引脚布局。

Proteus 提供了多种Arduino 芯片型号可供选择,例如 Uno、Nano、 Mega 等。

选择芯片后,可以将其放置在原理图上,并连接其他元件。

为了进行仿真,需要在 Proteus 中添加 Arduino 程序代码。

可以使用 Proteus 的 AVR 编译器来编译和上传代码到 Arduino 芯片中。

在编译和上传代码之前,需要设置正确的编译器路径和 Arduino 芯片型号。

一旦添加了代码,就可以开始进行仿真。

Proteus 提供了一个虚拟的 Arduino 芯片,可以模拟 Arduino 的行为。

可以通过观察虚拟芯片的输入和输出来验证电路的正确性。

以下是一个简单的 Proteus 仿真实例:1. 创建一个新的 Proteus 项目,并选择 AVR 模板。

2. 在原理图编辑器中绘制一个简单的电路,例如一个 LED 和一个电阻。

3. 添加 Arduino Uno 芯片,并将 LED 和电阻连接到相应的引脚。

4. 使用 Proteus 的 AVR 编译器编译并上传一个简单的 Arduino 程序,例如使 LED 闪烁。

5. 开始仿真,观察 LED 是否按照预期闪烁。

通过这个实例,可以了解如何使用 Proteus 进行简单的 Arduino 仿真。

需要注意的是,Proteus 仿真只是一种辅助工具,实际的 Arduino 硬件测试仍然是必要的。

基于proteus的51单片机仿真实例七十四、4-16译码器74HC154应用实例

基于proteus的51单片机仿真实例七十四、4-16译码器74HC154应用实例
delayms(500);
}
}
3、在proteus中新建仿真文件ex62.dsn,电路原理图如下所示
4、将ex62.hex文件载入at89c51中,启动仿真,按动拨码开关,观察运行结果。下图是某一时刻程序运行结果。
061本例通过416译码器74hc154实现用4个io口控制16个led循环点亮2在keilc51中新建工程ex62编写如下程序代码编译并生成ex62hex文件416线译码器实例include延时函数voiddelaymsunsignedintunsignedcharvoidmainvoid线输出delayms500
基于proteus的51单片机仿真实例七十四、4-16译码器74HC154应用实例
标签:proteus译码器单片机实例应用2010-02-24 00:06
1、本例通过4-16译码器74HC154实现用4个IO口控制16个LED循环点亮
2、在eil c51中新建工程ex62,编写如下程序代码,编译并生成ex62.hex文件
//4-16线译码器实例
#include <reg51.h>
//延时函数
void delayms(unsigned int x)
{
unsigned char i;
while(x--)
{
for(i = 0;i < 120;i++);
}
}
//
void main(void)
{
while(1)
{
P2 = (P2 + 1) % 16; //4线输出

(完整版)PROTEUS仿真100实例

(完整版)PROTEUS仿真100实例

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例第01 篇基础程序设计01 闪烁的LED/* 名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit 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<reg51.h>#include<intrins.h>#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<reg51.h>#include<intrins.h>#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);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code Pattern_P0[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};uchar code Pattern_P2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;while(1){ //从数组中读取数据送至P0和P2口显示for(i=0;i<136;i++){P0=Pattern_P0[i];P2=Pattern_P2[i];DelayMS(100);}}}05 LED模拟交通灯/* 名称:LED模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。

单片机c语言程序设计实例100例--基于805i+proteus仿真

单片机c语言程序设计实例100例--基于805i+proteus仿真

以下是一个基于8051单片机和Proteus仿真环境的C语言程序设计实例:实例1:点亮LED灯
在这个例子中,我们将使用C语言编写一个简单的程序来控制8051单片机的一个I/O引脚,使其驱动一个LED灯。

c代码:
要使用Proteus进行仿真,你需要按照以下步骤操作:
1. 打开Proteus软件,创建一个新的设计工程。

2. 在元件库中搜索并添加相应的8051单片机型号(如AT89C51)和LED 元件到工作区。

3. 根据实际硬件连接,正确配置单片机的引脚和LED的连接。

4. 右键单击单片机元件,选择“Edit Component”打开编辑窗口。

5. 在“Program File(s)”区域,点击右侧的浏览按钮,选择你的C语言源文件(如上述的main.c)。

6. 点击“OK”关闭编辑窗口,然后点击工具栏上的“Play”按钮开始仿真。

在仿真过程中,你应该能看到LED灯被点亮,这表明你的C语言程序已经在Proteus环境中成功运行。

以上只是一个基础的例子,实际的"单片机C语言程序设计实例100例--基于8051+Proteus仿真"会包含更复杂和多样化的应用场景,包括定时器/计数器
应用、中断处理、串口通信、ADC/DAC转换、液晶显示等等。

每个实例都会详细介绍程序设计思路、代码实现以及如何在Proteus中进行仿真调试。

通过这些实例的学习和实践,你可以逐步掌握8051单片机的C语言编程技巧和Proteus仿真环境的使用方法。

基于proteus的51单片机仿真实例八十三-PROTEUS技术交流区-PROTE...

基于proteus的51单片机仿真实例八十三-PROTEUS技术交流区-PROTE...

基于proteus的51单片机仿真实例八十三-PROTEUS技术交流区-PROTE...proteus, 单片机, 实例, 仿真1、SPI总线器件与单片机的连接需要3跟线:时钟线SCK,数据线MOSI(主机发送,从机接收)和MISO(主机接收,从机发送)。

X5045是一种集合了看门狗、电压监控和串行EEPROM三种功能于一身的器件。

上电复位功能:在系统上电时产生一个足够长时间的复位信号,以确保单片机正常工作前,系统电路已处于稳定状态。

看门狗功能:如果在规定的时间内单片机没有在CS引脚产生规定的电平变化(喂狗信号),芯片内的看门狗电路将产生复位信号。

利用该功能,可让单片机死机后自动复位并开始工作。

电压检测:当电源电压下降到一定的值后,虽然单片机仍能工作,但可能已经不能稳定工作了,此时X5045将产生复位信号,直到电压恢复正常后,才能正常工作。

串行EEPROM:X5045自带512字节的数据存储空间,数据可掉电保存。

2、x5045的引脚及功能CS/WDI:片选输入端。

低电平时选中该芯片SO:串行数据输出端,数据在sck的下降沿输出WP:写保护端,该脚接地,写操作被禁止,接高电平,所有功能正常VSS:电源地SI:串行数据输入端,数据在sck的上升沿写入(高位在前)SCK:串行时钟端,RESET:复位输出端,用于电源监测和看门狗超时输出VCC:电源3、使用方法1)上电复位:当器件通电并超过规定值时,X5045内部的复位电路将会产生一个约200ms的复位脉冲,使单片机正常复位。

2)电压检测:工作过程中,X5045能不断检测VCC端的电压,在电压下降到一定值后,将产生一个复位脉冲,使单片机停止工作,这个复位脉冲一直有效,直到VCC下降到1V以下,整个系统停止工作。

如果VCC在下降后又升高,则当超过规定值后200ms,复位信号消失,单片机可以继续工作。

3)看门狗定时器:看门狗定时器电路通过检测WDI端的输入来判断单片机工作是否正常,在规定的时间内,单片机必须在WDI端口产生一个由高到低的电平变化。

8051单片机Proteus仿真实例2(原理图+C程序)

8051单片机Proteus仿真实例2(原理图+C程序)

1. INT0,INT1中断计数原理图:程序:#include <reg51.h>sbit k3=P3^4;sbit k4=P3^5;unsigned char code led_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; unsigned char code seg_code[]={0x20,0x10,0x08,0x04,0x02,0x01};unsigned char led_buffer[]={0,0,0,0,0,0};unsigned int count_a=0,count_b=0;void delay(unsigned int x){unsigned char t;while(x--)for(t=0;t<120;t++);}void display(){unsigned char i;led_buffer[2]=count_a/100;led_buffer[1]=count_a%100/10;led_buffer[0]=count_a%10;if(led_buffer[2]==0){led_buffer[2]=10;if(led_buffer[1]==0)led_buffer[1]=10;}led_buffer[5]=count_b/100;led_buffer[4]=count_b%100/10; led_buffer[3]=count_b%10;if(led_buffer[5]==0){led_buffer[5]=10;if(led_buffer[4]==0)led_buffer[4]=10;}for(i=0;i<6;i++){P2=seg_code[i];P1=led_code[led_buffer[i]];delay(1);}}void main(){IT0=1;IT1=1;PX0=1;IE=0x85;while(1){k3=1;k4=1;if(k3==0) count_a=0;if(k4==0) count_b=0;display();}}void int0() interrupt 0{count_a++;}void int1() interrupt 2{count_b++;}2. INT0中断计数原理图:程序:#include <reg51.h>unsigned char code led_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}; unsigned char led_buffer[]={0,0,0};unsigned count=0;sbit key=P3^6;void display(){led_buffer[2]=count/100;led_buffer[1]=count%100/10;led_buffer[0]=count%10;if(led_buffer[2]==0){led_buffer[2]=10;if(led_buffer[1]==0)led_buffer[1]=10;}P0=led_code[led_buffer[0]];P1=led_code[led_buffer[1]];P2=led_code[led_buffer[2]];}void main(){IE=0x81;IT0=1;while(1){key=1;if(key==0)count=0;display();}}void int0() interrupt 0 {count++;}3.LED点阵原理图:程序:#include <reg51.h>sbit led1=P0^0;sbit led2=P0^1;void delay(long dly){while(dly--);}void main(){SCON=0x50;TMOD=0x20;TH1=0xfd;TL1=0xfd;PCON=0x00;TR1=1;RI=0;while(1){if(RI==1){RI=0;switch(SBUF){case 'A':led1=~led1;led2=1;break;case 'B':led1=1;led2=~led2;break;case 'C':led1=~led1;led2=~led2;break;}}else led1=led2=1;delay(1000);}}4.串行通信(MAX232芯片)原理图:程序:#include <reg51.h> sbit led1=P0^0;sbit led2=P0^1;void delay(long dly) {while(dly--);}void main(){SCON=0x50;TMOD=0x20;TH1=0xfd;TL1=0xfd;PCON=0x00;TR1=1;RI=0;while(1){if(RI==1){RI=0;switch(SBUF){case 'A':led1=~led1;led2=1;break;case 'B':led1=1;led2=~led2;break;case 'C':led1=~led1;led2=~led2;break;}}else led1=led2=1;delay(1000);}}5.MAX7221芯片原理图:程序:#include <reg51.h>#include <intrins.h>sbit DIN=P2^0;sbit CSB=P2^1;sbit CLK=P2^2;unsigned char code buffer[]={2,0,1,5,10,5,10,9};void delay(long dly){while(dly--);}void write(unsigned char addr,unsigned char dat){unsigned char i;CSB=0;for(i=0;i<8;i++){CLK=0;addr<<=1;DIN=CY;CLK=1;_nop_();_nop_();CLK=0;}for(i=0;i<8;i++) {CLK=0;dat<<=1;DIN=CY;CLK=1;_nop_();_nop_();CLK=0;}CSB=1;}void initialise(){write(0x09,0xff); write(0x0a,0x07); write(0x0b,0x07); write(0x0c,0x01);}void main(){unsigned char i; initialise();delay(10);for(i=0;i<8;i++)write(i+1,buffer[i]); while(1);}6. T0控制LED实现二进制计数原理图:程序:#include <reg51.h>void main(){TMOD=0x05;TR0=1;TH0=0x00;TL0=0x00;while(1){P1=TH0;P2=TL0;}}8. 按键控制LED循环原理图:程序:#include <reg51.h>#include <intrins.h>void delay(unsigned int x){while(x--);}void move_led(){if((P1&0x10)==0) P0=_cror_(P0,1);else if((P1&0x20)==0) P0=_crol_(P0,1);else if((P1&0x40)==0) P2=_cror_(P2,1);else if((P1&0x80)==0) P2=_crol_(P2,1);}void main(){unsigned char key;P0=0xfe;P2=0xfe;P1=0xff;key=0xff;while(1){if(key!=P1){key=P1;move_led();delay(15000); }}}9.按键控制数码管显示原理图:程序:#include <reg51.h>unsigned char code led_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; unsigned char code led_seg[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};unsigned char led_buffer[]={0,10,10,10,10,10,10,10};void delay(unsigned int x){unsigned char t;while(x--) for(t=0;t<120;t++);}void led_display(){unsigned char i;for(i=0;i<8;i++){P2=led_seg[i];P0=led_code[led_buffer[i]];delay(2);}}void main(){unsigned char i,key_val,key_count=0;P0=0xff;P1=0xff;P2=0x00;while(1){led_display();key_val=P1;switch(key_val){case 0xfe:key_count++;if(key_count>8) key_count=8;led_buffer[key_count-1]=key_count;break;case 0xfd:if(key_count>0) led_buffer[--key_count]=10;if(key_count==0) led_buffer[0]=0;break;case 0xfb:led_buffer[0]=0;for(i=1;i<8;i++)led_buffer[i]=10;key_count=0;}while(P1!=0xff)led_display();}}10.报警器原理图:程序:#include <reg51.h>sbit SOUNDER=P1^0;sbit BUTTON=P1^7;void delay(unsigned int x){while(x--);}void alarm(unsigned char t){unsigned char i,j;for(i=0;i<200;i++){SOUNDER=!SOUNDER;for(j=0;j<t;j++);delay(15);}}void main(){SOUNDER=0;while(1){BUTTON=1;if(BUTTON==1){alarm(90);alarm(120);}}}。

7基于proteus的51单片机仿真实例六、运行你的第一个仿真实例

7基于proteus的51单片机仿真实例六、运行你的第一个仿真实例

基于proteus的51单片机仿真实例六、运行你的第一个仿真实例
1、在第三节,我们实现了利用keil c51创建一个新的项目,并且项目编译后生成了一个能够烧入单片机的.hex格式的十六进制文件。

在第四和第五节,我们完成了在proteus里面建立第一个单片机系统电路图。

在这一节,我们将把这两者联系起来,实现运行我们的第一个仿真实例。

2、在上一节,我们创建了如下图所示的电路图
3、现在我们将第三节编译生成的.hex文件“装入”单片机中,将鼠标移动到at89c51上面,单击鼠标右键,选择“编辑属性”选项,将我们在第三节编译生成的.hex文件“装载”单片机中,并设置晶振频率为11.0592MHz。

到如下图所示,
3、设置完成后,单击仿真运行按钮,系统就会自动启动仿真,仿真启动、停止操作按钮如下图所示
本例的仿真效果如下图所示,我们看到,LED灯变黄了(即被点亮了),这就说明我们的程序和电路图都是正确的。

PROTEUS仿真100实例

PROTEUS仿真100实例

《单片机C语言程序设计实训100例—基于8051+Proteus仿真》案例第01 篇基础程序设计01 闪烁的LED/* 名称:闪烁的LED说明:LED按设定的时间间隔闪烁*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit 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<reg51.h>#include<intrins.h>#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<reg51.h>#include<intrins.h>#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);}for(i=0;i<7;i++){P2=_cror_(P2,1); //P2的值向右循环移动DelayMS(150);}}}04 花样流水灯/* 名称:花样流水灯说明:16只LED分两组按预设的多种花样变换显示*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code Pattern_P0[]={0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe, 0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};uchar code Pattern_P2[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf9,0xf3,0xe7,0xcf,0x9f,0x3f,0xff,0xe7,0xdb,0xbd,0x7e,0xbd,0xdb,0xe7,0xff,0xe7,0xc3,0x81,0x00,0x81,0xc3,0xe7,0xff, 0xaa,0x55,0x18,0xff,0xf0,0x0f,0x00,0xff,0xf8,0xf1,0xe3,0xc7,0x8f,0x1f,0x3f,0x7f,0x7f,0x3f,0x1f,0x8f,0xc7,0xe3,0xf1,0xf8,0xff,0x00,0x00,0xff,0xff,0x0f,0xf0,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00,0x00,0x80,0xc0,0xe0,0xf0,0xf8,0xfc,0xfe,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff};//延时void DelayMS(uint x){uchar i;while(x--){for(i=0;i<120;i++);}}//主程序void main(){uchar i;while(1){ //从数组中读取数据送至P0和P2口显示for(i=0;i<136;i++){P0=Pattern_P0[i];P2=Pattern_P2[i];DelayMS(100);}}}05 LED模拟交通灯/* 名称:LED模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪烁5次后红灯亮,红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁5此后变红灯,东西向变绿灯,如此重复。

[设计]Proteus6.7入门仿真例子

[设计]Proteus6.7入门仿真例子

Proteus6.7入门仿真例子Proteus是英国一家公司开发的电路分析仿真软件。

支持运行于Windows操作系统上,目前可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:①实现了单片机仿真和SPICE电路仿真相结合。

具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

②支持主流单片机系统的仿真。

目前支持的单片机类型有:68000系列、8051系列、AVR 系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

③提供软件调试功能。

在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2等软件。

④具有强大的原理图绘制功能和PCB布线等功能。

总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。

Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。

因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。

对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。

可以说这个软件专门对付那些好学想偷赖的同学而设计的,如果没有设备,没有电子元件,对制作面包板等怕麻烦,就可以考虑这个软件来实现直观的仿真效果,当然这个软件的关键用途是给电子技术人员及时解决理论与实际的问题,可以快速测试某些常规理论电路并得出初步的结论。

也为实际产品设计提供了不少参考便利之处。

3基于proteus的51单片机仿真实例二、关于proteus

3基于proteus的51单片机仿真实例二、关于proteus

基于proteus的51单片机仿真实例二、关于proteus一、proteus的使用proteus软件能对单片机系统同时进行软件和硬件仿真。

是初学单片机而又没有硬件工具的一个很好的选择。

后面的学习将以protwus 7.4中文版为学习平台。

1、软件的下载、安装、破解该软件可在本论坛搜索找到,这里给出链接:/thread-71645-1-1.html关于软件的安装、注册在这里就不再多说了。

2、proteus的主要功能特点Proteus是英国Labcenter公司开发的电路分析与实物仿真及印制电路板设计软件,它可以仿真、分析各种模拟电路与集成电路,软件提供了大量模拟与数字元器件及外部设备,各种虚拟仪器,特别是它具有对单片机及其外围电路组成的综合系统的交互仿真功能。

Proteus主要由ISIS和ARES两部分组成,ISIS的主要功能是原理图设计及与电路原理图的交互仿真,ARES主要用于印制电路板的设计。

1)实现单片机程序仿真和电路仿真的的结合。

proteus可以进行模拟电路、数字电路的仿真;更主要的是,它可以进行单片机软硬件系统的综合仿真。

可以对单片机系统的各种功能进行仿真,如串口、I2C、SPI、按键、数码管、液晶等。

2)支持多种单片机和嵌入式系统的仿真目前可以支持51系列,6800系列,PIC系列、AVR系列、MSP430系列以及部分ARM系列。

同时支持上千种外围器件。

3)提供软件调试功能proteus仿真系统具有全速、单步、设置断点等调试功能。

同时在程序的运行过程中还可以观察变量、寄存器的当前状态。

还支持第三方的软件编译和调试环境,对于51单片机来说,proteus可以和keil c51实现联调。

4)强大的原理图和PCB图绘制功能。

在protes中,可以快速、方便的绘制单片机应用系统的电路原理图。

3)proteus软件的操作介绍在以后的学习中,主要进行的是原理图设计及与电路原理图的交互仿真,所以这里只介绍智能原理图输入系统ISIS的工作环境和操作。

proteus仿真实验【精选】

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和Keil仿真演示实例

流水灯(电路和汇编)Proteus和Keil仿真演示实例

例如要求:在80C51单片机的P2口连接8个发光二极管指示灯,编程实现流水灯的操纵,连番点亮指示灯。

在KEIL 51中编程序,形成HEX 文件;在PROTEUS中设计硬件,下载HEX文件,运行看结果。

第1篇:PROTEUS电路设计一、打开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芯片中的程序。

那个地址是同一个文件夹下面的文件。

如图6所示。

图6 下载程序到单片机7、单击仿真运行按钮play,运行程序。

可通过LED二极管看到相应的结果。

如图7所示。

图7 仿真结果图第2篇:Keil软件编程1、运行KEIL51软件,显现图1所示KEIL 51主界面。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档