stc单片机串口下载线制作

stc单片机串口下载线制作
stc单片机串口下载线制作

重出江湖,再做编程器

真正的低价,人人会做的STC(也支持SST,华邦,菲利普有ISP功能的单片机)串口编程器,经试用,效果非常好,D1,D2,C7可以不用,R7直接接地!

发个以前自己做的STC下载线,整个连电路板密封在串口装内,用二只三极管做电平转换,现在还在使用着的,呵呵,效果挺好的,对于焊接在目标板上的STC芯片进行下载程序相当方便

- STC系列单片机串口ISP下载线的制作

?- 所需元器件

?- 电路原理图

- 采用MAX232作为电平转换芯片 - 如需要为3V单片机下载可选用MAX3232宽工作电压芯片

- 本下载线适合于所有STC系列单片机现以STC12C2052为例

- 将DB9串口接头的2(TXD)、3(RXD)、5(GND)三端用排线引出

- 将0.1uF电容直接拴在MAX232芯片上并考虑好结构

- 制作时注意防止短路 - 必要时可用绝缘胶带隔离

- 按电路原理图将电容和两端排线焊接在一起

- 用热缩管或绝缘胶带将芯片包起来

- 最终形成线上转换器

- 将单片机端排线(TTL电平)插入芯片座的管孔中

51单片机串口调试实验(C语言)

//以下程序都是在VC++6.0 上调试运行过的程序,没有错误,没有警告。 //单片机是STC89C52RC,但是在所有的51 52单片机上都是通用的。51只是一个学习的基础平台,你懂得。 //程序在关键的位置添加了注释。 /****************************************************************************** * * 实验名: 串口实验 * 使用的IO : P2 * 实验效果: 将接收到发送回电脑上面。 * 注意: ******************************************************************************* / #include void UsartConfiguration(); /****************************************************************************** * * 函数名: main * 函数功能: 主函数 * 输入: 无 * 输出: 无 ******************************************************************************* / void main() { UsartConfiguration(); while(1) { } } /****************************************************************************** * * 函数名:UsartConfiguration() * 函数功能:设置串口 * 输入: 无 * 输出: 无 ******************************************************************************* / void UsartConfiguration() { SCON=0X50; //设置为工作方式1

STC单片机虚拟串口发送程序(超简单)

STC单片机(STC12C5A32S)虚拟串口发送程序 //虚拟串口发送子函数 void Uart(uint8 a) { ACC=a; //TXD3是已经定义的任意的发送端口 TR1=1; TXD3=0; //发送起始位 while(TF1==0); TF1=0; //TF1必须清零,因为只有启用T1中断才会自动清零 TXD3=ACC0; //发送8个位也可以用移位来发送,ACC0-ACC7也必须先定义 while(TF1==0); //表示ACC的8个位,如果用移位发送,就不用这样定义。 TF1=0; TXD3=ACC1; while(TF1==0); TF1=0; TXD3=ACC2; while(TF1==0); TF1=0; TXD3=ACC3; while(TF1==0); TF1=0; TXD3=ACC4; while(TF1==0); TF1=0; TXD3=ACC5; while(TF1==0); TF1=0; TXD3=ACC6; while(TF1==0); TF1=0; TXD3=ACC7; while(TF1==0); TF1=0; TXD3=1; //发送停止位 while(TF1==0); TF1=0; TR1=0; } 该子函数使用T1定时器,T0也可以。采用8位自动重装,重装值为A0 Main() { TMOD = 0x21; //T0:模式1,16位定时器。T1:模式2,8位定时器,自动重装AUXR &= 0x3f; //定时器0和定时器1与普通8051定时器一样(不同的单片机设置可能

不同) TL1 = 0xa0; //虚拟串口波特率:9600 TH1 = 0xa0; ET0 = 1; ET1 = 0; //T1中断一定不要使用,要不接收会错误 TR0 = 1; TR1 = 0; Uart(0xaa); //0xaa是发送的数据,如果接收有误,在发送一个字节后可加点延时//延时 While(1); //具体程序此处省略 } 注:因本人实验的硬件不需要模拟串口来接收数据,故没给出虚拟串口接收程序。 以上程序已验证成功。

STC12C5A60S2 双串口使用程序

