stc单片机stc15串口收发示例程序模板(代码片段)

perseverance52 perseverance52     2023-03-09     320

关键词:

【STC单片机】STC15串口收发示例程序模板


  • 程序源码来源于STC15官方的《STC15试验箱》修改,源代码的内容比较笼统,没注意串口定义的引脚的话,是没法用的。特此在此基础上进行了修改,去掉了不常用的设置内容,简化代码,增加直观可用性,方便移植使用。
  • 验证对象:STC15F2K60S2单片机,外部晶振11.0592MHz以及STC15W408AS单片机外部晶振16MHz,采用自制开发板,
  • 【开源STC15开发板】STC15F2K60S2开发板
  • 【开源分享】自制STC15W408AS开发板

按照使用用途:串口收发模式和串口发送模式

  • 串口收发模式:即可以发送也可以接收。

这种模式下,串口需要占用单片机运行内存,接收内容的代码需要放在主程序while循环中进行。

/**以下内容放到while里面**/
		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;
		
  • 串口发送模式:只保留发送功能模式。

这种模式下,只有在程序需要调用串口打印时才使能,随调随用。适合串口作为调试输出时使用。

按照输出方式:自定义输出模式和printf输出模式

  • 自定义输出模式:自定义的输出串口打印。
void PrintString1(u8 *puts)	//发送一个字符串

    for (; *puts != 0;	puts++)   	//遇到停止符0结束
	
		SBUF = *puts;
		B_TX1_Busy = 1;
		while(B_TX1_Busy);
	

  • printf输出模式:printf输出串口打印。

printf输出方式调用了头文件stdio.h,输出内容比较灵活,程序文件会增大。

 char putchar(unsigned char c)

	     SBUF = c; 					//发送数据
			B_TX1_Busy = 1;
		while(B_TX1_Busy);
//     while(!TI); 					//等待发送完成
//     TI=0; 							//清零发送标志位;
	return c;

printf输出模式编译大小

  • 自定义输出模式编译大小
  • 所需头文件需要自己添加:STC15Fxxxx.H

串口收发模式程序代码


/*---------------------------------------------------------------------*/
/* --- STC MCU International Limited ----------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.GXWMCU.com --------------------------------------------*/
/* --- QQ:  800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了宏晶科技的资料及程序   */
/*---------------------------------------------------------------------*/

/*************	功能说明	**************

双串口全双工中断方式收发通讯程序。

通过PC向MCU发送数据, MCU收到后通过串口把收到的数据原样返回.

******************************************/


#define 	MAIN_Fosc			11059200uL	//定义主时钟
//#include "stdio.h"
#include	"STC15Fxxxx.H"

#define		Baudrate1			9600L
#define		UART1_BUF_LENGTH	32


u8	TX1_Cnt;	//发送计数
u8	RX1_Cnt;	//接收计数
bit	B_TX1_Busy;	//发送忙标志

u8 	idata RX1_Buffer[UART1_BUF_LENGTH];	//接收缓冲


void	UART1_config();	// 选择波特率使用Timer2做波特率
// char putchar(unsigned char c);//串口打印函数
void 	PrintString1(u8 *puts);
void  delay_ms(unsigned int ms);//延时函数

//========================================================================
// 函数: void main(void)
// 描述: 主函数。
//========================================================================
void main(void)

	P1M1 |=0x00; P1M0 |=0x01;//设置P10为推挽输出
//	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;	//设置为准双向口
	S1_USE_P30P31();
	UART1_config();	// 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
	EA = 1;	//允许总中断

	PrintString1("STC15F2K60S2 UART1 Test Prgramme!\\r\\n");	//UART1发送一个字符串

	while (1)
	
//		PrintString1("\\t perseverance51 \\r\\n");	
//		delay_ms(500);
//		P10 = ~P10;
		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;
		
	



//========================================================================
// 函数: void PrintString1(u8 *puts)
// 描述: 串口1发送字符串函数。
// 参数: puts:  字符串指针.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 备注: 
//========================================================================
///*
void PrintString1(u8 *puts)	//发送一个字符串

    for (; *puts != 0;	puts++)   	//遇到停止符0结束
	
		SBUF = *puts;
		B_TX1_Busy = 1;
		while(B_TX1_Busy);
	

