当前位置:文档之家› 单片机双机通信课程设计报告

单片机双机通信课程设计报告

单片机双机通信课程设计报告
单片机双机通信课程设计报告

课程设计说明书

课程设计名称:单片机课程设计

课程设计题目:单片机与单片机之间的串行通讯学院名称:信息工程学院

专业:电子信息科学与技术班级: 090431班学号: xxx 姓名: xxx 评分:教师: xxx 2012年6月25日

电子信息工程专业课程设计任务书

20 10 -20 11学年第2 学期第17 周-20 周

注:1、此表一组一表二份,课程设计小组组长一份;任课教师授课时自带一份备查。

2、课程设计结束后与“课程设计小结”、“学生成绩单”一并交院教务存档

摘要

串行通讯是单片机的一个重要应用。本设计就是利用两块单片机来完成一个系统,实现单片机之间的串行通讯。

随着计算机的不断普及,在我们的周围可能会同时出现多台微型计算机,而且这些计算机的牌号,后型号不同,而且有的格式不兼容。于是利用单片机串行口实现不同计算机之间的相互通信,以达到信息或程序的共享是非常有用的。从智能家用电器到工业上的控制系统都采用了上位机与下位机基于串行通信的主从工作方式,这样就充分利用了微机分析处理能力强、速度快的特点及下位机(单片机)面向控制、使用灵活方便的优势。由于AT09C52系列单片机具有性能稳定、工作可靠、价格低廉等可特点,因此其应用相当广泛。AT09C52单片机中有异步通信串行接口,能方便的构成双机,多机通讯接口。随着测量向自动化,智能化,网络化方向的发展。利用多机通讯构成的分布式系统逐渐普及。本实验就点对点的双机通信进行训练。学习串口的工作方式,初始化编程,和单片机与单片机点对点通信的编程方法以及硬件电路的设计方法。

在此基础上可以进一步提高,实现多机通信以及单片机与PC机的通讯,手机通过蓝牙与单片机通讯,电脑通过蓝牙与单片机通讯等一系列功能扩展。

【关键字】双机串行通讯 AT89C52 异步通讯功能扩展

目录

前言 (1)

第一章、系统功能 (2)

1.1 设计要求和系统的组成及工作原理 (2)

第二章、系统设计方案 (3)

2.1硬件设计 (3)

2.1.1 AT89C52和RS232说明 (3)

2..12 双机通讯的方案选择 (7)

2.1软件设计 (8)

2.2.1 甲机程序的编写说明 (8)

2.2.2 甲机程序的编写说明 (12)

第三章、调试与操作 (19)

3.1 开发板调试 (19)

3.2 测试结果与分析 (20)

第四章、结论 ......................... 错误!未定义书签。附录一、参考文献 (22)

附录二、元器件清单 (23)

附录三、电路总图 (24)

附录四、实物图 (25)

前言

电子科学技术是人类在生产斗争和科学实验中发展起来的。随着科学技术的发展和人类的进步,电子技术已经成了各种工程技术的核心,特别是进入信息时代以来,电子技术更是成了基本技术,其具体应用领域涵盖了通信领域、控制系统、测试系统、计算机等等各行各业。

单片机之间的数据通讯在当今社会应用相当广泛,单片机之间的数据通讯。由于52系列单片机具有性能稳定、工作可靠、价格低廉等特点,因此其应用相当广泛。一个52系列的单片机(如At89c52)内部包含有RAM、FLASH ROM、三个16位的定时器/计数器、一个通用异步串行通信控制器(UART)等多种资源。但即便如此,在一些相对复杂的单片机应用系统中,仅仅一个单片机资源还是不够的,因此而常常需要扩充I/O接口、定时器/计数器、串行通信接口、RAM、ROM等。采用通用的标准器件进行扩充是通常的做法,但将单片机本身作为一个通用的扩充器件来使用,也不失为一个好的方法。在这种情况下,一个系统中就使用了两个或两个以上的单片机,而单片机之间就要通过互连来进行数据通信。52系列的单片机(以下简称单片机)都带有串口,利用串口进行互连通信极为方便,其各种连接方式在许多书籍和资料上都有介绍,在此不再重述。但如果系统要求扩充的资源是对外连接的串口,或对相互之间的数据传送有一定的速度要求,则单片机的串口就不能用作系统内两单片机的通信接口了。所幸的是,单片机的并行端口也能相互连接来进行数据通信。根据单片机端口内部结构的特点,这些端口的端口线可以直接相连,从而使两单片机之间并行通信接口的实现不用另外的硬件电路设备。

本文就是关于用单片机与单片机之间的串行通讯的过程及基本原理。

第一章系统功能

1.1设计要求和系统的组成及工作原理

一.设计要求

1.用RS232串行芯片实现双向通讯。

2.传送的数据在显示器上(数码管和发光二极管)显示。

二.系统组成

图1 总体框图

三.工作原理

双机通信系统通过甲乙单片机的串行口来实现数据的收发。

甲单片机通过开关电路来启动发送程序,甲机当开关按下时向乙机发送一个数据,乙机上蜂咛器发出声音提示有数据发送过来,乙机通过接收中断来接收和开关判断是否接收甲机发送过来的数据,并通过编写好的数据代码在8个发光二极管上显示主机发送过来的数据。

乙单片机通过开关电路来启动发送程序,乙机给甲机发送一数据,甲机上蜂咛器发出声音提示有数据发送过来,甲机通过接收中断来接收和开关判断是否接收乙机发送过来的数据,并通过编写好的数据代码在8个发光二极管上显示乙机发送过来的数据。

第二章系统设计方案

2.1 硬件设计

2.1.1 AT89C52和RS23说明

一. At89c52单片机内部有1个功能很强大的全双工串行口,可以同时发送和接收数据。串行口的内部有数据接收缓冲器和数据发送缓冲器,数据接收缓冲器只能读出不能写入,数据发送缓冲器只能写入不能读出,这两个数据缓冲器都是用SBUF 来表示,地址都是99H,CPU对特殊功能寄存器SBUF执行写操作就将数据写入发送缓冲器,对SBUF执行度操作就是读出接收缓冲器中的内容。特殊功能寄存器SCON参访串行口的控制状态信号,串行口用T1或者T2作为波特率发生器(发送和接收时钟),特殊功能寄存器PCON的最高位SMOD为串行口波特率的倍率控制位。

SM0、SM1:串行口工作方式选择位

SM2:多机通信控制位

REN:允许/禁止串行口接收的控制位

TB8:在方式2和方式3中,是被发送的第9位数据,可根据需要由软件置1或清零,也可以作为奇偶校验位,在方式1中是停止位。

