基于STCSTC15F2K60S2单片机的串口通讯..

合集下载

单片微机原理与接口技术(第2版)-基于STC15系列单片机(习题部分与答案)(3)

单片微机原理与接口技术(第2版)-基于STC15系列单片机(习题部分与答案)(3)

单片微机原理与接口技术-基于STC15系列单片机(第2版)习题部分第1章一、填空题1. 125= 01111101B= 7d H=( 0001 0010 0101)8421BCD码=(0110001 0110010 0110101)ASCII码。

2. 微型计算机由CPU、存储器、I/O 接口以及连接他们的总线组成。

3. 微型计算机的CPU是通过地址总线、数据总线、控制总线与外围电路进行连接与访问的,其中,地址总线用于CPU寻址,地址总线的数据量决定CPU的最大寻址能力;数据总线用于CPU与外围器件爱存储器、I/O接口)交换数据,数据总线的数量决定CPU一次交换数据能力;控制总线用于确定CPU与外围器件的交换数据的类型。

4. I/O 接口的作用是CPU与输入/输出设备的连接桥梁,相当于一个数据转换器。

5. 按存储性质分,微型计算机存储器分为_ _程序存储器______和数据存储器两种类型。

6. 16位CPU是指数据总线的位数为16位。

7 若CPU地址总线的位数为16,那么CPU的最大寻址能力为64K 。

8. 微型计算机执行指令的顺序是按照在程序存储中的存放顺序执行的。

在执行指令时包含取指、指令译码、执行指令三个工作过程。

9. 微型计算机系统由微型计算机和输入/输出设备组成。

10. 微型计算机软件的编程语言包括高级语言、汇编语言和机器语言三种类型。

二、选择题1.当CPU的数据总线位数为8位时,标志着CPU一次交换数据能力为D。

A. 1位B. 4 位C. 16位D. 8位2. 当CPU地址总线为8位时,标志着CPU的最大寻址能力为 C 。

A. 8个空间B. 16个空间C. 256个空间D. 64K个空间3. 微型计算机程序存储器空间一般由 A 构成。

A. 只读存储器B. 随机存取存储器4. 微型计算机数据存储器空间一般由 B 构成。

A. 只读存储器B. 随机存取存储器三、判断题1. 键盘是微型计算机的基本组成部分。

基于STC15F2K60S2 单片机的车载监控系统设计

基于STC15F2K60S2 单片机的车载监控系统设计

基于STC15F2K60S2 单片机的车载监控系统设计作者:徐胜李九生来源:《江苏科技信息》 2018年第19期摘要:针对儿童遗留车内,随着气温升高氧气含量不足而导致的悲剧,文章从如何避免此类安全事故出发,设计了以STC15F2K60S2单片机为控制核心,以热释电传感器AM412为人体检测单元的智能车载监控系统,详细介绍了系统总体设计、硬件设计、程序编写等开发过程。

关键词:STC15F2K60S2;电路;温度;报警中图分类号:TH13 文献标识码:A0 引言由于工作人员(校车司机、教师、家长)的粗心大意,儿童被锁车内窒息而亡的相关报道越来越多,给每个家长,以及每辆车等敲响了警钟。

根据调查,很多车载监控系统不够完善,忽视了车内遗留儿童,忽视了车内气温升高氧气含量不足等潜在危险,如果儿童遗留车内则会发生悲剧。

本文从如何避免此类安全事故出发,设计了智能车载监控系统。

1 系统总体设计智能车载监控系统以单片机STC15F2K60S2 为控制核心,实时检测车内温度。

如果车内部温度过高超过30 ℃时,且有儿童(幼儿)遗留在车内,监控系统显示屏会实时显示当前车内状态,同时开启车内报警系统:发出报警声,报警灯光闪烁,拨打110求救报警电话,向学校安全负责人发送安全短信,自动打开车窗通风,确保在施救前车内空气流通,最终实现安全营救,杜绝安全事故的发生[1],系统整体框架如图1所示。

2 硬件电路设计2.1 控制核心硬件电路2.1.1 STC15F2K60S2硬件电路考虑到本设计需要对数据进行分析处理速度要求不高,因此本系统选用编程简单、系统稳定、成本低的STC15F2K60S2单片机。

该单片机传承于经典的8051单片机,单时钟机器周期,内部集成高精准R/C时钟,高可靠复位电路。

为确保与SIM900A通信模块之间数据传输准确无误,时钟电路电容C1和C2选用30 pF,晶振频率选用11.059 2 MHz,减小波特率误差,满足系统设计要求。

根据STCSTC15F2K60S2单片机的串口通讯

根据STCSTC15F2K60S2单片机的串口通讯

湖南科技大学信息与电气工程学院《单片机课程设计报告》题目:基于STCSTC15F2K60S2单片机的串口通讯专业:自动化班级:一班姓名:罗永恒学号: 1209010303指导教师:范小春2015年 6月 30日单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

本文将具体介绍单片机与PC机进行串口通信的实现方法和编程方法,并且在最后给出一个实用的单片机与计算机通过串口通信的程序。

关键词:单片机串口通信第一章 STCSTC15F2K60S2的简介 (1)1.1 STCSTC15F2K60S2的内部结构框图 (1)1.2 STC15F2K60S的DIP封装图 (1)1.3 STC15F2K60S的各引脚简介 (2)第二章单片机通过USB与PC机的通信设计 (4)2.1设计方案选择 (4)2.1.1 PC机同单片机通信存在的问题 (4)2.1.2 USB接口同RS-232(DB-9)串口的比较 (4)2.1.3 USB转接芯片的选择 (4)2.2 通信功能要求 (5)第三章硬件电路图的设计 (5)3.1单片机最小系统 (5)3.2 USB与单片机连接主电路 (6)3.3 总电路图 (6)3.4 PCB图 (6)第四章程序设计 (7)4.1 串口初始化 (7)4.2 主程序 (7)4.3 中断服务程序 (8)4.4 总程序 (8)第五章总结与体会 (10)第六章参考文献 (11)第一章 STCSTC15F2K60S2的简介1.1 STCSTC15F2K60S2的内部结构框图1.2 STC15F2K60S的DIP封装图1.3 STC15F2K60S 的各引脚简介(1)电源引脚Vcc :一般接电源的+5V 。

