一、STC15F2K60S2单片机简介

中国深圳宏晶STC系列单片机是2005年推出中国本土的第一款具有全球竞争力的,且与MCS-51兼容的STC系列单片机。它完全兼容51单片机,是新一代增强型单片机,速度快、抗干扰性强、加密性强,带ADC/PWM,超低功耗,可以远程升级,内部有MAX810专用复位电路,价格低廉。深圳宏晶科技有限公司根据市场需求,在STC89C51、STC89C52的基础上,先后推出STC10、STC11、STC12、STC15系列单片机。

其中,STC15F2K60S2单片机是一种增强型的8051单片机,是新型的FLASH单片机,与传统的8051系列单片机兼容,在片内资源、操作性能和运行速度上做了很大的的改进。IAP15F2K60S2是可以把单片机芯片硬件配置为具有仿真功能的单片机,与Keil C51编译器配合使用,进行仿真实验。

二、STC15F2K60S2单片机串口通信的相关知识

STC15F2K60S2单片机内部有两个可编程的全双工串行通信接口。每个串行口由一个数据缓存器、一个移位寄存器、一个串行控制器和一个波特率发生器组成。每个串行口的数据缓冲器在物理上分为两个独立的发送、接收缓冲器,可以同时发送和接收数据。发送缓存器只可以写入数据,接收缓存器只能读出数据,两个缓冲器共用一个地址。串口1的数据缓冲器为SBUF,地址为99H,串口2的数据缓冲器为S2BUF,地址为9BH。与串行口相关的特殊寄存器见下表。

与串行口相关的特殊寄存器

寄存器 功能 地址 位地址 复位值
PCON 电源控制寄存器 87H SMOD SMOD0 LVDF POF GF1 GF0 PD IDL 00110000
AUXR 辅助寄存器 8EH T0x12 T1x2 UART_M0x6 T2R T2C/T T2x12 EXTRAM S1ST2 00000001
CLK-DIV 时钟分频寄存器 97H MCKO-S1 MCKO-S0 ADRJ Tx-Rx Tx2-Rx2 CLKS2 CLKS1 CLKS0 00000000
SCON 串口控制寄存器 98H SM0 SM1 SM2 REN TB8 RB8 TI RI 00000000
SBUF 串口数据寄存器 99H 00000000
S2CON 串口2控制寄存器 9AH S2M0 - S2M2 S2REN S2TB8 S2RB8 S2TI S2RI 00000000
S2BUF 串口2数据缓冲区 9BH 00000000
AUXR1 辅助寄存器 A2H S1_S1 S1_S0 CCP_S1 CCP_S0 SPI_S1 SPI_S0 0 DPS 01000000
IE 中断控制寄存器 A8H EA ELVD EADC ES ET1 EX1 ET0 EX0 00000000
IE2 中断控制寄存器2 AFH - - - - - ET2 ESPI ES2 xxxxx000
IP2 中断优先级控制寄存器2 B5H - - - - - - PSPI PS2 xxxxxx00
IP 中断优先级控制寄存器 B8H PPCA PLVF PADC PS PT1 PX1 PT0 PX0 00000000
P_SW2 外围功能切换寄存器 BBH - - - - - S4_S S3_S S2_S xxxxx000

(1)寄存PCON中的SMOD位为波特率倍增系数选择位,SMOD为1时,波特率加倍。

(2)辅助寄存器AUXR中的UART_M0x6用于设置串口1在方式0时数据传输的波特率,置1时波特率为fsys/2,置0时波特率为fsys/12。辅助寄存器AUXR中的S1ST2位用于选择串口1在方式1、3时的波特率发生器,置1时选择T2为波特率发生器,置0时选择T1为波特率发生器。

(3)串口控制寄存器SCON的功能和用法与一般的8051单片机类似,不同的是其中的SM0/FE位可以用作帧错误检测。

(4)数据寄存器SBUF和S2BUF分别用于串口1和串口2的数据缓冲器。

(5)寄存器S2CON用于设置串口2的工作方式,其余用法与SCON相同。

(6)寄存器IE、IE2中的PS、PS2位分别用于控制串口1和串口2的中断允许与禁止。置1为允许,置0为禁止。

(7)寄存器IP、IP2中的PS、PS2分别用于控制串口1和串口2的中断优先级,置1为高优先级,置0为低优先级。

