单片机双机通信_数码管演示程序_proteus_仿真

合集下载

51单片机双机通信与锯齿波输出proteus仿真(汇编)

51单片机双机通信与锯齿波输出proteus仿真(汇编)

STC89C51单片机双机通信与DAC0832锯齿波输出proteus仿真(汇编)proteus仿真图如下:仿真效果如下:Proteus所用元件:AT89C51单片机X2DAC0832X1OPAMPX1其中单片机A负责产生生成锯齿波所需要的数字信号代码,并将其发送给单片机B, 单片机B负责将接收到的锯齿波数字信号输出到片外DAC0832转换成锯齿波DAC0832接图如下:指令用的片外地址是BFFFH 所以1脚接单片机B的P2.62脚接单片机B的P3.6(WR)3脚接地8脚接-5V9脚接OPAMP最终输出11脚接地接运放负端12脚接地再接运放正端17与18脚直接接地19和20脚接VCC单片机A指令如下:ORG 0000HAJMP MAINORG 0023HAJMP ZD1MAIN:MOV A,#00HMOV SCON,#40HMOV TMOD,#20HMOV PCON,#00HSETB EASETB ESMOV TH1,#0F1HMOV TL1,#0F1HSETB TR1MOV SBUF,AAJMP $ZD1:CLR TIDEC AMOV SBUF,ARETI单片机B如下:ORG 0000HAJMP MAINORG 0023HAJMP ZD1MAIN:MOV TMOD,#20HMOV PCON,#00HMOV SCON,#50HMOV TL1,#0F1HMOV TH1,#0F1HMOV DPTR,#0BFFFHSETB EASETB ESSETB TR1AJMP $ZD1:CLR RIMOV A,SBUFMOVX @DPTR,ARETI。

单片机用proteus仿真双机串口通信总结体会

单片机用proteus仿真双机串口通信总结体会

单片机用 Proteus 仿真双机串口通信总结体会本文介绍了使用 Proteus 仿真软件进行单片机双机串口通信的实验过程及总结体会。

下面是本店铺为大家精心编写的5篇《单片机用 Proteus 仿真双机串口通信总结体会》,供大家借鉴与参考,希望对大家有所帮助。

《单片机用 Proteus 仿真双机串口通信总结体会》篇1引言在单片机应用中,串口通信是一种重要的通信方式,它具有传输速率快、传输距离远、抗干扰能力强等优点。

Proteus 仿真软件是一种功能强大的电子电路仿真工具,可以用来模拟单片机串口通信的整个过程,为学习和实践提供方便。

本文将详细介绍使用Proteus 仿真软件进行单片机双机串口通信的实验过程及总结体会。

实验过程1. 硬件电路设计首先,我们需要设计一个简单的单片机硬件电路,包括电源电路、串口通信电路和 LED 显示电路。

电源电路可以使用电池或者稳压器来提供稳定的电压,串口通信电路可以使用 Proteus 提供的串口助手软件进行设计和调试,LED 显示电路可以使用 Proteus 提供的 LED 助手软件进行设计和调试。

2. 软件程序设计在软件程序设计中,我们需要编写两个程序:主程序和串口通信程序。

主程序主要负责初始化串口通信电路和 LED 显示电路,并将控制权转移到串口通信程序。

串口通信程序主要负责接收和发送数据,通过串口助手软件可以方便地进行调试和测试。

3. 仿真测试在仿真测试中,我们可以使用 Proteus 提供的仿真工具进行测试。

首先,我们需要将硬件电路和软件程序导入 Proteus 仿真软件中,并进行电路连接和程序编译。

然后,我们可以通过串口助手软件进行数据发送和接收,并通过 LED 显示电路进行数据展示。

总结体会通过使用 Proteus 仿真软件进行单片机双机串口通信实验,我们可以得出以下总结体会:1. Proteus 仿真软件是一种非常强大的电子电路仿真工具,可以用来模拟各种电路和通信方式。

用Proteus仿真单片机的方法

用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);elseP2 = ~(0x80>>LEDIndex);if(LEDIndex==7)LEDDirection = !LEDDirection;LEDIndex = (LEDIndex+1)%8;Delay1ms(200);}}将上述程序编译生成目标文件LED.hex。

单片机实验三双机通信实验程序

