3986.net
小网站 大容量 大智慧
当前位置:首页 >> 实习总结 >>

2组_图文

单片机项目实践报告
项目名称: RS485 双机通信 小组成员: 刘茂堃、牛志军、钟至诚、刘金铭 秦剑韬、杨之润、马思禹

学 专 班 学

院: 业: 级:

电子工程学院 电子信息工程技术 16941

号:1694119

学生姓名:牛 志 军 指导教师:唐 磊

二○一七年十一月

摘要
在工业控制自动化领域,智能装置之间的通信占有重要的地位,RS485 这 种串行通信方式在工控自动化领域应用非常广泛,这种远距离通信可以采集远 程信息和远程数据,实现远程控制和远程调节。本文首先介绍了 RS485 通信标 准,然后在此基础上设计了通信协议,并且提出了具体的通信实现方案。系统 使用 STC12C5A60S2 为主控芯片,以 MAX485 芯片实现 RS485 收发功能,并且加 上键盘输入和 LCD 显示功能,最终完成主站和子站的一套小型远程控制方案。 关键词:RS485、工控自动化、总线、协议

目录
一、项目的意义 ............................................................................................................ 4 二、设计任务和要求 .................................................................................................... 5 1、课题内容 .......................................................................................................... 5 2、控制要求 .......................................................................................................... 5 三、系统总体方案设计 ................................................................................................ 5 1、设计思路 .......................................................................................................... 5 2、设计框图 .......................................................................................................... 6 3、程序编辑 .......................................................................................................... 6 四、系统硬件设计 ...................................................................................................... 15 1、硬件所用器件介绍 ........................................................................................ 15 2、硬件系统介绍 ................................................................................................ 15 3、仿真图展示 .................................................................................................... 16 4、硬件图展示 .................................................................................................... 16 五、项目软件介绍 ...................................................................................................... 17 六、系统调试 .............................................................................................................. 19 七、项目心得 .............................................................................................................. 19

RS485 双机通信

一、 项目的意义
当今社会,应用单片机的产品已经渗透到我们生活的各个领域,几乎很难 找到哪个领域没有单片机的足迹。现在,这种单片机的使用领域已十分广泛, 如智能仪表、实时工控、通讯设备、导航系统、家用电器等,这些都离不开单 片机。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制 的工程师和科学家。科技越发达,智能化的东西就越多。学习单片机是社会发 展的必然需求,也是大学期间的专业课。随着计算机的网络化和微机分级分布 式应用系发展, Internet 网以及机算计远程通信已经渗透到国民经济的各个领 域,人们的生活已经和高端电子产品比如手机、电脑的关系密不可分了,甚至 有的人离开了手机就不知道怎么生活了,为了使人们过上更好的生活出行更方 便,传统通信技术已经满足不了广大市场的需求。而单片机通信接口技术的远 程控制能力以及在同一网络中允多个许发送器的优势性能逐渐被发现拓展为了 进一步的满足市场需要和提高国民经济以及人们的生活水平了解和研究双机串 行通信中的概念和技术就具有了非常重要的意义。通过此毕业课题的开发,加 深对理论知识的理解,学会将学习的理论知识在实际中运用,培养动手能力和 解决实际问题的能力,把理论与实践融合在一起,为今后从事相关工作打下基 础。所以,单片机双机通信系统作为毕业设计很有价值,很有实在的意义。 随着城市的不段发展和工业科技的不断进步,电子工业产品也越来越自动 化和小型化,人们对信息流量的需求也在不断增长,传统通信数据传输慢而且 有局限性成为进一步提高数据传输速率的瓶颈。过去主要用于光纤通信的串行 通信接口技术与并行接口技术相比其设计简单、控制方便不仅简化了系统的连 线,缩小了电路板的面积,节省了系统资源而且还具有扩展性好、编程方便, 易于实现用户系统软硬件的模块化以及标准化,串行接口少,便于远距离传输 等优点所以串行通信接口技术正在取代传统并行通信接口技术而成为高速接口 技术的主流。而在单片机串行通信接口技术中又以 RS232 和 RS485 两种串口应 用的最为广泛。在国内一些高端知名的电子产品公司如联想、华为、海信等连 年不断的对电脑、手机进行升级处理这些都离不开接口技术的快速发展,而人 们对这类高端产品的依赖也促进了电子科技的进一步发展而串行通信接口技术