(8)时钟分频寄存器CLK_DIV中的Tx_Rx用于设置串口1的中继广播方式,置1为中继广播方式,置0为正常工作方式。

(9)辅助寄存器AUXR1的S1_S1、S1_S0位用于串口1的硬件引脚切换,具体情况如下表。

串口1的硬件引脚切换

S1_S1 S1_S0 TXD RXD
0 0 P3^1 P3^0
0 1 P3^7 P3^6
1 0 P1^7 P1^6
1 1 无效

(10)寄存器P2_SW2的S2_S位用于串口2的硬件引脚切换,具体情况如下表。

串口2的硬件引脚切换

S2_S TXD2 RXD2
0 P1^1 P1^0
1 P4^7 P4^6

另外,对于波特率,还有一个很重要的寄存器,即电源控制寄存器(PCON),电源管理寄存器(PCON)也在特殊功能寄存器中,字节地址为87H,不可位寻址,复位值0x00。

PD:掉电模式设定位。PD=0时,单片机处于正常工作状态;PD=1时,单片机进入掉电(Power Down)模式,可由外部中断低电平触发或由下降沿触发或者硬件复位模式唤醒,进入掉电模式后,外部晶振停振,CPU、定时器、串行口全部停止工作,只有外部中断继续工作。

IDL:空闲模式设定位。IDL=0时,单片机处于正常工作模式;IDL=1时,单片机进入空闲(IDLE)模式,除CPU不工作外,其余的部件继续工作,在空闲模式下可由任何一个中断或硬件复位唤醒。

三、串口通信程序

注:以下程序在一定程度上已调试成功,但是因为有很多功能没有实现完,所以后期可能需要修改,后期会进行更新。

1. UART头文件

#ifndef _UART_H_
#define _UART_H_#include <STC15F2K60S2.H>#ifndef uchar
#define uchar unsigned char
#endif
#ifndef uint
#define uint unsigned int
#endifextern bit pageflag;  //返回页面ID标志
extern uchar pageID;    //页面ID号
extern uchar pagenum;   //页面结束数据检测,满3代表结束void write_COM(uchar COM);
void write_txt(char *s);
void write_END(void);
void UART_Init();#endif

2. UART程序

