单片机实训之单片机与单片机的通信课程设计.doc

上传人:wj 文档编号:155114 上传时间:2023-04-28 格式:DOC 页数:16 大小:217KB
下载 相关 举报
单片机实训之单片机与单片机的通信课程设计.doc_第1页
第1页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第2页
第2页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第3页
第3页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第4页
第4页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第5页
第5页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第6页
第6页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第7页
第7页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第8页
第8页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第9页
第9页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第10页
第10页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第11页
第11页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第12页
第12页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第13页
第13页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第14页
第14页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第15页
第15页 / 共16页
单片机实训之单片机与单片机的通信课程设计.doc_第16页
第16页 / 共16页
亲,该文档总共16页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机实训之单片机与单片机的通信课程设计.doc

《单片机实训之单片机与单片机的通信课程设计.doc》由会员分享,可在线阅读,更多相关《单片机实训之单片机与单片机的通信课程设计.doc(16页珍藏版)》请在冰点文库上搜索。

单片机实训之单片机与单片机的通信课程设计.doc

单片机课程设计

题目:

单片机与单片机的通信

学校:

福州大学至诚学院

专业:

电气工程及其自动化

年级:

07

班级:

1

姓名:

李敏昱

学号:

21079201

目录

设计概述————————————1

硬件电路图———————————2

软件设计————————————3

结论——————————————10

参考文献————————————11

附录——————————————11

一、设计概述

1、设计一块电路板,板上有两个单片机(AT89C51),单片机的外围接有开关和发光二极管,当A机开关发生变位时,其状态在B单片机中的发光二极管中反映出来,B机的开关状态在A机的二极管中也反映出来。

功能说明:

单片机U1的开关的变位,会体现在单片机U2的LED二极管D2上

单片机U2的开关的变位,会体现在单片机U1的LED二极管D1上

2、设计一块电路板,板上有3个单片机(AT89C51),3个单片机之间实现多帧通信:

A单片机为主机,I/O口上接有2个开关,和一个数码管。

当第一个开关合上的时候,A机与B机通信,将A机的地址显示在B机的数码管上,C机的数码管显示0;当第二个开关合上的时候,A机与C机通信,将A机的地址显示在C机的数码管上,B机的数码管显示0。

A机数码管显示与之通信单片机的地址。

2个开关实现互锁。

要求,先发送地址帧,再发送数据帧,数据信息可以在从机的数码管上显示。

功能说明:

单片机U1(地址为1)为主机,单片机U2(地址为2),U3(地址为3)为从机

开关SW1打向左端时,U1与U2通信,U1的数码管显示U2的地址2,U2的数码管显示U1的地址1,U3因没有单片机与之通信,其数码管显示0

开关SW1打向右端时,U1与U3通信,U1的数码管显示U3的地址3,U3的数码管显示U1的地址1,U2因没有单片机与之通信,其数码管显示0

3、设计并制作电路板,板上有3块单片机(AT89C51),可以同时实现以上2个功能,并扩展部分功能。

功能说明:

单片机U1(地址为1)为主机,单片机U2(地址为2),U3(地址为3)为从机

①开关SW1闭合时,允许多机通信。

开关SW2打向上端时,U1与U2通信,U1的数码管显示U2的地址2,U2的数码管显示U1的地址1(扩展:

之后显示5~9),U3因没有单片机与之通信,其数码管显示0

开关SW2打向下端时,U1与U3通信,U1的数码管显示U3的地址3,U3的数码管显示U1的地址1(扩展:

之后显示9~5),U2因没有单片机与之通信,其数码管显示0

②开关SW2断开时,禁止多机通信,单片机A、B之间实现状态显示

单片机U1的开关SW3的变位,会体现在单片机U2的LED二极管D2上

单片机U2的开关SW4的变位,会体现在单片机U1的LED二极管D1上

二、硬件电路图

1、

2、

3、

三、软件设计

1、程序

;//******实现两机开关变位时的状态显示******//

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN:

MOV SCON, #50H ;//设置串行口工作在模式1下,接

;//收使能

MOV TMOD, #20H ;//使用定时器1,工作在模式2下

MOV TH1, #0F3H ;//波特率2400

MOV TL1, #0F3H

SETB TR1 ;//启动定时器1

START:

JNB P0.0, LOOP1 ;//P0.0为低电平,即有按键按下时,

;//跳转至LOOP1;否则顺序执行