STC12C5A60S2 双串口使用程序(已经验证成功) #include #include "intrins.h" #define uchar unsigned char #define S2RI 0x01 // 串口2接收中断请求标志位 #define S2TI 0x02 // 串口2发送中断请求标志位 //================================================ // 对于将P4.4、P4.5当做I/O口使用必须添加的定义|| //================================================ sfr p4sw=0xbb; // 需在主函数文件中做相应设置4、5、6为1(作为I/O口使用) /*sbit button1=P4^3; sbit button2=P4^4; sbit button3=P4^5; sbit button4=P4^6;*/ 页脚内容1

uchar code temp1[]={" 白云:“我可是个名人”"}; uchar code temp2[]={" 黑土:“啥名人啊,你就是个人名”"}; uchar code temp3[]={" 小崔:“诶,大叔大妈,你俩都冷静冷静”"}; uchar code temp4[]={" 观众:“哈哈哈哈”"}; /*void delay_1ms(uchar ii) // 误差-0.018084490741us { unsigned char a,b; for(; ii>0; ii--) for( b = 18; b>0; b--) for( a = 152; a>0; a--); _nop_(); //if Keil,require use intrins.h } void delay1s(void) //误差-0.000000000125us { unsigned char a,b,c; for( c = 212; c>0; c--) 页脚内容2

单片机串口通信C程序及应用实例

一、程序代码 #include//该头文件可到https://www.360docs.net/doc/b29272784.html,网站下载#define uint unsigned int #define uchar unsigned char uchar indata[4]; uchar outdata[4]; uchar flag; static uchar temp1,temp2,temp3,temp; static uchar R_counter,T_counter; void system_initial(void); void initial_comm(void); void delay(uchar x); void uart_send(void); void read_Instatus(void); serial_contral(void); void main() { system_initial(); initial_comm(); while(1) { if(flag==1) { ES = 0; serial_contral(); ES = 1; flag = 0; } else read_Instatus(); } } void uart_send(void) { for(T_counter=0;T_counter<4;T_counter++) { SBUF = outdata[T_counter]; while(TI == 0);

TI = 0; } T_counter = 0; } uart_receive(void) interrupt 4 { if(RI) { RI = 0; indata[R_counter] = SBUF; R_counter++; if(R_counter>=4) { R_counter = 0; flag = 1; } } } void system_initial(void) { P1M1 = 0x00; P1M0 = 0xff; P1 = 0xff; //初始化为全部关闭 temp3 = 0x3f;//初始化temp3的值与六路输出的初始值保持一致 temp = 0xf0; R_counter = 0; T_counter = 0; } void initial_comm(void) { SCON = 0x50; //设定串行口工作方式:mode 1 ; 8-bit UART,enable ucvr TMOD = 0x21; //TIMER 1;mode 2 ;8-Bit Reload PCON = 0x80; //波特率不加倍SMOD = 1 TH1 = 0xfa; //baud: 9600;fosc = 11.0596 IE = 0x90; // enable serial interrupt TR1 = 1; // timer 1 RI = 0; TI = 0; ES = 1; EA = 1; }

普中科技单片机STC90C51转串口驱动安装

普中单片机驱动安装 初试单片机,什么都不懂,就按照光盘里的步骤开始(先声明我用的是64位win7旗舰版的笔记本) 打开软件安装指导.pdf 1. USB 转串口驱动的安装 这个驱动是最让我蛋疼的,用了很久才搞定。 按照指导,安装驱动发现驱动打开是这个东西 与图上不同,这也就算了,蛋疼的是安装失败。无奈,连上板子,进设备管理器,看到

然后右键更新驱动程 序软件》浏览计算机以查找驱动程序软件》从计算机的设备驱动程序列表中选择》端口(COM和LPT)》从磁盘安装,此时打开光盘的驱动文件夹即 找到后打开出现了

图中没签名不懂什么意思,再点下一步,结果就悲剧了下图 至此完全迷茫了,这又是神马。特意百度了下错误代码52 ,没有帮助。回到设备管理器

有感叹号就是驱动没没有签名的缘故。不管了,脸上板子,打开 可用的串口不过还是进入了PZISP软件,设置好点下载程序

至此,表示尝试失败。 这时,想到烧录软件还有官方的没试,就试了下,结果 又失败。而且光盘中给出了两种官方软件版本STC_ISP_V479.exe 和STC_ISP_V488.exe 都不行。 接下来,本屌认为是驱动的原因,光盘教程图中的驱动是v1.40,而给的却是v1.31,故百度上找v1.40版本,找来了安装,一样的结果,又失败。 又是不停的百度,什么串口、驱动、usb线、还有烧录软件等等各种原因,这一过程虽然累,却让我加深了解单片机。

好了,废话不多说,最后百度CH341SER.INF ,点第一个进 下载得到CH341SER.zip,解压后 然后猛点SETUP.EXE

STC12C5A60S2单片机双串口通信

STC12C5A60S2单片机双串口通信 STC12C5A60S2单片机是一款功能比较强大的单片机,它拥有两个全双工串行通信接口,串口1的功能及操作 与传统51单片机串行口相同;特殊的是STC12C5A60S2 单片机内部有一个独立波特率发生器,串口1可以使用 定时器1作为波特率发生器,也可以使用独立波特率发 生器作为波特率发生器;而串口2只能使用独立波特率 发生器作为波特率发生器。 下面是一段双串口通信的程序: /************************************************ *********************** 时间:2012.11.24 芯片:STC12C5A60S2 晶振:22.1184MHz 波特率:9600bps 引脚定义:串行口1:发送 ————TxD/P3.1;接收 ————RxD/P3.0 串行口2:发送 ————TxD2/P1.3;接收 ————RxD2/P1.2 功能描述:STC12双串口通信(中断方式)

当串行口1接收数据后,将此数据由串行口2发送出去 当串行口2接收数据后,将此数据由串行口1发送出去 ************************************************* **********************/ #include; #define S2RI 0x01//串口2接收中断请求标志位 #define S2TI 0x02//串口2发送中断请求标志位unsigned char flag1,flag2,temp1,temp2; /****************串行口初始化函数 ****************/ void InitUART(void) { TMOD = 0x20; //定时器1工作在方式2 8位自动重装 SCON = 0x50; //串口1工作在方式1 10位异步收发 REN=1允许接收 TH1 = 0xFA; //定时器1初值 TL1 = TH1; TR1 = 1; //定时器1开始计数 EA =1;//开总中断

