从零开始学单片机(九)串口通信

发布者:代码漫游者最新更新时间:2016-03-09 来源: eefocus关键字:单片机  串口通信 手机看文章 扫描二维码
随时随地手机看文章
串口通信是单片机一个重要的部分,单片机和PC,单片机和单片机之间的通信大都用串口。单片机的串口是全双工异步串口通信方式。通过TXD(P3.1)发送,RXD(P3.0)引脚接收输入。串口传送数据是一帧一帧发送的,它有四种工作方式,同时也可以做并行I/O的扩展。

图上是串口的结构图。

SBUF是数据缓冲寄存器,发送和接收用的是一个地址,但是不用担心冲突,读只能从接收缓冲区,写只能在发送缓冲区里。

寄存器SCON(SM0 SM1 SM2 REN TB8 RB8 TI RI)

SM0和SM1: 工作方式选择(0-3),方式1和方式3使用T1产生波特率,方式0和方式2是固定速率。

SM2 :在方式2和方式3的多级通信控制位

REN:允许串行接收控制位,0禁止接收

TB8:对于方式2和方式3,是发送的第9位

RB8:对于方式2和方式3,是接收的第9位;对于方式1,是接收到的停止位

TI:发送中断标志,发送完一帧后置位,必须由软件清零

RI:发送中断标志,接收完一帧后置位,必须由软件清零

寄存器PCON(最高位SMOD)

SMOD=1时,波特率加倍

程序:PC与单片机通信,PC发送字符,单片机接收后返回给PC

PC端程序,VB编写,使用MSCOMM控件

Private Sub Command1_Click()

MSComm1.Output = Text1.Text '发送数据

End Sub

Private Sub Form_Load()

MSComm1.CommPort = 4 '设置串口的端口号

MSComm1.Settings = "9600,n,8,1" '设置串口的波特率等参数

MSComm1.RThreshold = 1 '设置最小接收的字节数

MSComm1.PortOpen = True '打开串口

End Sub

Private Sub MSComm1_OnComm()

Select Case MSComm1.CommEvent

Case comEvReceive

Text2.Text = Text2.Text & MSComm1.Input '接收数据

End Select

End Sub

单片机程序:

#include

void UartInit();

void UartSendChar(unsigned char ch);

void main(void)

{

UartInit();

while(1);

}

void UartInit()

{

SCON = 0x50; // SCON: 模式1

TMOD = 0x20; // TMOD: 定时器1 模式2

PCON = 0x00; // SMOD=0;

TH1 = 0xFD; // Baud:9600 波特率=2SMOD×fosc/(32×12×(256-TH1))

TL1 = 0xFD;

IE = 0x90;

TR1 = 1;

EA = 1;

}

void UartSendChar(unsigned char ch)

{

SBUF = ch;

while(TI==0);

TI=0;

}

void UartRec() interrupt 4

{

unsigned char ch;

ch = SBUF;

if(RI)

{

RI = 0;

UartSendChar(ch);

}

}

关键字:单片机  串口通信 引用地址:从零开始学单片机(九)串口通信

上一篇:学习51单片机的基本调试经验
下一篇:从零开始学单片机(八)蜂鸣器唱歌

推荐阅读最新更新时间:2024-03-16 14:46

