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

两片单片机之间的串行通信(proteus仿真图+程序)两片单片机之间的串行通信(仿真图+程序)AT89C51+MAX232功能:(1)甲机P1口的开关控制乙机P1口的发光二级管,开关闭合发光二级管亮,开关断开发光二级管灭。
(2)乙机P2口的开关控制甲机P2口的数码管,按下4*4矩阵键盘,显示对应的键值0~F (3)乙机P0^0口的开关控制甲机P2口的数码管,按下按键,数码管从0~9循环显示;乙机P0^2口的开关控制甲机P2口的数码管,按下按键,数码管清零。
/****************************甲机控制与接收*********************************/ #include#include#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#include#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;}}}。
RS-232简单串口主从系统设计及Proteus的仿真

毕业设计说明书(论文)RS-232简单串口主从系统设计及Proteus的仿真毕业设计说明书(论文)中文摘要毕业设计说明书(论文)外文摘要1 绪论 (3)1.1引言 (3)1.2研究背景及意义 (3)1.3论文主要工作 (5)2 计算机接口介绍 (6)2.1并行口与串行口的介绍 (6)2.2单片机串行接口 (8)2.2.1 单片机的串口结构 (8)2.2.2 串口的工作方式 (9)2.2.3 波特率的计算 (13)2.3RS-232C串行接口标准[7] (14)2.4小节 (15)3 单片机硬件电路设计 (16)3.1单片机最小系统 (16)3.2LED显示电路 (17)3.3串口输入电路 (18)3.4小节 (18)4 本文的软件设计与调试 (19)4.1设计要求 (19)4.2上位机程序设计 (19)4.2.1 Windows环境下的串口通信程序设计 (19)4.2.2 上位机软件的实现 (20)4.3下位机的程序设计 (20)4.4虚拟串口 (21)4.5系统调试 (22)4.6小结 (25)结束语 (26)致谢 (27)参考文献 (28)1 绪论1.1 引言计算机技术、自动化技术和通信技术是现代信息科学技术的重要组成部分,是现代学技术中的核心先导技术。
计算机控制是计算机技术与自动控制理论、自动化技术紧密合并应用于实际的结果,它的应用领域非常广泛。
随着高性能计算机、网络技术及单片机技术的不断发展,不仅使计算机应用向网络化、综合化、集成化、智能化发展,而且使单片机的应用也从独立的单机控制向多机联网的方向发展,这就需要将各单机进行组网并进行相互通信。
单一的PC机已经无法满足需要,PC机与各单片机构成的多机系统、计算机网络和利用计算机实时监控已经被越来越多的用于工业企业当中。
从简单的集中式控制逐渐向复杂分分布形式发展,出现了以通信网络技术为基础的新的控制形式。
从最早的25针D头的并口,到后来9针的RS-232C串口,再到现在随处可见的USB接口,计算机接口技术已经深入我们生活的每个角落。
建立Proteus的单片机串口仿真平台

建立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项参数(波特率,数据位数,停止位数,校验码)必须一致。
单片机串行通信实验报告(实验要求、原理、仿真图及例程)

《嵌入式系统原理与实验》实验指导实验三调度器设计基础一、实验目的和要求1.熟练使用Keil C51 IDE集成开发环境,熟练使用Proteus软件。
2.掌握Keil与Proteus的联调技巧。
3.掌握串行通信在单片机系统中的使用。
4.掌握调度器设计的基础知识:函数指针。
二、实验设备1.PC机一套2.Keil C51开发系统一套3.Proteus 仿真系统一套三、实验容1.甲机通过串口控制乙机LED闪烁(1)要求a.甲单片机的K1按键可通过串口分别控制乙单片机的LED1闪烁,LED2闪烁,LED1和LED2同时闪烁,关闭所有的LED。
b.两片8051的串口都工作在模式1,甲机对乙机完成以下4项控制。
i.甲机发送“A”,控制乙机LED1闪烁。
ii.甲机发送“B”,控制乙机LED2闪烁。
iii.甲机发送“C”,控制乙机LED1,LED2闪烁。
iv.甲机发送“C”,控制乙机LED1,LED2停止闪烁。
c.甲机负责发送和停止控制命令,乙机负责接收控制命令并完成控制LED的动作。
两机的程序要分别编写。
d.两个单片机都工作在串口模式1下,程序要先进行初始化,具体步骤如下:i.设置串口模式(SCON)ii.设置定时器1的工作模式(TMOD)iii.计算定时器1的初值iv.启动定时器v.如果串口工作在中断方式,还必须设置IE和ES,并编写中断服务程序。
(2)电路原理图Figure 1 甲机通过串口控制乙机LED闪烁的原理图(3)程序设计提示a.模式1下波特率由定时器控制,波特率计算公式参考:b.可以不用使用中断方式,使用查询方式实现发送与接收,通过查询TI和RI标志位完成。
2.单片机与PC串口通讯及函数指针的使用(1)要求:a.编写用单片机求取整数平方的函数。
b.单片机把计算结果向PC机发送字符串。
c.PC机接收计算结果并显示出来。
d.可以调用Keil C51 stdio.h 中的printf来实现字符串的发送。
串行口数据传输的仿真和硬件实现实验