基于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)

STC12C5A60S2串口通信keil与proteus调试 自己总结

STC12C5A60S2串口调试需要软件: 在keil里安装。在debug里设置仿真器为:

点击MCU连接程序:

RS232: 虚拟终端:

程序: #include "STC12C5A60S2.h" #include "intrins.h" typedef unsigned char BYTE; void UartInit(void) //9600bps@11.0592MHz { SCON = 0x50; //8位数据,可变波特率 AUXR |= 0x40; //定时器1时钟为Fosc,即1T AUXR &= 0xFE; //串口1选择定时器1为波特率发生器TMOD &= 0x0F; //设定定时器1为16位自动重装方式TL1 = 0xE0; //设定定时初值 TH1 = 0xFE; //设定定时初值 ET1 = 0; //禁止定时器1中断 TR1 = 1; //启动定时器1 } void SendByte(BYTE dat); void SendString(char *s); void main() { UartInit(); SendString("STC12C5A60S2\r\nUart Test !\r\n"); while(1); } void Uart_Isr() interrupt 4 using 1 {if(RI)

{ RI=0; } if(TI) { TI=0; } } void SendByte(BYTE dat) { SBUF=dat; } void SendString(char *s) { while(*s!='\0') { SendByte(*s++); } }

STC单片机资料