单片机实验三双机通信实验程序

单片机实验三双机通信实验程序第一篇:单片机实验三双机通信实验程序实验三双机通信实验一、实验目的UART 串行通信接口技术应用二、实验实现的功能用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。

三、系统硬件设计实验所需硬件:电脑一台;开发板一块;串口通信线一根; USB线一根;四、系统软件设计实验所需软件:编译软件:keil uvision3;程序下载软件:STC_ISP_V480;试验程序:#include sbit W1=P0^0;sbit W2=P0^1;sbit W3=P0^2;sbit W4=P0^3;sbit D9=P3^2;sbit D10=P3^3;sbit D11=P3^4;sbit D12=P3^5;sbit DP=P1^7;code unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};sfr P1M1=0x91;sfr P1M0=0x92;sbit H1=P3^6;sbit H2=P3^7;sbit L1=P0^5;sbit L2=P0^6;sbit L3=P0^7;unsigned char dat;unsigned char keynum;unsigned char keyscan();void display();void delay(void);L1=1;L2=1;L3=1;H1=0;if(L1==0)return 1;else if(L2==0)return 2;else if(L3==0)return 3;H1=1;H2=0;if(L1==0)return 4;else if(L2==0)return 5;else if(L3==0)return 6;H2=1;return 0;} unsigned char keyscan(){ static unsigned int ct=0;static unsigned char lastkey=0;unsigned char key;key=getkey();if(key==lastkey){ct++;if(ct==900){ct=0;lastkey=0;return key;} } else {第二篇:单片机串行通信实验实验四单片机串行通信实验一、实验目的1、掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。

用Proteus软件进行51系列单片机仿真的制作和演示教程

用Proteus软件进行51系列单片机仿真的制作和演示教程

用Proteus软件进行51系列单片机仿真的制作和演示过程教程一、ISIS界面简介假如读者的电脑上已成功安装了Proteus,则可以从电脑桌面的“开始”-“程序”-Proteus 6 Professional-ISIS 6 Professional,启动ISIS。

ISIS是仿真模拟设计SCH设计程序。

ISIS成功启动后的界面如图1所示,分为菜单栏、工具栏,工具箱、编辑窗口(显示正在编辑的电路原理图)、预览窗口(显示整个电路图的缩略图)、对象选择器,对象旋转工具和模拟调试时用的快捷调试按钮。

二、绘制仿真电路的原理图笔者以图2所示的电路为例,介绍电路原理图的绘制过程。

操作过程为,用鼠标左键点击工具箱的元器件“”按钮,使其选中,再选中ISIS对象选择器左边中间的“”按钮,出现“Pick Devices”对话框,如图3所示,在这个对话框里读者可以选择元器件和一些虚拟仪器。

在“Libraries”下面找到“MICRO”选项,找到单片机A T89C51,双击“A T89C51”,这样在左边的对象选择器就有了A T89C51这个元件了,点击一下这个元件,然后把鼠标指针移到右边的原理图编辑区的适当位置,点击鼠标的左键,就把A T89C51放到原理图区。

按照同样方法把所需的其它元器件都放到原理图编辑区。

元器件放置完后,若位置不合适,需要调整元器件的位置,可先通过鼠标右键选中对象,此时被选中的对象变成红色显示,再用鼠标左键点击被选中的对象不放并拖到合适的位置后再释放鼠标左键。

若要旋转对象,可在选中对象时按旋转按钮进行旋转。

若要编辑对象的属性,在对象被选中时,用鼠标左键点击对象,此时出现属性对话框,比如要改变电阻的属性,可右键选中电阻,再用左键点击被选中的电阻,出现如图4所示的对话框。

在这里我们可以改变电阻的标号,电阻值,PCB封装以及是否把这些东西隐藏等,修改后,点击“OK“按钮即可。

在Proteus,许多器件没有Vcc和GND引脚,其实它们被隐藏了,在使用时可以不加电源。

单片机双机通信 数码管演示程序 proteus 仿真

单片机双机通信 数码管演示程序 proteus 仿真

单片机双机通信数码管演示程序默认分类2011-05-23 19:20:25 阅读0 评论0 字号:大中小订阅程序实现双机通信,数据由主机的P1口设置,发出到从机。