4

RS485 双机通信 正是电子科技的重中之重。 有需求就有市场科技永远是人们生活中的一大主流, 这就为串行通信接口的发展铺上了一条光明大道。 串行通信接口技术的发展

越来越迅速蓬勃不仅仅表现在国内在国外发展同样迅猛由于国外政府对于 IT 行业的重视和照顾纷纷采取了一系列相关政策来促进串行通信技术发展使的串 口技术成为了进入宽带化、网格化而且还具有了移动性、泛在性的可信网。例 如美国的 EIA、微软等协会、公司对串口技术的重视不断对串口技术进行升级 改良。iphone、三星等国外智能手机的不断升级改良也离不开串行通信接口技 术的进一步发展,所以人们想要生活的更好电子技术的研究是必不可少的而其 中的串行通信技术也是重中之重。

二、设计任务和要求
1、课题内容
RS485 双机通信。

2、控制要求
本系统最终要实现的功能:A 机(主机)给 B 机(从机,可以有多台从机) 发送一些数据,B 机收到后判断是否正确,并根据判断结果在显示屏上显示。

三、系统总体方案设计
1、设计思路
RS485 方式构成的多机通信系统采用主从式结构:主机控制一个或多个从机, 作为从机的单片机不主动发送命令或数据,一切都由主机单片机控制,并且在一 个多机系统中,只有一台主机,各台从机之间不能相互通信,即使有信息交换也 必须通过主机转发。
5

RS485 双机通信

2、设计框图

图 1 项目设计流程图

3、程序编辑
发送代码 #include "STC12C5A60S2.h" #include "intrins.h" sbit E #define uint unsigned int #define uchar unsigned char sbit hot = P1^1; sbit cool = P1^4; sbit deep = P1^5; sbit DQ = P1^0; PCON |= 0x00;} = P0^6; sbit RS = P0^4; uchar code table3[] = "温度上限 :30℃"; uchar code table4[] = "温度下限 :20℃"; void init() {TMOD |= 0x20; TH1 = 0xfd; TL1 = 0xfd; TR1 = 1; uchar table2[] = "Temperature: ℃"; SCON |= 0x40;

sbit RW = P0^5;

sbit RST = P0^7; sbit RE = P1^6; sbit DE = P1^7; uchar code table1[] = "当前的温度值:";

6

RS485 双机通信 void Com2_Init() {S2CON=0x50; BRT=0xfd; AUXR=0x10;} void send_char(uchar txd) // 485 发 送一个字节 { DE=1; S2BUF=txd; } while((S2CON&0x02)== 0x00); S2CON&=0xfd; DE=0; } static void delay(uint time) {uint s; delay(36); for(s=0;s<time;s++); } void sendbyte(uchar byte) {SBUF = byte; while(TI==0); TI = 0; delay(6000);} static uchar reset(void) DQ=1;} static void write_byte(uchar val) {uchar i; uchar temp; for(i=0;i<8;i++) {temp=val>>i; temp=temp&0x01; write_bit(temp);} } } return(value); value=value|0x01< <i; delay(20); static void write_bit(char bitval) {DQ=0; if(bitval==1) DQ=1; {uchar presence; DQ=0; delay(296); DQ=1; delay(18); presence=DQ; delay(277); return(presence); {DQ=0; //将总线 DQ 拉低开始读 时序 delay(1); DQ=1; //释放总线 delay(1); //延时 4us 后再读 数据 return(DQ); //返回数据值 } static uchar read_byte(void) {uchar i; uchar value=0; for(i=0;i<8;i++) {if(read_bit()) } static uchar read_bit(void)

7