STC12C5A60S2/AD/PWM系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。 1.增强型8051 CPU,1T,单时钟/机器周期,指令代码完全兼容传统8051 2.工作电压:STC12C5A60S2系列工作电压:5.5V- 3.3V(5V单片机) STC12LE5A60S2系列工作电压:3.6V- 2.2V(3V单片机) 3.工作频率范围:0 - 35MHz,相当于普通8051的0~420MHz 4.用户应用程序空间8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K字节...... 5.片上集成1280字节RAM 6.通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O 口)可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过55mA 7. ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片 8.有EEPROM功能(STC12C5A62S2/AD/PWM无内部EEPROM)9. 看门狗10.内部集成MAX810专用复位电路(外部晶体12M以下时,复位脚可直接1K电阻到地) 11.外部掉电检测电路:在P4.6口有一个低压门槛比较器5V单片机为1.32V,误差为+/-5%,3.3V单片机为1.30V,误差为+/-3% 12.时钟源:外部高精度晶体/时钟,内部R/C振荡器(温漂为+/-5%到+/-10%以内) 1用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟 常温下内部R/C振荡器频率为:5.0V单片机为:11MHz~15.5MHz 3.3V单片机为:8MHz~12MHz 精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准 13.共4个16位定时器两个与传统8051兼容的定时器/计数器,16位定时器T0和T1,没有定时器2,但有独立波特率发生器做串行通讯的波特率发生器再加上2路PCA模块可再实现2个16位定时器 14. 2个时钟输出口,可由T0的溢出在P3.4/T0输出时钟,可由T1的溢出在 P3.5/T1输出时钟

STC单片机串口下载使用说明书

STC单片机串口下载使用说明书 1、注意学习板、串口线、USB线和电脑的连接顺序:因为电脑串口不能带电拔插,所以要一定要按下面的顺序连接和断开。 连接时的顺序: (1)先连接好串口线。 (2)再接上USB线(给学习板供电用)。 断开连接的顺序: (1)先拔去USB线(先去掉学习板上的电源) (2)再拔去串口连接线 2、硬件连接图: 3、学习板上跳线的设置:要通过串口将程序下载到STC89C51/52时,请将学习 板上单片机的串口引脚接通MAX232(电平转换IC),如下图所示: 注意:用学习板做串口实验时也要将跳线设置如上图所示,因为这样是把单片机的

串口通信脚接通MAX232再到“串口通信口” 4、下载程序使用STC公司提供的下载软件 打开下载软件:在“【精创科技】51初级学习板(红板)80\下载软件和编辑软件\STC公司下载软件\STC-ISP-V4.83”文件夹下双击“”文件即可进入下载软件的操作介面: 下载程序操作过程:(1)在下载介面的左上角“”中选择单片机型号为:STC89C51/52 (2)点击“打开程序文件”选择要下载的目标文件“*.HEX或*.Bin”(3)选择通信连接的 com口(),如果你不确定你电脑认定的是哪一个COM口,你可以在“我的电脑/属性/硬件/设备管理器”中查看“”(4)点击“DowdLoad/下载”后出现如下

图所 示后,请关闭学习板上的电源开 关 ,然后再打电源开关,这时程序将自动完成下载,并自动复位后单片机就可以自动运行刚才下载的程序,注意:电源开关按下去为“开”,弹起来为“关”。 ◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆学习板上各个配件的接法图:

简单好用的stc12c5a串口2发送程序!

//功能:stc12c5a串口2发送程序,发送0--9,晶振频率11.0592MHz,串行口工作于方式1, 波特率为9600 #ifndef __STC12C5A60S2_H__ #define __STC12C5A60S2_H__ //------------------------------------------------------------------------------ -- //新一代 1T 8051系列单片机内核特殊功能寄存器 C51 Core SFRs // 7 6 5 4 3 2 1 0 Reset Value sfr ACC = 0xE0; //Accumulator 0000,0000 sfr B = 0xF0; //B Register 0000,0000 sfr PSW = 0xD0; //Program Status Word CY AC F0 RS1 RS0 OV F1 P 0000,0000 //----------------------------------- sbit CY = PSW^7; sbit AC = PSW^6; sbit F0 = PSW^5; sbit RS1 = PSW^4; sbit RS0 = PSW^3; sbit OV = PSW^2; sbit P = PSW^0; //----------------------------------- sfr SP = 0x81; //Stack Pointer 0000,0111 sfr DPL = 0x82; //Data Pointer Low Byte 0000,0000 sfr DPH = 0x83; //Data Pointer High Byte 0000,0000 //------------------------------------------------------------------------------ -- //新一代 1T 8051系列单片机系统管理特殊功能寄存器 // 7 6 5 4 3 2 1 0 Reset Value sfr PCON = 0x87; //Power Control SMOD SMOD0 LVDF POF GF1 GF0 PD IDL 0001,0000 // 7 6 5 4 3 2 1 0 Reset Value

