标题:
51单片机双机串口通信仿真 内含源码 仿真图
[打印本页]
作者:
csy-2015-06
时间:
2018-1-23 00:05
标题:
51单片机双机串口通信仿真 内含源码 仿真图
0.jpg
(89.37 KB, 下载次数: 107)
下载附件
2018-1-23 05:35 上传
0.png
(41.58 KB, 下载次数: 84)
下载附件
2018-1-23 05:36 上传
单片机源程序如下:
/******************************************************************
功能:采用USART串口通信,波特率为9600,一个单片机发送数字
一个单片机接收,并把接收的数字用数码管显示。接收!!!
作者:cs天涯
******************************************************************/
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
bit flag;
uchar num;
void display(uchar num);
void delay(uint z);
void init();
uchar code table[]=
{
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};//编码0~9AbCdEF
void main()
{
init();
while(1)
{
while(flag)
{
display(num);
delay(5);
}
}
}
void init()
{
PCON &= 0x7F; //波特率不加倍
TMOD=0x20; //定时器1工作方式2
TH1=0xfd;
TL1=0xfd; //给定时器定初值,设置波特率为9600
TR1=1; //开启定时器1工作
SCON=0x50;//0101 0000 允许串行口接收数据,设置串行口工作方式1
EA=1;
ES=1; //打开串行口中断
ET1=0; //禁止定时器1中断
}
void display(uchar num)
{
uchar shi,ge;
shi=num/10; //取十位
ge=num%10; //取个位
P0=table[shi]; //送十位值
P2=0xbf;//1011 1111 //选择段选位置
delay(5);
P0=0; //数码管消影
P2=0xff;
P0=table[ge]; //送个位值
P2=0x7f;//0111 1111 //选择段选位置
delay(5);
P0=0; //数码管消影
P2=0xff;
}
void delay(uint z) //延时函数
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void receive() interrupt 4
{
num=SBUF;
flag = 1; //接受一次后打开显示
ES = 0; //关闭串行中断
RI = 0; //清除串行接受标志位
}
发送程序:
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar num; //=2939可以不要
void init();
void delay(int z);
void send(uchar num); //声明子函数的时候要加分号
void main()
{
init(); //调用子函数的时候要加分号
while(1)
{
send(39); //发送函数
delay(10); //发送后延时一下,保证发送频率不过快
}
}
void init()
{
PCON&=0x7F; // 设置波特率不加倍
TMOD=0x20; //设置定时器1工作方式 2
TH1=0xfd;
TL1=0xfd; //设定定时器1工作方式2的初值 (关计算还没讲) 波特率为9600
TR1=1; //开定时器1,开启波特率发生器
SM0=0;
SM1=1; //设定串口通信工作方式1
EA=1; //开总中断
}
void delay(int z) //晶振11.592.延时z毫秒
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void send(uchar num)
{
SBUF=num; //把发送的内容写进sbuf,自动发送 ,发送数据时TI为0,!0为1
while(!TI); //!逻辑非,发送完数据,发送完数据时TI为1.!1为0,停止发送
TI=0; //TI需要软件清零
}
复制代码
所有资料51hei提供下载:
单片机串口通信.zip
(37.19 KB, 下载次数: 258)
2018-1-23 00:01 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
csy-2015-06
时间:
2018-1-23 09:12
部分注释无关主题,如79行//=2939可以不要, 98行(关计算还没讲)
作者:
rowlins
时间:
2019-11-4 16:35
请问一下U3是什么芯片呢
作者:
newepson2001
时间:
2021-3-16 15:35
下来好好学习学习,谢谢分享!
作者:
LLSSZS
时间:
2023-6-1 13:57
电脑发送单片机接收显示可以实现吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1