#include "UART.h"/*********串口送数据**********/
void write_COM(uchar COM)
{SBUF=COM;         while(!TI);TI=0;
}
/*********发送文本串**********/
void write_txt(char *s)
{int i=0;while(s[i]!=0){write_COM(s[i]);i++;}
}
/*********发送结束符**********/
void write_END(void)
{write_COM(0xFF);write_COM(0xFF);write_COM(0xFF);
}
/*********串口初始化**********/
void UART_Init()
{       //串口1   初始化SCON = 0x50;   AUXR &= 0xBE;  AUXR |= 0x00;    TMOD &= 0x0F; TMOD |= 0x20;           TH1 = 0xfd;                 TL1 = 0xfd;                 TR1 = 1;                         //定时器1启动ES = 1;                         //开放串口中断EA = 1;  //      //串口2   初始化
//    S2CON = 0x10;
//    T2L = 0xE8;
//    T2H = 0xFF;
//    AUXR &= 0xE3;
//    AUXR |= 0x10;
//    IE2 &= 0xFE;
//    IE2 |= 0x01;             }/************UART1 中断服务程序*******************/
void Uart1(void) interrupt 4
{uchar dataflag=0;//返回的十六进制数据的第一位if(RI)                           //如果是接收中断{RI=0;dataflag = SBUF;    //将接收缓冲区的数据保存到num1变量中/***********页面接收**********/            if(dataflag==0x66) pageflag = 1;if(pageflag==1){pageID = dataflag;//接收页面ID号if(dataflag==0xff)   //开始接收结束符{pagenum++;if(pagenum==3) pageflag = 0;//接收3个结束符,数据接收完成                }}  }           else                           //如果是发送中断,将TI清0TI = 0;
}

STC15F2K60S2单片机的串口通信程序及相关知识相关推荐

  1. arm linux串口控制led,通信程序设计 - Linux下ARM和单片机的串口通信设计

    3 通信程序设计 ARM 与单片机的串口通信程序包括两方面: 一方面是作为上位机的ARM 的串口通信程序,另一方面是作为下位机的单片机的串口通信程序.在通信之前必须制定合理的通信协议以保证通信的可靠性 ...

  2. labVIEW与单片机实现串口通信的设计过程

    1.概述 在现代测控系统中,我们经常会采用上位机和下位机的开发控制模式.下位机主要是用来采集数据,可以通过嵌入式控制器.单片机控制器.PLC等来实现.上位机主要是图形界面,用来实时显示采集数据,并进行 ...

  3. 【转】Qt编写串口通信程序全程图文讲解

    Qt编写串口通信程序全程图文讲解 本文章原创于www.yafeilinux.com 转载请注明出处. (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或 ...

  4. 51单片机stc15w204s串口通信发数据接收数据串口中断发中文字符串完美运行软件延时发送一字节函数全注释

    这里写自定义目录标题 KEIL自己先调试通了然后再说下面的事 51单片机stc15w204s串口通信直接上文件 KEIL自己先调试通了然后再说下面的自己看看就可 KEIL自己先调试通了然后再说下面的事 ...

  5. 51单片机之——串口通信(含实现部分)

    目录 一  串口通信简介 二  前置知识 二  前置准备 三  实现单片机通过串口向电脑发送数据 四  实现单片机通过串口接收电脑发送数据 一  串口通信简介 本篇文章将实现两个部分,第一部分为单片机 ...

  6. 22.从零开始开发QT软件思路(单片机的串口通信)-- OpenCV从零开始到图像(人脸 + 物体)识别系列

    本文作者:小嗷 微信公众号:aoxiaoji 吹比QQ群:736854977 链接:https://mp.weixin.qq.com/s?__biz=MzU1MTgxNjQyMg==&temp ...

  7. java调用c 串口_基于C语言的java串口通信程序

    目录 1.前言 2.windows  串口通信API 3.C/C++封装  动态运行库 4.JAVA-JNI  java程序调用C++程序 一.前言 &ensp ;写这个博客主要是因为自己想用 ...

  8. STC15-STC15W4K56S4-STC15F2K60S2串口通信程序代码-提供源码下载

    源码下载地址: 源码: //**********************************************//STC15F2K60S2串口通信程序,将串口接受到的数据从串口发出去 //采 ...

  9. qt linux 串口eventdriven,详解 Qt 串口通信程序全程图文 (1)

    Qt 串口通信程序全程图文 是本文介绍的内容,在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourc ...

最新文章

  1. java竞拍系统代码,网上拍卖系统的设计与实现(源代码及全套资料).doc
  2. 【转】LUA内存分析
  3. 战略分析思路——商业模式及沙盘推演
  4. c mysql 免安装版_MySQL5.6免安装版环境配置图文教程
  5. zuul网关找不到服务_网关zuul中对所有下游服务权限做控制zuulauth
  6. 当select查询为空
  7. [web]EL表达式失效
  8. 【TSP】基于matlab自适应动态邻域布谷鸟混合算法求解旅行商问题【含Matlab源码 1513期】
  9. spring框架实现实例化和依赖注入的方式分别是什么_Spring 面试问题
  10. python中的颜色表
  11. uni-app 更改头部导航条背景,改成背景图
  12. sql和mysql的区别
  13. 详述数据中心内部通风的几种形态
  14. vs2017无法安装 install Microsoft.VisualStudio.MinShell.Msi.Resources的问题
  15. BFE原生路由转发功能分析
  16. mac 远程计算机,Mac系统如何远程桌面到Windows系统
  17. DAY2-python数据类型、字符编码、文件处理
  18. MYSQL课程设计——图书管理系统(一)
  19. 鸿蒙App开发(1)---初识鸿蒙开发
  20. Excel批量创建带超链接的工作表目录

热门文章

  1. Android桌面Widget
  2. 解决:安装NVIDIA推荐驱动报错、nvidia-smi报错 Failed to initialize NVML
  3. java中两个list合并和去重操作
  4. 如何运营自己的跑腿系统呢?同城跑腿怎么选择?
  5. 全网首发,华为出品的495页《看漫画学Python》全彩PDF,自学转行,零基础首选。
  6. vue-qrcode-reader 实现直接扫码和相册扫码
  7. (Water Filling)注水算法原理与实现
  8. 06Ni9DR钢板、9Ni钢
  9. flatMapToInt
  10. Rxjava响应式编程