STC15F2K60S2串口2程序

STC15F2K60S2串口2程序

STC15F2K60S2串口2程序下面是串口2 的程序,昨天一直没调出来的原因是由于串口发送完中断标志位,置位和清零上出了问题。

其中为什么要把它,照着资料手册上那种方式写才行,这我现在也没大清楚,我想可能这需要反汇编才看的出来,由于竞赛时间紧,只有暂且放下进一步的分析,下面是程序代码。

#include “reg51.h”sfrP4 = 0xc0;sfr P5 = 0xc8;sfr AUXR = 0x8e ;sfr S2CON = 0x9a ;sfr S2BUF = 0x9b ;sfr T2H = 0xd6 ;sfr T2L = 0xd7 ;sfr IE2 = 0xaf ;sfr IP2 = 0xb5 ;#define S2RI 0x01 // S2CON.0#define S2TI 0x02 // S2CON.1unsigned char temp ;bit flag1 = 0 , flag2 = 0 , busy = 0 ; unsigned char xdata Uart1TxBuffer [20] = “杜兴杰你必须加油个”; //void SendData ( unsigned char date ) ; //数据发送函数定义void Uart2Init(void)//9600bps@11.0592MHz{S2CON = 0x50; //8 位数据,可变波特率AUXR |= 0x04; //定时器2 时钟为Fosc,即1TT2L = 0xE0; //设定定时初值T2H = 0xFE; //设定定时初值AUXR |= 0x14; //启动定时器2 4 注意这里EA = 1 ;IE2 = 0x01 ; //开启串口中断ES2IP2 |= 0x00 ; //串口2 优先级0}void main( void ){char i ;P0 = 0;Uart2Init() ;SendData (C) ;SendData (C) ;for ( i = 0 ; i {SendData (Uart1TxBuffer[i]) ;}for ( i = 0 ; i {SendData (Uart1TxBuffer[i]) ;} SendData (C) ;SendData (C);while(1){if( flag2 == 1 ){SendData ( temp );flag2 = 0 ;}}}void Uart2( void ) interrupt 8{if( S2CON & S2RI ){S2CON &= ~ S2RI ; temp = S2BUF ;flag2 = 1 ;}if(S2CON & S2TI ){S2CON &= ~ S2TI ;busy = 0 ;}}void SendData ( unsigned char date ){while ( busy ) ; //busy = 1 ;S2BUF = date ;// while ( !( S2CON & 0x02 ) ) ;// S2CON &= ~ S2TI ;}下一步是把串口1 和串口2 加在一起,还有就是加入循环队列实现流控等tips:感谢大家的阅读,本文由我司收集整编。

STC15F2K60S2系列串口2通信程序

STC15F2K60S2系列串口2通信程序

STC15F2K60S2系列串口2通信程序#include#include "intrins.h"#define FOSC 12000000L //系统频率#define BAUD 9600 //串口波特率#define S2RI 0x01 //S2CON.0 不能进行位寻址#define S2TI 0x02 //S2CON.1#define S2RB8 0x04 //S2CON.2#define S2TB8 0x08 //S2CON.3#define S2_S0 0x01 //P_SW2.0unsigned char a,i=0;unsigned char String[32];bit busy;/*************系统初始化****************/void sys_init(void){P20=1;P32=1;P33=1;//P_SW2 &= ~S2_S0; //S2_S0=0 (P1.0/RxD2, P1.1/TxD2) //P_SW2 |= S2_S0; //S2_S0=1 (P4.6/RxD2_2, P4.7/TxD2_2) }/*************串口2初始化************************/void Uart2_Init(void){S2CON = 0x50; //8位可变波特率T2L = (65536 - (FOSC/4/BAUD)); //设置波特率重装值T2H = (65536 - (FOSC/4/BAUD))>>8;AUXR = 0x14; //T2为1T模式, 并启动定时器2IE2 = 0x01; //使能串口2中断EA = 1;}/*************发送发送字符************************/ void SendData(unsigned char dat){while (busy); //等待前面的数据发送完成busy = 1;S2BUF =dat; //写数据到UART2数据寄存器}/************发送字符串************************/ void SendString(char *s){while (*s) //检测字符串结束标志{SendData(*s++); //发送当前字符}}void main(){sys_init();Uart2_Init();while(1){if(P33==0){// P20=0;SendString("STC15F2K60S2\r\nUart T est !\r\n");}if(P32==0){// P20=1;//SendData(a);SendString(String);}}}/************UART2 中断服务程序*******************/ void Uart2() interrupt 8 using 1{if (S2CON & S2RI){S2CON &= ~S2RI; //清除S2RI位String[i++]= S2BUF; //P0显示串口数据if(i>32)i=0;}if (S2CON & S2TI){S2CON &= ~S2TI; //清除S2TI位busy = 0; //清忙标志}}。

12 STC15F2K60S2系列单片机的SPI接口 例题

12 STC15F2K60S2系列单片机的SPI接口 例题

