串行通信接口的C51编程实验报告.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
佛山职业技术学院
电子信息工程技术专业
《串行通信接口的C51编程实验
》课程实验报告
班别姓
名学号01 实验室5—209
日期2011.3.22 组号同组人员
实验名称串行通信接口的C51编程实验成绩评定
教师签名
主要
仪器
设备
计算机
实验目的1、掌握单片机的串行通信接口软件编程方法
2、掌握单片机的串行通信接口调试技术。
实验原理与步骤原理:
1.两个AT89c51单片机各自P0口接一个数码管,P1.0接一个按钮,单片机的TXD和RXD与对方单片机的RXD和TXD连接。
2.编程实现单片机的数码管显示另一个单片机的按钮按动次数。
步骤:
1.利用Proteus仿真软件按设计题目要求绘制电路。
2.按题目要求编写程序。
3.将程序下载到单片机中,进行调试运行。
实验原始数据#include
#define uchar unsigned char
#define uint unsigned int
#define SegPort P0
sbit bit0=P2^0;
sbit bit1=P2^1;
uchar code tab[16]=
{0x3F,0x06,0x5B,0x4F,0x66,
0x6D,0x7D,0x07,0x7F,0x6F };
//0~9共阴极字型码
uchar data displaybuf[2];//定义显示缓冲区bit Commflag;//定义通信标志
uchar ReceiveData;//接收的数据
uchar counter;//按键的按动次数计数uchar OldKey,NewKey;
//通信中断函数
void Txd_Rxd() interrupt 4
{
if(TI)TI=0;
else
{
RI=0;
ReceiveData=SBUF;
Commflag=1;
}
}
void DataChange(uchar m)
{
displaybuf[1]=m/10;
displaybuf[0]=m%10;
}
void delay()
{
int i;
for(i=500;i>0;i--);
}
void display()
{
SegPort=0xff;
SegPort=~tab[displaybuf[0]];
bit0=0;bit1=1;
delay();
SegPort=0xff;
SegPort=~tab[displaybuf[1]];
bit0=1;bit1=0;
delay();
SegPort=0xff;
}
void Key()
{
NewKey=P1&0x01;
if((OldKey==0x01)&&(NewKey==0x00)) {
counter++;
SBUF=counter;
}
OldKey=NewKey;
}
void main()
{
SCON=0x50;
TMOD=0x20;
TH1=0xFD;
TL1=0xFD;
TR1=1;
ES=1;
EA=1;
while(1)
{
Key();
if(Commflag)
{
Commflag=0;
DataChange(ReceiveData);
}
display();
}
}
实验
数据
整理
与分
析
实验结论1.左数码管显示且纪录右按键按动次数2.右数码管显示且纪录左按键按动次数