{
SCON = 0x50; //8位数据,可变波特率
AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T
TMOD &= 0x0F; //设定定时器1为16位自动重装方式
TL1 = 0xFE; //设定定时初值
TH1 = 0xFF; //设定定时初值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
}
GPIO10,UART0,UART1,I2C和SPI接口的用途及优缺点:
1、SPI: SPI(Serial Peripheral Interface)是MOTOROLA公司提出的同步串行总线方式。高速同步串行口。3~4线接口,收发独立、可同步进行
因其硬件功能强大而被广泛应用。在单片机组成的智能仪器和测控系统中。如果对速度要求不高,采用SPI总线模式是个不错的选择。它可以节省I/O端口,提高外设的数目和系统的性能。
标准SPI总线由四根线组成:串行时钟线(SCK)、主机输入/从机输出线(MISO)。主机输出/从机输入线(MOSI)和片选信号(CS)。有的SPI接口芯片带有中断信号线或没有MOSI。
2、SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。
主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。
3、I2C:(Inter-Integrated Circuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备
4、I2C总线用两条线(SDA和SCL)在总线和装置之间传递信息,在微控制器和外部设备之间进行串行通讯或在主设备和从设备之间的双向数据传送。I2C是OD输出的,大部分I2C都是2线的(时钟和数据),一般用来传输控制信号。
I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在同一个I2C总线上共存。
5、I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频设备之间的音频 数据传输而制定的一种总线标准。
I2S则大部分是3线的(除了时钟和数据外,还有一个左右声道的选择信号),I2S主要用来传输音频信号。如STB、DVD、MP3等常用
6、UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢。
UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。
什么是波特率?在51微控制器中如何使用? 波特率就是一秒种传输0或1的个数,若波特率是9600那么它传输一位0或1的时间就是1/9600秒如果串列埠工作在方式一下波特率是9600晶振是11059200
定时器选用timer1的自动重灌模式
即1/9600=定时时间
就是1/9600=(1232/11059200)(256-定时初值)。那么
定时初值=256-(11059200/(12329600));
这里的32是51微控制器的硬体典型结构,串列埠通讯使用的频率是晶振频率的1/32或者1/16,但是这种模式下,限制了波特率的提高,因此,现在一些改进的51微控制器是1/2分频。
楼主,晓得你提第二次问题了,我上会儿回答过了一点
我本蛮想帮你回答的,但这个公式在这打不进去,而且还有蛮多文字,你又不加点赏分,好发时间了
51微控制器波特率设定主要有以下两种方式:1) 工作方式0 ,2)工作方式1 。
1) 工作方式0
SM0=0且SM1=0时,串列埠选择工作方式0,实质这是一种同步移位暂存器模式。 其资料传输的波特率固定为Fosc/12,资料由RXD引脚输入或输出,同步时钟由TXD引脚输出。
2)工作方式1
当SM0=0且SM1=1时,串列埠选择工作方式1,其资料传输的波特率由定时/计数器T1、T2的溢位速率决定,可通过程式设定。当T2CON暂存器中的RCLK和TCLK置位时,用T2作为传送和接收波特率发生器,而RCLK=TCLK=0时,用T1作为波特率发生器,两者还可以交叉使用,即传送和接收采用不同的波特率。资料由TXD引脚传送,由RXD引脚接收。
TH1 = TL1 = 256 - 11059200/(12 32 9600) =定时时间(ms) 110592m晶振
51微控制器波特率怎么成57600
按如下方法设定,波特率是57600
void UartInit(void) 57600bps@110592MHz
{
PCON |= 0x80; 使能波特率倍速位SMOD
SCON = 0x50; 8位资料,可变波特率
TMOD &= 0x0f; 清除定时器1模式位
TMOD |= 0x20; 设定定时器1为8位自动重灌方式
TL1 = 0xFF; 设定定时初值
TH1 = 0xFF; 设定定时器重灌值
ET1 = 0; 禁止定时器1中断
TR1 = 1; 启动定时器1
}
如果用的是110592Mhz的晶振的话,把
TL1 = 0x0FD;
TH1 = 0x0FD;
改成:
TL1 = 0x0F4;
TH1 = 0x0F4;
使用51微控制器你需要达到以下基本条件
1、至少要搭建一个最小系统
2、你需要编制一个51的控制程式
3、你需要将程式编译连线成HEX或BIN格式的程式码并下载或烧录到51微控制器
这样你就可以使用这款51微控制器了。
我是一名多年的微控制器工程师,下面的51微控制器教程学习方法你参考一下
1 首先了解微控制器的硬体结构。
2 掌握很基本的数电模电知识,如二进位制、十进位制、十六进位制之间的转换,与、或、非逻辑关系等。
3 熟悉5个基本语句的运用,如:if while for switch/case do-while,讲真的,如果你不懂太多术语,if while for已经可以满足你的日常实验需要,我个人有体会。
4 熟悉上面的就可以从简单的实验入手,把更多的C语言附带术语学上,越积累越多,渐渐变成微控制器高手。
5 如果你想学习更多微控制器和程式的知识,可以看看我整理好的“17个实验学会微控制器”,百度一下“17个实验学会微控制器”就可以看到在首页了,从零开始打造一个微控制器高手。
6 学微控制器靠的是多玩实验,不能三天打鱼两天晒网,只要坚持就会看到希望。如果不坚持,就很难学会,如果坚持,几个月后的微控制器就已经很厉害了。加油,祝你成功!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)