//*/
//----------------------------------------------------------   
//  函数名称:putchar(unsigned char c)
//  函数功能:串口发送一个字节
//		功能:包含stdio.h实现printf打印
//----------------------------------------------------------  
// char putchar(unsigned char c)
//
//	     SBUF = c; 					//发送数据
//			B_TX1_Busy = 1;
//		while(B_TX1_Busy);
     while(!TI); 					//等待发送完成
     TI=0; 							//清零发送标志位;
//	return c;
//
//========================================================================
// 函数: SetTimer2Baudraye(u16 dat)
// 描述: 设置Timer2做波特率发生器。
// 参数: dat: Timer2的重装值.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 备注: 
//========================================================================
void	SetTimer2Baudraye(u16 dat)	// 选择波特率使用Timer2做波特率

	AUXR &= ~(1<<4);	//Timer stop
	AUXR &= ~(1<<3);	//Timer2 set As Timer
	AUXR |=  (1<<2);	//Timer2 set as 1T mode
	TH2 = dat / 256;
	TL2 = dat % 256;
	IE2  &= ~(1<<2);	//禁止中断
	AUXR |=  (1<<4);	//Timer run enable


//========================================================================
// 函数: void	UART1_config(u8 brt)
// 描述: UART1初始化函数。
// 参数: brt: 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 备注: 
//========================================================================
void	UART1_config()	// 选择波特率使用Timer2做波特率

	/*********** 波特率使用定时器2 *****************/
		SCON = 0x50;		//8位数据,可变波特率
		AUXR |= 0x01;		//S1 BRT Use Timer2;
		AUXR |= 0x04;		//定时器时钟1T模式
		SetTimer2Baudraye(65536UL - (MAIN_Fosc / 4) / Baudrate1);
		AUXR |= 0x10;		//定时器2开始计时
//SCON = (SCON & 0x3f) | 0x40;	//UART1模式, 0x00: 同步移位输出, 0x40: 8位数据,可变波特率, 0x80: 9位数据,固定波特率, 0xc0: 9位数据,可变波特率
//	PS  = 1;	//高优先级中断
	ES  = 1;	//允许中断
	REN = 1;	//允许接收
	P_SW1 &= 0x3f;//串口在[P3.0/RxD,P3.1/TxD]
	P_SW1 |= 0x00;		//UART1 switch to, 0x00: P3.0 P3.1, 0x40: P3.6 P3.7, 0x80: P1.6 P1.7 (必须使用内部时钟)
//	PCON2 |=  (1<<4);	//内部短路RXD与TXD, 做中继, ENABLE,DISABLE
	PCON2 |=0x00;
	B_TX1_Busy = 0;
	TX1_Cnt = 0;
	RX1_Cnt = 0;



//========================================================================
// 函数: void UART1_int (void) interrupt UART1_VECTOR
// 描述: UART1中断函数。
// 参数: nine.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 备注: 
//========================================================================
void UART1_int (void) interrupt UART1_VECTOR

	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;
	


//========================================================================
// 函数: void  delay_ms(unsigned char ms)
// 描述: 延时函数。
// 参数: ms,要延时的ms数, 这里只支持1~255ms. 自动适应主时钟.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 备注: 
//========================================================================
void  delay_ms(unsigned int ms)

     unsigned int i;
	 do
	      i = MAIN_Fosc / 13000;
		  while(--i)	;   //14T per loop
     while(--ms);

自定义输出模式代码


/*---------------------------------------------------------------------*/
/* --- STC MCU International Limited ----------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.GXWMCU.com --------------------------------------------*/
/* --- QQ:  800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了宏晶科技的资料及程序   */
/*---------------------------------------------------------------------*/

/*************	功能说明	**************

双串口全双工中断方式收发通讯程序。

通过PC向MCU发送数据, MCU收到后通过串口把收到的数据原样返回.

******************************************/


#define 	MAIN_Fosc			11059200uL	//定义主时钟
//#include "stdio.h"
#include	"STC15Fxxxx.H"

#define		Baudrate1			9600L
#define		UART1_BUF_LENGTH	32


u8	TX1_Cnt;	//发送计数
u8	RX1_Cnt;	//接收计数
bit	B_TX1_Busy;	//发送忙标志