RS485 双机通信 void delay_50us(uint m) { { uchar j; RW=0; for(;m>0;m--) RS=1; for(j=19;j>0;j--); } void delay_50ms(uint n) {uint i; E=0; for(;n>0;n--) delay_50us(2); for(i=6245;i>0;i--); }void write_12864com(uchar com) { RW=0; RS=0; delay_50us(1); P2=com; E=1; delay_50us(10); E=0; delay_50us(2); } } void initinal(void) { delay_50ms(2); write_12864com(0x 30); delay_50us(4); write_12864com(0x 30); delay_50us(4); write_12864com(0x0f) ; delay_50us(4); if(flag==0) delay_50us(1); } P2=dat; void main() E=1; delay_50us(10); {uchar flag,cnt,low,high,tm pvalue,value,i; uchar shi,ge; uchar cont; for(cont=2000;cont>0 ;cont--); RE=1; DE=0; init(); Com2_Init(); initinal(); while(1) {while(1) { flag=reset(); delay_50us(10); write_12864com(0x 06); void write_12864dat(uchar dat) write_12864com(0x 01); delay_50us(240);

8

RS485 双机通信 break; break; cnt++; } if(cnt>5) //18B20 出现故障 break; write_byte(0xbe); } deep = 0; low=read_byte(); write_byte(0xcc); write_byte(0x44); while(1) high=read_byte(); {flag=read_byte(); //判断转换是 否结束 if(flag==0xff) tmpvalue <<= break; } while(1) { flag=reset(); 4; if(flag==0) break; cnt++; if(cnt>5) //18B20 出现故障 low = tmpvalue; value = high|low; if(value > 30) {
9

hot = 0; deep = 0; } write_byte(0xcc); if(value < 20) { cool = 0;

} if(value >= 20&&value <= 30) {hot = 1; cool = 1; deep = 1; }

//sendbyte(low);

//sendbyte(high); tmpvalue = high;

4; high = tmpvalue; tmpvalue = low; tmpvalue >>=

//sendbyte(value);

send_char(value); shi = value/10; ge = value%10; value = shi*16 + ge;

sendbyte(value); table2[12] = shi + 0x30;

RS485 双机通信 table2[13] = ge + 0x30;

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

delay_50us(1); }

write_12864com(0x 80);

{ write_12864dat( table2[i]); write_12864com(0x 98);

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

delay_50us(1); for(i=0;i<16;i++) }

{write_12864dat(t able1[i]); write_12864com(0x 88); delay_50us(1);

{ write_12864dat( table4[i]);

delay_50us(1); } for(i=0;i<16;i++) } write_12864com(0x 90); { write_12864dat( table3[i]); }

接收代码

#include "STC12C5A60S2.h"

sbit cool = P1^4; sbit deep = P1^5;

sbit RE = P1^6; sbit DE = P1^7; uchar code table1[] = "当前的温度值:";

#include "intrins.h" sbit DQ = P1^0; #define uint unsigned int #define uchar unsigned char sbit hot = P1^1; sbit RS = P0^4; uchar sbit RW = P0^5; sbit E = P0^6; table2[] = ℃";

"Temperature:

uchar code table3[] = "温度上限 :30℃";

sbit RST = P0^7;

10

