单片机双机通信系统设计 学位论文Word格式文档下载.docx
- 文档编号:17526585
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:35
- 大小:305.56KB
单片机双机通信系统设计 学位论文Word格式文档下载.docx
《单片机双机通信系统设计 学位论文Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《单片机双机通信系统设计 学位论文Word格式文档下载.docx(35页珍藏版)》请在冰豆网上搜索。
单片机多机通信是指由两台以上的单片机组成的网络结构,可以通过串行通信方式共同实现对某一过程的最终控制。
随着计算机技术的发展,多机通信技术也在不断的发展,现在发展比较成熟的还有光纤通信等。
由于计算机的飞速发展和控制系统的复杂化,多机通信已经越来越成为人们热门话题之一。
目前,单片机多机通信的形式较多,但通常可分为星型、环型、串行总线型和主从式多机型四种。
方案设计可行性分析
1.2.1需求分析
1.设计任务
a.设计两个单片机系统;
b.两单片机之间可以进行远距离通信;
c.能够通过数码管显示时间;
d.能够通过按键设置本机和对方的时间。
2.设计要求
a.基本要求:
设计两个小系统,能实现有线互相通信(互设时间+数据共享)。
b.扩展要求:
远距离通信或无线通信,并能实现校验。
1.2.2可行性分析
a.市场可行性分析
单片机作为微型计算机的一个分支,其功能强、体积小、应用灵活等诸多优点,在工业控制、仪器仪表、通信、家用电器和国际科技等各个领域得到广泛的应用。
b.技术可行性分析
本项目在设计上思路简单,已设计出合理的实际方案,可以实现基础要求和扩展要求,并达到比较好的效果。
c.资源可行性分析
资源有人力资源和材料资源,已考虑到各个阶段所需人才类型及数量,完全可以保证项目实施的有条不紊。
d.经济成本可行性分析
本项目设计结构简单,材料在原理图设计完成后导师派发。
材料易购,成本还是较为合适。
e.项目风险分析
从项目整体上来说考虑各方面较为全面,风险指数已经降到最低,可以实施。
项目执行计划
下表为本项目进行的时间进度及人员分配情况:
表1.1工程进度
工程名称
工期(天)
开始时间
提交时间
人员安排
原理图设计
3
2014.10.08
2014.10.11
彭跃秒
PCB布局
2014.10.16
2014.10.19
程序设计
2014.10.20
2014.10.23
钮丽媛
设计说明书
2
2014.10.02
2014.10.04
张惠琳
安装、调试
2014.11.02
2014.11.04
安装调试说明书
1
2014.11.14
2014.11.15
项目提交
2014.12.03
表1.2材料清单
序号
名称
型号规格
号位
数量
单片机
STC89C52RC40C(PDIP40)
U1
2片
接口芯片
MAX232CPE
U2
四联数码管
3461AS
SEG1
2个
4
时钟芯片
DS1302
NLY1
5
二极管
D1
按键
立式6*6*5(4脚黑)
S1、S2、S3
6个
6
电池
LITIUMCELLCR12203V
7
晶振
11.0592MHz、32.765MHz
Y1、A1
4个
8
电阻
10K
R1
9
电解电容
10uF、100uF
C3、C6
10
瓷片电容
30pF、104
C5、C7
14个
11
连接线
DB9公头1.5m
DB9
1根
12
上拉电阻
1K
P1
底座
DIP40、DIP16、DIP8
U1、U2、NLY1
3个
指示灯
LED显示灯、红
LED
13
排针
若干
设计说明
方案设计
通过两个STC89C52单片机为核心设计通信系统。
单片机都带有串口,系统要求远距离通信,所以有对外连接的串口相互之间的数据共享。
单片机的并行端口也能相互连接来进行数据通信。
要求互设时间,可以在IO口连接一时钟模块,这里选择DS1302时钟芯片实现,需要用到按键对时间设置,显示则各自需要数码管。
在本次设计中硬件部分:
对于两片89C52采用RS232进行双机通信硬件的连接方法如图所示。
电平转换芯片采用MAX232,其连接一般采用双绞线。
发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。
接收方也使用MAX232芯片进行电平转换后,信号到达接收方串行口的接收端。
接受方接收后在数码管上显示接收的信息。
为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。
软件部分:
通过通信协议进行发送和接收。
初始时两个数码管显示初始值。
单片机A对B进行时间设置前要先对自己设置时间,此时显示标志;
设置之后需对B设时间,再显示标志开始。
通过通信协议进行发送接收,A机在设置时可在B机上同时看到显示。
与主机发送来的检验和进行比较,若检验和相同则发送字符给主机
硬件设计原理
2.2.1单片机系统
STC89C52芯片:
有8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
最高运作频率35MHz,6T/12T可选。
单片机有32根输入/输出线,组成4个8位并行输入/输出接口,分别称为P0口、P1口、P2口、P3口。
每个接口都由锁存器、输出驱动器和输入缓冲器组成。
P0口和P2口还可用于对外部存储器访问的地址和数据总线。
P0口作为I/O接口使用时,输出级属于开漏电路,必须接上拉电阻才有高电平输出。
在TXD和RXD处接一个下载口下载程序。
单片机最小系统或称为最小应用系统,是指利用单片机自身的资源,用最少的辅助元件组成一个可以工作的系统。
包括电源(地)、晶振(一般使用11.0592MHz或者12MHz)和复位电路。
图2.1单片机最小系统
振荡电路:
如图可见,由两个30pF的电容与11.0592MHz的晶振构成稳定的自激振荡器,属于内时钟方式。
这两个电容对频率有微调的作用,为减少寄生电容,振荡器和电容应尽可能安装得与单片机芯片靠近。
复位电路:
在RST复位输入上接入10uF电容至VCC端,在接一个10K电阻接地,组成上电复位电路。
上电原理是,在加电时,Vcc通过电容提供给RST端一个短暂的高电平信号,此后该高电平信号随Vcc对电容的充电过程而逐渐回落,即RST高电平持续时间取决于电容的充电时间。
上电时,vcc的上升时间约为10ms,而振荡器的起振时间取决于振荡频率。
2.2.2DS1302时钟模块
芯片简介:
实时时钟电路DS1302是一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。
采用普通32.768kHz晶振。
工作电压为2.5V~5.5V。
本项目采用三线接口通过5、6、7脚与CPU进行同步通信。
DS1302内部有一个31×
8的用于临时性存放数据的RAM寄存器。
DS1302的引脚排列,其中Vcc2为主电源,VCC1为后备电源。
在主电源关闭的情况下,也能保持时钟的连续运行。
DS1302由Vcc1或Vcc2两者中的较大者供电。
当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。
当Vcc2小于Vcc1时,DS1302由Vcc1供电。
RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。
当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。
上电运行时,在Vcc>
2.0V之前,RST必须保持低电平。
只有在SCLK为低电平时,才能将RST置为高电平。
I/O为串行数
图2.2DS1302电路图
据输入输出端(双向)。
SCLK为时钟输入端。
备用电源Vcc1,可以用电池或者超级电容器(0.1F以上)。
如果要长时间保证时钟正常,选用小型充电电池。
可以用老式电脑主板上的3.6V充电电池。
如果断电时间较短(几小时或几天)时,就可以用漏电较小的普通电解电容器代替。
100μF就可以保证1小时的正常走时。
DS1302在第一次加电后,必须进行初始化操作。
初始化后就可以按正常方法调整时间。
本项目有100μF电解电容,也采用了在备用电源处使用3V的电池供电。
二极管的作用是给100uF的电容充放电。
下图是DS1302在本设计中的原理图:
2.2.3MAX232电平转换
用8051串行接口通信,如果两台8051单片机之间的距离很近(不超过1.5m),可以采用直接将两台8051单片机的串行接口直接相连,利用其自身的TTL电平(0-5V)直接传输数据信息。
如果传输距离较远(超过1.5m),由于传输线的阻抗与分布电容,会产生电平损耗和波形畸变,以至于检测不出数据或数据出错。
RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。
在TxD和RxD上:
逻辑1(MARK)=-3V~-15V
,逻辑0(SPACE)=+3~+15V
。
在RTS、CTS、DSR、DTR和DCD等控制线上:
信号有效(接通,ON状态,正电压)=+3V~+15V
,信号无效(断开,OFF状态,负电压)=-3V~-15V
为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。
图2.3MAX232模块原理图
最大直接传输距离说明:
RS-232C标准规定,若不使用MODEM,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺。
DB-9连接器
:
用RS-232总线连接系统有近程通讯方式和远程通讯方式两种,近程通讯是指传输距离小于15米的通讯,可以用RS-232
电缆直接连接。
15米以上的长距离通讯,需要采用调制调解器。
计算机和终端用RS-232连接的交叉“发送数据”与“接收数据”是交叉相连的,使得两台设备都能正常的发送和接收。
在于DB9相连时需要考虑RS232串口接线是公头还是母头,因为两单片机的TXD与RXD必须交叉相连。
数据发送与接收线:
发送数据(TxD)——通过TxD终端将串行数据发送到MODEM。
接收数据(RxD)——通过RxD线终端接收从MODEM发来的串行数据。
2.2.4数码管显示
数码管段选与位选接口如图所示,设置强推挽输出,使数码管显示亮度增加。
P0口与数码管段选之间接入1k的排阻限流,相比加上拉电阻会减少单片机的功耗。
因为上拉电阻在IO口输出低电平时也会有电流,如果接入限流电阻就会避免这种情况,从而减少功耗。
图2.4数码管显示原理图
2.2.5按键模块
本项目有六个按键,每个单片机三个。
按键一端接地另一端接单片机的I/O口。
S1、S2、S3分别标志点移位键、加1键、菜单键。
图2.5按键原理图
各单元模块设计流程图
2.3.1硬件总设计框图
两个单片机通信,每个单片机由四个模块组成。
该项目原理图及PCB图是在AltiumDeigner软件下设计的。
设计框图如下图所示。
图2.6总设计框图
2.3.2主程序设计
该项目软件设计使用的是Keil编程软件。
图2.7主程序流程图
UartInit();
//串口初始化
Init_DS1302(5555);
//初始化1302
KeyScan();
//按键扫描
DisPlayKey();
//按键响应操作
GetTime();
//获取当前ds1302的时间
display(DisNum);
//显示当前调整的时间
display(SendNum);
//显示对目标单片机的调整的时间
SendString(UartNum);
//发送调整时间到目标单片机
2.3.2DS1302程序设计
主要是对时间的设置函数:
Write_Data(0x8e,0x00);
//写保护关
Write_Data(0x80,Sec);
//初始秒值为50
Write_Data(0x82,Min);
//初始分钟值为59
Write_Data(0x90,0x01);
//充电
Write_Data(0xc0,0xf0);
//初始化一次标示
Write_Data(0x8e,0x80);
2.3.3按键程序设计
按键扫描:
图2.8按键扫描框图
if((P1&
0xe0)!
=0xe0)//扫描按键管脚是否有电平变化
cKey=P1&
0xe0;
//读出键值
while((P1&
=0xe0);
//等待按键松开
按键响应:
图2.9按键响应框图
voidDisPlayKey(void)//按键响应
//如果是对自己设置时间就将自己的时间装入调整数组
if(flag==1)
{
temp[0]=DisNum/1000;
temp[1]=DisNum%1000/100;
temp[2]=DisNum%100/10;
temp[3]=DisNum%10;
}
//如果是对对方设置时间就将发送时间装入调整数组
//根据键值调整调整数组里的数字
//组合调整后的数字
//更改调整模式
2.3.4串口程序设计
图2.10串口中断流程图
SCON=0X50;
//串口工作方式1
TMOD=0x20;
//设定定时器1的工作方式为方式2(8位自动重装)TH1=-3;
//设置串口波特率为9600
TL1=-3;
TR1=1;
//开启定时器
ES=1;
//开串口中断
//判断数据是否结束,校验
if(uart_data[num-1]=='
*'
&
&
uart_data[num-2]=='
)
调试说明
调试方法及步骤
先使用Proteus仿真软件仿真无误后将软件下载到单片机上,再实物调试。
两单片机中都下载进程序后,数码管均显示初始化值5555;
选择一个主机一个从机,在主机的模块中按下菜单键S3调整模式此时显示3333,对主机设置时间,主机时间从此时开始;
按下标志位键选择需要调整的数,标志位的点在数字右下角;
设置好主机时间后按下主机菜单键,此时显示4444表示对从机设置时间;
通过标志位键和加1键设置从机时间,设置过程中主机设置的时间同步通信到从机中;
设置完成后,按下菜单键,主机的数码管显示自己的时间,从机的时间从4444模式下被设置的时间开始。
交换主机和从机,重复以上操作,完成本项目的通信操作。
注意:
主机在对从机设时间的同时自己也在计时。
调试数据
下面几图为Proteus仿真的步骤及数据:
图3.1初始化状态
图3.2对主机设置时间
图3.3对从机设置时间
图3.4完成时间设置
故障分析
硬件故障问题是电路板的问题主要有元器件虚焊、损坏和是否接线错误;
1.电阻虚焊问题:
若电阻正常,则通过电阻两端后应该有一个电压值。
根据这个原理,用万用表逐个测量各电阻两端的电压,若飘零则说明该电路没有焊好,短路或者电阻故障,应进一步确认故障原因并处理。
2.数码管无法显示:
可能是上拉电阻过大,导致显示不清晰;
也可能数码管灯管已坏;
上拉电阻正负接反。
出现乱码,则可能是码表不正确,或是程序未做消隐处理。
3.单片机不能下进程序:
下载时下载口P3.1(TXD)被占用,或下载口排针虚焊。
检查是否为虚焊,若不是,则在TXD处焊接排针引出,通信时用排针帽带上,下载时不用帽。
4.按键按下数码管的时间不变:
按键虚焊没有接入I/O口或中断程序出错,或按键损坏。
检查是否为损坏,是则换掉;
若为虚焊,则按电机问题处理;
若为程序出错可能是每个按键功能没有实现。
设计注意事项:
1.串行通信,使用的晶振是11.05926MHZ,波特率是9600
两块板子除与DB9的连接线有一个要交叉相连外要严格一致。
2.程序下载时通过P3.1(TXD)下载进去的,因此下载时此端口不用被占用。
3.双机通信的基本原理是对RXD和TXD操作,RS23最大通信距离为15m。
4.DS1302电路中的100uF电容只能保证在1个小时正常走时,要使掉电后再重新下载程序则要加上电池。
总结
设计体会和收获:
最初选择这个项目是因为之前学过微计算机原理,但真正着手才发现做一个工程不单单是学过理论知识就行的。
实际的工程中需要的不仅仅是理论还要考虑实际的细节以及队员之间的团结和合理分工,这个课程考验了我们自觉性、动手能力与协作意识的任务,三个臭皮匠赛过诸葛亮,团队合作时我们更便于取长补短,相互讨论收获更大。
通过这个项目的实践我们补充了之前不熟悉和没接触的知识对单片机的通信更加了解,学会使用时钟芯片和串口芯片。
本项目完成了双机通信的基础要求和扩展要求,但硬件方面还可以更加完善多使用几个按键和数码管。
参考文献
1.《单片机微型计算机原理及接口技术》郑郁正主编.北京:
高等教育出版社,2012.7
2.MCS-51单片机多及通信的组成原理及通信程序云南省邵通地区邮电局,彭宗乾
3.《8051单片机实践与应用》电子爱好者的电子书
附录
1.原理图
图6.1系统原理图
图6.2RS232转接板原理图
2.PCB图
图6.3系统PCB
3.实物图
图6.4
4.程序代码
/**************************主函数*****************************/
#include"
ds1302.h"
uart.h"
type.h"
delay.h"
key.h"
display.h"
voidmain(void)
{
uint16_ttimenum,NewTime;
uint8_tUartNum[10];
//初始化1302
EA=1;
//开总中断
while
(1)
{
KeyScan();
DisPlayKey();
if(flag==0)//菜单0
{
GetTime();
//转换时间秒
timenum=(DateTime[0]>
>
4)*10+(DateTime[0]&
0x0f);
//转换时间分
timenum+=(DateTime[1]>
4)*1000+(DateTime[1]&
0x0f)*100;
display(timenum);
//显示当前时间
DisNum=3333;
//初始化标志位3333
SendNum=4444;
//初始发送标志位4444
}
if(flag==1)//菜单1
display(DisNum);
Init_DS1302(DisNum);
//用当前调整的时间初始化ds1302
if(flag==2)//菜单2
display(SendNum);
//将调整的时间转换成字符
UartNum[0]=(SendNum/1000)+'
0'
;
UartNum[1]=(SendNum%1000/100)+'
UartNum[2]=(SendNum%100/10)+'
UartNum[3]=(SendNum%10)+'
UartNum[4]='
//通信结束标志位
UartNum[5]='
UartNum[6]='
\0'
SendString(UartNum);
if(uart_flag==1)//串口接收标志位
NewTime=0;
//接收到的设置时间
//将接收到的字符时间转换成数字
NewTime=(uart_data[0]-'
)*1000
+(uart_data[1]-'
)*100
+(uart_data[2]-'
)*10
+(uart_data[3]-'
);
Init_DS1302(NewTime);
//用接收到的新时间初始化1302
uart_flag=0;
//标志位置零
}
/**************************串口程序*****************************/
staticuint8_tnum=0;
bitbusy=0;
uint8_tuart_flag;
uint8_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机双机通信系统设计 学位论文 单片机 双机 通信 系统 设计 学位 论文