u8 	idata RX1_Buffer[UART1_BUF_LENGTH];	//接收缓冲


void	UART1_config();	// 选择波特率使用Timer2做波特率
// char putchar(unsigned char c);//串口打印函数
void 	PrintString1(u8 *puts);
void  delay_ms(unsigned int ms);//延时函数

//========================================================================
// 函数: void main(void)
// 描述: 主函数。
//========================================================================
void main(void)

	P1M1 |=0x00; P1M0 |=0x01;//设置P10为推挽输出
//	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;	//设置为准双向口
	S1_USE_P30P31();
	UART1_config();	// 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
	EA = 1;	//允许总中断

	PrintString1("STC15F2K60S2 UART1 Test Prgramme!\\r\\n");	//UART1发送一个字符串

	while (1)
	
//		PrintString1("\\t perseverance51 \\r\\n");	
		delay_ms(500);
		P10 = ~P10;
		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;
		
	



//========================================================================
// 函数: void PrintString1(u8 *puts)
// 描述: 串口1发送字符串函数。
// 参数: puts:  字符串指针.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 备注: 
//========================================================================
///*
void PrintString1(u8 *puts)	//发送一个字符串

    for (; *puts != 0;	puts++)   	//遇到停止符0结束
	
		SBUF = *puts;
		B_TX1_Busy = 1;
		while(B_TX1_Busy);
	

//*/
//----------------------------------------------------------   
//  函数名称:putchar(unsigned char c)
//  函数功能:串口发送一个字节
//		功能:包含stdio.h实现printf打印
//----------------------------------------------------------  
// char putchar(unsigned char c)
//
//	     SBUF = c; 					//发送数据
//			B_TX1_Busy = 1;
//		while(B_TX1_Busy);
     while(!TI); 					//等待发送完成
     TI=0; 							//清零发送标志位;
//	return c;
//
//========================================================================
// 函数: SetTimer2Baudraye(u16 dat)
// 描述: 设置Timer2做波特率发生器。
// 参数: dat: Timer2的重装值.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 备注: 
//========================================================================
void	SetTimer2Baudraye(u16 dat)	// 选择波特率使用Timer2做波特率

	AUXR &= ~(1<<4);	//Timer stop
	AUXR &= ~(1<<3);	//Timer2 set As Timer
	AUXR |=  (1<<2);	//Timer2 set as 1T mode
	TH2 = dat / 256;
	TL2 = dat % 256;
	IE2  &= ~(1<<2);	//禁止中断
	AUXR |=  (1<<4);	//Timer run enable


//========================================================================
// 函数: void	UART1_config(u8 brt)
// 描述: UART1初始化函数。
// 参数: brt: 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 备注: 
//========================================================================
void	UART1_config()	// 选择波特率使用Timer2做波特率

	/*********** 波特率使用定时器2 *****************/
		SCON = 0x50;		//8位数据,可变波特率
		AUXR |= 0x01;		//S1 BRT Use Timer2;
		AUXR |= 0x04;		//定时器时钟1T模式
		SetTimer2Baudraye(65536UL - (MAIN_Fosc / 4) / Baudrate1);
		AUXR |= 0x10;		//定时器2开始计时

//SCON = (SCON & 0x3f) | 0x40;	//UART1模式, 0x00: 同步移位输出, 0x40: 8位数据,可变波特率, 0x80: 9位数据,固定波特率, 0xc0: 9位数据,可变波特率
//	PS  = 1;	//高优先级中断
	ES  = 1;	//允许中断
	REN = 1;	//允许接收
	P_SW1 &= 0x3f;//串口在[P3.0/RxD,P3.1/TxD]
	P_SW1 |= 0x00;		//UART1 switch to, 0x00: P3.0 P3.1, 0x40: P3.6 P3.7, 0x80: P1.6 P1.7 (必须使用内部时钟)
//	PCON2 |=  (1<<4);	//内部短路RXD与TXD, 做中继, ENABLE,DISABLE
	PCON2 |=0x00;
	B_TX1_Busy = 0;
	TX1_Cnt = 0;
	RX1_Cnt = 0;