/*-----------------定义 SPI 控制位----------------*/
#define SPIF
0x80
//SPSTAT.7
#define WCOL 0x40
//SPSTAT.6
#define SSIG
0x80
//SPCTL.7
#define SPEN
0x40
//SPCTL.6
SPIF
EQU 080H
;SPSTAT.7
WCOL
EQU 040H
;SPSTAT.6
SSIG
EQU 080H
;SPCTL.7
SPEN
EQU 040H
;SPCTL.6
DORD
EQU 020H
;SPCTL.5
MSTR
EQU 010H
;SPCTL.4
1
CPOL CPHA SPDHH SPDH SPDL SPDLL SPISS
RECV_UART: JNB RI, $ CLR RI MOV A, SBUF RET RET
;等待接收数据 ;清“0”RI 标志
;取串行接收数据
SPI_SWAP:
#ifdef MASTER
CLR SPISS
;拉低从机/SS
#endif
MOV SPDAT, A
;触发 SPI 发送
WAIT:
MOV A, SPSTAT
第 12 章 STC15F2K60S2 单片机的 SPI 接口
例题
例 12.1 计算机通过 RS232 串口向主单片机发送一串数据,主单片机的串口每收到一个 字节就立刻将收到的字节通过 SPI 口发送到从单片机中;同时,主单片机收到从单片机发回 的一个字节,并把收到的这个字节通过串口发送到计算机。可以使用串口助手观察结果。

基于STCSTC15F2K60S2单片机的串口通讯综述

基于STCSTC15F2K60S2单片机的串口通讯综述

湖南科技大学信息与电气工程学院《单片机课程设计报告》题目:基于STCSTC15F2K60S2单片机的串口通讯专业:自动化班级:一班姓名:罗永恒学号: 1209010303指导教师:范小春2015年 6月 30日单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

本文将具体介绍单片机与PC机进行串口通信的实现方法和编程方法,并且在最后给出一个实用的单片机与计算机通过串口通信的程序。

关键词:单片机串口通信第一章 STCSTC15F2K60S2的简介 (1)1.1 STCSTC15F2K60S2的内部结构框图 (1)1.2 STC15F2K60S的DIP封装图 (1)1.3 STC15F2K60S的各引脚简介 (2)第二章单片机通过USB与PC机的通信设计 (4)2.1设计方案选择 (4)2.1.1 PC机同单片机通信存在的问题 (4)2.1.2 USB接口同RS-232(DB-9)串口的比较 (4)2.1.3 USB转接芯片的选择 (4)2.2 通信功能要求 (5)第三章硬件电路图的设计 (5)3.1单片机最小系统 (5)3.2 USB与单片机连接主电路 (6)3.3 总电路图 (6)3.4 PCB图 (6)第四章程序设计 (7)4.1 串口初始化 (7)4.2 主程序 (7)4.3 中断服务程序 (8)4.4 总程序 (8)第五章总结与体会 (10)第六章参考文献 (11)第一章 STCSTC15F2K60S2的简介1.1 STCSTC15F2K60S2的内部结构框图1.2 STC15F2K60S的DIP封装图1.3 STC15F2K60S 的各引脚简介(1)电源引脚Vcc :一般接电源的+5V 。

STC15串口总结

STC15串口总结