MOV SBUF, #0FFH ;//传送信号至B机,使其对P1.0输

;//出高电平,截止LED灯,熄灭

JBC TI, S1 ;//发送结束时,跳转至S1,查询有

;//无信号接收

SJMP $-3 ;//等待发送结束信号

LOOP1:

MOV SBUF, #0FEH ;//传送信号至B机,使其对P1.0输

;//出低电平,导通LED灯,发光

JBC TI, S1 ;//发送结束时,跳转至S1,查询有

;//无信号接收

SJMP $-3 ;//等待发送结束信号

S1:

JBC RI, LOOP2 ;//接收到信号后,跳转LOOP2,并

;//清0信号接收标志RI

SJMP FIN ;//若无信号接收,跳转至FIN,准

;//备开始新一轮循环

LOOP2:

MOV A, SBUF ;//将接收到的信号导入P1口,对

;//LED灯进行控制

MOV P1, A

FIN:

SJMP MAIN ;//跳转,新循环

END

流程图5-1见附录

2、程序

主机(地址为1):

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN:

MOV SCON, #0D0H ;//设置串行口工作在模式3下,接

;//收使能

MOV TMOD, #20H ;//使用定时器1,工作在模式2下

MOV TH1, #0E6H ;//波特率1200

MOV TL1, #0E6H

SETB TR1 ;//启动定时器

JNB P1.6, CASE1 ;//开关左拨与B机(地址为2)通

;//讯

JNB P1.7, CASE2 ;//开关右拨与C机(地址为3)通

;//讯

SJMP LOOP

;//**********与B机(地址为2)通信**********//

CASE1:

SETB TB8 ;//第9位发送1

CLR TI ;//清发送中断标志位

MOV SBUF, #02H ;//发送地址02H

JNB TI, $ ;//等待发送结束

CLR TI ;//清发送中断标志位

CLR TB8 ;//第9位发送0

MOV SBUF, #06H ;//发送本机地址01H,06H为共阴

;//极LED显示1字型编码

JNB TI, $ ;//等待发送结束

CLR RI ;//清接收中断标志位

JNB RI, $ ;//等待接收结束

MOV P2, SBUF ;//显示接收信息

JNB P1.6, $ ;//等待开关变换

SJMP MAIN ;//开始新的判断

;//**********与C机(地址为3)通信**********//

CASE2:

SETB TB8 ;//第9位发送1

CLR TI ;//清发送中断标志位

MOV SBUF, #03H ;//发送地址03H

JNB TI, $ ;//等待发送结束

CLR TI ;//清发送中断标志位

CLR TB8 ;//第9位发送0

MOV SBUF, #06H ;//发送本机地址01H,06H为共阴

;//极LED显示1字型编码

JNB TI, $ ;//等待发送结束

CLR RI ;//清接收中断标志位

JNB RI, $ ;//等待接收结束

MOV P2, SBUF ;//显示接收信息

JNB P1.7, $ ;//等待开关变换

SJMP MAIN ;//开始新的判断

END

从机1(B机,地址为2):

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN:

MOV TMOD, #20H ;//使用定时器1,工作在模式2下

MOV TH1, #0E6H ;//波特率1200

MOV TL0, #0E6H

SETB TR1 ;//启动定时器

MOV SCON, #0D0H ;//设置串行口工作在模式3下,接收

;//使能

SETB SM2 ;//接收主机送出的地址码

CLR RI ;//清接收中断标志位

JNB RI, $ ;//等待接收结束

MOV A, SBUF ;//判断主机所要通信从机的是否为

;//本机,不是则跳转OFF

CJNE A, #02H, OFF

CLR SM2 ;//接收主机送出的按钮状况

CLR RI ;//清接收中断标志位

JNB RI, $ ;//等待接收结束

MOV A, SBUF ;//显示接收信息

MOV P2, A

CLR TI //清发送中断标志位

MOV SBUF, #5BH ;//发送本机地址02H,5BH为共阴极

;//LED显示2字型编码

JNB TI, $ ;//等待发送结束

AJMP MAIN ;//跳转等待下一次多机通信

OFF:

MOV P2, #3FH ;//显示0,3FH为共阴极LED显示0

;//字型编码

AJMP MAIN

END

从机2(C机,地址为3):

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN:

MOV TMOD, #20H ;//使用定时器1,工作在模式2下

MOV TH1, #0E6H ;//波特率1200