//========================================================================
// 函数: void UART1_int (void) interrupt UART1_VECTOR
// 描述: UART1中断函数。
// 参数: nine.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 备注: 
//========================================================================
void UART1_int (void) interrupt UART1_VECTOR

	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;
	


//========================================================================
// 函数: void  delay_ms(unsigned char ms)
// 描述: 延时函数。
// 参数: ms,要延时的ms数, 这里只支持1~255ms. 自动适应主时钟.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 备注: 
//========================================================================
void  delay_ms(unsigned int ms)

     unsigned int i;
	 do
	      i = MAIN_Fosc / 13000;
		  while(--i)	;   //14T per loop
     while(--ms);

printf模式输出方式


/*---------------------------------------------------------------------*/
/* --- STC MCU International Limited ----------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.GXWMCU.com --------------------------------------------*/
/* --- QQ:  800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了宏晶科技的资料及程序   */
/*---------------------------------------------------------------------*/

/*************	功能说明	**************

双串口全双工中断方式收发通讯程序。

通过PC向MCU发送数据, MCU收到后通过串口把收到的数据原样返回.

******************************************/


#define 	MAIN_Fosc			11059200uL	//定义主时钟
#include "stdio.h"
#include	"STC15Fxxxx.H"

#define		Baudrate1			9600L
#define		UART1_BUF_LENGTH	32


u8	TX1_Cnt;	//发送计数
u8	RX1_Cnt;	//接收计数
bit	B_TX1_Busy;	//发送忙标志

u8 	idata RX1_Buffer[UART1_BUF_LENGTH];	//接收缓冲


void	UART1_config();	// 选择波特率使用Timer2做波特率
 char putchar(unsigned char c);//串口打印函数
//void 	PrintString1(u8 *puts);
void  delay_ms(unsigned int ms);//延时函数

//========================================================================
// 函数: void main(void)
// 描述: 主函数。
//========================================================================
void main(void)

	P1M1 |=0x00; P1M0 |=0x01;//设置P10为推挽输出
stc15w408as单片机跑官方示例串口乱码问题办法(代码片段)

STC15W408AS单片机官方示例串口乱码问题办法官方示例代码下载位置:https://www.stcmcudata.com/这里以06-串口1中断收发为例,估计资料包里面有关串口的示例程序代码配置都是一样的,需要修改,不然串口收数据会有问... 查看详情

stc单片机基于vscodeplatformio开发stc15w408as软串口示例程序(代码片段)

【STC单片机】基于VSCodePlatformIO开发STC15W408AS软串口示例程序自制开发板《【开源分享】自制STC15W408AS开发板》采用了外部16MHz的晶振终于实现了在基于VSCodePlatformIO开发STC15W408AS软串口正常的信息输出,前面有写文章,VSCode... 查看详情

stc15w408as单片机简单串口通信示例(代码片段)

STC15W408AS单片机串口通信示例本示例展示将收到的数据内容,返回发送出去。实例代码#include"stc15.h"typedefunsignedcharuint8_t;typedefunsignedintWORD;#defineFOSC11059200L//系统频率#defineBAUD9600//串口波特率voidSendData(uint8_tdat); 查看详情

stc15f408as跑stc官方示例串口输出乱码问题解决方案(代码片段)

...方示例代码下载位置:https://www.stcmcudata.com/这里以06-串口1中断收发为例,估计资料包里面有关串口的示例程序代码配置都是一样的,需要修改,不然串口收数据会有问题。每个示例里面有3 查看详情

stc单片机stc15主时钟对外输出示例程序及演示(代码片段)

【STC单片机】STC15主时钟对外输出示例程序及演示采用的是自制STC15W408AS开发板,采用的是外部16MHz晶振。《【开源分享】自制STC15W408AS开发板》对外输出不同时钟频率对外输出8MHz,引脚P54对外输出4MHz,引脚P54对外输... 查看详情

stc15比较器做adc程序示例(代码片段)

