串行通信接口的C51编程实验报告.doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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.右数码管显示且纪录左按键按动次数

相关文档
最新文档