从机对数据加1后再返回到主机写到两个单片机中//**************************发送*************************#include <reg51.h>unsigned char a;unsigned charb[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; void init(void){SCON = 0x50; // 串行口工作方式1,允许接收PCON = 0x00; // 波特率不倍增TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率TH1 =0xf4 ;TL1 =0xf4; // T1赋初值,11.0592M晶振,波特率2400TR1 = 1; // 启动定时器1EA=1;ES=1;}void main(void){init();P1=0xff;a=P1&0x0f;SBUF=a;}void zd() interrupt 4 //当进入中断,要么RI=1,要么TI=1{if(RI){RI=0;a=SBUF;P2=b[a];}else TI=0;}//*********************接收*******************#include <reg51.h>unsigned char a;unsigned charb[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; void init(void){SCON = 0x50; // 串行口工作方式1,允许接收PCON = 0x00; // 波特率不倍增TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率TH1 =0xf4 ;TL1 =0xf4; // T1赋初值,波特率2400TR1 = 1; // 启动定时器1EA=1;ES=1;}void main(void){init();while(1){P2=b[a];}}void zd() interrupt 4{if(RI){RI=0;a=SBUF;SBUF=a+1; //加1后,在返回到主机}else TI=0;}。

两片单片机之间的串行通信(proteus仿真图+程序)

两片单片机之间的串行通信(仿真图+程序)AT89C51+MAX232功能:(1)甲机P1口的开关控制乙机P1口的发光二级管,开关闭合发光二级管亮,开关断开发光二级管灭。

(2)乙机P2口的开关控制甲机P2口的数码管,按下4*4矩阵键盘,显示对应的键值0~F (3)乙机P0^0口的开关控制甲机P2口的数码管,按下按键,数码管从0~9循环显示;乙机P0^2口的开关控制甲机P2口的数码管,按下按键,数码管清零。

/****************************甲机控制与接收*********************************/ #include <reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit K0=P1^0;sbit K1=P1^1;sbit K2=P1^2;sbit K3=P1^3;sbit K4=P1^4;sbit K5=P1^5;sbit K6=P1^6;sbit K7=P1^7;uchar i;uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void delay(uint z){ uint x,y;for(x=z;x>0;x--)for(y=110;y<0;y--);}void send(uchar c) //向串口发送字符{ SBUF=c;while(TI==0);TI=0;}void main(){ uchar i;P2=0x00;SCON=0x50; //串口模式1TMOD=0x20; //T1工作模式2PCON=0x00; //波特率不倍增TH1=0xfd; //波特率设定6900TL1=0xfd;TI=RI=0;TR1=1; //启动定时器T1IE=0x90; //允许串口中断while(1){ if(K0==0) send('0'); else send('A');if(K1==0) send('1'); else send('B');if(K2==0) send('2'); else send('C');if(K3==0) send('3'); else send('D');if(K4==0) send('4'); else send('E');if(K5==0) send('5'); else send('F');if(K6==0) send('6'); else send('G');if(K7==0) send('7'); else send('H');}}void serial_int() interrupt 4 //甲机串口接收中断函数{ if(RI){ RI=0;if(SBUF>=0 &&SBUF<=15)P2=tab[SBUF];elseP2=0x00;if(SBUF=='x')if(i>=0&&i<9){i=i+1;P2=tab[i];}if(i==9) i=0;if(SBUF=='y'){P2=0x00;i=0;}}}/*****************************乙机控制与接收程序*****************************/ #include <reg51.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit L0=P1^0;sbit L1=P1^1;sbit L2=P1^2;sbit L3=P1^3;sbit L4=P1^4;sbit L5=P1^5;sbit L6=P1^6;sbit L7=P1^7;sbit KEY1=P0^0;sbit KEY2=P0^2;void delay(uint z){ uint x,y;for(x=z;x>0;x--)for(y=110;y<0;y--);}void send(uchar c) //向串口发送字符{ SBUF=c;while(TI==0);TI=0;}uchar key() //按键扫描{ uchar keyon,temp;P2=0x0f;delay(1);temp=P2^0x0f;switch(temp){ case 1:keyon=3;break;case 2:keyon=2;break;case 4:keyon=1;break;case 8:keyon=0;break;default:keyon=16;}P2=0xf0;delay(1);temp=P2>>4^0x0f;switch(temp){ case 1:keyon+=0;break;case 2:keyon+=4;break;case 4:keyon+=8;break;case 8:keyon+=12;break;}return keyon;}void main(){ SCON=0x50; //串口模式1,允许接收TMOD=0x20; //T1 工作模式2PCON=0x00; //波特率不倍增TH1=0xfd; //波特率设定: 9600TL1=0xfd;TI=RI=0;TR1=1; //启动定时器T1IE=0x90; //允许串口中断delay(100);while(1){ P2=0xf0; //矩阵键盘if(P2!=0xf0)send(key());if(KEY1==1) //独立按键{ delay(20);if(KEY1==0)send('x');}if(KEY2==0) //清零send('y');}}void serial_int() interrupt 4 //乙机串口接收中断函数{ if(RI){ RI=0;switch(SBUF){ case '0':L0=0;break;case '1':L1=0;break;case '2':L2=0;break;case '3':L3=0;break;case '4':L4=0;break;case '5':L5=0;break;case '6':L6=0;break;case '7':L7=0;break;case 'A':L0=1;break;case 'B':L1=1;break;case 'C':L2=1;break;case 'D':L3=1;break;case 'E':L4=1;break;case 'F':L5=1;break;case 'G':L6=1;break;case 'H':L7=1;break;}}}。

