湖南科技大学 信息与电气工程学院
《单片机课程设计报告》
题 目:基于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
1.3 STC15F2K60S的各引脚简介
(1)电源引脚
Vcc:一般接电源的+5V。具体的电压幅度应参考单片机的手册。 GND:接电源地。 (2)外接晶体引脚
C2单片机XTAL2C1MXTAL1 芯片内部一个反相放大器的输入端和输出端。通常用于连接晶体振荡器。 (3)控制和复位引脚
VccCr10uFRST/VPDRr10KΩ单片机GND
功能:当访问外部存储器或者外部扩展的并行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口:
2
GND 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(复位) 引脚。
3
第二章 单片机通过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,外围设备只需要晶体和电容;
4
(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单片机最小系统
由起振电路,复位电路组成
5
3.2 USB与单片机连接主电路
其中,两个按键分别控制是否接收数据,两个LED灯显示接收数据状态,CH341芯片提供串口。
3.3 总电路图
123456DDJ1PDIP-4012345671011121314151617181920S2SW-PBC7uFAD0/P0.0P4.5/ALEAD1/P0.1P2.7/A15/CCP2_3AD2/P0.2P2.6/A14/CCP1_3AD3/P0.3P2.5/A13/CCP0_3AD4/P0.4P2.4/A12/ECI_3/SS_2AD5/P0.5P2.3/A11/MOSI_2AD6/P0.6P2.2/A10/MISO_2AD7/P0.7P2.1/A9/SCLK_2RxD2/CCP1/ADC0/P1.P20.0/A8/RSTOUT_LOWTxD2/CCP0/ADC1/P1.1P4.4/RDECI/SS/ADC2/P1.2P4.2/WRMOSI/ADC3/P1.3P4.1/MISO_3MISO/ADC4/PP31..74/INT3/TxD_2/CCP2/CCP2_2SLCK/ADC5/P1.5P3.6/INT2/RxD_2/CCP1_2XTAL2/RxD_3/ADCP36/P1.5/T.61/T0CLKO/CCP0_2XTAL1/TxD_3/ADC7/P1.P3.47/T0/T1CLKO/ECI_2SS_3/MCLKO/RST/P5.4P3.3/INT1VCCP3.2/INT0P5.5P3.1/TxD/T2GndP3.0/RxD/INT4/T2CLKOSTC15F2K60S24039383736353433323130292827262524232221VCCR13.3kR23.3kCCC1VCCS1S3SW17SW18D1LEDD2LED20NOS#GNDVD-VD+X1TxDRxDCH341C5CAPX0U1VCCV3195C3CAPC4CAPU21234USBCRYSTALC7CAPCAPY112MHzC2D3R3301R1N581743876910Y230pFBVCCATitle123.4 PCB图
6
+34BASizeBDate:File:5NumberRevision3-Jul-2015H\\BAYANWEI\\原理图DdbSheet of DrawnBy6
第四章 程序设计
4.1 串口初始化
void UartInit(void) //115200bps@22.1184MHz {
SCON = 0x50; //8位数据可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 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)
7
{ 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 总程序
/************* 功能说明 **************
双串口全双工中断方式收发通讯程序。
通过PC向MCU发送数据, MCU收到后通过串口把收到的数据原样返回.
******************************************/
#define MAIN_Fosc 22118400L //定义主时钟 #include \"STC15Fxxxx.H\"
#define Baudrate1 115200L
8
#define UART1_BUF_LENGTH 200 u8 TX1_Cnt; //发送计数 u8 RX1_Cnt; //接收计数 bit B_TX1_Busy; //发送忙标志 u8 idata RX1_Buffer[UART1_BUF_LENGTH]; //接收缓冲 void UartInit(void) //115200bps@22.1184MHz {
SCON = 0x50; //8位数据可变波特率
AUXR |= 0x40; //定时器1时钟为Fosc,即1T
AUXR &= 0xFE; //串口1选择定时器1为波特率发射生器 TMOD &= 0x0F; //设置定时器1为16位自动重装方式 TL1 = 0xD0; //设定定时初值 TH1 = 0xFF; //设定定时初值 ET1 = 0; //禁止定时器1中断 TR1 = 1; //启动定时器1 }
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) {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) {REN=1;}}
9
} }
void UART1_int (void) interrupt 4//中断服务子程序 {
if(RI) {
RI = 0;
RX1_Buffer[RX1_Cnt] = SBUF;
if(++RX1_Cnt >= UART1_BUF_LENGTH) RX1_Cnt = 0; //防溢出 } if(TI) {
TI = 0;
B_TX1_Busy = 0; } }
第五章 总结与体会
串行通信端口在系统控制的范畴中一直占据着及其重要的地位,它不仅没有因为时代的进步而遭淘汰,反而在规格上越来越完善,应用也越来越广泛。作为一种基本而又灵活方便的通信方式,串口通信被广泛应用于PC与PC或者PC与单片机之间的数据交换以及其他工业控制与自动控制中。
随着单片机和微机技术的不断发展,由PC机和多台单片机构成的多机网络监控系统已成为单片机技术发展的一个方向。它结合了单片机在实时数据采集和微机对图形处理、显示的优点。同时,Windows环境下后台微机在数据库管理上具有明显的优势,二者结合,使得单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而形成了向以网络为核心的分布式多点系统发展的趋势。
随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。PC机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,通过PC机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。但是USB接口逐步取代RS-232(DB-9)串口已是大势所趋,单片机同计算机的USB通信在实际工作中的应用范围也将越来越广。本文所介绍的单片机和PC机的USB通信方法,具有电路简单,兼容性好,可移植性强等特点,故可作为单片机同计算机的USB通信模块广泛应用于工业和电子产品的开发中。
10
第六章 参考文献
[1]于永.15系列单片机C语言常用模块与综合系统设计.电子工业出版社,2007 [2]丁向荣.单片微机原理与接口技术.电子工业出版社,2010
[3]郭天祥.《新概念51单片机C语言教程》.北京:电子工业出版社 [4]袁新艳.计算机外设与接口技术[M].高等教育出版社,2009.
11
因篇幅问题不能全部显示,请点此查看更多更全内容