基于Proteus的单片机串口通信仿真
- 格式:doc
- 大小:294.00 KB
- 文档页数:12
建立Proteus的单片机串口仿真平台本文详细介绍如何建立Proteus和PC机串口通信软件之间,进行通信仿真的平台。
这个平台由三个部分组成。
它们是:Proteus的单片机仿真电路,PC机串口通信软件,连接前两部分的虚拟串口软件。
1.Proteus的单片机仿真电路为了尽量简单明了,仿真电路只包含单片机和Proteus的COMPIM两个器件。
本文的单片机采用AVR M16。
运行Proteus的ISIS。
加入两个器件如下:类别:Microprocessor ICs器件:ATMEGA16库:A VR2描述:-类别:Miscellaneous器件:COMPIM库:ACTIVE描述:COM Port Physical Interface model仿真电路,如图1图1 Proteus串口仿真实例电路这里需要说明两点:首先,不需要串口电平转换电路。
例如:MAX232等;其次,连线不必交叉。
交叉任务交给虚拟串口去完成。
串口功能:中断接收到一个字节(0—255)无符号整数后,立即将收到的数据发送回去。
所以,程序非常简单。
重点在于建立仿真通信平台,因此不厌其烦地叙述建立平台的过程,以尽量避免初学者在某处卡住。
设置ATMEGA16的属性。
单击A TMEGA16变红色,再单击,弹出编辑元件窗口,如图2图2 ATMEGA16编辑元件窗口只要编辑红框圈起来的参数:Program File建议选择.cof文件,这样可以单步调试。
当然,对本项目过于简单没什么可调试的。
也可以选择.hex文件。
千万注意,当文件目录改版后,一定要重新选择文件路径!另一个参数CKSEL Fuses按图上的选择。
注意:程序中,初始化串口时,波特率因子也得按主频8M来选择!设置COMPIM的属性。
单击COMPIM变红色,再单击,弹出编辑元件窗口,如图3图3 COMPIM编辑元件窗口按红框内的选择即可。
当然可以改变。
但是,必须记下这些参数。
PC机的串口通信软件的参数,除了串口号必须和(例如CMO1)不同外,其它4项参数(波特率,数据位数,停止位数,校验码)必须一致。
proteus 与keil Cx51 的单片机仿真(串行通信口)单片机串行口工作于方式0,通过74LS164 实现串并转换,来控制共阳极数码管的显示,当按下K01 按钮显示2010,按下K02 键显示1987,按下K03键显示0606,按下K04 键显示1988,按下K05 键显示1224。
其中数字显示可由自己设定.电路图:C 程序:#include#include#include#define uchar unsigned char//宏定义sbit P1_1=P1;sb it P1_2=P1 ;sbit P1_3=P1;sb it P1_4=P1;sb it P1_5=P1 ;sbit P2_0=P2;uchar code discode[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//串行方式下共阳极数码管段码表0~9unsigned char leddis[4]={0,1,2,3};//显存,有几个数码管进行定义void display(void)//数码管显示函数{unsigned char count;//数码管个数P2_0=0;//P2.0 引脚输出清零信号,对74LS164 清零_nop_();_nop_();//延时,保证清零完成P2_0=1;//结束对74LS164 清零for(count=4;count>0;count--){SBUF=discode[leddis[count-1]];while(TI==0);TI=0;}}void main(){SCON=0x00;//设定UART 的工作方式为方式0leddis[0]=0;leddis[1]=1;leddis[2]=2;leddis[3]=3;//显示内容初始化display();//显示函数while(1){if(P1_1==0)//K01 按下,即P1_1被按下,显示2010{leddis[0]=2;leddis[1]=0;leddis[2]=1;leddis[3]=0;display();P1_1=1;}if(P1_2==0)//K02 按下,即P1_2 被按下,显示1987{leddis[0]=1;leddis[1]=9;leddis[2]=8;leddis[3]=7;display();P1_2=1;}if(P1_3==0)//K03 按下,即P1_3 被按下,显示0606{leddis[0]=0;leddis[1]=6;leddis[2]=0;leddis[3]=6;display();P1_3=1;}if(P1_4==0)//K04 按下,即P1_4 被按下,显示1988{leddis[0]=1;leddis[1]=9;leddis[2]=8;leddis[3]=8;display();P1_4=1;}if(P1_5==0)/ /K05 按下,即P1_5 被按下,显示1224{leddis[0]=1;leddis[1]=2;leddis[2]。
Proteus仿真——51单片机串口转RS232口单片机串口是单片机通信的基本途径,可以进行多单片机间的通信,也可以通过接口转换实现与计算机间的通信。
其中与计算机通信可以通过计算机的串口(232口)或USB口实现。
本文是本人做的一个小实验,内容是在Proteus ISIS中仿真51单片机串口转RS232口,实现单片机通过串行口与计算机通信。
单片机串行口有四种不同的工作方式:方式0:移位寄存器输入/出方式,波特率固定为:f osc/12。
方式1:10位UART(通用异步接口电路),一帧数据包括1位起始位(0),8位数据位和1位停止位(1)。
波特率可变,公式为:其中X为定时器T1的初值,当然我们一般都是先确定波特率然后算初值的,所以我们更想知道X等于多少。
把上面的式子变一下就可以得到初值X了:方式2/3:这两种方式都是11位的UART,它们比方式1多了一个第9位数据。
他们不同的是:方式2波特率固定为f osc/32或f osc/64,由SMOD位决定。
方式3:波特率同方式1;本例中采用方式1,波特率为9600(计算机默认值),根据波特率算出初值X=253(定时器T1工作方式2)。
我们以9600的波特率向计算机循环发送00H;proteus中的接口转换电路如下:计算机端用串口调试软件接收;不过我们要说明一下,为了实现串口的连接,我们要用计算机串口模拟软件模拟出两个232口,模拟出的这两个232口是设计为连接着的。
我们用Virtual Serial Port Driv er这个软件(到网上去搜,很容易找到)。
安装好后打开,界面如下:在上图里可以看出我的机器有一个物理口COM1,现在已经模拟出了两个口COM2和COM3,而且他们是一组是连接着的。
我们在proteus中的compim默认是连到com1的,在我们这边改成com2,然后在串口调试软件中测试com3,如下两个图现在硬件连接已经到位,下面就是软件了:通过串口以波特率为9600的速度发送00H,程序如下:ORG 0000HLJMP STARTORG 0030HSTAR T: SETB EASETB ESSETB ET1CLR SM0;串行口工作于方式1:sm0=0,sm1=1SETB SM1MOV PCON,#00H;波特率不加倍MOV TMOD,#20H;T1定时器方式2MOV TL1,#253MOV TH1,#253SETB TR1MOV A,#00HLOOP: MOV SBUF,A JNB TI,$;等待发送完CLR TI;清除中断标志LJMP LOOP;循环END结果如下:。
单片机用 Proteus 仿真双机串口通信总结体会本文介绍了使用 Proteus 仿真软件进行单片机双机串口通信的实验过程及总结体会。
下面是本店铺为大家精心编写的5篇《单片机用 Proteus 仿真双机串口通信总结体会》,供大家借鉴与参考,希望对大家有所帮助。
《单片机用 Proteus 仿真双机串口通信总结体会》篇1引言在单片机应用中,串口通信是一种重要的通信方式,它具有传输速率快、传输距离远、抗干扰能力强等优点。
Proteus 仿真软件是一种功能强大的电子电路仿真工具,可以用来模拟单片机串口通信的整个过程,为学习和实践提供方便。
本文将详细介绍使用Proteus 仿真软件进行单片机双机串口通信的实验过程及总结体会。
实验过程1. 硬件电路设计首先,我们需要设计一个简单的单片机硬件电路,包括电源电路、串口通信电路和 LED 显示电路。
电源电路可以使用电池或者稳压器来提供稳定的电压,串口通信电路可以使用 Proteus 提供的串口助手软件进行设计和调试,LED 显示电路可以使用 Proteus 提供的 LED 助手软件进行设计和调试。
2. 软件程序设计在软件程序设计中,我们需要编写两个程序:主程序和串口通信程序。
主程序主要负责初始化串口通信电路和 LED 显示电路,并将控制权转移到串口通信程序。
串口通信程序主要负责接收和发送数据,通过串口助手软件可以方便地进行调试和测试。
3. 仿真测试在仿真测试中,我们可以使用 Proteus 提供的仿真工具进行测试。
首先,我们需要将硬件电路和软件程序导入 Proteus 仿真软件中,并进行电路连接和程序编译。
然后,我们可以通过串口助手软件进行数据发送和接收,并通过 LED 显示电路进行数据展示。
总结体会通过使用 Proteus 仿真软件进行单片机双机串口通信实验,我们可以得出以下总结体会:1. Proteus 仿真软件是一种非常强大的电子电路仿真工具,可以用来模拟各种电路和通信方式。
基于Proteus仿真软件实现单片机与PC机多字节串行通信作者:王忠远张凤桐来源:《电脑知识与技术》2016年第36期摘要:Proteus电路设计仿真软件是世界上著名的EDA开发工具,在单片机中嵌入串行通信软件,利用仿真串口COMPIM与PC机通信。
本论文主要利用Proteus仿真软件制作单片机串行通信仿真电路,经过虚拟串口可以实现在同一台计算机上实现下位单片机与上位计算机仿真串行通信,上位计算机采用VB语言编辑界面,在单片机教学和电子产品开发中具有一定的参考价值。
关键词: Proteus;COMPIM;虚拟串口;MSComm中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)36-0261-02在单片机串行教学及电子产品开发时,通常涉及单片机(下位机)与计算机(上位机)的串行通信,利用串行通信上位机发送命令给下位机,下位机将待显示数据传到上位机上显示,本论文设计收发帧定长21个字节的串行通信,一帧包括2字节同步头、2字节结束字、1字节命令字、16字节数据。
上下位机通过一对虚拟串口进行连接实现双机通信。
1 Proteus仿真软件绘制串行通信电路(如图1)2 利用kile c51软件编写下位机程序代码#include#define uchar unsigned charsbit P1_1=P1^1;uchar Fhead=0xA5,Fend=0x5A,shead=0,send=0; //头尾字节,找到头尾标志uchar x,uartbuf,rdata[20]; //接收变量,接收缓冲21字节uchar temp,tdata[21]={0xa5,0xa5,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x5a,0x5a};uchar scount; //接收有效数据main(){ TMOD=0x20; PCON=0x00; SCON=0x50; //设置波特率为9600b/s,10位异步收发,启动定时器1TH1=0xfd; TL1=0xfd; TR1=1;EA=1; ES=1; //开启中断while(1){ if(send==1||P1_1==0) //接收到正确数据或按键按下时下位机发送数据到上位机{ tdata[0]=0xa5;tdata[1]=0xa5;tdata[19]=0x5a;tdata[20]=0x5a;for(temp=0;temp{ SBUF=tdata[temp]; while(TI==0);TI=0; }send=0; scount=0;while(P1_1==0);} } }void uart() interrupt 4 using 1{ if(RI==1){x=SBUF;if(x==Fhead && x==uartbuf) //找同步头{shead=1;scount=0;}if(x==Fend && x==uartbuf) //找结束字{shead=0;;send=1;}if(shead==1) //是同步头非结束字保存数据{rdata[scount]=x;tdata[scount+1]=x;scount++;}uartbuf=x; RI=0;}}3 上位机串行通信界面设计利用VB设计数据收发控制界面如图2,在设计时需要增加外部控件:在工程-部件中选择microsoft comm control 6.0控件,添加后在工具箱中出现电话机图标,拖入窗体即可使用。
┊┊┊┊┊┊┊┊┊┊┊┊┊装┊┊┊┊┊订┊┊┊┊┊线┊┊┊┊┊┊┊┊┊┊┊┊┊1.绪论1.1课题背景及意义目前,单片机的发展速度大约每两、三年要更新一代,集成度增加一倍,功能翻一番。
其发展速度之快、应用范围之广已达到了惊人的地步,它已渗透到生产和生活的各个领域,应用非常广泛。
在汽车、通信、智能仪表、家用电器和军事设备的智能化以及实时过程控制等方面,单片机都扮演着非常重要的角色[1]。
因此单片机的设计开发具有广阔的前景。
所以,对于电气类学生而言,学习一种单片机的开发是十分必要的。
而51系列的单片机,随着半导体技术的发展,其处理速度更快,性能更优越,在工业控制领域上占据十分重要的地位,通过对51系列单片机的学习而掌握单片机开发的过程是一种不错的选择。
然而单片机是一门综合性、实践性都很强的学科,其学习涉及的实验环节比较多,硬件设备投入比较大,对于大多数人而言很难投入大笔资金去购买实验器件。
而且要进行硬件电路测试和调试,必须在电路板制作完成、元器件焊接完毕之后进行,但这些工作费时费力。
因此引入EDA软件仿真系统建立虚拟实验平台,不仅可以大大提高单片机的学习效率,而且大大减少硬件设备的资金投入,同时降低对硬件设备的维护工作。
EDA设计思路是:从元器件的选取到连接、直至电路的调试、分析和软件的编译,都是在计算机中完成,所用的工作都是虚拟的。
虽然现在的电路设计软件已经很多,诸如PROTEL、ORCAD、EWB 、Multisim等,不过这些软件之间的差别都不大:都有原理图和PCB制作功能,都能进行诸如频率响应,噪音分析等电路分析,主要用于模拟电路、数字电路、模数混合电路的性能仿真与分析,但对于单片机设计及软件编程,最重要的是两者的联调,这些软件都无法实现,所以造成了单片机系统设计周期长、设计费用高等缺点[2]。
新款的EDA软件Proteus解决了上述软件的不足,成为目前最好的一款单片机学习仿真软件。
Proteus 软件是由英国Lab Center Electronics 公司开发的EDA 工具软件。