MOV TL0, #0E6H

SETB TR1 ;//启动定时器

MOV SCON, #0D0H ;//设置串行口工作在模式3下,接收

;//使能

SETB SM2 ;//接收主机送出的地址码

CLR RI ;//清接收中断标志位

JNB RI, $ ;//等待接收结束

MOV A, SBUF ;//判断主机所要通信从机的是否为

;//本机,不是则跳转OFF

CJNE A, #03H, OFF

CLR SM2 ;//接收主机送出的按钮状况

CLR RI ;//清接收中断标志位

JNB RI, $ ;//等待接收结束

MOV A, SBUF ;//显示接收信息

MOV P2, A

CLR TI ;//清发送中断标志位

MOV SBUF, #4FH ;//发送本机地址03H,4FH为共阴极

;//LED显示3字型编码

JNB TI, $ ;//等待发送结束

AJMP MAIN ;//跳转等待下一次多机通信

OFF:

MOV P2, #3FH ;//显示0,3FH为共阴极LED显示0

;//字型编码

AJMP MAIN

END

流程图5-2A见附录

3、程序

主机(地址为1):

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN:

MOV SCON, #0D0H ;//设置串行口工作在模式3下,接

;//收使能

MOV TMOD, #20H ;//使用定时器1,工作在模式2下

MOV TH1, #0E6H ;//波特率1200

MOV TL1, #0E6H

SETB TR1 ;//启动定时器

;//***********实现两机状态显示***********//

SETB TB8

JNB P0.0, LOOP1 ;//P0.0为低电平,即有按键按下时,

;//跳转至LOOP1;否则顺序执行

MOV SBUF, #0FFH ;//传送信号至B机,使其对P1.0输

;//出高电平,截止LED灯,熄灭

JBC TI, S1 ;//发送结束时,跳转至S1,查询有

;//无信号接收

SJMP $-3 ;//等待发送结束信号

CLR TB8

LOOP1:

MOV SBUF, #0FEH ;//传送信号至B机,使其对P1.0输

;//出低电平,导通LED灯,发光

JBC TI, S1 ;//发送结束时,跳转至S1,查询有

;//无信号接收

SJMP $-3 ;//等待发送结束信号

CLR TB8

S1:

JBC RI, LOOP2 ;//接收到信号后,跳转LOOP2,并

;//清0信号接收标志RI

SJMP LOOP ;//若无信号接收,跳转至LOOP,

;//开始多机通信

LOOP2:

MOV P1, SBUF ;//将接收到的信号导入P1口,对

;//LED灯进行控制

LOOP:

JNB P0.6, CASE1 ;//开关上拨与B机(地址为2)通

;//讯

JNB P0.7, CASE2 ;//开关下拨与C机(地址为3)通

;//讯

SJMP MAIN

;//*********与B机(地址为2)通信*********//

CASE1:

SETB TB8 ;//第9位发送1

CLR TI ;//清发送中断标志位

MOV SBUF, #02H ;//发送地址02H

JNB TI, $ ;//等待发送结束

CLR TI ;//清发送中断标志位

CLR TB8 ;//第9位发送0

MOV SBUF, #06H ;//发送本机地址01H,06H为共阴

;//极LED显示1字型编码

JNB TI, $ ;//等待发送结束

CLR RI ;//清接收中断标志位

JNB RI, $ ;//等待接收结束

MOV P2, SBUF ;//显示接收信息

JB P0.6, C1 ;//等待开关变换

;//**********在此处可以扩展程序功能**********//

ACALL ADD1

JNB P0.6, $

C1:

SJMP MAIN ;//开始新的判断

;//**********与C机(地址为3)通信**********//

CASE2:

SETB TB8 ;//第9位发送1

CLR TI ;//清发送中断标志位

MOV SBUF, #03H ;//发送地址03H

JNB TI, $ ;//等待发送结束

CLR TI ;//清发送中断标志位

CLR TB8 ;//第9位发送0

MOV SBUF, #06H ;//发送本机地址01H,06H为共阴

;//极LED显示1字型编码

JNB TI, $ ;//等待发送结束

CLR RI ;//清接收中断标志位

JNB RI, $ ;//等待接收结束

MOV P2, SBUF ;//显示接收信息

JB P0.7, C2 ;//等待开关变换

;//**********在此处可以扩展程序功能**********//

ACALL ADD2

JNB P0.7, $

C2:

