#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
//1602液晶显示控制,数据输出为P0口
sbit RS=P2^0;
sbit RW=P2^1;
sbit EN=P2^2;
//1602显示寄存器1、2
uchar LCD_DSY_BUFFER1[16];
uchar LCD_DSY_BUFFER2[16];
sbit LED=P1^1;
sbit LED2=P1^2;
sbit LED3=P1^3;
sbit LED4=P1^4;
uchar node=0; //用于记录当前接收数据的帧数
uchar buffer[4]; //用于记录当前接收的数据
//--------------------------------------------------
// 延时
//--------------------------------------------------
void DelayMS (uint ms)
{
uchar i;
while(ms--) for(i=0;i<120;i++);
}
//--------------------------------------------------
// 忙检查
//--------------------------------------------------
uchar Busy_check()
{
uchar LCD_Staus;
RS=0;
RW=1;
EN=1; //开始读
DelayMS(1);
LCD_Staus=P0;
EN=0;
return LCD_Staus;
}
//--------------------------------------------------
// 写LCD指令
//--------------------------------------------------
void Write_LCD_Command(uchar cmd)
{
while((Busy_check()&0x80)==0x80);//一直等到最高位为1
RS=0;
RW=0; //写入
EN=0;
P0=cmd;
EN=1;
DelayMS(1);
EN=0;
}
//--------------------------------------------------
// 发送数据
//--------------------------------------------------
void Write_LCD_Data(uchar dat)
{
while((Busy_check()&0x80)==0x80);//一直等到最高位为1
RS=1; //数据寄存器
RW=0; //写入
EN=0;
P0=dat;
EN=1;
DelayMS(1);
EN=0;
}
//--------------------------------------------------
// LCD初始化
//--------------------------------------------------
void Init_LCD()
{
Write_LCD_Command(0x38); //输出为8位,两行显示,5*7点阵
DelayMS(1);
Write_LCD_Command(0x01); //清屏
DelayMS(1);
Write_LCD_Command(0x06); //字符进入显示模式,屏幕不动,字符后移
DelayMS(1);
Write_LCD_Command(0x0C); //开显示,关光标
DelayMS(1);
}
//--------------------------------------------------
// 显示函数
//--------------------------------------------------
void Display_LCD_String(uchar x,uchar y,uchar *str)
{
uchar i=0;
// 设置显示起始位置
if(y==0) Write_LCD_Command(0x80|x);
if(y==1) Write_LCD_Command(0x86|x);
//输出字符串
for (i=0;i<16;i++)
{
Write_LCD_Data(str[i]);
DelayMS(1);
}
}
//--------------------------------------------------
//串口接收中断函数
//--------------------------------------------------
void Serial_INT() interrupt 4
{
if(RI)
{
RI=0;
buffer[node]=SBUF;
node++;
if(buffer[3]==29) LED=0;
if(node==4) EA=0;
}
}
//------------------------------------------------
//主程序
//------------------------------------------------
void main()
{
uchar i;
unsigned long int result=0;
uchar buffer2[4];
Init_LCD();
for(i=0;i<16;i++)
{
LCD_DSY_BUFFER2[i]=' ';
}
Display_LCD_String(0x00,0," NUMBER TO SHOW ");
SCON=0x50; //串口模式1,8位异步,允许接收
TMOD=0x20; //T1工作在模式2,8位自动装载
TH1=0xFD; //波特率设定为9600
TL1=0xFD;
PCON=0x00; //波特率不倍增
IE=0x90; //允许串行中断
TI=0;
RI=0;
TR1=1;
while(1)
{
if(node==4)
{
node=0;
buffer2[0]=buffer[3]; //数据映射
buffer2[1]=buffer[0];
buffer2[2]=buffer[1];
buffer2[3]=buffer[2];
for(i=0;i<4;i++)
{
result=result*256+buffer2[i];
}
for(i=0;i<10;i++)
{
LCD_DSY_BUFFER2[15-i]=result%10+'0';
result=result/10;
if(result==0) break;
}
Display_LCD_String(0x40,0,LCD_DSY_BUFFER2);
EA=1;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
uart_test.rar_uart传送字节
共91个文件
bak:12个
lst:9个
obj:9个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 190 浏览量
2022-09-24
16:57:07
上传
评论
收藏 234KB RAR 举报
温馨提示
介绍单片机串行通信的常用情况:单字节传输、多字节传输下的代码。
资源推荐
资源详情
资源评论
收起资源包目录
uart_test.rar (91个子文件)
串行通信
查询方式
master.plg 192B
master_Opt.Bak 1KB
slever.M51 9KB
slever.c 3KB
master.M51 8KB
slever.Uv2 2KB
slever_Opt.Bak 983B
STARTUP.LST 14KB
slever_Uv2.Bak 0B
master.Opt 1KB
master.hex 933B
master 5KB
master.LST 6KB
master.c 2KB
master.Uv2 2KB
slever.LST 6KB
master.OBJ 5KB
master_Uv2.Bak 2KB
slever.OBJ 7KB
slever.hex 1KB
master.lnp 60B
STARTUP.A51 6KB
emulation
查询法控制两个单片机通信.PWI 1KB
查询法控制两个单片机通信.DSN 123KB
Last Loaded 查询法控制两个单片机通信.DBK 123KB
slever 6KB
slever.Opt 994B
STARTUP.OBJ 749B
slever.lnp 44B
slever.plg 192B
中断方式
master.plg 220B
master_Opt.Bak 1KB
slever.M51 11KB
slever.c 3KB
master.M51 9KB
slever.Uv2 2KB
slever_Opt.Bak 1KB
STARTUP.LST 14KB
slever_Uv2.Bak 0B
master.Opt 1KB
master.hex 1KB
master 5KB
master.LST 6KB
master.c 3KB
master.Uv2 2KB
slever.LST 7KB
master.OBJ 6KB
master_Uv2.Bak 2KB
slever.OBJ 8KB
slever.hex 2KB
master.lnp 45B
STARTUP.A51 6KB
emulation
中断法控制两个单片机通信.PWI 1KB
Last Loaded 中断法控制两个单片机通信.DBK 126KB
中断法控制两个单片机通信.DSN 126KB
slever 7KB
slever.Opt 991B
STARTUP.OBJ 749B
slever.lnp 29B
slever.plg 2KB
多字节传送
master.plg 209B
master_Opt.Bak 1KB
slever.M51 11KB
slever.c 4KB
master.M51 7KB
slever.Uv2 2KB
slever_Opt.Bak 1KB
STARTUP.LST 14KB
slever_Uv2.Bak 0B
master.Opt 1KB
master.hex 1KB
master 4KB
master.LST 3KB
master.c 2KB
master.Uv2 2KB
slever.LST 8KB
master.OBJ 4KB
master_Uv2.Bak 2KB
slever.OBJ 9KB
slever.hex 3KB
master.lnp 60B
STARTUP.A51 6KB
emulation
长报文单向通信.PWI 1KB
Backup Of 长报文单向通信.DBK 112KB
长报文单向通信.DSN 119KB
Last Loaded 长报文单向通信.DBK 119KB
slever 8KB
slever.Opt 1KB
STARTUP.OBJ 749B
slever.lnp 44B
slever.plg 6KB
共 91 条
- 1
资源评论
刘良运
- 粉丝: 66
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功