单片机课程设计双机通讯

微机原理与接口课程设计学院:信息电子学院班级:08电科二班学号:E08640229姓名:邹超指导老师:张国萍日期:2011—01—12电子设计培训课程设计任务书基本部分:1、熟悉使用protues软件进行单片机系统(双机通信和多机通信)的设计与仿真;2、完成PC和单片机小系统之间的通信,用RS-232口。

3、完成接收和发送功能。

扩展部分:4、完成各单片机系统之间的多机通信。

指标要求:1、双机通讯实现从PC发送学号末两位,单片机接收后在数码管上显示,然后再发回PC,波特率为2400。

2、多机通信中设置一个主机,16个从机。

主机发送数据,从机接收数据。

从机地址从00H开始到0FH结束。

主机的数据由P1口输入,欲寻址的地址由P2口设置。

发送数据前,P0 口显示寻址地址,寻址结束后,才显示发送数据。

只有主机寻址的从机才能接收数据,当接收数据是00H时,表示发送数据结束。

从机接收数据并显示在P0 口,接收完以后发回主机。

考核与报告:考核采用设计报告+答辩的方式1、优秀能按任务书要求独立完成实验,正确使用仪器设备,能灵活、熟练地运用相关知识,实验数据及计算结果准确,实验报告(含图表)清晰无误2、良好能按任务书要求基本独立完成实验,正确使用仪器设备,能比较熟练地运用相关知识,实验数据及计算结果基本准确,实验报告(含图表)质量较好3、中等能在教师指导下顺利完成实验,会使用仪器设备,尚能运用相关知识,实验数据及计算结果有明显错误,实验报告(含图表)质量一般4、及格能在教师指导下完成实验,会使用仪器设备,运用相关知识能力较差,实验数据及计算结果有较大错误,基本达到实验最低要求5、不及格不能完成实验,或抄袭他人实验报告,或实验数据及计算结果有多处重大错误。

地点: 10-408 上午:8:30-11:30 下午:13:00-16:00目录封面 (1)任务书 (2)目录 (3)双机通讯 (4)接口设计 (4)接口电路 (4)仿真图 (5)仿真结果 (5)程序代码 (6)流程图 (8)多机通讯 (9)接口电路 (9)多机通讯过程 (9)仿真图 (10)仿真结果 (5)实物图 (16)程序代码 (11)流程图 (14)问题设计 (16)参考文献 (16)双机通讯双机通讯接口设计:根据8031单片机双机通讯距离,抗干扰性等要求,可选择TTL电平传输,或选择RS—232C,RS—422A,RS—485串行接口进行串行数据传输。

51单片机双机通信仿真

51单片机双机通信仿真
51单片机双机通信仿真需要使用仿真软件,例如Proteus等,同时还需要掌握51单片机的通信协议。

一般而言,可以通过串口通信、I2C总线、SPI总线等方式实现双机通信。

