通过串口把字符串数据从单片机U1发送到单片机U2,通过U2的LCD602显示出来。LCD602显示代码是用的一个比较不错的现成的显示代码。单片机串口传字符串,主要是利用字符串的格式的特点,在传输中结束串口的使用。
Proteus仿真示意参考图:
串口发送字符串的C语言代码参考:通过串口把字符串数据从单片机U1发送到单片机U2,
/* 串口发送字符串的C语言代码参考 注意事项:晶振用11.0592的。 基本原理:通过串口把数据从单片机U1发送到单片机U2,通过U2的LCD602显示出来。 */ #include "reg52.h" void Com_Init(void)//初始化串口程序,晶振11.0592, 波特率9600 { SCON = 0x50; //串口基本设置0101 0000 PCON = 0x00; //smod串口倍率模式选择 TMOD = 0x20; //定时器(波特率设置)0010 0000 TH1 = 0xFd; //定时器填充值 TL1 = 0xFd; //定时器初值 TR1 = 1; //开定时器 //ES = 1; //串口中断使能 //EA = 1; //总中断使能 } void delay1ms(unsigned int ms) { unsigned int i,j; for(i=ms;i>0;i--) for(j=118;j>0;j--); } void main() { unsigned char *p; unsigned char Buffer[]= "Hello world!";// Com_Init(); delay1ms(100); p = Buffer; while(1) { SBUF = *p; while(!TI); p++; if(*p == '\0'){SBUF = *p;break;}//在每个字符串的最后,会有一个'\0' TI = 0; delay1ms(3); } while(1); }
串口接收字符串的C语言代码参考:通过U2的LCD602显示出来。LCD602显示代码是用的一个比较不错的现成的显示代码。
/* 串口接收字符串的C语言代码参考 注意事项:晶振用11.0592的。 基本原理:通过串口把数据从单片机U1发送到单片机U2,通过U2的LCD1602显示出来。 搜集整理:www.dpjcode.cn */ #include "reg52.h" unsigned char String[]={0}; void Com_Init(void)//串口初始化,晶振11.0592,波特率9600 { SCON = 0x50; //串口基本设置0101 0000,第4位REN设置1,REN=1,接受使能 PCON = 0x00; //smod串口倍率模式选择 TMOD = 0x20; //定时器(波特率设置)0010 0000 TH1 = 0xFd; //定时器填充值 TL1 = 0xFd; //定时器初值 TR1 = 1; //开定时器 //ES = 1; //串口中断使能 //EA = 1; //总中断使能 } /*引脚设置*/ sbit LCD_RS=P2^6; sbit LCD_RW=P2^5; sbit LCD_EN=P2^7; #define LCD_DataPort P0 /*LCD1602延时函数,12MHz调用可延时1ms*/ void LCD_Delay() { unsigned char i, j; i = 2; j = 239; do { while (--j); } while (--i); } /*LCD1602写命令*/ void LCD_WriteCommand(unsigned char Command) { LCD_RS=0; LCD_RW=0; LCD_DataPort=Command; LCD_EN=1; LCD_Delay(); LCD_EN=0; LCD_Delay(); } /*LCD1602写数据*/ void LCD_WriteData(unsigned char Data) { LCD_RS=1; LCD_RW=0; LCD_DataPort=Data; LCD_EN=1; LCD_Delay(); LCD_EN=0; LCD_Delay(); } /*LCD1602设置光标位置*/ void LCD_SetCursor(unsigned char Line,unsigned char Column) { if(Line==1) { LCD_WriteCommand(0x80|(Column-1)); } else if(Line==2) { LCD_WriteCommand(0x80|(Column-1+0x40)); } } /*LCD1602初始化函数*/ void LCD_Init() { unsigned int i; for(i=0;i<5;i++){LCD_Delay();} LCD_WriteCommand(0x38);//八位数据接口,两行显示,5*7点阵 for(i=0;i<15;i++){LCD_Delay();} LCD_WriteCommand(0x38); LCD_WriteCommand(0x08); LCD_WriteCommand(0x01);//光标复位,清屏 LCD_WriteCommand(0x06);//数据读写操作后,光标自动加一,画面不动 LCD_WriteCommand(0x0c);//显示开,光标关,闪烁关 } /*在LCD1602指定位置上显示一个字符, Line 行位置,范围:1~2 Column 列位置,范围:1~16 Char 要显示的字符*/ void LCD_ShowChar(unsigned char Line,unsigned char Column,char Char) { LCD_SetCursor(Line,Column); LCD_WriteData(Char); } void Main() { unsigned char i=0; LCD_Init(); Com_Init(); while(1){ while(!RI); RI = 0; if(SBUF == '\0')break; LCD_ShowChar(1,++i,SBUF); } while(1); }
单片机串口传字符串,主要是利用字符串的格式的特点,在传输中结束串口的使用。转发请注明出处 - https://www.dpjcode.cn/45.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律