RB8:在方式2和方式3中,是被接收的第9位数据(来自第TB8位);在方式中,RB8收到的是停止位,在方式0中不用。

TI——串行口发送中断请求标志位: 当发送完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件清0。

RI——串行口接收中断请求标志位: 当接收完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件清0。

SM0、SM1:串行口工作方式选择位,其组合含义如下所示:

PCON 的D7位作为串行波特率系数SMOD 控制位,PCON 不可位寻址,其地址为87H ,当SMOD=1时,波特率加倍。SMOD 在PCON 中的位置如下所示:

二.RS232近程通讯总线适合于数据传输速率在0~20000b/s 范围内的通信,由于通行设备厂商都生产与RS-232C 制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。如图2所示:

图2 DB9

1.电气特性

EIA-RS-232C 对电器特性、逻辑电平和各种信号线功能都作了规定。

12345

6789.

.

在TxD和RxD上:逻辑1(MARK)=-3V~-15V

逻辑0(SPACE)=+3~+15V

在RTS、CTS、DSR、DTR和DCD等控制线上:

信号有效(接通,ON状态,正电压)=+3V~+15V

信号无效(断开,OFF状态,负电压)=-3V~-15V

RS232C与TTL转换:EIA-RS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。

最大直接传输距离说明:RS-232C标准规定,若不使用MODEM,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺。

2.DB-9连接器

使用DB-9连接器,作为提供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器。它只提供异步通信的9个信号。DB-25型连接器的引脚分配与DB-25型引脚信号完全不同。因此,若与配接DB-25型连接器的DCE设备连接,必须使用专门的电缆线。

最大直接传输距离说明:RS-232C标准规定,若不使用MODEM,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺)。

用RS-232总线连接系统有近程通讯方式和远程通讯方式两种,近程通讯是指传输距离小于15米的通讯,可以用RS-232 电缆直接连接。15米以上的长距离通讯,需要采用调制调解器。

当计算机与终端之间利用RS-232作近程连接时,有几根线实现交换连接。本次实验不需要检测数据等信号状态的

RS-232是异步通讯中最广泛的标准总线,适用于数据中端设备(DTE)和数据通讯设备(DCE)之间的接口。在微机通讯中,通常使用的RS-232接口信号是九根引脚。如图3:各引脚功能如下:

图3 DB9管脚说明

用RS-232总线连接系统有近程通讯方式和远程通讯方式两种,近程通讯是指传输距离小于15米的通讯,可以用RS-232 电缆直接连接。15米以上的长距离通讯,需要采用调制调解器。

计算机和终端用RS-232连接的交叉图4如下,图中“发送数据”与“接收数据”是交叉相连的,是得两台设备都能正常的发送和接收。

图4 通讯连接

数据发送与接收线:

发送数据(TxD)——通过TxD 终端将串行数据发送到MODEM 。

接收数据(RxD)——通过RxD 线终端接收从MODEM 发来的串行数据。

2.1.2 双机通讯的方案选择

引脚号 符号

方向

功能

1 DCD 输入 载波检测

2 RXD 输入 接收数据

3 TXD 输出 发送数据

4 DTR 输出 数据终端就绪

5 GND 信号地

6 DSR 输入 数据装置就绪

7 RTS 输出 请求发送

8 CTS 输入 清除发送 9

RI

输入

振铃指示

设计方案:

该系统采用主从共两片AT89C52单片机来实现上位机对下位机的控制,由于是近距离的双机通信,我们采用单片机直接交叉连接的方式,上位机发送的数据由串行口TXD端输出,直接由下位机的串行口数据接收端RXD接收。需要注意的是一定要保证主从机相同的数据传输速率,即要求设置相同的波特率。电路分为数码管显示模块,指示模块、以及单片机工作的基本复位、晶振模块。

甲机由3个数码管,4个独立键盘开关,1个蜂咛器组成。

乙机由8个发光二极管,一个蜂咛器,1个数字温度传感器DS18B20组成。

单片机上最基本的两个电路:复位电路(图5)和晶振电路(图6)

图5 复位电路

图6 晶振电路

2.2 软件设计

本系统的软件设计流程图。系统设计代码分为以下几个部分:初始化串行、发送数据、接收数据、键盘输入、数值转换、LED显示,数码管显示,用keil编译。

甲机程序设计框图(图7):

图7 甲程序设计框图

/******************************

程序名称:双机通信甲机程序

实验地点:信工学院E404

******************************/

#include

#define uchar unsigned char

#define uint unsigned int

sbit k1=P3^4;

sbit k2=P3^5;

sbit k3=P3^6;

sbit k4=P3^7; //四个独立键盘

sbit dula=P2^6; //段选

sbit wela=P2^7; //位选

sbit beep=P2^3; //蜂鸣器

uchar wendu,temp;

unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //不带小数点显示0到9 unsigned char code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,

0x87,0xff,0xef}; // 带小数点显示0到9

/******************************

延时程序x (ms)

******************************/

void delay(uint x)

{

char i;

while(x--)

for(i=0;i<120;i++);

}

/******************************

数码管显示温度值

******************************/

void display(uint temp)

{

uchar A1,A2,A3;

if(wendu>=110) //温度大于31度蜂鸣器发声

{

beep=0;

delay(50);

beep=1;

}

temp=temp+200;

A1=temp/100;

A2=temp%100/10;

A3=temp%100%10;

dula=1;

P0=table[A1]; //显示百位

dula=0;

wela=1;

P0=0x7f; //0111 1111 选中第一个数码管

wela=0;

delay(5);

dula=1;

P0=table1[A2]; //显示十位

dula=0;

wela=1;

P0=0x7e; //0111 1111 选中第一个数码管

wela=0;

delay(5);

dula=1;

P0=table[A3]; //显示个位

dula=0;

wela=1;

P0=0x7b; //0111 1111 选中第一个数码管

wela=0;

delay(5);

}

/******************************

甲机向乙机发送程序

******************************/

void com(uchar com)

{

SBUF=com;

while(!TI); //是否发送完

TI=0;

}

void main()

{

uchar b;

SCON=0x50; //SM0=1,SM1=1,SEN=1

TMOD=0X20; //定时器工作于方式一

TH1=0XFD;

TL1=0XFD; //波特率9600

TR1=1; //启动定时器

IE=0X90; //开中断

beep=1; //蜂鸣器初始状态不响

while(1)

{

if(k1==0) //接收乙机温度值显示

{

while(k4==1)

{

display(wendu);

delay(10);

}

}

if(k2==0) //发送流水灯指令{

b=2;

com(b);

}

if(k3==0) //发送摇摆灯指令{

b=3;

com(b);

}

