这篇文章主要来介绍一下51单片机的串口,下面先来看一下与串口相关的寄存器。
图1 (该图来自51单片机技术文档)
下面来逐个介绍个寄存器。
SCON寄存器的SM1,SM2主要用来设置串行口的工作方式,具体对应关系见图2,REN:串行口接受使能位,当单片机要接受数据时该位应该置一,TB8:发送数据的第九位。在方式2或者方式3中TB8为发送的第九位数据。该位不是很常用,具体介绍请查看51单片机的技术文档,这里不多做介绍。TI:发送中断标志,由硬件在方式0串行发送第8位结束时置位,或在其它方式串行发送停止位的开始时置位,必须由软件清零。RI:接受中断标志,由硬件由硬件在方式0串行发送第8位结束时置位,或在其它方式串行发送停止位的中间时置位,必须由软件清零。
在这里需要提醒的是,大家在看技术文档是一定要注意那些必须由软件清零的标志位,在写程序时一定要记得清零。
图2(本图来自51单片机技术文档)
SBUF寄存器:(为了方便就直接截图说明了)
PCON寄存器D7位SMOD是串行波特率倍增位,SMOD为一时,串行口在工作方式1,方式2,方式3中波特率加倍,复位时,SMOD=0.
寄存器IPH,IPSADEN,SADDR不是很常用,在这里就不做介绍,我下面的程序中也没有用到,感兴趣的可以自己查阅一下技术文档。
接下来开始调试串口的方法和步骤。
1.STC—ISP下载软件自带串口调试功能。下面是软件界面
2.在串口调试之前还必须知道自己学习板接的是电脑的哪个端口,查看端口的方法如下:
右键单击桌面上的:我的电脑—设备管理器,如果学习板通过下载线连接到了电脑会显示如下界面:
从端口选项中可以看到我连接的是COM3.
3接下来的任务就是不程序下载到单片机中开始调试了(程序我会在下面给出,先把调试步骤介绍完)
程序下载完毕之后单击STC-ISP下载软件中的:串口助手按钮,就会出现如下界面:
然后在点击打开串口按钮,上图中显示的是:关闭串口,是因为我的串口已经打开了,接下来在单字符串发送区,输入要传送的数据,例如传送:77,选择十六进制发送,观察,学习班上LED的亮灭情况,和数据接区的反应。如下图:
需要注意的是必须要将COM(即端口号),比特率,校验位,数据位,停止位,设置正确否则会显示乱码。
可以观察到的现象是:led的第八个和第四个点亮了,原因也很简单,因为发送的数据是77,选择的是十六进制发送,即0111 0111,可以看到第8位和第四位是零,所以LED点亮了。接受单口显示data recieve ok,说明单片机数据接受成功。
最后也是最重要的就是编写程序了:下面是我的调试程序,希望对大家能有帮助。
(因为程序粘贴过来的时候注释会显示乱码,没办法只好使用截图,请大家将就着看一下,还有需要提醒的是程序的第57,58和第29行在截图时重复了请大家仔细对着行标号看就很清楚了)
程序的注释写的很清楚,我在这里就不重复解释了,不懂的请大家仔细看注释。
关键字:51单片机 串口程序 C语言版
引用地址:
51单片机串口程序C语言版
推荐阅读最新更新时间:2024-03-16 14:56
基于AT89S51单片机的PWM专用信号发生器设计
1 引言
涡流无损检测作为无损检测应用最广泛的方法之一,具有传感器结构简单、灵敏度高、测量范围大、不受油污等介质影响、抗干扰能力强等优点,已被广泛应用于冶金、机械、化工、航空等多个工业部门。然而由于受趋肤效应的影响,常被限制在对导体表面及亚表面层的检测上,这使其检测应用范围受到了很大的限制。但是,若检测线圈在脉冲激励作用下,因脉冲信号中含有丰富、连续的频率成分,所以检测线圈中所得到的信息不仅包含了被检测试件的表面、亚表面信息,还包含其深度信息,能够对材质以及缺陷进行定量评价。而脉冲信号的波形、频率、幅值、占空比等参数的改变对检测结果有着不同的影响。因此为了获得不同的脉冲激励下的检测结果。特制作了这一专用高精度大
[单片机]
51单片机,18B20,1602温度计+串口通信
制作出来的实物图如下: 仿真原理图如下(proteus仿真工程文件可到本帖附件中下载) 上位机: 安装程序解压到同一目录下。再运行setup安装。。。。 温度计.exe 编写环境Win10 x64. VS2010 x86 C++ MFC 测试环境Win10 x64. 在32位系统上,能不能正常使用还不清楚。 所以公布了源代码文件,如果在32位系统上,不能正常使用。 请使用源代码文件,在32位系统上重新生成一下应用程序。。。 单片机源程序如下: #include reg52.h #include math.h bit flag1s = 0, _up = 0;
[单片机]
C51单片机定时器/计数器中断功能详细分析(二)
一.外部中断相关寄存器 1.定时器/计数器控制寄存器控制寄存器(TCON) IT0:外部中断0触发方式控制位 当IT0=0时,为电平触发方式(低电平有效) 当IT0=1时,为边沿触发方式(下降沿有效) IT1:外部中断1触发方式控制位 当IT1=0时,为电平触发方式(低电平有效) 当IT1=1时,为边沿触发方式(下降沿有效) 2.中断允许控制寄存器(IE) EX0:外部中断0允许位; EX1:外部中断1允许位; EA :CPU中断允许(总允许)位。 二.外部中断的处理过程 1、设置中断触发方式,即IT0=1或0,IT1=1或0 2、开对应的外部中断,即EX0=1或EX1=1; 3、开总中断,即EA=1; 4、等待外部设
[单片机]
51单片机最小系统制作笔记
上面所示是51系列单片机最小系统全家福照片,组装完成后的照片如下: 本电路各输入、输出脚全部用插针引出,可以连接外围电路进行单片机电路的实验,芯片可以采用ATMEGA系列单片机和51系列单片机,51系列支持AT89S(ISP方式下载)及STC89C(串口方式下载)等型号的芯片。 一、原理图的准备 1.供电部分电路图 供电部分采用了USB取电和充电器取电两种方式,注意:两种方式只能选择使用一种,不能同时使用,否则容易损坏USB接口。 2.通讯部分电路图 利用通讯部分电路,可以进行串口通讯实验,也可做为宏晶芯片STC89S的程序下载接口。 3.程序下载部分电路图 AT89S系列芯片采用下面电路
[单片机]
51单片机-函数传参调用
本讲在上一讲的代码基础上讲解新的编程知识:函数参数传递调用! 1.推陈出新 上一讲的函数封装“delay();”是一个固定的功能,只能做延时1秒的作用,大多数情况下我们希望一个函数用相同的函数名通过修改一个值可以实现不一样的功能,所以就产生了函数带参调用的编程手法。 我们根据前面章节的基础实现通过修改函数参数值来实现LED不同延时的间隔闪烁,因为参数的传入在函数内容中是可以使用这个参数变量的,所以我们用“while(x--)”来让x决定延时的毫秒数。 延时部分如下,函数名改为“delay_ms”代表要延时多少毫秒 void delay_ms(unsigned int x) { unsigned int j;
[单片机]
【自学51单片机】11 -- UART串口通信
1、串行通信的初步认识 UART串行通信是单片机最常用的一种通信技术,通常用于单片机和电脑之间以及单片机和单片机之间的通信。 通信可分为并行通信和串行通信两种。(1)并行通信:数据的各各位可同时传送。(2)串行通信:数据只能按顺序一个一个位传送。STC89C52中P3^0(RXD)和 P ^1(TXD)是专门用作UART串行通信的引脚。 下面看下图11-1单片机之间的UART串口通信。 说明:GND 表示单片机系统电源的参考地,TXD 是串行发送引脚,RXD 是串行接收引 脚。他们之间通信要保证以下几点。 (1)电源基准相同,所以我们要把两个单片机的 GND 相互 连接起来, (2)TXD与RXD相连,比如单片机
[单片机]
分时复用程序范本51单片机程序框架
由于经常涉及到单片机开发,所以需要一个能够跑多任务的程序框架,用操作系统有点儿浪费资源,用普通线程方式又不能执行多任务,所以采取分时复用的方式,来跑多任务。 写一个范本为以后开发服务。 单片机源程序如下: #include common.h /************************************************************************************** * Variable definition ***********************************************************************
[单片机]
基于51单片机的高性能直流稳压电源
引言
众所周知,许多科学实验都离不开电,并且在这些实验中经常会对通电时间、电压高低、电流大小以及动态指标有着特殊的要求,因此,如果实验电源不仅具有良好的输出质量而且还具有多功能以及一定的智能化,那么就省去了许多不精确的人为操作,取而代之的是精确的微机控制,而我们所要做的就是在实验开始前对一些参数进行预设。这将会给各个领域中的实验研究带来不同程度的便捷与高效。因此,直流电源今后的发展目标之一就是不仅要在性能上做到效率高、噪声低、高次谐波低、既节能又不干扰环境,还要在功能上力求实现数控化、多功能化与智能化。本文所介绍的就是一个将开关电源和线性电源有机地结合起来,兼具二者优点的高性能直流稳压电源。由于在该电源中引入了单片机控制,故该
[单片机]