//9600bps(22.1184MHz)
ห้องสมุดไป่ตู้
{
T2L = 0xD0; //设定定时初值
T2H = 0xFF; //设定定时初值
}
if(speedform==1) {
T2L = 0xE8; T2H = 0xFF; } }
//19200bps(22.1184MHz)
//设定定时初值 //设定定时初值
3、串口配置好,波特率设定好之后,打开串口。
STC15 串口总结
一、实验硬件
1、测试芯片 STC15F2K60S。
2、单片机通过 MAX232 电平转换跟计算机通信,波特率为
9600bps。
3、定时器 2 做波特率发生器。
二、程序
1、先配置串口,包括用那组串口,数据帧,波特率是否加倍
//串口配置
void uartconfiguration(void)
{
sendbyteuart(pbufferform[i]);
}
}
//串口中断服务函数
void UART1_int (void) interrupt UART1_VECTOR
{
ES=0;
//关串口中断
If(RI)
{
RI=0;
//………………………….接收中断服务函数部分…………………………… } If(TI) {
数的进行。在完成中断服务函数的时候,要将中断标志位清零,
否则,容易出现进入中断的混乱。
四、单片机串口给计算机发一组数据
1、单片机每次只能给计算机发一字节数据,若要发一组数据,
那要一字节一字节地发,并且发送的过程中,要等前一字节发送
完成,才能接着发送下一字节的数据,否则会出现数据不正确。 五、单片机串口接收计算机发送一组数据

STC15F2K60S2应用笔记

STC15F2K60S2应用笔记

STC15F2K60S2应⽤笔记STC15F2K60S2系列单⽚机是STC⽣产的单时钟/机器周期的单⽚机。

是⾼速/⾼可靠/低功耗/超强抗⼲扰的新⼀代8051单⽚机。

采⽤第⼋代加密技术,加密型超强,指令代码完全兼容传统的8051,速度快8~12倍。

内部集成⾼精度R/C时钟,+/-1%温漂,常温下温漂5%,5MHz~35MHz宽范围可设置,可彻底省去昂贵晶振电路和外部复位电路。

之前在犹豫做机器⼈到底是⽤单⽚机控制还是ARM芯⽚,现在终于决定了,由于好多传感器的电源电压都是5V的,信号接受也是5V,于是决定部分传感器由单⽚机控制,然后在与ARM控制器进⾏通讯,将单⽚机与ARM控制器结合起来。

但是不知为何,在设计单⽚机控制模块的时候在对单⽚机型号进⾏选型时,也许是想尝试新技术——选择了2012年才开始供货的STC15F2K60S2,其中有⼏个原因:1. 它的存储容量⼤,考虑到之前⽤到的STC8952单⽚机,flash才有8K,移植⼀个ucousII都不够。

2. 不⽤外接晶振电路和复位电路,这将节省了电路板的空间。

3. 接⼝丰富,因为需要与ARM进⾏通讯,STC15F2K60S2有两个独⽴串⼝。

4. 有PWM控制输出模块,4个中断,完全满⾜机器⼈的电机驱动和传感器的控制。

5. ⼀般都是LQFN-44封装,⼩指指甲那么⼤的⾯积,很容易⼿⼯焊接。

选定单⽚机型号后,把电路板设计好后,等到我去成都的电⼦元器件交易市场——城隍庙的时候,问了好多家店,都没有这系列的芯⽚,原因是这块芯⽚太新了,店家们都还没有开始供货。

没办法,只有到淘宝上买,很便宜6.5元/⽚,我权衡了⼀下买了三⽚。

刚拿到后就开始打算焊到板⼦上,这种贴⽚式封装的我还是第⼀次焊,不过看过⽜⼈焊过贴⽚式的芯⽚,⽆⾮就是先把引脚对齐;加焊锡固定并⼤量上錫;在⽤扁平的电烙铁将焊锡除去,OK!焊好后,因为我之前有STC-ISP下载模块,USB接⼝的,但是我按原理图接上,TXD——RXD的原则,在下载最新的STC-ISP(V6.33),这软件改变的很多,增加了很多⼯具,对于开发⼈员很⽅⾯,就连延时函数都不⽤⾃⼰调试,直接给你⽣成汇编或者C代码。

基于STC15F2K60S2单片机开发板设计制作

基于STC15F2K60S2单片机开发板设计制作

基于STC15F2K60S2单片机开发板设计制作摘要单片机开发板的介绍单片机开发板是一块电路板和诸多元器件组合在一起供平时的学习、实验、开发等使用;是正式批量生产产品前,对产品进行设计和开发时使用的板子。

我们学习单片机,开始是对理论知识的学习,学习了一些指令和相关单片机结构的知识,而单片机开发板就是我们实践的工具,通过开发板我们可以做一些实验,从而掌握所学的知识。

打个比较通俗的例子:我们编写的代码是“软件”,而开发板是“硬件”,两者结合才会有用,如果只有代码,只有模拟的实验结果而不经过板子实践是学不好的,也掌握不了单片机。

简单概括说开发板实际上就是个多功的实验板,是学习单片机和开发单片机产品的好帮手。

上面集成了好多单片的的外围器件,如LED灯、数码管、按键、行列式按键、步进电机、伺服电机、液晶显示等等,利用一个开发板就可以编制不同的程序实现各种各样的功能,不用为了一个实验焊一块电路板了。

在开发板上设计、调试好程序,就能方便地移植到产品上,只是有时要作适当的修改,比如端口的设置等,因为毕竟开发板和产品的电路板不可能完全一致的。

这样我们就可以通过开发板的使用节省大量的资源,提高我们的学习效率。

为我们更好的学习单片机提供一个良好的平台。

国内外发展趋势现在可以说是单片机的战国时期,世界上各大芯片制造公司都推出了自己的单片机,从8位、16位到32位,数不胜数,应有尽有,有与主流C51系列兼容的,也有不兼容的,但它们各具特色,互成互补,为单片机的应用提供广阔的天地。

纵观单片机的发展过程,可以预示单片机的发展趋势,大致有:1、低功耗CMOS化MCS-51系列的8031推出时的功耗达630mW,而现在的单片机普遍都在100mW左右,随着对单片机功耗要求越来越低,现在的各个单片机制造商基本都采用了CMOS(互补金属氧化物半导体工艺)。

像80C51就采用了HMOS(即高密度金属氧化物半导体工艺)和CHMOS(互补高密度金属氧化物半导体工艺)。

STC15F2K60S2系列单片机总体介绍

STC15F2K60S2系列单片机总体介绍

STC15F2K60S2系列单片机总体介绍1.STC15F2K60S2系列单片机简介STC15F2K60S2系列单片机是STC 生产的单时钟/机器周期(1T)的单片机,是高速/高可靠/低功耗/超强抗干扰的新一代8051单片机,�������代��技术,����,指�代�����������代��技术,����,指�代����指�代����容传统8051,但速度快8-12倍。

����高�度����高�度R/C 时钟(±0.3%),±1%温飘(-40℃~+85℃),常温下温飘±0.6%(-20℃~+65℃),ISP 编程时5MHz~35MHz 宽范围可设置,可彻底省掉外�昂贵的晶振和外�复位电路(��已��高可靠复位电路,ISP 编程时8级复位门槛电压可选)。

3路CCP/PWM/PCA ,8路高速10位A/D 转换(30万次/秒),�置2K 字节大容量SRAM ,2组超高速异步串行通信端口(UART1/UART2,可在5组管脚之间进行切换,分时复�可作5组串口使�),1组高速同步串行通信端口SPI ,���串行口通信���串行口通信�串行口通信/电机控制/强干扰场合。

在 Ke�lC Ke�l C 开发环境中,选择 Intel 8052 编译,头文件包含<reg51.h>即可现STC15系列单片机��STC-Y5超高速CPU �核,在相同的时钟频率下,速度又比STC 早期的1T 系列单片机(如STC12系列/STC11系列/STC10系列)的速度快20%.1.增强型 8051 CPU ,1T ,单时钟/机器周期,速度比普通8051快8-12倍2.工作电压:STC15F2K60S2 系列工作电压:5.5V - 4.5V (5V 单片机)STC15L2K60S2 系列工作电压:3.6V - 2.4V (3V 单片机)3.8K/16K/24K/32K/40K/48K/56K/60K/61K/63.5K 字节片�Flash 程序存储器,可擦写次数10万次以上4.片�大容量�大容量2048字节的的SRAM ,包括常规的256字节RAM <�data> 和��扩展的1792字节XRAM <xdata>5.大容量片�EEPROM ,擦写次数10万次以上6.ISP/IAP ,在系统可编程/在应�可编程,�需编程器,�需仿真器7.共8通道10位高速ADC ,速度可达30万次/秒,3路PWM 还可当3路D/A 使�8.共3通道捕获/比较单元(CCP/PWM/PCA)----也可�来再实现3个定时器或3个外�中断(支持上升沿/下降沿中断)或3路D/A9.利�CCP/PCA高速脉冲输出功能可实现3路9 ~ 16位PWM (每通道占�系统时间小于0.6%)10.利�定时器T0、T1或T2的时钟输出功能可实现高�度的8 ~ 16位PWM (占�系统时间小于0.4%)11.��高可靠复位,ISP编程时8级复位门槛电压可选,可彻底省掉外�复位电路12.工作频率范围:0MHz ~ 28MHz,相当于普通8051的0MHz~336MHz13.��高�度R/C时钟(±0.3%),±1%温飘(-40℃~+85℃),常温下温飘±0.6%(-20℃~+65℃),ISP编程时��时钟从5MHz~28MHz可设(5.5296MHz / 11.0592MHz / 22.1184MHz)14.不需外�晶振和外�复位,还可�外输出时钟和低电平复位信号15.两组超高速异步串行通信端口(可同时使�),可在5组管脚之间进行切换,分时复�可当5组串口使�:串口1(RxD/P3.0, TxD/P3.1)可以切换到(RxD_2/P3.6, TxD_2/P3.7),还可以切换到(RxD_3/P1.6, TxD_3/P1.7);串口2(RxD2/P1.0, TxD2/P1.1)可以切换到(RxD2_2/P4.6, TxD2_2/P4.7)注意:建议�户将串口1放在 P3.6/P3.7 或 P1.6/ P1.7 (P3.0/P3.1 作下载/仿真�);若�户不想切换,坚持使� P3.0/P3.1 或作为串口1进行通信,则务必在下载程序时,在软件上勾选“下次冷启动时,P3.2/P3.3为0/0时才可以下载程序”。

基于STC15F2K系列单片机串口通信控制的研究

基于STC15F2K系列单片机串口通信控制的研究
Key words: STC15F2K;Single Chip;Communication of Serial Port
引言
在工业自动化控制中,往往需要采集传感器一 些信息,并通过单片机控制系统传输给计算机终端, 或者通过计算机终端对单片机或传感器设置一些参 数 。计算机终端和单片机控制系统进行数据通信的 时候,大部分通信采用的是232协议通信或485协议通 信 ,不管哪一种通信方式,都需要对单片机进行编 程。如何设置计算机终端和单片机进行快速的通信连 接,往往要求设计者具备一定单片机理论和实践基 础,所以对于大部分维修应用的技术人员望而止步。 如何将计算机终端和单片机进行快速的通信连接,本
赵宏杰
(漯河技师学院,河南漯河,462000)

要: 本设计以 STC 15 F 2 K 60 S 2 单片机为研究核心 , 并以计算机超级终端为调试窗口 。 阐述
了如何通过编程和设置 , 使单片机串口和计算机超级终端能够快速 、 稳定 、 准确地进行通信 。 在设计中 , 以计算机内部 C 语言函数库为载体 , 对库函数进行适当的修改和软件设置 , 完成了 STC 15 F 2 K 系列单片机串口和计算机超级终端的完美通信 。 关键词: STC 15 F 2 K ; 单片机 ; 串口通信 中 图 分 类 号 : TP 399 文 献 标 识 码: A 文 章 编 号: 2095 - 8595 ( 2017 ) 04 - 116 - 004 DOI : 10 . 16453 /j.issn. 2095 - 8595 . 2017 . 04 . 027 电子科学技术 URL : http//
116
赵宏杰:基于 STC15F2K 系列单片机串口通信控制的研究
而设置成实际需要的串口程序。 第一种方案,需要设计者具备较高的理论基 础,且设计周期长,设计出的程序需要多次修改与 验证,且成功几率不高。第二种方案,较第一种方 案方便快捷,可修改的寄存器参数是有限的,大部 分寄存器已设置完毕,所以节省了大量的时间,由 于程序从范例程序拷贝而来,所以稳定性高,故我 们采用第二种方案。

stc15串口范例程序

stc15串口范例程序

stc15串口范例程序STC15是一种常见的单片机型号,它具有丰富的外设和功能,其中包括串口通信功能。

下面是一个简单的STC15串口通信的范例程序,供你参考:c.#include <STC15F2K60S2.H>。

#define FOSC 11059200L.#define BAUD 9600。

void InitUART() {。

SCON = 0x50; // 8位数据,可变波特率。

TMOD = 0x20; // 设置定时器1为模式2。

TH1 = 256 FOSC/12/32/BAUD; // 波特率9600。

TL1 = TH1; // 初始化TL1。

TR1 = 1; // 启动定时器1。

ES = 1; // 使能串口中断。

EA = 1; // 打开总中断。

}。

void UARTInterrupt() interrupt 4 {。

if (RI) {。

P0 = SBUF; // 串口接收到的数据通过P0口输出。

RI = 0; // 清零接收中断标志位。

}。

if (TI) {。

TI = 0; // 清零发送中断标志位。

}。

}。

void main() {。

InitUART(); // 初始化串口。

while (1) {。

// 主循环。

}。

}。

以上是一个简单的STC15串口通信的范例程序。

在这个程序中,我们首先定义了晶振频率和波特率,然后编写了初始化串口的函数InitUART。

在主函数main中,我们调用InitUART进行串口的初始化,然后进入一个无限循环。

当有数据通过串口接收到时,会触发串口中断UARTInterrupt,并将接收到的数据通过P0口输出。

这个程序可以作为一个基础的串口通信范例,你可以根据自己的实际需求进行修改和扩展。

希望这个范例对你有所帮助。

STC15串口总结

STC15串口总结
TI=0; //…………………………发送中断服务函数部分……………………………
}
//完成之后必须清标志位,否则会进入中断
TI=0;
//清发送标志
RI=0;
//清接收标志
ES=1;
//开串口中断
}
在进入中断服务函数的时候,记得要及时关掉串口中断,防
止在处理中断服务函数的时候,外面的中断进来打乱中断服务函
//串口发一字节
void sendbyteuart(unsigned char uartbufform)
{
unsigned long outloop=10000;
TI=0;
//清除发送标志
SBUF=uartbufform; //装人串口缓冲,开始发送
while((TI==0)&&(outloop--)); //等待发送结束,或则计时完成,退出等待
//打开串口 void openuart(void) {
AUXR |= (1<<4); //打开定时器 REN = 1; //允许接收 TI=0; RI=0; }
要注意清零接收、发送中断标志位(RI、TI),否则,很容易出现莫
名其妙进入中断。
4、前面的步骤完成之后,就可以用串口收、发数据。
//串口读一字节
unsigned char readbyteuart(void)
{
unsigned char uartbuftemp=0;
long outloop=10000;
while((RI==0)&&(outloop--));
RI=0;
uartbuftemp=SBUF;
return uartbuftemp;

STC15F2K60S2系列单片机 串行口 课件

STC15F2K60S2系列单片机  串行口 课件

地址
B7
B6
B5
B4
B3
B2
B1
B0
复位值
SCON 98H SM0/ FE SM1 SM2 REN TB8 RB8 TI RI 0000 0000
单片微机原理与接口技术
返回目录
电子工业出版社
9.2 STC15F2K60S2单片机的串行口1
9.2.1 串行口1的控制寄存器 1. 串行口1控制寄存器SCON
单片微机原理与接口技术
返回目录
电子工业出版社
9.2 STC15F2K60S2单片机的串行口1
9.2.1 串行口1的控制寄存器
单片微机原理与接口技术
返回目录
电子工业出版社
9.2 STC15F2K60S2单片机的串行口1
9.2.1 串行口1的控制寄存器 1. 串行口1控制寄存器SCON 串行口1控制寄存器SCON用于设定串行口1的工作方式、接 收控制以及设置状态标志。字节地址为98H,可进行位寻址,单 片机复位时,所有位全为0,其格式为:
9.2.3 串行口的波特率
(1)方式0和方式2 在方式0中,波特率为fSYS/12(UART_M0x6为0时)或fSYS/2 (UART_M0x6为1时)。 在方式2中,波特率取决于PCON中的SMOD值,当(SMOD)=0 时,波特率为fSYS/64;当(SMOD)=1时,波特率为fSYS/32。 (2)方式1和方式3 在方式1和方式3下,由定时器T1或定时器T2的溢出率决定。 当(S1BRS)=0时,定时器 T1为波特率发生器: 2 T1 32 波特率由定时器T1的溢出率和 SMOD共同决定。即: 方式1和方式3的波特率= 溢出率。 当(S1BRS)=1时,定时器T2为波特率发生器: 波特率为定时器T2溢出率(定时时间的倒数)的四分之一。

基于STC15F2K系列单片机串口通信控制的研究

基于STC15F2K系列单片机串口通信控制的研究

基于STC15F2K系列单片机串口通信控制的研究
赵宏杰
【期刊名称】《电子科学技术》
【年(卷),期】2017(004)004
【摘要】本设计以STC15F2K60S2单片机为研究核心,并以计算机超级终端为调试窗口.阐述了如何通过编程和设置,使单片机串口和计算机超级终端能够快速、稳定、准确地进行通信.在设计中,以计算机内部C语言函数库为载体,对库函数进行适当的修改和软件设置,完成了STC15F2K系列单片机串口和计算机超级终端的完美通信.
【总页数】4页(P116-119)
【作者】赵宏杰
【作者单位】漯河技师学院,河南漯河,462000
【正文语种】中文
【中图分类】TP399
【相关文献】
1.基于单片机和串口通信的高速步进电机控制系统设计 [J], 谭辉;潘涵;邢芳;宋文武;刘义;郑生全;吴华兵
2.基于LabVIEW7.0语言的PC机与AVRAT90系列单片机串口通信技术在体温检测中的应用 [J], 韦哲;程自峰;李凯
3.基于PC与单片机串口通信控制的点阵系统设计 [J], 龚再兰
4.PC机与51系列单片机的远距离串口通信 [J], 李振起;马君;王丙君;唐兵
5.基于VB与单片机串口通信的智能控制教学演示台的设计开发 [J], 王海蛟;李丹;丁栋;张勤河
因版权原因,仅展示原文概要,查看原文内容请购买。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

湖南科技大学信息与电气工程学院《单片机课程设计报告》题目:基于STCSTC15F2K60S2单片机的串口通讯专业:自动化班级:一班姓名:罗永恒学号: 1209010303指导教师:范小春2015年 6月 30日单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。

本文将具体介绍单片机与PC机进行串口通信的实现方法和编程方法,并且在最后给出一个实用的单片机与计算机通过串口通信的程序。

关键词:单片机串口通信第一章 STCSTC15F2K60S2的简介 (1)1.1 STCSTC15F2K60S2的内部结构框图 (1)1.2 STC15F2K60S的DIP封装图 (1)1.3 STC15F2K60S的各引脚简介 (2)第二章单片机通过USB与PC机的通信设计 (4)2.1设计方案选择 (4)2.1.1 PC机同单片机通信存在的问题 (4)2.1.2 USB接口同RS-232(DB-9)串口的比较 (4)2.1.3 USB转接芯片的选择 (4)2.2 通信功能要求 (5)第三章硬件电路图的设计 (5)3.1单片机最小系统 (5)3.2 USB与单片机连接主电路 (6)3.3 总电路图 (6)3.4 PCB图 (6)第四章程序设计 (7)4.1 串口初始化 (7)4.2 主程序 (7)4.3 中断服务程序 (8)4.4 总程序 (8)第五章总结与体会 (10)第六章参考文献 (11)第一章 STCSTC15F2K60S2的简介1.1 STCSTC15F2K60S2的内部结构框图1.2 STC15F2K60S的DIP封装图1.3 STC15F2K60S 的各引脚简介(1)电源引脚Vcc :一般接电源的+5V 。

具体的电压幅度应参考单片机的手册。

GND :接电源地。

(2)外接晶体引脚XTAL2XTAL1C2C1GNDM单片机芯片内部一个反相放大器的输入端和输出端。

通常用于连接晶体振荡器。

(3)控制和复位引脚单片机RST/VPDGNDCr 10uFRr 10KΩVcc功能:当访问外部存储器或者外部扩展的并行I/O 口时,ALE (允许地址锁 存)的输出用于锁存地址的低位字节。

RST (与P5.4复用):当振荡器运行时,在此引脚上出现两个机器周期的 高电平将使单片机复位。

如果需要单片机接上电源就可以复位,则需要使 用上电复位电路。

(4)I/O 口的复用功能 P0口:a.用作数据总线(D7~D0)或者地址总线低8位(A7~A0)。

b.用作普通I/O 。

P1口:a.用作普通I/O 。

b.复用为ADC 转换输入、捕获/比较/脉宽调制、SPI 通信线、第二串口 或者第二时钟输出,如表所示。

P2口:a:用作通用I/O。

b:用作地址总线的高8位输出。

c:用于SPI和捕获/比较/脉宽调制的备用切换端口。

P3口:a:用作通用I/O。

b:可复用为外部中断输入、计数器输入、时钟输出、第一串口和外部总线的读/写控制,如表所示。

P4口:a:用作通用I/O。

b:某些口线具有复用功能,可配置为SPI通信线、捕捉/比较/脉宽调制、第二串口线等。

P5口:a:P5.4/RST(复位脚)/MCLKO(内部R/C振荡时钟输出;b:输出的频率可为MCLK/1或MCLK/2)/SS_3(SPI接口的从机选择信号备用切换引脚)。

c:该引脚默认为I/O口,可以通过ISP编程将其设置为RST(复位)引脚。

第二章单片机通过USB与PC机的通信设计2.1设计方案选择由于实际应用中单片机在数据处理能力、人机交互等方面往往不能满足要求, 因而通常用PC来弥补单片机的这些不足。

例如,在工程应用中,常常由一台PC机和一台单片机构成主从式计算机测控系统。

在这样的系统中,以单片机为核心的智能测控仪表(从机)作为现场测控设备,完成数据的采集、处理和控制各种任务,同时将数据传给PC机(主机),PC机将这些数据加工处理后,进行显示、打印报表等。

PC机也可以将各种控制命令传送给单片机,干预单片机系统的运行,从而发挥PC机的优势。

要实现这样的功能,就涉及到PC机与单片机之间的通信问题。

现在的计算机提供了各种各样的串口,他们支持不同的通信协议,有着不同的功能。

目前计算机提供的串口有RS-232,RJ45,USB2.0等。

2.1.1 PC机同单片机通信存在的问题目前,15系列单片机同PC机的通信在大多数情况下仍然是使用RS-232(DB-9)串口作为通信接口实现的。

而随着USB接口技术的成熟和使用的普及,由于USB 接口有着一系列RS-232(DB-9)串口无法比拟的优点,RS-232(DB-9)串口正在逐步的为USB接口所替代。

而在现在的大多数笔记本电脑中,出于节省物理空间和用处不大等原因,RS-232(DB-9)串口已不再设置,这就约束了基于RS-232(DB-9)串口与PC机联络的单片机设备的使用范围。

2.1.2 USB接口同RS-232(DB-9)串口的比较通过USB接口和RS-232(DB-9)的比较,不难发现:(1)USB接口支持即插即用和热插拔,而RS-232(DB-9)串口不支持即插即用和热插拔,设备安装后需重启计算机方可使用。

(2)USB接口的传输速率较快,可达480Mbps(V2.0),而RS-232(DB-9)串口的最高速率仅为19200波特。

(3)USB接口占用体积较小,插拔方便;而RS-232(DB-9)串口的的插拔需要使用改锥,且在机箱后操作,比较麻烦。

综上可知,USB 接口取代RS-232(DB-9)串口的趋势不可逆转。

2.1.3 USB转接芯片的选择目前常用的USB转接芯片包括PL2303,CH341,CP2101,FT232等。

在综合考虑了各方面因素后,CH341成为了本次电路设计的首选芯片。

CH341是南京沁恒电子公司生产的USB总线的转接芯片,通过USB总线提供异步串口,打印口,并口及常用的2线和4线等同步串行端口。

其特点有:(1)提供全速USB设备借口,兼容USB2.0,外围设备只需要晶体和电容;(2)可通过外部的低成本串行EPROM定义厂商ID,产品ID,序列号等;(3)成本低廉,可直接转换原串口外围设备;(4)采用SOP-28封装,串口应用还提供小型的SSOP-20封装。

正是由于在PC机同单片机通信电路中,USB转接芯片CH341 具有以上其他芯片无法比拟的优点,同时价格低廉并且提供中文技术支持,因此它成为了本电路USB转接芯片的最优选择。

本电路采用的是SSOP-20封装的CH341T,其引脚图如图所示。

2.2 通信功能要求(1)PC控制单片机IO口输出,并且通过两个LED灯显示数据发收状态,如果数据处于发送或者接收状态,则相应的LED灯闪亮。

(2)PC控制单片机IO口输出,并且通过两个按键控制PC机是否接收数据。

(3)PC机与单片机之间的通信结果通过串口助手进行调试和显示。

第三章硬件电路图的设计3.1单片机最小系统由起振电路,复位电路组成3.2 USB 与单片机连接主电路其中,两个按键分别控制是否接收数据,两个LED 灯显示接收数据状态,CH341芯片提供串口。

3.3 总电路图123456ABCD654321D CBATitleN u mb er R ev isio nSize B D ate:3-Ju l-2015Sh eet o fFile:H \B AY A NW EI\原理图D d b D raw n B y A D0/P 0.01A D1/P 0.12A D2/P 0.23A D3/P 0.34A D4/P 0.45A D5/P 0.56A D6/P 0.67A D7/P 0.78R x D 2/CC P1/A D C0/P 1.09Tx D2/C C P0/A DC 1/P1.110EC I/S S/AD C 2/P1.211MO SI/A D C3/P 1.312MISO /A D C4/P 1.413SL CK /AD C 5/P1.514X TA L2/R x D _3/A DC 6/P1.615X TA L1/Tx D_3/AD C 7/P1.716SS _3/MC LK O/R ST/P5.417V CC 18P5.519G n d 20P3.0/R x D /IN T4/T 2C LK O 21P3.1/T x D /T 222P3.2/IN T023P3.3/IN T124P3.4/T 0/T1C LK O /E CI_225P3.5/T 1/T0C LK O /C C P0_226P3.6/IN T2/R x D _2/C CP 1_227P3.7/IN T3/Tx D_2/CC P2/C C P2_228P4.1/MISO _329P4.2/W R 30P4.4/R D 31P2.0/A 8/R STO U T_L OW 32P2.1/A 9/SC LK _233P2.2/A 10/MISO _234P2.3/A 11/MO SI_235P2.4/A 12/E CI_3/S S_236P2.5/A 13/C C P0_337P2.6/A 14/C C P1_338P2.7/A 15/C C P2_339P4.5/A LE 40PD IP-40J1ST C15F2K60S2Y 112MHzC 230p F+C 647u FS2SW -P BV CCV CC 19V 35G ND 8V D-7V D+6X 19X 010N OS #20Tx D 4R x D 3U 1C H3411234U 2U SBV CCC 3C APC 4C APY 2C RY ST ALC 5C APC 7C APV CCD 31N 5817R 3301RR 13.3k R 23.3kD 1LE DD 2LE DS1SW 17S3SW 18C 1C AP3.4 PCB 图第四章程序设计4.1 串口初始化void UartInit(void) //115200bps@22.1184MHz{SCON = 0x50; //8位数据可变波特率AUXR |= 0x40; //定时器1时钟为Fosc,即1TAUXR &= 0xFE; //串口1选择定时器1为波特率发射生器TMOD &= 0x0F; //设置定时器1为16位自动重装方式TL1 = 0xD0; //设定定时初值TH1 = 0xFF; //设定定时初值ET1 = 0; //禁止定时器1中断TR1 = 1; //启动定时器1}4.2 主程序void main(void){P0M1 = 0; P0M0 = 0; //设置为准双向口P1M1 = 0; P1M0 = 0; //设置为准双向口P2M1 = 0; P2M0 = 0; //设置为准双向口P3M1 = 0; P3M0 = 0; //设置为准双向口P4M1 = 0; P4M0 = 0; //设置为准双向口P5M1 = 0; P5M0 = 0; //设置为准双向口P6M1 = 0; P6M0 = 0; //设置为准双向口P7M1 = 0; P7M0 = 0; //设置为准双向口UartInit() ;//UART1_config(1); // 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.EA = 1; //允许总中断ES=1; //开串口中断PrintString1("STC15F2K60S2 UART1 Test Prgramme!\r\n"); //SUART1发送一个字符串while (1){ if(INT0==0) //如果相应按键(默认为sw18)按下,则允许接收 {REN=0;}if((TX1_Cnt != RX1_Cnt) && (!B_TX1_Busy)) //收到数据, 发送空闲{SBUF = RX1_Buffer[TX1_Cnt]; //把收到的数据远样返回B_TX1_Busy = 1;if(++TX1_Cnt >= UART1_BUF_LENGTH) TX1_Cnt = 0;}else{if(INT1==0) //如果相应按键(默认为sw17)按下,则禁止接收 {REN=1;}}}}4.3 中断服务程序void UART1_int (void) interrupt 4//中断服务子程序{if(RI) //如果产生中断,则把SBUF内容赋值给单片机的数组{RI = 0;RX1_Buffer[RX1_Cnt] = SBUF;if(++RX1_Cnt >= UART1_BUF_LENGTH)RX1_Cnt = 0; //防溢出}if(TI){TI = 0;B_TX1_Busy = 0;}}4.4 总程序/************* 功能说明**************双串口全双工中断方式收发通讯程序。

相关文档
最新文档