串行口数据传输的仿真和硬件实现实验1.串行口数据传输的仿真实验(1)设计电路图:使用Proteus打开一个新的项目,然后在电路图中添加一个微控制器(如8051)和其他相应的电路元件,以及一个串口调试助手(如Tera Term)。
确保电路图中的元件连接正确。
(2)配置串行口:在Proteus的工具栏中选择"Settings",然后选择"Peripherals",在弹出的对话框中选择串行口,并进行相应的配置,如波特率、数据位、停止位等。
(3)编写程序:在Proteus的工具栏中选择"Source Code",然后在弹出的对话框中编写相应的程序,程序中应包含串行口数据的发送和接收操作。
(4)运行仿真:保存并运行程序后,点击Proteus的工具栏中的"Play"按钮,程序将开始执行。
同时,打开串口调试助手,可以观察到串行口数据的传输情况。
通过以上步骤,可以完成串行口数据传输的仿真实验。
可以根据需要,修改程序和仿真参数,以实现不同的功能和验证不同的传输场景。
(1)准备硬件:准备一个Arduino开发板和一个串口调试助手(如Tera Term),并将它们连接在一起。
可以根据需要,添加其他的电路元件。
(2)编写程序:使用Arduino IDE编写相应的程序,程序中应包含串行口数据的发送和接收操作。
根据具体的应用场景,可以添加其他的功能。
(3)上传程序:将编写好的程序上传到Arduino开发板上,确保程序正确运行。
可以通过串口调试助手观察串行口数据的传输情况。
(4)进行实验:根据需求调整程序和硬件连接,进行实验并收集数据。
可以根据需要,进行数据分析和结果展示。
通过以上步骤,可以完成串行口数据传输的硬件实验。
实验过程中,可以根据需要,添加其他的电路元件和外部设备,来实现更复杂的功能和场景。
总之,串行口数据传输的仿真和硬件实现实验是学习和研究串行口数据传输的重要手段。
串行通信UART及PROTEUS仿真设计