RS485 双机通信 uchar code table4[] = "温度下限 :20℃"; void init() S2CON&=0xfd; { TMOD |= 0x20; DE=0; TH1 = 0xfd; } TL1 = 0xfd; static void TR1 = 1; SCON |= 0x40; PCON |= 0x00;} void Com2_Init() {S2CON=0x50; { SBUF = byte; BRT=0xfd; while(TI==0); AUXR=0x10; TI = 0; } delay(6000); void send_char(uchar txd) 送一个字节 { DE=1; // 485 发 } static uchar reset(void) static void {uchar presence; write_byte(uchar val) } DQ=1; delay(36); DQ=1; if(bitval==1) {DQ=0; delay(uint time) { uint s; for(s=0;s<time;s++); static void }void sendbyte(uchar byte) write_bit(char bitval) } delay(277); return(presence); presence=DQ; delay(18); DQ=1; S2BUF=txd; while((S2CON&0x02)== 0x00); delay(296); DQ=0;

11

RS485 双机通信 {uchar i; uchar temp; {uchar i; for(i=0;i<8;i++) uchar value=0; {temp=val>>i; for(i=0;i<8;i++) temp=temp&0x01; {if(read_bit()) write_bit(temp);} value=value|0x01< } static uchar read_bit(void) {DQ=0; //将总线 DQ 拉低开始读 时序 delay(1); DQ=1; //释放总线 delay(1); //延时 4us 后再读 数据 for(j=19;j>0;j--); return(DQ); //返回数据值 } } }void write_12864dat(uchar dat) delay_50us(2); {uchar j; for(;m>0;m--) delay_50us(10); E=0; } P2=com; void delay_50us(uint m) E=1; <i; delay(20); {RW=0; } RS=0; return(value); delay_50us(1); void write_12864com(uchar com) } for(;n>0;n--) for(i=6245;i>0;i--); {uint i; static uchar read_byte(void) void delay_50ms(uint n)

12

RS485 双机通信 {RW=0; RS=1; delay_50us(1); P2=dat; E=1; delay_50us(10); E=0; delay_50us(2); }void initinal(void) { delay_50ms(2); write_12864com(0x 30);delay_50us(4);wr ite_12864com(0x30);d elay_50us(4);write_1 2864com(0x0f);delay_ 50us(4);write_12864c om(0x01);delay_50us( 240);write_12864com( 0x06);delay_50us(10 }void main(){uchar flag,cnt,low,high,tm pvalue,value,i; if(cnt>5) //18B20 出现故障 //sendbyte(high); break;} write_byte(0xcc); tmpvalue = high; tmpvalue <<= 4; break; cnt++; low=read_byte(); //sendbyte(low); high=read_byte(); if(flag==0) uchar shi,ge; uchar cont; for(cont=2000;cont>0 ;cont--); RE=1; DE=0; init(); if(flag==0) Com2_Init(); break; cnt++; initinal(); if(cnt>5) while(1) while(1) { flag=reset(); //18B20 出现故障 break;} write_byte(0xcc); write_byte(0xbe); {flag=read_byte(); //判断转换是否结 束 if(flag==0xff) break; }while(1) {flag=reset(); write_byte(0x44); while(1)

13

RS485 双机通信 high = tmpvalue; tmpvalue = low; tmpvalue >>= 4; low = tmpvalue; value = high|low; if(value > 30) {hot = 0; deep = 0;} if(value < 20) write_12864com(0x80) { cool = 0; deep = 0;} if(value >= 20&&value <= 30) {hot = 1; cool = 1; ;for(i=0;i<14;i++) {write_12864dat(tabl e1[i]); delay_50us(1); } }write_12864com(0 x90); for(i=0;i<16;i++) } deep = 1;} //sendbyte(value); send_char(value); shi = value/10; ge = value%10; value = shi*16 + ge; sendbyte(value); table2[12] = shi + 0x30; table2[13] = ge + 0x30; {write_12864dat(t able2[i]); delay_50us(1); } write_12864com(0x 88); for(i=0;i<16;i++) {write_12864dat(t able3[i]); delay_50us(1); }

write_12864com(0x 98);for(i=0;i<16;i++ ){write_12864dat(tab le4[i]); delay_50us(1); }

14

RS485 双机通信

四、系统硬件设计
1、硬件所用器件介绍
元件名称 单片机 晶振 电容 电解电容 电阻 蜂鸣器 开关 通信芯片 型号 STC12C5A60S2 11.0592MHZ 30pF 10pF/1pF 1K/10K 有源 RS485
图 2 硬件器件

数量 1 1 2 2 5 1 1 1

用途 控制核心 晶振电路 晶振电路 复位电路/电源 连接小灯/连接复 位电路 报警 复位电路 双机通信

2、硬件系统介绍
硬件电路设计主要分主机硬件设计和从机硬件设计。 其主机和从机的硬件设 计一样,都由单片机主控模块、电源模块、RS485 模块、报警模块、显示模块等 几大模块组成, 唯一不同的只是主机和从机的代码不同,在一定情况下主机可以 变为从机,从机也可以变为主机。

主机
RS485

从机
双绞线 RS485

图 3 硬件简易效果图
15

RS485 双机通信

3、仿真图展示

图 4 仿真图

4、硬件图展示

图 5 硬件效果图

16

RS485 双机通信

五、项目软件介绍
该系统主机的主要任务是循环读取从机的检测结果,并发送到显示屏显示。 下图为主机的流程框图。

图 6 主机流程图

17

RS485 双机通信 在该系统中,从机的主要任务是是对备检测设备进行故障检测和故障定位, 通信软件的主要功能是接收主机的命令并将检测的结果回送主机。 下图是从机的 流程框图。

图 7 从机流程图

18

RS485 双机通信

六、系统调试
经反复调试,项目功能全部实现。

七、项目心得
通过这次项目, 经过自己不断的搜索努力以及唐老师的耐心指导和热情帮助, 本设计已经全部完成。在这段时间里,唐老师为我指点迷津,帮助我开拓研究思 路,精心点拨、热忱鼓励,唐老师严谨的治学态度和热忱的工作作风令我十分钦 佩,他不仅授我以文,而且教我做人,他的指导使我受益非浅。对唐老师的感激 之情是无法用言语表达的。 通过这次项目设计,使我深刻地认识到学好专业知识 的重要性,也理解了理论联系实际的含义,并且检验了以前的学习成果。虽然在 这次设计中对于知识的运用和衔接还不够熟练。 但是我将在以后的工作和学习中 继续努力、 不断完善。 这些天的设计是对过去所学知识的系统提高和扩充的过程, 为今后的发展打下了良好的基础。 由于个人自身水平有限,设计中一定存在很 多不足之处,敬请唐老师批评指正,我也会更加努力改进各方面的不足。

19


推荐相关:

2组_图文.ppt

2组 - 第二组 刘德华 吃面条 雨伞 企鹅 口红 武术 洗头 跳舞 害羞 握手 恭喜过关!... 2组_法律资料_人文社科_专业资料。第二组 刘德华 吃面条 雨伞 企鹅 口...


旗袍2组_图文.ppt

旗袍2组 - 艺术设计学院 创意英语课PPT作业 英语课题第二小组 作品名称:旗


第2组_图文.ppt

2组 - A大型连锁超市校园招聘 第二组 一、案例分析 二、优缺点 三、对比案


新人教版五年级语文上册第2组课件_图文.ppt

新人教版五年级语文上册第2组课件_五年级语文_语文_小学教育_教育专区。【精品课件】新人教版五年级语文上册全册课件 新人教版五年级语文上册课件 第2组 1.会写...


1302043 2组_图文.ppt

1302043 2组 - 火焰号 心中有火焰,八人小组如一人。 1302043班


(2组) 策划案类一等奖_图文.pdf

(2组) 策划案类一等奖 - 温州大学第七届大学生广告艺术大赛作品获奖名单 序号


会计02第2组ppt-MicrosoftPowerP_图文.ppt

会计02第2组ppt-MicrosoftPowerP - 财务分析 粤高速 会计02第2组 退出 开始 内容 ?公司概况 ?表格分析 粤高速 退出 一、公司概况 公司基本情...


面向对象第2组_图文.ppt

面向对象第2组 - ? 我们按照C++通常的做法,是将程序组成独立 的文件。 一


第2组-协同进化_图文.ppt

2组-协同进化 - 协同进化 coevolution 主讲人:朱怡静 组员:杜


马宝坤2组_图文.ppt

马宝坤2组 - 超级好的资料,保证是精品文档... 马宝坤2组_英语_小学教育_


2组-郝夫斯特的文化维度理论汇总_图文.ppt

2组-郝夫斯特的文化维度理论汇总 - 郝夫斯特的文化维度理论 成员:潘太星 朴美


2组织合集_图文.ppt

2组织合集 - 第二章 工程项目管理的组织 21 组织的基本原理 一、组织的基


5班1-2组_图文.ppt

5班1-2组 - 二组 笛子,是古老的汉族乐器,也是汉族乐器中最具代表 性最有民


2组_图文.doc

2组 - 单片机项目实践报告 项目名称: RS485 双机通信 小组成员: 刘茂


第二组《劝学》_图文.ppt_图文.ppt

二组《劝学》_图文.ppt_语文_初中教育_教育专区 人阅读|次下载 第二组《劝学》_图文.ppt_语文_初中教育_教育专区。 文档贡献者 电脑不良人 贡献于2019-11...


《两组图片》自用2版剖析_图文.ppt

两组图片》自用2版剖析 - “和平的祈祷”专题 图片两组 解读图片的方法: ▲


2组_图文.ppt

2组 - 皆、あのフィリング…スポツだけが与えるこ とができる、全世界を感


PCR2组(1)解析_图文.ppt

PCR2组(1)解析 - 重组蛋白药物克隆表达 扩增 基因的 组员:邵强、郭


第二组 晶体结构解析_图文.ppt

二组 晶体结构解析 - 第一部分 晶体结构解析基础 1 结构解析的过程与相角问


市场二班第二组金融市场功能与结构_图文.ppt

市场二班第二组金融市场功能与结构 - 第五章 金融市场功能与结构 小组成员:陈佳

网站首页 | 网站地图
3986 3986.net
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@qq.com