if(k4==0) //关闭甲乙机所有显示{

P0=0XFF;

delay(1);

wela=1;

delay(1);

wela=0;

b=4;

com(b);

}

delay(5);

}

}

/******************************

甲机从乙机接收程序

******************************/

void ert()interrupt 4

{

RI=0;

wendu=SBUF;

}

乙机程序设计框图(图8):

图8 乙机设计框图

/******************************

程序名称:双机通信乙机程序

实验地点:信工学院E404

******************************/

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit DS=P2^2; //ds18b20片选信号uint temp; // 记录ds18b20的温度值sbit k1=P3^4;

sbit k2=P3^5;

sbit k3=P3^6;

sbit k4=P3^7; //四个独立键盘

sbit beep=P2^3;

uchar k;

/******************************

延时程序x (ms)

******************************/

void delay(uint x)

{

char i;

while(x--)

for(i=0;i<120;i++);

}

/******************************

send reset and initialization command

******************************/

void dsreset(void)

{

uint i;

DS=0;

i=103;

while(i>0)i--;

DS=1;

i=4;

while(i>0)i--;

}

/******************************

read a bit

******************************/

bit tmpreadbit(void)

{

uint i;

bit dat;

DS=0;i++; //i++ for delay

dat=DS;

i=8;while(i>0)i--;

return (dat);

}

/******************************

read a byte date

******************************/

uchar tmpread(void)

{

uchar i,j,dat;

dat=0;

for(i=1;i<=8;i++)

{

j=tmpreadbit();

dat=(j<<7)|(dat>>1); //读出的数据最低位在最前面,这样刚好一个字节在DA T里}

return(dat);

}

/******************************

write a byte to ds18b20

******************************/

void tmpwritebyte(uchar dat)

{

uint i;

uchar j;

bit testb;

for(j=1;j<=8;j++)

{

testb=dat&0x01;

dat=dat>>1;

if(testb) //write 1

{

DS=0;

i++;i++;

DS=1;

i=8;while(i>0)i--;

}

else

{

DS=0; //write 0

i=8;while(i>0)i--;

DS=1;

}

}

}

/******************************

DS18B20 begin change

******************************/

void tmpchange(void)

{

dsreset();

delay(1);

tmpwritebyte(0xcc); // address all drivers on bus tmpwritebyte(0x44); // initiates a single temperature conversion }

/******************************

get the temperature

******************************/

uint tmp()

{

float tt;

uchar a,b;

dsreset();

delay(1);

tmpwritebyte(0xcc);

tmpwritebyte(0xbe);

a=tmpread();

b=tmpread();

temp=b;

temp<<=8; //two byte compose a int variable temp=temp|a;

tt=temp*0.0625;

temp=tt*10+0.5;

return (temp-200);

}

/******************************

乙机向甲机发送程序

******************************/

void com(uchar com)

{

SBUF=com;

while(!TI);

TI=0;

}

void main()

{

uchar temp,a,i;

SCON=0x50; //SM0=1,SM1=1,SEN=1

TMOD=0X20; //定时器工作于方式一

TH1=0XFD; //波特率9600

TL1=0XFD;

TR1=1; //启动定时器

IE=0X90; //开中断

beep=1; //蜂鸣器初始状态不响

while(1)

{

if(k1==0) //采集当前温度值并向甲机发送

{

while(k2==1&&k3==1&&k4==1)

{

tmpchange();

delay(5);

for(a=10;a>0;a--)

{

com(tmp());

delay(1);

}

}

}

if(k==2) //接收甲机流水灯指令并用蜂鸣器提示{

while(1)

{

beep=0;

if(k1==0) //决定接收流水灯指令并关闭蜂鸣器

{

beep=1;

break;

}

}

while(1) //显示流水灯现象

{

temp=0x7f;

P1=temp;

for(i=1;i<8;i++)

{

1号机程序 #in clude #defi ne uint un sig ned int #defi ne uchar un sig ned char sbit p10=P1 A 0; uchar a,b,kk; //uchar code d_c[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; void delay_ms(uchar y) { uchar i; while(y__) for(i=0;i<120;i++) 5 } void put(uchar x) // 发送函数 { SBUF=x; //SBUF:串行口数据缓冲器 while (TI==0); 〃等待发送结束 TI=0; } P £j £fA>l3 旳 4阳 1370 丘阳 H 鮎口 PDLWAJil- PDSA>f POfiAME PQ TiJT FZ^KS 畑 阳pz- A A-m FZW11 PZ.AtZ FZj9jAl4 PZ.TW? P3£VR : iD paimcc P3.sii nrn pjjfflrn F3.WTI] M*Tl pgtjgQIH F3.7/IF 1E 11 左边1号机,右边2号机, ,功能实现 帕叶DO ■ 口 IJApi FDJ H [I Z — 观旧 IP 口 .hQKD* *QAADf H ^ 弓 H.Lta RQfMM FZJWS pz. iwe F2JKA-IDI P2JTA11I F2.HW1Z P2JSM13 F2W.14 F2JM1S F3Ji nHX& gj.im:& riaiWTO rjjfWTT F3.1/W f3AT1 P3JillW F3JMF ■T2 1E

专业方向课程设计报告 题目:单片机双机之间的串行通信设计

单片机双机之间的串行通信设计 一.设计要求: 两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。 二、方案论证: 方案一:以两片51单片机作为通信部件,以4*4矩阵键盘作为数据输入接口,通过16个不同键值输入不同的信息,按照51单片机的方式3进行串口通信,从机采用中断

方式接收信息并按照通信协议改变波特率或者用I/O口输出、CD4511译码、数码管显示相关数据,整个系统的软件部分采用C语言编写。 方案二:整个系统的硬件设计与方案一样,但是通信方式采用方式一进行通信,主从机之间的访问采用查询方式,数据输出直接由单片机的译码程序输出译码数据,同时软件编写采用汇编语言。 两种方式从设计上来说各有特色,而且两种方式都应该是可行的。方案一中按照方式三通信可以输出九位数据而方式一只能输出八位数据,但就本题的要求来说方式一就可以了。主从机之间的交流采用中断方式是一种高效且保护单片机的选择,但是相比之下本人对查询方式的理解更好一些。数码管的显示若采用CD4511译码则直接输出数据就可以了,但是这样会增加硬件陈本,而且单片机的资源大部分都还闲置着,所以直接编写一段译码程序是比较好的做法。另外在软件编写上,采用C语言在后续设计中对硬件的考虑稍少一些,换言之采用汇编可以使自己对整个通信过程及单片机的部分结构有更清晰地认识所以综合考虑采用方案二。 三、理论设计: 采用AltiumDesigner绘制的原理图(整图)

本系统主要包括五个基本模块:单片机最小系统(包括晶振电路、电源、复位电路及相关设置电路)、4*4矩阵键盘、功能控制电路、数据显示电路、波特率更改指示电路。 本设计的基本思路是通过控制口选择将要实现的功能,然后矩阵键盘输入数据,单片机对数据进行处理(加校验码、设置功能标志位),然后与从机握手,一切就绪之后后就开始发送数据,然后从机对接收数据校验,回发校验结果,主机根据校验结果进行下一步动作,或者重发,或者进入下一 数据的发送过程,然后按照此过程不段循环,直到结束。 晶振电路提供脉冲,加上复位电路,将 EA接入高电电平选择片内程序存储器。 这是一个单片机能够工作的最低设置。

C51单片机实验报告流水灯交通灯定时器双机交互时钟学号:31100800 班级:自动化10 班姓名:张指导老师:胡 2019.12 单片机核心板实验要求 一、流水灯实验 1 、实验目的: 1 ) 简单I/O 引脚的输出 2 ) 掌握软件延时编程方法 3 ) 简单按键输入捕获判断2 、完成功能要求 1 ) 开机是点亮1 2 发光二极管,闪烁三下2 ) 按照顺时针循环依次点亮发光二极管 3 ) 通过按键将发光二极管的显示改为顺逆时针方式 二、定时器或实时时钟实验 1 、实验目的 1 ) 数码管动态显示技术 2 ) 定时器的应用 3 ) 按键功能定义2 、完成功能要求 1 ) 通过按键可以设定定时时间,启动定时器,定时时间到,让1 2 个发光二极管闪烁,完成定时 器功能。 2 ) 实时时钟,可以设定当前时间,完成钟表功能(四位数码管分别 显示分钟和秒)。 上述二个功能至少完成一种功能。 三、双机通信实验 1 、实验目的 UART 串行通信接口技术应用2 、完成功能要求 用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。 四、交通灯实验 1 、实验目的

