【转】51单片机串口程序(C语言版)

来源:互联网 发布:软件开发技术风险 编辑:程序博客网 时间:2024/05/01 20:47

http://hi.baidu.com/is_water/item/711238d7043c5cc31b72b462

这篇文章主要来介绍一下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行在截图时重复了请大家仔细对着行标号看就很清楚了)

程序的注释写的很清楚,我在这里就不重复解释了,不懂的请大家仔细看注释。

由于本人水平有限,难免有疏漏和不妥之处,请大家批评指正。(因为我现在比较忙,如果有什么意见或者建议请在本帖下面留言,不要在QQ打扰。我也会尽快回复大家,谢谢!)

 

原创粉丝点击