STC系列单片机串口通信的总结

串口通信: 软件调试,在调试过程中需要使用虚拟串口助手。在编程中注意设计时钟和波特率。注意程序的串口设置和串口调试助手中串口设置相同。 单串口: mode com2 9600,0,8,1 assign com2 sout stime = 0 多串口: mode com2 9600,0,8,1 assign com2 s0out 0表示单片机的串口0 编程: STC12介绍的方法: 接收一个字节的函数和发送字符串的函数,发送字符串需要知道字符串的长度。对于接收字符串的函数,可以仿照通过调用接收一个字节的函数,写出接收字符串函数。 void WriteUart(uchar *pucData ,uchar ucLength) { if(ucLength == 0) { return; } if(UartBuzy == 1) return; ucSendLength = ucLength; pucSendData = pucData; SBUF = *pucSendData; UartBuzy = 1; ucSendedCount = 0; } uchar ReadUart(void) { uchar Data; Data = ucRecData; ucRecData = 0; return Data; } Unsigned char RString(unsigned char *s, unsigned int len) { Unsigned int i; For(i =0;i

void UartIRQ(void) interrupt 4 { if(RI) { RI = 0; ucRecData = SBUF; } if(TI) { TI = 0; ucSendedCount++; if(ucSendedCount >= ucSendLength) { UartBuzy = 0; return; } else { SBUF = *(pucSendData + ucSendedCount); } } } STC15: STC15只给出了发送函数,且发送函数有瑕疵,具体见最后分析。void UART1_ISR(void) interrupt 4 using 1 { if (RI) //接收数据 { RI = 0; //清除RI位 } if (TI) //发送数据 { TI = 0; //清除TI位 busy = 0; //清忙标志 } } void SendData(unsigned char dat) { while (busy); //等待前面的数据发送完成 busy = 1; SBUF = dat; //写数据到UART数据寄存器 } void SendString(char *s) {

51单片机串口教程

https://www.360docs.net/doc/b29272784.html,/thread-2765635-1-1.html 51单片机的串口,是个全双工的串口,发送数据的同时,还可以接收数据。 当串行发送完毕后,将在标志位TI 置1,同样,当收到了数据后,也会在RI 置1。无论RI 或TI 出现了1,只要串口中断处于开放状态,单片机都会进入串口中断处理程序。 在中断程序中,要区分出来究竟是发送引起的中断,还是接收引起的中断,然后分别进行处理。 看到过一些书籍和文章,在串口收、发数据的处理方法上,很多人都有不妥之处。 接收数据时,基本上都是使用“中断方式”,这是正确合理的。 即:每当收到一个新数据,就在中断函数中,把RI 清零,并用一个变量,通知主函数,收到了新数据。 发送数据时,很多的程序都是使用的“查询方式”,就是执行while(TI ==0); 这样的语句来等待发送完毕。 这时,处理不好的话,就可能带来问题。 看了一些网友编写的程序,发现有如下几条容易出错: 1.有人在发送数据之前,先关闭了串口中断!等待发送完毕后,再打开串口中断。 这样,在发送数据的等待期间内,如果收到了数据,将不能进入中断函数,也就不会保存的这个新收到的数据。 这种处理方法,就会遗漏收到的数据。 2.有人在发送数据之前,并没有关闭串口中断,当TI = 1 时,是可以进入中断程序的。 但是,却在中断函数中,将TI 清零! 这样,在主函数中的while(TI ==0);,将永远等不到发送结束的标志。 3.还有人在中断程序中,并没有区分中断的来源,反而让发送引起的中断,执行了接收中断的程序。 对此,做而论道发表自己常用的方法: 接收数据时,使用“中断方式”,清除RI 后,用一个变量通知主函数,收到新数据。 发送数据时,也用“中断方式”,清除TI 后,用另一个变量通知主函数,数据发送完毕。这样一来,收、发两者基本一致,编写程序也很规范、易懂。 更重要的是,主函数中,不用在那儿死等发送完毕,可以有更多的时间查看其它的标志。

STC单片机串口程序

//注意,如您使用的MCU没有那个功能,就不要操作相应的寄存器 //注意,如您使用的MCU没有那那么大的扩展SRAM,就不要操作超过范围的SRAM #include #include sfr S2CON = 0x9A; //S2SM0,S2SM1,S2SM2,S2REN,S2TB8,SRB8,S2TI,S2RI sfr IE2 = 0xAF; //X,X,X,X,X,X,ESPI,ES2 sfr S2BUF = 0x9B; sfr AUXR = 0x8e; sfr BRT = 0x9c; sfr IAP_CONTR = 0xC7; sfr CCON = 0xD8; sfr CMOD = 0xD9; sfr CL = 0xE9; sfr CH = 0xF9; sfr CCAP0L = 0xEA; sfr CCAP0H = 0xFA; sfr CCAPM0 = 0xDA; sfr CCAPM1 = 0xDB; sbit CR = 0xDE; sbit MCU_Start_Led = P1^7; sbit S2_Interrupt_Receive_Led = P1^4; //unsigned char self_command_array[4] = {0x22,0x33,0x44,0x55}; #define Self_Define_ISP_Download_Command 0x22 #define RELOAD_COUNT 0xfb //18.432MHz,12T,SMOD=0,9600bps void serial_port_one_initial(); void send_UART_one(unsigned char); void UART_one_Interrupt_Receive(void); void serial_port_two_initial(); void send_UART_two(unsigned char); void UART_two_Interrupt_Receive(void); void soft_reset_to_ISP_Monitor(void); void delay(void);

基于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设计方案选择 (5) 2.1.1 PC机同单片机通信存在的问题 (5) 2.1.2 USB接口同RS-232(DB-9)串口的比较 (5) 2.1.3 USB转接芯片的选择 (6) 2.2 通信功能要求 (7) 第三章硬件电路图的设计 (7) 3.1单片机最小系统 (7) 3.2 USB与单片机连接主电路 (7) 3.3 总电路图 (8) 3.4 PCB图 (8) 第四章程序设计 (9) 4.1 串口初始化 (9)

4.2 主程序 (9) 4.3 中断服务程序 (10) 4.4 总程序 (11) 第五章总结与体会 (13) 第六章参考文献 (14)

STC系列单片机程序烧录方法

STC系列单片机程序烧录方法 来源:互联网作者: 关键字:STC单片机单片机烧录单片机烧录方法 STC单片机具有通过串口编程功能,简单到通过串口3三根线就能将程序烧录到单片机内,这大大的方便了开发人员,省去了昂贵复杂的编程器,在调试程序时也可将内部数据直接通过串口发送到PC上观瞧,一些不太复杂的程序甚至可以省掉仿真器。 目前大部分的计算机都不带串口,这里还得介绍一下一个小转换工具,可将PC 上的USB口转换成单片机的TTL电平。插入硬件后提示安装驱动,完成后查瞧PC 上设备管理器,端口中会多出一个串口,这里就是COM3,记住这个串口号,下面给单片机烧录就是要用。

单片机板与转换板连线对应连接好,如发现无法通讯,可调整2、3的连线。 1,地线----地线 2,TXD-----RXD 3,RXD-----TXD 转换板由于PC供电,指对外提供很小的供电能力,建议单片机板用单独的电源供电,切记不能外接电源与转换板同时对单片机板供电,否则会烧设备或计算机的危险。 硬件连接正常后就就是通过STC专门的烧录软件进行烧录了。

1、现在对应的单片机型号 2、打开编译过的需要写入单片机内的程序,类型都就是以、bin与、Hex结尾的文件。 3、选择连接的串口号,就就是上边在设备管理器里瞧到的COM3。 4、选择通讯波特率,单片机目标板上有晶振的,这一项基本可以不用理会,系统会自动适应合适的波特率。如果目标板使用的就是内部振荡,由于内部制造误差,自动波特率可能会连接不成功,这时就要手工设置,最高与最低都设成一样,从最大数到最小数一个一个试,直到连接成功为止,最差的就只能以1200的波特率烧录了,烧录时间稍长些,没办法就多等会儿吧。其它选项不知道啥意思的就不要乱选。

STC_单片机下载器使用说明

STC 单片机下载器使用说明 介绍: 这是一个USB 转TTL 电平的串口转换器。它利用USB 协议里规定的总线转换功能,把USB 转换成串行通信口。因为现在的台式机、笔记本电脑普遍已经不再配备串 口,因此在需要串口的时候,可以使用这种转换器。 由于STC 单片机可以使用串口下载程序,所以可以使用这种USB 转串口模块来给STC 的单片机下载程序。 写到此处,我想多说几句题外话,8051 内核单片机诞生于1980 年左右,Intel由公司设计,(这家公司各位一定不陌生吧)。当时英特尔公司刚刚起步,走的是 开放的、兼容型的路线。所以,intel 公司把8051 单片机的设计授权给了给了其他半导 体厂商,于是众多厂商生产了各种各样的51 系列单片机,这些厂商包括: ATMEL 公司、WinBond(华邦)公司、 Philips(飞利浦)公司NEC(日电)公司、 、 LG 公司、 等。 SIEMENS(西门子)公司 如今,8051 单片机内核的知识产权保护期已过,因此许多国产半导体厂商兴起,如:深圳宏晶(STC)、上海海尔、台湾笙泉、湖南华芯、台湾华邦(芯唐)、台湾中颖、台湾新茂、台湾太欣等等。 我们之所以选用国产STC 单片机作为教学用单片机,主要还是考虑到其成本因素。相对来说,STC 单片机价格比较便宜,而且芯片功能强大,片内集成了很多功能。 此外还要说明的是,给单片机下载程序必须要有下载器(编程器、烧录器),而多数单 片机的下载器价格都会在100 到200 元以上,这对于初学者来说是难以承受的,STC而单片机烧录程序,仅仅需要串口即可,而即使电脑没有配备串口,购买一个USB 转串 口也不过15 块钱以内,这就大大降低了单片机的学习门槛。 下面就来介绍我们这款STC 的单片机下载器——USB 转TTL 串口模块。USB 转串口小板功能:1、简单的串口通信。2 、路由器或者ADSL 固件升级。3 、STC 单片机、STM32 单片机等,烧写程序。4 、硬盘固件升级。5、超级终端里使用。常用串口调试 工具。6、各种卫星机升级用。7、GPS 串口通信。等...............通用型的USB 转串口小板。可见它的功能不仅仅是给STC 单片机下载程序。

STC单片机双串口使用设置与例程

STC单片机双串口使用设置与例程 在用STC_60s2单片机进行双串口同时收发时,要注意一些容易配置错误的地方。AUXR寄存器有很多功能。在对 其中的位置位和复位时,很可能在不同的地方多次进行,应该使用AUXR |= bitx 和AUXR &=~bitx 语句进行对某一位的置位和复位。这样就不会影响其他功能位了。 附上程序: #include ; //sfr AUXR = 0x8E; #define uchar unsigned char// #define uint unsigned int // #define BUADRATE 38400 #define FOSC 24000000 #define S2RI 0x01 #define S2TI 0x02 sbit LED1 = P2^7; uchar ReceBuf[200]={0}; bit finishflag = 0; uchar revcnt = 0; uchar startflag = 0; void InitUART1(void) //baudrate 115200

{ TMOD = 0x20; SCON = 0x50; TH1 = 0xf3; //115384 TL1 = TH1; PCON = 0x80; //SMOD = 1; ES = 1; TR1 = 1; } void InitUART2() //baudrate 38400 { S2CON = 0x50; //8-Bit 串口模式允许接收 BRT = 236; //[24000000/(256-236)]/32 = 37500 error2.34% AUXR |= 0x14; //BRTR=1使能BRT BRTx12=1 不分频(AUXR 第二次出现,不能用‘=’应该用“|=”) IE2 = 0x01; //enable UART2 interrupt AUXR1 = 0; //UART2 TXD->;P1.3 RXD->;P1.2 } void SendOneByte(unsigned char c) {

STC15系列4个串口的使用库函数

STC15系列4个串口的使用库函数 最近开发一个项目,想用STC15系列来作为控制芯片,主要看中它的功能还比较丰富,尤其是有四个串口资源,在8位单片机中算是少有,但是开发起来就发现官方提供的库里面只提供了两个串口的库函数,官方提供的库函数的使用相对复杂(要先用结构填一堆参数),本人读了下代码还有一些隐患。相比现在比较火热的Arduino,51系列单片机的易用性差了好大的一截,宏晶的老大应该在开发易用方面下点功夫。能给开发者提供一个傻瓜式的调用函数是最好的,串口用到现在,其实参数基本固定了。常用的协议就是8数据位,1停止位,无校验位,常用的波特率考虑两个就够了,一个是9600,一个是115200。基于使用最方便的考虑,本人写了一个调用相对简单的库,供大家参考。本文中的函数库写采用的是同步方式,每次都是等待发送完毕后才返回;读则取采用异步,如果没有数据则返回-1;好了,开发者最好的语言是代码,下面就贴代码首先是xyusart.h文件,引用了stc官方库的config.h文件,文件内容如下 //STC15WxxxxS4 系列4串口使用函数库 //开发者,北京创世星辰机器人科技,星辰李 //本程序遵循GPL协议,转载请保留注释和出处 //2016.1.5

#ifndef __XYUSART_H #define __XYUSART_H #include 'config.h' #define BAUD9600 0 //波特率9600 #define BAUD115200 1 //波特率115200 //只有一种模式8位数据位,1位停止位,无奇偶校验,只有两种传输速率9600和115200,简化调用者的使用,引脚都使用默认引脚 void S1_init(u8 baud); //初始化串口1 P3.0->RXD P3.1->TXD void S2_init(u8 baud); //初始化串口2 P1.0->RXD2 P1.1->TXD2 void S3_init(u8 baud); //初始化串口3 P0.0->RXD3 P0.1->TXD3 void S4_init(u8 baud); //初始化串口4 P0.2->RXD4 P0.3->TXD4void S1_send(u8 c); //串口1发送一个字节void S2_send(u8 c); //串口2发送一个字节 void S3_send(u8 c); //串口3发送一个字节 void S4_send(u8 c); //串口4发送一个字节short S1_read(); //串口1,读一个字节,返回>0表示成功读取数据,返回-1表示没有读到数据,数据放在c中 short S2_read(); //串口2,读一个字节,返回>0表示成功读取数据,返回-1表示没有读到数据,数据放在c中

stc单片机串口使用

串口 一、中断图 二、相关寄存器 1、SCON 串行控制寄存器(可位寻址)0x98 B7 B6 B5 B4 B3 B2 B1 B0 SM0/FE SM1 SM2 REN TB8 RB8 TI RI SM0/FE :当PCON 寄存器中的SMOD0/PCON.6位为1时,该位用于帧错误检测。 当检测到一个 无效停止位时,通过UART 接收器设置该位。它必须由软件清零。 当PCON 寄存器中的SMOD0/PCON.6位为0时,该位和SM1一起指定串行通信的 工作 方式,如下表所示。 其中SM0、SM1按下列组合确定串行口1的工作方式: SM0 SM1 工作方式 功能说明 波特率 0 0 方式0 同步移位串行方式:移 位寄存器 当UART_M0x6 = 0时,波特率是SYSclk/12, 当UART_M0x6 = 1时,波特率是SYSclk / 2 0 1 方式1 8位UART ,波特率可变 ( 2SMOD /32 )×(定时器1的溢出率或BRT 独立 波特率发生器的溢出率) 1 0 方式 2 9位UART ( 2SMOD / 64) x SYSclk 系统工作时钟频率 1 1 方式3 9位UART ,波特率可变 (2SMOD /32 )x(定时器1的溢出率或BRT 独立波 特率发生器的溢出率) 当T1x12 = 0时,定时器1的溢出率 = SYSclk/12/( 256 - T H1); 当T1x12 = 1时,定时器1的溢出率 = SYSclk / ( 256 - T H1) 当BRTx12 = 0时,BRT 独立波特率发生器的溢出率 = SYSclk/12/( 256 - BRT ); 当BRTx12 = 1时,BRT 独立波特率发生器的溢出率 = SYSclk / ( 256 - BRT ) SM2:允许方式2或方式3多机通信控制位。 EX0EA PX001 ET0PT001 EX1PX101 ET1PT101 ES PS 0 1≥1 RI TI SCON TCON IE0 TF0IE1TF11 0101IT0IT1 INT0INT1T0T1RX TX IE IP 11 1111 1 1 0硬件查询 自然优先级自然优先级中断入口 中断入口 高级 低级 中断源 中断源

相关文档
最新文档