以下是基于串口通信的示例:
1. 确定双方的串口通信参数,例如波特率、数据位、校验位和停止位等。

2. 编写发送和接收程序,根据协议制定消息格式并进行数据打包和解析。

发送程序中将消息通过串口输出到对应的接收端口。

3. 在仿真软件中添加串口模块,设置对应的参数并连接发送端口和接收端口。

4. 运行仿真程序,可以使用oscilloscope等工具查看串口状态和数据传输情况。

以上仅为简单示例,具体实现还需考虑实际应用场景和通信需求。

基于Proteus的单片机串口通信仿真

Proteus班级:电信13-2姓名:段学亮邓成智崔俊杰邓石磊陈亮高金玉成绩:电子与信息工程学院信息与通信工程系1.设计要求甲单片机向乙单片机机发送控制命令字符,甲单片机同时接收乙单片机机发送的数字,并显示在数码管上。

乙机程序接收甲机发送字符并完成相应动作乙机接收到甲机发送的信号后,根据相应信号控制LED完成不同闪烁动作。

2. 仿真电路图串口通信仿真电路图如图一图1:串口通信仿真电路图3.串口通信C51程序/* 名称:甲机串口程序说明:甲机向乙机发送控制命令字符,甲机同时接收乙机发送的数字,并显示在数码管上。

*/#include<>#define uchar unsigned char#define uint unsigned intsbit LED1=P1^0;sbit LED2=P1^3;sbit K1=P1^7;uchar Operation_No=0; 通灯仿真效果按下甲单片机的按钮向单片机乙发送数据,再松开甲单片机的按钮,此时甲单片机的LED1和乙单片机的LED3亮如下图4-1。

4-1:甲机的LED1和乙机的LED3分别点亮再次按下甲单片机的按钮向单片机乙发送数据,再松开甲单片机的按钮,此时甲单片机的LED2和乙单片机的LED4亮如下图4-2。

4-2:甲机的LED2和乙机的LED4分别点亮再次按下甲单片机的按钮向单片机乙发送数据,再松开甲单片机的按钮,此时甲单片机的LED1、LED2和乙单片机的LED3、LED4亮如下图4-3。

4-3:甲机的LED1、LED2和乙机的LED3、LED4全部点亮按下乙单片机的按钮向单片机甲发送数据,再松开乙单片机的按钮,此时甲单片机的数码管显示‘0’如下图4-4。

此乙单片机的串口程序可以控制甲单片机的数码管从0显示到9.4-4:甲机的数码管点亮,显示‘0’不停按下和松开乙单片机的按钮向单片机甲发送数据,甲单片机的数码管显示从‘0’到9,以此循环。

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

单片机双机通信数码管演示程序
默认分类2011-05-23 19:20:25 阅读0 评论0 字号:大中小订阅
程序实现双机通信,数据由主机的P1口设置,发出到从机。

从机对数据加1后再返回到主机
写到两个单片机中
//**************************发送*************************
#include <reg51.h>
unsigned char a;
unsigned char
b[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; void init(void)
{
SCON = 0x50; // 串行口工作方式1,允许接收
PCON = 0x00; // 波特率不倍增
TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1 =0xf4 ;
TL1 =0xf4; // T1赋初值,11.0592M晶振,波特率2400
TR1 = 1; // 启动定时器1
EA=1;
ES=1;
}
void main(void)
{
init();
P1=0xff;
a=P1&0x0f;
SBUF=a;
}
void zd() interrupt 4 //当进入中断,要么RI=1,要么TI=1
{
if(RI)
{
RI=0;
a=SBUF;
P2=b[a];
}
else TI=0;
}
//*********************接收*******************
#include <reg51.h>
unsigned char a;
unsigned char
b[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; void init(void)
{
SCON = 0x50; // 串行口工作方式1,允许接收
PCON = 0x00; // 波特率不倍增
TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1 =0xf4 ;
TL1 =0xf4; // T1赋初值,波特率2400
TR1 = 1; // 启动定时器1
EA=1;
ES=1;
}
void main(void)
{
init();
while(1)
{
P2=b[a];
}
}
void zd() interrupt 4
{
if(RI)
{
RI=0;
a=SBUF;
SBUF=a+1; //加1后,在返回到主机
}
else TI=0;
}。

相关文档
最新文档