【STC15】比较器做ADC程序示例STC15系列单片机A/D转换的结构图SOP28引脚功能定义图类似运放电路的电压跟随器。主程序代码这是一个官方给出的示例程序,可以在STC官网下载,STC15系列库函数与例程测试版。/*-------------------... 查看详情

stc15读取内部id示例程序(代码片段)

...对象。📑STC15ID序列介绍STC15系列STC最新一代STC15系列单片机出厂时都具有全球唯一身份证号码(ID号)。最新STC15系列单片机的程序存储器的最后7个字节单元的值是全球唯一ID号,用户不可修改,但IAP15系列单片机的整个... 查看详情

stc单片机stc15单片机读取mpu6050模块数据并串口输出

【STC单片机】STC15单片机读取MPU6050模块数据并串口输出采用STC15F2K60S2单片机,使用的是11.0592MHz的外部晶振,如果想移植到其他型号的单片机只需拷贝相应的头文件即可,调整IIC通讯的延时函数,本示例只是对mpu6050模块... 查看详情

stc15系列单片机eeprom读写示例(代码片段)

STC15系列单片机EEPROM读写示例🌼STC15手册有关EEPROM描述🌾STC15系列单片机内部集成了大容量的EEPROM,其与程序空间是分开的。利用ISP/IAP技术可将内部DataFlash当EEPROM,擦写次数在10万次以上。EEPROM可分为若干个扇区&#... 查看详情

stc15stc15单片机获取红外解码从软串口输出(代码片段)

【STC15】STC15单片机获取红外解码从软串口输出单片机型号:STC15F2K60S2采用外部晶振,频率:11.0592MHz红外接收头,数据引脚接P3.2这里软串口实现主要是位处理时间一定要准确才行。以Keil编程环境为例,如果是... 查看详情

无线模块推荐一下。求stc89c52单片机与单片机之间串口无线收发程序?

参考技术A你好!1、2.4G无线模块2、Zigbee无线模块3、WIFI无线模块关键还要看做什么用途,无线通信距离需要多远 参考技术BESP8266. 查看详情

2021-06-09stc8单片机串口驱动函数(代码片段)

STC8单片机串口驱动函数单片机型号为STC8A8K64S4A12默认时钟频率为22.1184MHz串口设置为9600-n-8-1使用的串口为串口1(RXD–P30TXD–P31)实验现象为收发一致以下为实现现象以下为完整程序代码/**********************************************... 查看详情

stc15单片机pwm实际波形测量(代码片段)

STC15单片机PWM实际波形测量本实验跑的官方PWM示例官方示例代码下载位置:https://www.stcmcudata.com/示例8:主程序注释掉了增量变化/*------------------------------------------------------------------*//*---STCMCUInternationalLimited---------------------... 查看详情

stc15w408as读取dht11温湿度+oled显示+数据串口打印(代码片段)

...串口重映射printf函数打印,方便使用者移植到其他同类型单片机的工程项目当中,一个好的工程项目不仅用来学习,还应该向模板工程方向发展。串口输出打印汉字取模方式 查看详情

stc15单片机跑流水灯proteus仿真(代码片段)

STC15单片机跑流水灯Proteus仿真Proteus仿真官方示例代码下载位置:https://www.stcmcudata.com/主程序示例代码/*------------------------------------------------------------------*//*---STCMCUInternationalLimited----------------- 查看详情

stc15比较器介绍以及比较器中断方式作为掉电检测示例程序(代码片段)

...系列及STC15W1K16S系列的比较器内部规划如下图所示:有ADC的单片机STC15W401AS系列及STC15W4K32S4系列的比较器内部规划如下图所示:比较器正极输入端CMP+电平可以与比较器负极输入端CMP-的电平进行比较,也可以与内部 查看详情

2021-06-09stc8单片机串口驱动函数(代码片段)

STC8单片机串口驱动函数单片机型号为STC8A8K64S4A12默认时钟频率为22.1184MHz串口设置为9600-n-8-1使用的串口为串口1(RXD–P30TXD–P31)实验现象为收发一致以下为实现现象以下为完整程序代码/**********************************************... 查看详情

proteus仿真stc15单片机+lcd1602驱动显示时间(demo)示例(代码片段)

【Proteus仿真】STC15单片机+LCD1602驱动显示时间(DEMO)示例Proteus仿真Proteus加载STC15单片机说明在Proteus里面唯一能找到的STC15一款支持仿真的STC单片机,只能在Proteus8.9以上的版本以上中才可以找到,低于这个版本... 查看详情