AJMP MAIN ;//开始新的判断

;//***************此为扩展内容***************//

ADD1:

MOV DPTR, #LIST1 ;//读取LED显示表

RE11:

CLR TF1

CLR A

CLR TI

MOVC A, @A+DPTR

ACALL DELAY

MOV SBUF, A

JNB TI, $

CJNE A, #00H, RE12

SJMP FIN1

RE12:

INC DPTR

SJMP RE11

FIN1:

RET

ADD2:

MOV DPTR, #LIST2 ;//读取LED显示表

RE21:

CLR TF1

CLR A

CLR TI

MOVC A, @A+DPTR

ACALL DELAY

MOV SBUF, A

JNB TI, $

CJNE A, #00H, RE22

SJMP FIN2

RE22:

INC DPTR

SJMP RE21

FIN2:

RET

DELAY:

MOV R5, #0AH ;//子程序DELAY,延时1S

D1:

MOV R6, #0C8H

D2:

MOV R7, #0F8H

NOP

DJNZ R7, $

DJNZ R6, D2

DJNZ R5, D1

RET

LIST1:

DB 6DH, 7DH, 07H, 7FH, 6FH ;//LED数码官显示5~9

DB 00H

LIST2:

DB 6FH, 7FH, 07H, 7DH, 6DH ;//LED数码官显示9~5

DB 00H

END

从机1(B机,地址为2):

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN:

MOV SCON, #0D0H ;//设置串行口工作在模式3下,接收

;//使能

MOV TMOD, #20H ;//使用定时器1,工作在模式2下

MOV TH1, #0E6H ;//波特率1200

MOV TL0, #0E6H

START:

CLR TF1

SETB TR1 ;//启动定时器1

SETB SM2 ;//接收主机送出的地址码

CLR RI ;//清接收中断标志位

JNB RI, $ ;//等待接收结束

MOV A, SBUF ;//判断主机所要通信从机的是否为

;//本机,不是则跳转OFF

CJNE A, #02H, OFF

CLR SM2 ;//接收主机送出的按钮状况

CLR RI ;//清接收中断标志位

JNB RI, $ ;//等待接收结束

MOV A, SBUF ;//显示接收信息

MOV P2, A

CLR TI ;//清发送中断标志位

MOV SBUF, #5BH ;//发送本机地址02H,5BH为共阴极

;//LED显示2字型编码

JNB TI, $ ;//等待发送结束

;//*************接收拓展信息*************//

A1:

CLR TF1

CLR RI

JNB RI, $

MOV A, SBUF

CJNE A, #00H, ON

MOV P2, #06H

AJMP START ;//跳转等待下一次多机通信

ON:

CLR TF1

MOV P2, A

SJMP A1

OFF:

CLR TF1

MOV P2, #3FH ;//显示0,3FH为共阴极LED显示0

;//字型编码

CJNE A, #0FFH, C1

MOV P1, A

SJMP A2

C1:

CJNE A, #0FEH, START

MOV P1, A

A2:

CLR TF1

JNB P0.0, LOOP1 ;//P0.0为低电平,即有按键按下时,

;//跳转至LOOP1;否则顺序执行

MOV SBUF, #0FFH ;//传送信号至B机,使其对P1.0输

;//出高电平,截止LED灯,熄灭

JNB TI, $ ;//发送结束时,跳转至S1,查询有

;//无信号接收

AJMP START ;//等待发送结束信号

LOOP1:

MOV SBUF, #0FEH ;//传送信号至B机,使其对P1.0输

;//出低电平,导通LED灯,发光

JNB TI, $ ;//发送结束时,跳转至S1,查询有

;//无信号接收

AJMP START ;//等待发送结束信号

END

从机2(C机,地址为3):

ORG 0000H

SJMP MAIN

ORG 0030H

MAIN:

MOV SCON, #0D0H ;//设置串行口工作在模式3下,接

;//收使能

MOV TMOD, #20H ;//使用定时器1,工作在模式2下

MOV TH1, #0E6H ;//波特率1200

MOV TL0, #0E6H

START:

CLR TF1

SETB TR1 ;//启动定时器

SETB SM2 ;//接收主机送出的地址码

CLR RI ;//清接收中断标志位

JNB RI, $ ;//等待接收结束

MOV A, SBUF ;//判断主机所要通信从机的是否为

;//本机,不是则跳转OFF

CJNE A, #03H, OFF

CLR SM2

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2