1 )按键、数码管、发光二极管综合应用编程技术 2 )数据存储于EEPRO的技术 (也可以不使用) 3 )定时中断技术 4 )按键中断技术 2 、完成功能要求 1 )对每个路口(主干道、次干道)的绿灯时间,及黄灯时间的设定。 2 )设定参数掉电后不丢失(如果不使用EEPRO,此功能可以不实现)。 3 )紧急按键功能,当按下该键时,所有路口变成红灯,相当于交警指挥特殊车辆通过。再按该键,恢复正常显示。 实验一流水灯实验 一、实验目的 1 )简单I/O 引脚的输出 2 )掌握软件延时编程方法 3 )简单按键输入捕获判断二、实验实现的功能 1 )开机是点亮12发光二极管,闪烁三下 2 )按照顺时针循环依次点亮发光二极管 3 )通过按键将发光二极管的显示改为顺逆时针方式三、 系统硬件设计 1 )如单片机核心板所示的硬件电路。四、系统软件设计 设计思路: 1 )定义数组使得调用数组可以使led 灯能够顺时针和逆时针显示; 2 )将按键的输入端全部置零,做单独按键使用; 3 )利用“ while ”循环使得数码管可以闪烁三下; 4 )利用“ for ”循环使得小灯能够依次点亮一个周期; 5 )将以上思想汇总,编程,实现功能。程序详见附录。 五、实验过程中遇到的问题及解决方法 1 )刚开始不知道怎样只设置一个管脚(如POP),查阅相关资料后知道表示方法, 并学会了用“ sbit ”语句定义,方便多了。 2)对于C语言的很多东西都不知道,语句的用法也不清楚,重新看了C语言,用到什 么看什么很快就懂了。 3 )主程序中没有用延时程序和死循环导致led 不能点亮,请教同学以后才知道。 4 )对于按键只是不了解,看书又很模糊,看了网上“ KINGST 工作室”也就是“手把手教你学单片机”的视频后很清楚明了,之后好多东西也是从上边学到,就不再赘述了。 指导老师签字:日期: 实验二定时器或实时时钟实验 一、实验目的 1 )数码管动态显示技术 2 )定时器的应用 3 )按键功能定义二、实验实现的功能 1 )通过按键可以设定定时时间,启动定时器,定时时间到,让12个发 光二极管闪烁,完成定时器功能。 2 )实时时钟,可以设定当前时间,完成钟表功能(四位数码管

左边1号机,右边2号机,,功能实现 1号机程序 #include #define uint unsigned int #define uchar unsigned char sbit p10=P1^0; uchar a,b,kk; //uchar code d_c[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; void delay_ms(uchar y) { uchar i; while(y--) for(i=0;i<120;i++) ; } void put(uchar x) //发送函数 { SBUF=x; //SBUF:串行口数据缓冲器 while(TI==0); //等待发送结束 TI=0; } void main() { uchar j; SCON=0x40; //串行口工作方式1,8位通用异步发送器

— TMOD=0x20; //定时器1工作方式2 PCON=0x00; //波特率不倍增 TH1=0xf4; TL1=0xf4; //波特率2400 TR1=1; //定时器1开始计时 P2=0xc0; while(1) { if(p10==0&&j==0) { delay_ms(15); while(p10==0); kk=1; P2=0xf9; j=1; } if(p10==0&&j==1) { delay_ms(15); while(p10==0); kk=2; P2=0xa4; j=2; } if(p10==0&&j==2) { delay_ms(15); while(p10==0); kk=3; P2=0xb0; j=0; } if(kk==1) put('A'); if(kk==2) put('B'); if(kk==3) put('C'); delay_ms(10); } }

一.课程设计的目的及基本要求: 实践课程是使学生融会贯通本课程所学专业理论知识,完成一个较完整的设计计算和安装调试过程,以加深学生对所学理论的理解与应用,认识和熟悉元器件和电子测量仪器的性能指标,了解解决实际问题的一般过程,培养学生综合运用基础理论知识和专业知识去解决实际工程设计问题的能力。通过电子技术的综合性工程训练,使学生达到以下的目的和要求: 1、结合模拟电路、数字电路、可编程逻辑 器件、单片机电子线路CAD等课程中所学的 理论知识,按要求独立设计方案,培养学生 独立分析与解决问题的能力; 2、学会查阅相关手册和资料,通过查阅手 册和资料,进一步熟悉常用电子器件的类型 和特性,并掌握合理选用的原则; 3、学会使用常用电子元器件(包括中规模 芯片、专用芯片和可编程器件);

4、掌握基本的现代电子技术设计工具和EDA (Electronic design automation)技术; 5、掌握电子电路的安装与调试技术,进一 步熟悉电子仪器的使用方法; 6、认真撰写总结报告,培养严谨的作风和 科学的态度; 二.课程设计的主要内容: 课题十九单片机双机通信系统 基本要求:设计两个单片机最小系统,能实现有线通信,一方为发送,另一方为接收。 提高要求:两个单片机最小系统能相互通信,并能实现校验。 三.具体要求和时间安排: 每一个学生在教师指导下,独立完成一个应用系统。工作量如下: 1、电路原理图(A3幅面)1张,要求Protel软件绘制; 2、pcb版图(A3及以上幅面)1张;

3、设计说明书(20-30页)1本,内含能编译通过的源程序(有必要的注释)。

河北科技大学 课程设计报告 学生姓名:学号: 专业班级: 课程名称:微型计算机原理及应用技术学年学期:2 0 1 2 —2 0 1 3 学年第一学期 指导教师: 2 0 1 3 年1 月

课程设计成绩评定表

目录 一、设计题目 (1) 二、设计目的 (1) 三、设计原理及方案 (1) 1、8251A的基本性能 (1) 2、8251A的内部结构 (1) 3、8251外部引脚图 (2) 4、8251A的编程 (2) 5、8251A的初始化 (3) 四、实现方法 (5) 1、程序流程图如下: (5) 2、连线图 (5) 3、8251A操作过程流程图 (7) 4、试验程序(见附录) (7) 五、实施结果 (7) 六、改进意见及建议 (7) 七、个人所做贡献 (8) 八、设计体会 (8) 九、同组成员名单 (8) 十、附录 (9)

一、设计题目 双机通过两台试验箱串行通讯 二、设计目的 1、掌握8088/86实验串行口通信的方法。 2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。 3、学习串行口通讯程序编写方法。 三、设计原理及方案 1、8251A的基本性能 8251A是可编程的串行通信接口芯片,基本性能有: (1).两种工作方式:同步方式,异步方式。同步方式下,波特率为064K,异步方式下,波特率为0~19.2K。 (2).同步方式下的格式 每个字符可以用5、6、7或8位来表示,并且内部能自动检测同步字符,从而实现同步。除此之外,8251A也允许同步方式下增加奇/偶校验位进行校验。 (3).异步方式下的格式 每个字符也可以用5、6、7或8位来表示,时钟频率为传输波特率的1、16或64倍,用1位作为奇/偶校验。1个启动位。并能根据编程为每个数据增加1个、1.5个或2个停止位。可以检查假启动位,自动检测和处理终止字符。 (4).全双工的工作方式 (5).提供出错检测 2、8251A的内部结构 发送器由发送缓冲器和发送 控制电路两部分组成。接收器由接 收缓冲器和接收控制电路两部分 组成。数据总线缓冲器,读/写控 制电路,调制解调控制电路。 8251A 内部结构图

单片机双机通信接口应用 专业班级:电信 设计者:? ? 指导老师:? 设计时间:2011-11-28 ~12-9

一、实验目的与要求: 课程设计目的: 1.通过课程设计巩固、深化和扩展理论知识与初步的专业技能,提高综合运用知识的能力,逐步增强实际工程训练。 2.培养正确的设计思想,掌握课程设计的主要内容、步骤和方法。 3.培养获取信息和综合处理信息的能力、文字和语言表达能力以及协作工作能力。 4.提高运用所学的理论知识和技能解决实际问题的能力及其基本工程素质。 课程设计要求: 1、能够根据设计任务和指标要求,综合运用单片机课程中所学到的理论知识与实践技能独立完成一个设计课题,了解并掌握单片机系统设计的一般设计方法,具备初步的独立设计能力;。 2、根据课题需要选择参考书籍,查阅手册、图表等有关文献资料。要求通过独立思考、深入钻研课程设计中所遇到的问题,培养自己分析、解决问题的能力。 3、学会撰写课程设计总结报告。 4、通过课程设计,逐步形成严肃认真、一丝不苟、实事求是的工作作风和科学态度,培养学生树立一定的全局观点。。 5、在课程设计过程中,要做到团结协作。 意义:单片机应用系统设计是单片机课程的实践性教学环节,既涉及到许多理论知识(设计原理与方法),又强调系统设计能力的锻炼,培养创新设计的能力,养成一丝不苟的工作作风,为今后从事单片机行业的工作打下基础。 二、功能要求: 单片机双机通信接口应用。设计电路并编写程序,完成单片机与单片机之间的通信,甲机发送键盘输入的键号,乙机接收键号并在最右边的LED以十六进制的方式显示出来,通信协议:以方式2工作,波特率为2400b/s,信息格式为8个数据位,无奇偶校验位。

双机串行通信的设计与实现 一、设计要求 1.单机自发自收串行通信。接收键入字符,从8251A的发送端发送,与同一个8251A的接收端接收,然后在屏幕上显示出来。 2.双机串行通信,在一台PC机键入字符,从8251A的发送端发送给另一台PC机,另一台PC机的8251A的接收端接收,然后在屏幕上显示出来。 二、所用设备 IBM-PC机两台(串行通信接口8251A两片,串行发送器MC1488和串行接收器MC1489各两片,定时器/计数器8253,终端控制器8259等),串口线一根 串行直连电缆用于两台台电脑通过串行口直接相连,电缆两 端的插头都是9 针的母插头: 三、硬件方案 1.设计思想 计算机传输数据有并行和串行两种模式。在并行数据传输方式中,使用8条或更多的导线来传送数据,虽然并行传送方式的速度很快,但由于信号的衰减或失真等原因,并行传输的距离不能太长,在串行通信方式中,通信接口每次由CPU得到8位的数据,然后串行的通过一条线路,每次发送一位将该数据放送出去。 串行通信采用两种方式:同步方式和异步方式。同步传输数据时,一次传送一个字节,而异步传输数据是一次传送一个数据块。 串口是计算机上一种非常通用设备串行通信的协议。大多数计算机包含两个基于RS232的串口。串口按位(bit)发送和接收字节。尽管比按字节(byte)

的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配: RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进,RS-232只限于PC串口和设备间点对点的通信。 IBM PC及其兼容机提供了一种有较强的硬件依赖性,但却比较灵活的串行口I/O的方法,即通过INT 14调用ROM BIOS串行通信口的例行程序。该例行程序。该例行程序包括将串行口初始化为指定的字节结构和传输速率,检查控制器的状态,读写字符等功能。 14号中断的功能总结如下: 串行口服务(Serial Port Service——INT 14H) 00H —初始化通信口03H —读取通信口状态 01H —向通信口输出字符04H —扩充初始化通信口 02H —从通信口读入字符 (1)、功能00H:初始化通信口 入口参数:AH=00H DX=初始化通信口号(0=COM1,1=COM2,……) AL=初始化参数,参数的说明如下:波特率奇偶位停止位字的位数76543210

单片机实验报告 (自动化15级) 实验名称:串行通讯实验

一、实验目的 1.掌握单片机串行口工作方式; 2.掌握双机通讯的接口电路设计及程序设计。 二、实验设备 1. PC机; 2.单片机最小系统教学实验模块; 3. 数码管显示模块 三、实验容 1.双机通信 由两套单片机试验装置(两个实验小组)共同完成该实验。我们U1为甲机,U2为乙机。甲机发送本机(学生本人)学号后8位给乙机,乙机接收该8位数据,并显示在8位数码管上。电路如图1所示。 要求串行通信方式为方式1,波特率为2400bit/s,不加倍,单片机外部晶振频率为11.0592M。 图1 双机通信原理示意图

附加要求:乙机接收完毕后,将本机(乙机)的学号后8位发送回甲机,甲机显示在数码管上。 2.单片机与PC机通信 单片机向PC机发送数据。单片机向PC机重复发送本机(学生本人)学号,发送波特率为1200,采用方式1,单片机外部晶振频率为11.0592M。 四、实验原理 4.1 串行通讯的方式 在串行通讯中,有两种基本的通讯方式:异步通讯,同步通讯。 异步串行通讯规定了字符数据的传送格式,既每个数据以相同的帧格式发送。每个帧信息由起始位、数据位、奇偶校验位和停止位组成。本实验主要学习异步通讯的实现方法。 在异步通讯中,每一个字符要用起始位和停止位作为字符开始和结束的标志,以至占用了时间。所以在数据块传送时,为了提高通讯速度,常去掉这些标志,而采用同步通讯。同步通讯不像异步通讯那样,靠起始位在每个字符数据开始时发送和接受同步。而是通过同步字符在每个数据块传送开始时使收/发双方同步。 按照通讯方式,又可将数据传输线路分成三种:单工方式、半双工方式、全双工方式。(1)单工方式 在单工方式下,通讯线的一端联接发送器,另一端联接接收器,它们形成单向联接,只允许数据按照一个固定的方向传送。 (2)半双工方式 在半双工方式下,系统中的每个通讯设备都由一个发送器和一个接收器组成,通过收发开关接到通讯线路上,如图33-1所示。在这种方式中,数据能从A站送到B站,也能从B站传送到A站,但是不能同时在二个方向上传送,即每次只能一个站发送,另一个站接收。 图2 半双工通讯方式 图33-1中的收发开关并不是实际的物理开关,而是由软件控制的电子开关,由通讯线两端的半双工通讯协议进行功能切换。 (3)全双工(Full—duplex)方式 虽然半双工方式比单工方式灵活,但它的效率依然较低。从发送方式切换到接收方式所需的时间一般大约为数毫秒,这么长的时间延迟在对时间较敏感的交互式应用(例如远程检测监视控制系统)中是无法容忍的。重复线路切换所引起的延迟积累,正是半双工通信协议效率不高的主要原因。 半双工的这种缺点是可以避免的,而且方法很简单,即采用信道划分技术。在图33-2 的全双工连接中,不是交替发送和接收,而是可同时发送和接收。全双工通讯系统的每一端都包含发送器和接收器,数据可同时在两个方向上传送。

机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级: xxxxxx 学号: 13xxxxxxxxx : xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计 1.51单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:

单片机应用课程设计任务书

单片机应用课程设计说明书 学院名称:计算机与信息工程学院 班级名称:网工124 学生姓名:卞可虎 学号:2012211369 题目:双机间的串口双向通信设计指导教师:于红利 起止日期:2014.12.29至2015.1.4

目录 一、绪论 (1) 二、相关知识 (6) 2.1 双机通信介绍 (6) 2.2单片机AT89C51介绍 (6) 2.3 串行通信简介 (8) 2.3.1串行通信的特点 (8) 2.3.2串行通信技术标准 (9) 三、总体设计 (10) 3.1 设计需求 (10) 四、硬件设计 (10) 4.1 系统硬件电路设计 (10) 4.1.1整体电路设计 (10) 4.1.2 控制电路设计 (11) 4.1.3 复位电路 (11) 4.1.4 显示电路 (12) 五、软件设计 (12) 5.1发送端程序流程 (12) 5.2接收端程序流程 (13) 5.3按键程序 (14) 5.4串口通信程序 (15) 5.5数码管显示程序 (16)

六、Proteus软件仿真 (16) 七、结束语 (19) 参考文献 (20) 指导教师评语 (21) 成绩评定 (21) 附录:源程序 (22) 一、绪论 电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。单片机之间的通信可以分为两大类:并行通信和串行通信。串行通信传输线少,长距离传输时成本低,且可以利用数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。所以本系统采用串行通信来实现单片机之间可靠的,有效的数据交换。 对于一些类似复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路,单片机技术作为计算机技术的一个重要分支,由于单片机体积小,系统运行可靠,数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。但在一些相对复杂的单片机应用系统中,仅仅一个单片机资源是不够的,往往需要两个或多个单片机系统协同工作。这就对单片机通

学生实验报告学院: 课程名称: 专业班级: 姓名: 学号:

学生实验报告 一、实验综述 1、实验目的及要求 熟悉51单片机的基本输入与输出应用,掌握Proteus ISIS模块的原理图推图方法及单片机系统仿真运行方法。 1、按照P241图A、72绘制电路原理图1,将第6章实例2中2#机的查询法 收发程序改为中断法(1#机发送过程不变)并实现原有功能; 2、按照图A7、3与表A7、3绘制电路原理图2,并定义电源端口; 3、采用ARES软件完成电路原理图2的PCB设计,形成光绘(Gerber)输出文 件,其中BCD数码管需按照图A、74所示尺寸进行PCB自定义封装; 4、完成实验报告 2、实验仪器、设备或软件 电脑 Keil4 Proteus ISIS 二、实验过程(实验步骤、记录、数据、分析) 实验步骤: 1、提前阅读与实验六相关的阅读材料 2、完成电路原理图的绘制 3、编写与编译程序 4、利用ISIS调试功能检查程序的语法与逻辑错误 5、观察仿真结果,检验程序与电路的正确性 程序: 主机: #include unsigned char code led[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delay(unsigned int time) { unsigned int j=0; for(;time>0;time--)

for(j=0;j<125;j++); } void main(void) { unsigned char counter=0;//定义计数器 TMOD=0x20; //T1定时方式2 TH1=TL1=0xf4; //2400b/s PCON=0; //波特率不加倍 SCON=0x50; //串口方式1,TI与RI清零,允许接收TR1=1; //启动T1 while(1) { SBUF=counter; //发送联络信号 while(TI==0); //等待发送完成 TI=0; //清除TI标志位 while(RI==0); //等待乙机回答 RI=0; if(SBUF==counter) //若返回值与发送值相同,组织新数据 { P2=led[counter];//显示已发送值 if(++counter>15) //修正计数器值 counter=0; delay(500); } } } 从机: #include unsigned char code led[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; unsigned char receiv=0;//定义计数器 void display() interrupt 4 { if(RI=1) { RI=0; //清RI标志位 receiv=SBUF; //取得接收值 SBUF=receiv; //结果返送主机 if(TI==0); //等待发送结束 TI=0; //清TI标志位 P2=led[receiv]; //显示已发送值 } } void main(void)

Proteus中实现单片机双机通信实验 【摘要】本文针对单片机项目设计中出现的问题和基本方法,提出了将Proteus仿真软件和Keil软件引入到单片机项目式开发中。以“单片机双机通信实验”项目为例,详细阐述Proteus软件在单片机课程教学中的使用方法和仿真调试过程。实践证明,该方法能激发开发热情,锻炼创新能力和单片机软硬件综合开发能力,是提高单片机开发效率和设计产品质量的一种有效方法。 【关键词】单片机开发;Proteus软件;仿真调试 引言 单片机开发是一项综合性、实践性、应用性很强的技术。传统的单片机开发采用“先理论设计,再动手实验”的开发模式,该模式造成编程与之实验结果分离,不便于调试,效果并不理想。鉴于此,本文将Proteus和引入到单片机的项目式开发中,通过仿真的直观性和真实感,不仅节约了硬件资源的投入,而且提高了单片机开发效率和产品质量。 一、Proteus简介 Proteus软件是英国Labcenter electronics公司开发的电路分析与实物仿真软件,它除了具有其他EDA工具的原理布图、PCB自动或人工布线、电路仿真等功能外,Proteus最大的特点是基于微控制器的设计连同所有的外围电路一起仿真,可直接在单片机虚拟系统上对MCU编程,并可对软件源代码进行实时调试。同时,它具有电路互动仿真功能,通过动态外设模型,如键盘、LED/LCD等,可实时显示系统输入、输出结果,以实现交互仿真,或配合Proteus配置的虚拟仪器如示波器、逻辑分析仪等,使单片机虚拟系统实现预期的实验效果。 此处还需要用Keil软件来协助。Keil软件是美国Keil Software公司出品的兼容单片机C语言软件的开发系统,是目前世界上最好的51单片机开发工具之一。它提供了丰富的库函数和功能强大的集成开发调试工具,生成的目标代码效率高,多数语句生成的汇编代码很紧凑,容易理解。 Proteus和Keil各自都可以进行仿真调试,但效果不是很理想,如把两者结合起来相互配合,则可发挥Proteus和Keil的优势使其在仿真过程中的软件调试和硬件设计更加便捷、高效。 二、仿真项目教学案例 (一)项目要求 本项目要求用两片AT89C51单片机实现A机检测输入键盘信息,并通过串行通信方式,传送给B机,在B机用数码管显示A机所按下的对应按键代号,“0-9”

西安邮电大学 单片机课程设计报告书题目:双机通信系统

、系统整体设计 1. 系统设计思路 双机通信的实质就是解决两单片机串行通信问题。针对于89C52单片机全双工异步 串行通信口,我们采用单片机直接交叉互连的串行通信方式。 考虑到设计应用于短距离传输、两单片机具有相同的数据格式及电平且为使设计简 单,我们最终决定采用方式二单片机直接交叉连接的串行通信方式, 上位机发送的数据 由串行口 TXD 端输出,直接由下位机的串行口数据接收端 RXD 接攵。需要注意的是一定 要保证主从机相同的数据传输速率,即要求设置相同的波特率。电路分为数码管显示模 块,以及单片机工作的基本复位、晶振模块。 2. 系统设计原理 (1)串行通信 一个是数据传送,另一个是数据转换。所谓数 所谓数据转换就是指单片机在接收数据时,如 单片机在发送 数据时,如何把并行数据转换为 串行数据进行发送。单片机的串行通信使用的是异步串 行通信, 所谓异步就是指发送端 和接收端使用的不是同一个时钟。异步串行通信通常以字符(或者字节)为单位组成字 符帧传送。字符帧由发送端一帧一帧地传送, 接收端通过传输线一帧一帧地接收。 而对 于两个单片机之间的串行通信,由于具有相同的数据格式及电平且是短距离通信则不必 要使用一些电平转化芯片(如 max232等)便可直接实现串行通讯,需要注意的是两单 片机硬件要共地,软件中需要设置相同波特率 STC89C5单片机有一个全双工的异步串行通信口,串行结构如下: ①数据缓冲器(SBUF 接受或发送的数据都要先送到 SBUF 缓存。有两个,一个缓存,另一个接受,用同 一直接地址99H,发送时用指令将数据送到 SBUF 即可启动发送;接收时用指令将 SBUF 中接收到的数据取出。 ②串行控制寄存器(SCON SCO 用于串行通信方式的选择,收发控制及状态指示,各位含义如下: SM0,SM1串行接口工作方式选择位,这两位组合成 00, 01,10,11对应于工作方 式0、1、2、3。串行接口工作方式特点见下表1. 表1串行口工作方式表 串行数据通信要解决两个关键问题, 据传送就是指数据以什么形式进行传送。 何把接收到的串行数据转化为并行数据,

实验三双机通信实验 一、实验目的 UART 串行通信接口技术应用 二、实验实现的功能 用两片核心板之间实现串行通信,将按键信息互发到对方数码管显示。 三、系统硬件设计 (1)单片机的最小系统部分 (2)电源部分 (3)人机界面部分

数码管部分按键部分 (4)串口通信部分 四、系统软件设计 #include #define uchar unsigned char #define uint unsigned int void send(); uchar code0[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9的数码管显示 sbit H1=P3^6; sbit H2=P3^7;

sbit L1=P0^5; sbit L2=P0^6; sbit L3=P0^7; uint m=0,i=0,j; uchar temp,prt; /***y延时函数***/ void delay(uint k) { uint i,j; //定义局部变量ij for(i=0;i

{ m=1; //KEY1键按下 return(m); } if(H2==0) { m=4; //KEY4键按下 return(m); } } } if(L2==0) { delay(5); if (L2==0) { L2=0;H1=1;H2=1; if(H1==0) { m=2; //KEY2键按下 return(m); } if(H2==0) { m=5; //KEY5键按下 return(m); } } } if(L3==0) { delay(5); if (L3==0) { L3=0;H1=1;H2=1; if(H1==0) { m=3; //KEY3键按下

前言 单片机的通信接口是各台仪表之间或仪表与计算机之间进行信息交换和传输的联络装置。主要有五种类型,串行通信接口、并行通信接口、USB接口、现场总线接口以及以太网接口。 串行通讯是单片机的一个重要应用。本设计就是利用两块单片机来完成一个系统,实现单片机之间的串行通讯。 随着计算机的不断普及,在我们的周围可能会同时出现多台微型计算机,而且这些计算机的牌号,后型号不同,而且有的格式不兼容。于是利用单片机串行口实现不同计算机之间的相互通信,以达到信息或程序的共享是非常有用的。从智能家用电器到工业上的控制系统都采用了上位机与下位机基于串行通信的主从工作方式,这样就充分利用了微机分析处理能力强、速度快的特点及下位机(单片机)面向控制、使用灵活方便的优势。利用多机通讯构成的分布式系统逐渐普及。本实验就点对点的双机通信进行训练。学习串口的工作方式,初始化编程,和单片机与单片机点对点通信的编程方法以及硬件电路的设计方法。

1.总体设计方案 1.1 串口通信的设计原理 复位电路复位电路 单片机单片机 电源电路电源电路 时钟电路时钟电路 按键输入1位LED数码管 显示电路 图1 串口通信的设计原理框图 本次设计用于两片89S51,PC机的串行口采用的是标准的RS232接口,单片机的串行口电平是FTL电平,而TTL电平特性与RS232的电气特性不匹配,因此为了使单片机的串行口能与RS232接口通信,必须将串行口的输入/输出电平进行转换。通常用MAX232芯片来完成电平转换。单片机的发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。接收方也使用MAX232芯片进行电平转换后,信号到达接收方串行口的接收端。接收方接收后,在数码管上显示接收的信息,实现串口通讯数据的发送和接收,该系统可采用max232进行串口通讯数据传送。可用LED显示发送的相应据。 1.2 数据传输方案比较与选折 在串行通信中,数据是在两个站之间传送的。按照数据传送方向,串行通信可采用三种方案。 方案一:单工制式 单工制式是指甲乙双方通信只能单向传送数据。 发送器A 接收器B 图2 单工制式

中国石油大学(北京) 实 验 报 告 实验课程:单片机原理及应用 实验名称:实验六——双机通信与PCB设计

一、实验目的 掌握串口通信工作原理及程序开发方法,熟悉ARES软件PCB设计过程。 二、实验内容 1、按照P241图绘制电路原理图1,将第6章实例2中2#机的查询法收发程序改为中断法(1#机发送过程不变)并实现原有功能; 2、按照图和表绘制电路原理图2,并定义电源端口; 3、采用ARES软件完成电路原理图2的PCB设计,形成光绘(Gerber)输出文件,其中BCD数码管需按照图所示尺寸进行PCB自定义封装; 4、完成实验报告。 三、实验要求 提交的实验报告中应包括:电路原理图1,2#机的C51源程序,双机通信仿真效果及讨论*,PCB设计图(电路原理图2、排版图、3D效果图、光绘文件分层图3-4幅)以及实验小结。 提交实验报告的电子邮件主题及存盘文件名格式如,20马晓明实验六。 *讨论:中断法与查询法的程序结构差异及优缺点。 1、电路原理图1 图1 电路原理图 2、2#机的C51源程序

图2 2#机源程序 3、双机通信仿真效果及讨论 图3 仿真运行一 说明:利用KEIL编写1#机和2#机的源程序并生成“.HEX”文件,分别加载

在两个单片机上。1#机循环发送0-F数据,2#机实时接收数据,两机数据通过各自的BCD数码管显示出来。 图4仿真运行二 说明:1#机循环发送“0—F”数据,如图1#机发送数据“F”,2#机接收数据后在数码管上输出,1#机接收2#机返回的数据对比无误后在数码管上同时输出“F”。 图5 仿真运行三

说明:输出“0—F”后,1#机循环发送“0—F”的数据,2#机实时接收数据,两机数据通过各自的BCD数码管显示出来。 讨论:从单片机仿真的结果上看,2#机采用中断法编程并生成HEX文件后加载到单片机上后进行仿真运行的效果与采用查询法编程的效果一致。从源程序上看,采用查询法时, CPU需要不断等待单片机发送和接收完数据后才能进行下一步的操作。采用中断法时,CPU可以依照主函数进行操作,当出现中断请求标志时,CPU保存程序断点后开始执行中断函数。由于本次2#机源程序中的主函数采用的是空运行并没能直观地反映出采用中断法与查询法的区别。但从理论上看,采用中断法能够更加高效地利用CPU的空间。 4、PCB设计图 (1)PCB原理图 图6 PCB封装原理图 (2)PCB_LED封装

河南机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级: xxxxxx 学号: 13xxxxxxxxx 姓名: xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规范; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计 单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:

实验六、双机通信与PCB设计 一、实验目的 掌握串口通信工作原理及程序开发方法,熟悉ARES软件PCB设计过程。 二、实验内容 1、按照P241图A.72绘制电路原理图1,将第6章实例2中2#机的查询法收发程序改为中断法(1#机发送过程不变)并实现原有功能; 2、按照图A7.3和表A7.3绘制电路原理图2,并定义电源端口; 3、采用ARES软件完成电路原理图2的PCB设计,形成光绘(Gerber)输出文件,其中BCD数码管需按照图A.74所示尺寸进行PCB自定义封装; 4、完成实验报告。 三、实验要求 提交的实验报告中应包括:电路原理图1,2#机的C51源程序,双机通信仿真效果及讨论*,PCB设计图(电路原理图2、排版图、3D效果图、光绘文件分层图3-4幅)以及实验小结。 提交实验报告的电子邮件主题及存盘文件名格式如,2005041220马晓明实验六。 *讨论:中断法与查询法的程序结构差异及优缺点。 1、电路原理图1

2、2#机的C51源程序 发送端源程序: #include #define uchar unsigned char char code map[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(unsigned int time) { unsigned int j=0; for(;time>0;time--) for(j=0;j<125;j++); } void main() { uchar c=0; TMOD=0x20; TH1=TL1=0xf4; PCON=0; TR1=1; SCON=0x50; while(1) { SBUF=c;

相关主题
文本预览
相关文档 最新文档