基于51单片机驱动A4988实现步进电机逆时针转动
一、简介 A4988 是一款完全的微步电动机驱动器,带有内置转换器,易于操作。该产 品可在全、半、1/4、1/8 及 1/16 步进模式时操作双极步进电动机,输出驱动 性能可达 35 V 及 ±1 A。A4988 包括一个固定关断时间电流稳压器,该稳压器 可在慢或混合衰减模式下工作。转换器是 A4988 易于实施的关键。只要在“步 进”输入中输入一个脉冲,即可驱动电动机产生微步。无须进行相位顺序表、高 频率控制行或复杂的界面编程。 二、接线 典型接线图 实际接线 此处为方便 MS1-MS3不接ENABLE 低电平有效 此处不接 有需要可自行连接配置 A4988 模块 STC89C52RC 步进电机 电源 DIR P
[单片机]
基于51<font color='red'>单片机</font>驱动A4988实现步进电机逆时针转动
51单片机学习笔记6 -- 定时器中断
1.引脚复用 通过原理图可以发现定时器0(T0)和定时器1(T1)是P3.4引脚和P3.5引脚的复用功能,当将这两个引脚配置为定时器功能时,引脚外接的传感器(模块)将不能正常使用,即引脚同一时间只能作为一个功能使用(普通I/O或复用功能) T0、T1是两个16位定时器/计数器,每经过1个机器周期内部的16位计数寄存器的值加1,当计数器装满时会溢出,在定时模式时单次最大的定时时间是 65535*1.085us 的时间(单位us) 2.定时器配置 定时器0配置需要用到的寄存器(TCON、TMOD、TL0、TH0) 1.定时器/计数器控制寄存器TCON TCON为定时器/计数器T0、T1的控制寄存器,同时也锁存T0、T1溢出
[单片机]
51<font color='red'>单片机</font>学习笔记6 -- 定时器中断
ADC0832模数转换MSP430单片机程序+电路图
下面是电路图: ADC0832封装图 ADC0832与单片机连接图 ADC0832时序图 程序源码下载: #include msp430f2121.h #define DO (P1IN&BIT7) #define uchar unsigned char #define uint unsigned int /*********************************************** sbit cs=P2^0; sbit clk=P2^1; sbit DI=P2^2; sbit DO=P2^6; ***************************************
[单片机]
ADC0832模数转换MSP430<font color='red'>单片机</font>程序+电路图
PIC单片机将2个16进制数转换为5位十进制数并显示
#INCLUDE P16F877.inc W_TEMP EQU 20H ; 实际上20H、A0H、120H和1A0H STATUS_TEMP EQU 21H ;在体0中建立保护单元 PCLATH_TEMP EQU 22H ;在体0中建立保护单元 ORG 000H GOTO A1 ORG 004H;定时中断入口地址 GOTO ZD01; ORG 0CH A1 MOVLW 1;位1显示数 MOVWF 5AH; MOVLW 2;位2显示数 MOVWF 5BH; MOVLW 3;位3显示数 MOVWF 5CH; MOVLW 4;位4显示数 MOVWF 5DH; MOVLW 4;显示位数 MO
[单片机]
AT89S51单片机与82C55接口芯片的设计
1.硬件接口电路 下图所示为AT89S51单片机扩展一片82C55的电路图。图中,74LS373是地址锁存器,P0.1、P0.0经74LS373与82C55的地址线A1、A0连接;P0.7经74LS373与片选端CS相连,其他地址线悬空;82C55的控制线RD(的反)、WR(的反)直接与AT89S51单片机的RD(的反)和WR(的反)端相连;AT89S51单片机的数据总线P0.0~P0.7与82C55的数据线D0~D7连接。 2.确定82C55端口地址 图中82C55只有3条线与AT89S51单片机的地址线相接,片选端CS、端口地址选择端Al、A0,分别接于P0.7、P0.1和P0.0,其他地址线全悬空。显然只要保证PO.7为
[单片机]
AT89S51<font color='red'>单片机</font>与82C55接口芯片的设计
16位Σ-Δ A/D转换器AD7705与微控制器的接口设计
   AD7705是 AD公司新推出的16位Σ-ΔA/D转换器。器件包括由缓冲器和增益可编程放大器(PGA)组成的前端模拟调节电路,Σ-Δ调制器,可编程数字滤波器等部件。能直接将传感器测量到的多路微小信号进行A/D转换。这种器件还具有高分辨率、宽动态范围、自校准、优良的抗噪声性能以及低电压低功耗等特点,非常适合仪表测量、工业控制等领域的应用。它采用三线串行接口,有两个全差分输入通道,能达到0.003%非线性的16位无误码数据输出,其增益和数据输出更新率均可编程设定,还可选择输入模拟缓冲器,以及自校准和系统校准方式。工作电压3 V或5 V。3 V电压时,最大功耗为1 mW,等待模式下电源电流仅为8 μA。    1 内部结构
[模拟电子]
单片机处理触摸按键例程
//文件touchbutton.h #ifndef _TOUCHBUTTON_H_ #define _TOUCHBUTTON_H_ //=========宏定义=========================================== #define DEF_WATCH_TKREFER //查看参考 -用于测试 //=========================================================== #define V_REFER 1 //AD值超过此值 更新参考值 #define V_PRESS 7 //AD值-参考 大于此
[单片机]
<font color='red'>单片机</font>处理触摸按键例程
单片机内部模拟比较器的应用
一般来说,内部带A/D转换器的单片机价格都比较昂贵,而且一般只有8到10位的分辨率,这在高分辨率要求的场合显然不适用;而普通的单片机则根本没有A/D转换器。随着现代电子技术的发展,出现了一些体积小、内含模拟比较器的单片机,如ATMAL的AT89C2051、ZILOG的Z86E04、MICROCHIP的PIC16C620等,这些单片机在使用时连接比较器的端口一般只作普通I/O使用,而对其内置的模拟比较器的应用却很少。下面以AT89C2051为例,谈谈利用单片机内置模拟比较器来构成A/D转换器的新方法。 1 硬件转换电路 AT89C2051是MCS51单片机系列中的一种,它虽然只有20个引脚,却集成了51系列单片机的标准内核,
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved