标题:
51单片机串口通信Proteus仿真程序
[打印本页]
作者:
shizhi`xun
时间:
2019-11-17 17:33
标题:
51单片机串口通信Proteus仿真程序
使用串口通信。具体功能描述如下:采用USART,波特率为9600,一个单片机发送数字,一个单片机接收,并把接收的数字用数码管显示。
51hei.png
(18.08 KB, 下载次数: 57)
下载附件
2019-11-22 13:41 上传
单片机源程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int //宏定义
bit tt;
uchar aa;
void display(uchar aa);
void delay(uint c);
void init();
sbit Ledshi = P2^0; //十位数码管使能端
sbit Ledge = P2^1; //个位数码管使能端
uchar ma[]=
{
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f
}; //编码0~9
void main()
{
init();
while(1)
{
while(tt)
{
display(aa);
delay(20);
}
}
}
void init()
{
PCON &= 0x7F; //波特率不加倍
TMOD=0x20; //定时器1工作方式2
TH1=0xfd;
TL1=0xfd; //给定时器定初值,设置波特率为9600
TR1=1; //开启定时器1工作
SCON=0x50; //允许串行口接收数据,设置串行口工作方式1
EA=1;
ES=1; //打开串行口中断
ET1=0; //禁止定时器1中断
}
void display(uchar aa) //显示函数
{
uchar shi,ge;
shi=aa/10; //取十位
ge=aa%10; //取个位
P0=ma[shi]; //送十位值
P2=0xbf; //选择段选位置
delay(5);
P0=0; //数码管消影
P2=0xff;
P0=ma[ge]; //送个位值
P2=0x7f; //选择段选位置
delay(5);
P0=0; //数码管消影
P2=0xff;
}
void delay(uint c) //延时函数
{
uchar i,j;
for(i=0;i<c;i++)
for(j=0;j<110;j++);
}
void receive() interrupt 4
{
aa=SBUF;
tt = 1; //接受一次后打开显示
ES = 0; //关闭串行中断
RI = 0; //清除串行接受标志位
}
复制代码
所有资料51hei提供下载:
51单片机串口通信.zip
(18.6 KB, 下载次数: 157)
2019-11-17 17:32 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
value123
时间:
2019-12-31 00:04
tt这个变量什么意思?
作者:
s擦掉
时间:
2020-5-31 18:47
少东西,下完后只有一个单片机的程序,缺少另一个发送的
作者:
csy-2015-06
时间:
2020-6-4 00:10
大学的练习?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1