串行通信UART及PROTEUS仿真设计C51跟atmega64的串行通信。
相关理论知识这里就不多说,只提几个:51的UART所用的几个寄存器SCON:SM0 SM1 SM2 REN RB8 TX8 RI TIPCON: SMOD -- -- -- --- --- PD IDLET2CON: TF2 EXF2 RCLK TCLK EXEN2 TR2 C/_T CP/_RL2TH2,TL2波特率为9600bpsavr:atmega64的USART的两个所用到的寄存器这里用的是uart0,所以初始化时应该设置相关的寄存器有:UCSR0A : RXC TXC UDRE FE DOR UPE U2X MPCMUCSR0C :-- UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOLUBRR0H 、 UBRR0L、UCSR0B :RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8别问我这些都是代表什么含义,不懂自己翻书去。
PROTEUS仿真如下图:仿真结果如下图所示:其中要注意的是:因为我在仿真中只能选择atmega64的CKSEL Fuse中的8MHz,所以在AVR的程序中初始化波特率是按8MHz来计算的。
所以仿真归仿真,注意实际中应用。
51单片机用定时器1来产生波特率时,看书据说模式2下,12MHz时最高只能到达4800bps。
这里就只好用定时器2来。
不过也挺好用的。
仿真时用的是8052核。
否则没反应不要怪我哦。
最后把程序附上,里面有些变量声明了没有用到,当初只是实验。
51的:#include "reg52.h"#define AA 0x61#define commun_symbol 0x31sbit LED="P2"^0;unsigned char Tx[]={"my name is seven!"};void uart_init(void){ SCON = 0x50; RCAP2H = 0xFF; RCAP2L = 0xD9; TH2 = 0xFF; TL2 = 0xD9; T2CON = 0x34; } void uart_send(unsigned char byData){ TI=0; SBUF=byData; while(TI==0); TI=1;} unsigned char uart_receive(void){ RI=0; while(RI==0); RI=1; return(SBUF);} void main(){ unsigned char byBuff,i; uart_init(); uart_send(commun_symbol); while(1) { byBuff="uart"_receive(); LED="1"; if(byBuff==0x31) { for(i=0;i<20;i++) { P1=byBuff; uart_send(Tx[i]); } } }}atmega64的程序:两个文件,一个是将函数模块化,别一个是主函数,调用(- -!最近习惯将程序模块化。
proteus模拟串行口通信
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结果如下:。
串行方式使用12864的proteus仿真实例
程序如下:
/*取模方式:行列式逆向阴码*/
/*参数A0=0时表示发命令A0=1时表示发送示数据*/
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit LCD_SI=P3^0;//clock input同步时钟输入端
LCD_write(0x04|(0x0f&column_f),0); //设定列地址低4位为0
for(j=0;j<column_sum;j++)
{
LCD_write(BMP[d_where],1);
d_where++;
}
}
}
//------------------------------------------------------------------------------
sbit LCD_SCL=P3^1;//data input/output串行数据输入、输出端
sbit LCD_A0=P3^2;//选择命令还是数据
sbit LCD_RST=P3^3;//复位
sbit LCD_CS=P3^4;//片选
uchar code BMP[]=
{0xFB,0xDB,0xBB,0x7B,0x9B,0x63,0xBF,0xCF,0xF0,0x37,0xF7,0xF7,0xD7,0xE7,0xFF,0xFF,
LCD写函数
void LCD_write(数据或者命令,A0选择)
****************************************************************/
(完整word版)proteus串口仿真
利用“串口调试助手”等软件调试 PROTEUS 环境中 51单片机的串行通信在前面的博文“利用 PROTEUS 软件调试串口通信最简单实用的方法”中,做而论道介绍了利用 Virtual Terminal(虚拟终端)调试串口通信的方法。
但是 Virtual Terminal 有一定的局限性,只是适合于调试使用键盘输入少量数据的情况。
如果是需要利用 PC 机器的串行口,和其它的软件进行串行通信,Virtual Terminal 就办不到了。
下面,做而论道将介绍两种另外两种仿真调试串口通信的方法。
1、利用 COMPIM 组件在 PROTEUS 软件中,可以找到一个 COMPIM 组件,它的图形、以及默认属性可见下图:把 COMPIM 放在仿真电路图中,当仿真运行起来之后,送到 COMPIM 3 号引脚的串行数据,将会通过 PC 机的 COM1 串行口输出,如果在 PC 机的 COM1 串行口外接一条电缆,可将串行数据送到其它的硬件设备上。
同样道理,其它的硬件设备送到 PC 机的 COM1 的串行数据,也会在 COMPIM 的2号引脚出现,送到仿真电路里面。
COMPIM 组件内部,自带 RS-232 和 TTL 的电平转换功能,因此不需要再使用电平转换芯片。
利用 COMPIM,就可以用一台 PC 机,仿真带有串行口的单片机系统,通过外接的电缆,和另外一台 PC 机进行全双工的串行通信。
十分轻松的就实现了对远程测量、控制系统进行仿真调试。
2、利用 Virtual Serial Port Driver 软件上述的调试方法,可以说是很完备的了,但是还是必须在两个串行口之间连接一条串行通信电缆。
为了省去这条电缆,就应该看看虚拟串口软件。
Virtual Serial Port Driver 软件可以为 PC 机增加一些两两连接的虚拟串行口。
该软件运行起来如下图所示:在图中可以看到,COM1、COM2 就是“一对连接好虚拟串行口”;PC 机原来就有的实际的串行口,称为物理串行口,为 COM3。
基于PROTEUS的单片机串口通信的实例设计与仿真
【 关键 词】rtu 软件 ; Poes 串口通信 ; 仿真
O
引言
Viul e a P r r a S r l ot XP软 件 是 一 种 高级 的 配置 工 具 。用 于模 拟 RS 3 t i s 22
串 口通 信 , 以使 用 它 为 应 用 程 序 提 供 虚 拟 串 口 . 个 虚 拟 串 口的 功 可 这 Poe s 件 是 由英 国 L bC ne lcrnc 司 开 发 的 E A 工 rtu 软 a etr et i E o s公 D 能 就像 标 准 的硬 件 串 口一 样 , 研 发 人 员 提 供便 利 。 为 具 软件 , 已有 近 2 0年 的 历 史 , 全 球 已得 到广 泛 使 用 。 它不 仅 是模 拟 在 使 用 软件 V r a ei o sX , 开 软 件 后 . 图 2所 示 .OM3 iu l r l r P 打 t S aPt 如 C 电 路 、 字 电路 、 数 混 合 电路 的 设 计 与 仿 真平 台, 是 目前 最 先进 的 数 模, 也 是 电脑 上 实 际 的 物 理 串 口 , 击 “ d ar可 立 即 添加 一 对 虚 拟 串 口 单 A dp i ” 实 现嵌 入 式 系 统 在 计 算 机 上 完 成从 原 理 图设 计 、代 码调 试 与仿 真 、 系 C M1和 C M2 这 样 就 连 接 好 一对 虚 拟 串 口 。 O O , 统 测 试 与 功 能 验 证 到 形 成 P B的完 整 的设 计 、 真 和 研 发 的 平 台 。在 C 仿 22 上位 机 软 件 设 置 . 缺 乏 硬 件 的情 况 下 , 是 一 款 非 常 实用 的仿 真 软 件 , 仿 真 的原 理 图 经 这 其 P C与 单 片 机 的通 信 常 用 V B或 V 中的 MS o C C mm控 件 编写 . 设 本 验证后可直接应用到现实中。 计 使 用 “ 口调 试 助 手 ” 实 现 P 对 Poe s 联 系媒 介 。 如 图 3所 串 来 C rtu 的 目前 , 多 高 校 已引 入 这 套 软 件 , 为理 论 教 学 和 实 践 教 学 的 必 很 作 示 , 类 软件 的使 用 一 定 要 注 意 串 口通 信 的 参 数 的 设 置 ( 串 口 , 特 该 如 波 要补充 , 践证明效果很好 ; 且 , 实 而 在一 些 像 海 尔 等知 名 公 司也 已将 它 率 , 据位 , 验 位 , 止 位 )它 们 必 须 与 单 片 机 程 序 总 的 串 E设 置 相 数 校 停 , l 作 为仿 真 和 研 发 平 台 , 大 提 高 了 工作 效 率 , 短 了研 发 周 期 。 大 缩 对 应 。串 口调 试 助 手 则 可 以 真 实 的模 拟 上 位 机 与 单 片 机 进 行 通 信 。正 本 文 通 过 实 例 , A 8 C 1 片 机 为 核 心 , 计 了一 个 P 以 T9 5 单 设 c与 单 确 地使 用 所 有 的信 号 线 和 模 拟 波 特 率 的 工作 , 以 和 使 用 真 实 串 口一 可 片机 的进 行 串 口通信 的 功 能 , 详 细 说 明 了 在 P O E 并 R T US平 台 下 进 行 样 传输 文 件 、 据 。 数 串 口使 用 和 调 试 的 基 本 方 法 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
串行通信UART和PROTEUS仿真设计
C51 跟atmega64 的串行通信。
相关理论知识这里就不多说,只提几个:
51 的UART 所用的几个寄存器
SCON:SM0 SM1 SM2 REN RB8 TX8 RI TI
PCON: SMOD -- -- -- --- ---PD IDLE
T2CON: TF2 EXF2 RCLK TCLK EXEN2 TR2 C/_T CP/_RL2
TH2,TL2
波特率为9600bps
avr:atmega64 的USART 的两个
所用到的寄存器
这里用的是uart0,所以初始化时应该设置相关的寄存器有:
UCSR0A:RXC TXC UDRE FE DOR UPE U2X MPCM
UCSR0C :-- UMSEL UPM1 UPM0 USBS UCSZ1 UCSZ0 UCPOL
UBRR0H、UBRR0L、
UCSR0B :RXCIE TXCIE UDRIE RXEN TXEN UCSZ2 RXB8 TXB8
别问我这些都是代表什么含义,不懂自己翻书去。
proteus 仿真如下图:
仿真结果如下图所示:
其中要注意的是:
因为我在仿真中只能选择atmega64 的CKSEL Fuse 中的8MHz,所以在AVR 的程序中初始化波特率是按8MHz 来计算的。
所以仿真归仿真,注意实际中应用。
51 单片机用定时器1 来产生波特率时,看书据说模式2 下,12MHz 时最高。