多机通信和单片机与PC机通信.doc

上传人:laozhun 文档编号:4141665 上传时间:2023-04-07 格式:DOC 页数:31 大小:522.50KB
返回 下载 相关 举报
多机通信和单片机与PC机通信.doc_第1页
第1页 / 共31页
多机通信和单片机与PC机通信.doc_第2页
第2页 / 共31页
多机通信和单片机与PC机通信.doc_第3页
第3页 / 共31页
多机通信和单片机与PC机通信.doc_第4页
第4页 / 共31页
多机通信和单片机与PC机通信.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《多机通信和单片机与PC机通信.doc》由会员分享,可在线阅读,更多相关《多机通信和单片机与PC机通信.doc(31页珍藏版)》请在三一办公上搜索。

1、多机通信和单片机与PC机通信 一、系统概述随着单片机和微机技术的不断发展,由PC机和多台单片机构成的多机网络监控系统已成为单片机技术发展的一个方向。它结合了单片机在实时数据采集和微机对图形处理、显示的优点。同时,Windows环境下后台微机在数据库管理上具有明显的优势,二者结合,使得单片机的应用已不仅仅局限于传统意义上的自动监测或控制,而形成了向以网络为核心的分布式多点系统发展的趋势。在许多工业生产中,用计算机对生产过程实行实时监控,对下位单片机采集来的数据进行实时数据处理,以及控制信号的产生与传输等功能。在这种工业生产的特定环境下,计算机要与过程控制的实时信号相联系,因此要求计算机能实现对串

2、行端口的直接操作。二、总体方案 2.1. 原理框图三、多机通信原理电路 四、系统虚拟仿真操作方法:先点击Protues的开始按钮,在闭合与从机1或2通信时,在按下键盘,观察LED,在闭合与PC通信开关时,右键点击PC选择virtual terminal选项观察结果。与从机1通信与从机2通信与pc机通信PC机通信的结果主机程序:ORG 0000HAJMP MAINFEATURE_CODE EQU 22H ; 保存键值特征字节码KEY_VAL EQU 23H ; 键值GET_KEY0 EQU 24H ;BUF EQU 25HTEMP EQU 26HADDER EQU 27HSLAVE EQU 28

3、HDTA_OR_COM EQU 29HVALUE EQU 30HSTR1 EQU 31HLCD_DATA EQU 32HORG 0080HMAIN:MOV KEY_VAL, #0C0H ;键盘没键按下的时候送的初值CALL LCD1602 ;LCD1602初值化CALL Init_Lcd ;LCD1602初值化MOV VALUE,#80H ;数据指针定位到第一行第一列 CLR P3.2 ;P3.2表示RS,RS=0,写命令CALL Write_Lcd ;调用写命令子程序MOV DPTR, #STR7CALL printstring1 ;调用显示Host communicate 的子程序MOV

4、VALUE,#0C0H ;设置开显示,不显示光标CLR P3.2 ;P3.2表示RS,RS=0,写命令CALL Write_Lcd ;调用写命令子程序MOV DPTR, #STR2CALL printstring1 ;调用显示 with的子程序TEST:LOOP_1:MOV A,P2 ;判断是与单片机1通信的是否开关按下ANL A,#01HJNZ LOOP_2 MOV VALUE,#0C6H ;数据指针定位到第一行第七列 CLR P3.2 ;P3.2表示RS,RS=0,写命令CALL Write_Lcd ;调用写命令子程序MOV DPTR,#STR3CALL printstring1 ;调用显

5、示 1 的子程序LOOP_2:MOV A,P2 ;判断是与p单片机2通信的是否开关按下ANL A,#02HJNZ LOOP_3 MOV VALUE,#0C6H ;数据指针定位到第一行第七列 CLR P3.2 ;P3.2表示RS,RS=0,写命令CALL Write_Lcd ;调用写命令子程序MOV DPTR,#STR4CALL printstring1 ;调用显示 2 的子程序LOOP_3:MOV A,P2 ;判断是与pc机通信的是否开关按下ANL A,#04HJNZ LOOP_4 MOV VALUE,#0C6H ;数据指针定位到第一行第七列CLR P3.2 ;P3.2表示RS,RS=0,写命

6、令CALL Write_Lcd ;调用写命令子程序MOV DPTR,#STR5CALL printstring1 ;调用显示 pc 的子程序LOOP_4:MOV VALUE,#0C6H CLR P3.2CALL Write_LcdMOV DPTR,#STR6;CALL printstring1 ;没有与别的机子通信;TEST:CALL KEY_SCAN ;调用键盘扫描函数 CALL GET_KEYMOV BUF,KEY_VALMOV TEMP,P2 ;通过P2口读要访问的从机地址ANL TEMP,#0FHMOV ADDER, TEMP ;CALL INIT ;串口初始化CLR TISETB T

7、B8MOV SBUF,ADDER ;发送地址帧WT1:JNB TI,WT1 ;等待发送CLR TI ;发送完毕TI清零CALL SENDDATA ;发送数据MOV A,P2ANL A,#04HCJNE A,#00H,PC2 MOV SLAVE,#03HPC1:MOV A,SLAVE;CJNE A,#03H,PC2;SETB P3.7CLR P3.7 ;RE=0MOV R0, #0MOV DPTR, #STRLOOP0:;MOV SBUF, DPTRMOV A, R0MOVC A, A+DPTRMOV SBUF,AWT3:JNB TI,WT3 ;等待发送CLR TI ;发送完毕TI清零INC R

8、0CJNE A, #00H, LOOP0CALL DELAY_10MSSETB SM2SETB P3.7 ;RE=1PC2:MOV SLAVE,#00HLJMP TESTLCD1602:CLR P3.2 ;RSSETB P3.3 ;RWSETB P3.5 ;ENMOV P0,#0XFF RETInit_Lcd:CALL DELAY1000US ;1500MSMOV VALUE,#38H CLR P3.2CALL Write_LcdCALL DELAY1000US ;500MSMOV VALUE,#38H CLR P3.2CALL Write_LcdMOV VALUE,#01H CLR P3.2

9、CALL Write_LcdMOV VALUE,#06H CLR P3.2CALL Write_LcdMOV VALUE,#0CHCLR P3.2CALL Write_LcdRETWrite_Lcd:MOV P0,VALUE;MOV RS,DTA_OR_COMCLR P3.3SETB P3.5CALL Delay1000US ;100MSCLR P3.5RETprintstring1:MOV R1,#00HLOOP9:MOV A,R1 MOVC A, A+DPTRMOV VALUE,ASETB P3.2CALL Write_LcdINC R1CJNE A, #00H, LOOP9 RETSEN

10、DDATA:;SETB TICLR TB8MOV SBUF,BUFWT2:JNB TI,WT2CLR TIRET INIT:MOV TMOD,#20H ;定时器T1使用工作方式2MOV TL1, #0FAHMOV TH1, #0FAHSETB TR1 ;开始计时MOV SCON,#0D0HMOV PCON,#80H ;SMOD = 1SETB P3.4 ;DE ;MAX485使能端SETB P3.7 ;RERET;P1口矩阵键盘扫描;特征字节码保存在FEATURE_CODE内存单元KEY_SCAN:MOV P1, #0F0HMOV A, P1ANL A,#0F0HCJNE A, #0F0H,

11、NEXT1AJMP KEY_SCAN_ENDNEXT1:LCALL DELAY_10MS ; 延时去抖动MOV P1, #0F0HMOV A, P1ANL A,#0F0HCJNE A, #0F0H, NEXT2 ;有键按下AJMP KEY_SCAN_ENDNEXT2:MOV R0, #0FEHMOV R1, #4 ; 逐行扫描,一共4行LOOP:MOV A, R0MOV P1, AMOV A, P1ANL A, #0F0HCJNE A, #0F0H, NEXT ; 此行无键扫按下,则扫描下一行AJMP NEXT3NEXT:ORL A, #0FHCPL AMOV R2, A ; A临时保存到R2

12、MOV A, R0CPL AORL A, R2MOV FEATURE_CODE, A ; 返回特征字节码,为1的位即对应于行和列RETNEXT3:MOV A, R0RL A ; 行扫描码左移一位;ORL A, #01HMOV R0, A;DEC R1DJNZ R1, LOOP ; 4行未扫描完 KEY_SCAN_END:MOV FEATURE_CODE, #00H ; 无键按下,返回特征字节码0RET;根据特征字节码求键值GET_KEY:MOV A, FEATURE_CODE ; 取征字节码; 第一行ROW1_COL1:CJNE A, #11H, ROW1_COL2MOV KEY_VAL, #

13、0C0H ; 1行1列,数字0RETROW1_COL2:CJNE A, #21H, ROW1_COL3MOV KEY_VAL, #0F9H ; 1行2列,数字1RETROW1_COL3:CJNE A, #41H, ROW1_COL4MOV KEY_VAL, #0A4H ; 1行3列,数字2RETROW1_COL4:CJNE A, #81H, ROW2_COL1MOV KEY_VAL, #0B0H ; 1行4列,数字3RET;第二行ROW2_COL1:CJNE A, #12H, ROW2_COL2MOV KEY_VAL, #99H ; 2行1列,数字4RETROW2_COL2:CJNE A, #

14、22H, ROW2_COL3MOV KEY_VAL, #92H ; 2行2列,数字5RETROW2_COL3:CJNE A, #42H, ROW2_COL4MOV KEY_VAL, #82H ; 2行3列,数字6RETROW2_COL4:CJNE A, #82H, ROW3_COL1MOV KEY_VAL, #0F8H ; 2行4列,数字7RET;第三行ROW3_COL1:CJNE A, #14H, ROW3_COL2MOV KEY_VAL, #80H ; 3行1列,数字8RETROW3_COL2:CJNE A, #24H, ROW3_COL3MOV KEY_VAL, #90H ; 3行2列,

15、数字9RETROW3_COL3:CJNE A, #44H, ROW3_COL4MOV KEY_VAL, #88H ; 3行3列,数字10RETROW3_COL4:CJNE A, #84H, ROW4_COL1MOV KEY_VAL, #83H ; 3行4列,数字11RET;第四行ROW4_COL1:CJNE A, #18H, ROW4_COL2MOV KEY_VAL, #0C6H ; 4行1列,数字12RETROW4_COL2:CJNE A, #28H, ROW4_COL3MOV KEY_VAL, #0A1H ; 4行2列,数字13RETROW4_COL3:CJNE A, #48H, ROW4

16、_COL4MOV KEY_VAL, #86H ; 4行3列,数字14RETROW4_COL4:CJNE A, #88H, GET_KEY_ENDMOV KEY_VAL, #8EH ; 4行4列,数字15GET_KEY_END:RETDELAY1500MS: ;误差 0us 1500MS MOV R7,#7FHDL1: MOV R6,#60HDL0: MOV R5,#3CH DJNZ R5,$ DJNZ R6,DL0 DJNZ R7,DL1 RETDELAY500MS: MOV R7,#17HDL2: MOV R6,#98HDL3: MOV R5,#46H DJNZ R5,$ DJNZ R6,D

17、L3 DJNZ R7,DL2 RETDelay1000US: ; 1MS MOV R7,#01HDL11: MOV R6,#8EHDL00: MOV R5,#02H DJNZ R5,$ DJNZ R6,DL00 DJNZ R7,DL11 RET;延时10msDELAY_10MS: MOV R7,#01HDL7: MOV R6,#26HDL8: MOV R5,#82H DJNZ R5,$ DJNZ R6,DL8 DJNZ R7,DL7 RETSTR: DB Q, i, o, n, g, Y, i, n, g,13, 10, 00HSTR7: DB H,o,s,t, ,c,o,m,m,u,n,i,

18、c,a,t,e, ,w,i,t,h,13, 10, 00HSTR2: DB w,i,t,h,13, 10, 00HSTR3: DB 1, ,13, 10, 00HSTR4: DB 2, ,13, 10, 00HSTR5: DB P,C,13, 10, 00HSTR6: DB , ,13, 10, 00HEND从机程序:ORG 0000HAJMP MAINTEMP EQU 22HADDER EQU 23HBUF EQU 24HORG 0080HMAIN:MOV TEMP,#0FFHMOV A,P1;ANL A,#0FHMOV ADDER, A ; 获取本机地址SETB P2.3 ;LED 发光管

19、不亮CALL INIT ;串口初始化LOOP: ;进入设备应答SETB SM2 ;只接收地址帧LOOP1: ;如果接收到的地址帧不是本机地址,则继续等待MOV A,TEMPCJNE A,ADDER,RECVAJMP LOOP2RECV:CLR RIWAIT:JNB RI,WAITMOV TEMP,SBUFCLR RIAJMP LOOP1LOOP2: CLR SM2CALL RECVDATAMOV A,TEMPJNZ END1MOV P0,BUFCLR P2.3CALL DELAY_10MSSETB P2.3END1:LJMP LOOPINIT:MOV TMOD,#20H ;定时器T1使用工作方

20、式2MOV TL1, #0FAH MOV TH1, #0FAHSETB TR1 ;开始计时MOV SCON,#0D0HMOV PCON,#80H ;SMOD = 1CLR P3.4 ;DE,MAX485使能端RETRECVDATA:LOOP3:JNB RI,LOOP3JNB RB8,LOOP4MOV TEMP,#0EEHRETLOOP4:MOV A,SBUFMOV BUF,ACLR RIMOV TEMP,#00HRET ;延时10msDELAY_10MS: MOV R7,#01HDL1: MOV R6,#26HDL0: MOV R5,#82H DJNZ R5,$ DJNZ R6,DL0 DJN

21、Z R7,DL1 RETEND结束语虽然我做的系统是很小个,但圆满的完成整个系统也花了不少时间,最主要是是前期的准备阶段,刚接到课程设计题目时,我并没有马上就动手做实验,也许这因为自己追求完美和潘老师教学严谨的缘故吧,一开始我就复习单片机原理教材的单片机串行口、串行通信的基本概念,串行口的应用,串行口通信总线标准及接口电路,接着就预习微机控制原理的总线接口技术rs232、rs485、SPI、IC总线,接着就看潘老师买给我们的单片机原理与应用仿真的单片机串行通信,再接着就是看潘老师给我们团队的一部分单片机书中的所有单片机串行通信,我很想把我的系统做的很完美,很认真的弄明白了关于串行通信的所有知识

22、点,学习其实也是一种享受的过程,当投入到知识海洋的时候,有一种思维的逻辑递归的过程,我总是用联想的办法把刚要接触的知识,用已学过知识框架去学习,把刚学的知识跟学过的知识搭成一座桥梁,形成一个框架,而且我喜欢各科的知识点联系起来,比如在做PC机与单片机通信时,我想了很久实际生活中我有没有见到这样的设备,结果我想起来了,在医院做胸透、胃镜和肠镜时,用的就是PC机和单片通信,而且也用到了一门很重要的学科数据图像处理,当我刚想到这个设备是我们计算机系完成的,还蛮高兴的。当在做单片机与单片机通信时,我首先想到的是网络,也许是因为上学期刚上过网络课的缘故吧,我就想这样可以够成类似局域网的拓扑结构,便于一个

23、部门或一个单位的管理,在工业中更是有发展前景,现在很人都在倡导实践,而我觉得理论知识还是占主导地位,只是老师教给我们的东西我们不懂得学以致用而已,如果能把每个老师教的知识串通起来,加上你愿意花功夫学,相信没有什么可以难倒你的,通过做了这个系统之后我让我感触最深的是一定要细心,其实这点在大二时就从潘老师和王老师身上看到了,他们是那么的严谨,那么的认真细心,真是我学习的好榜样,在本实验中还学到了一个很重要的道理,我们设计者的目的是为了让满足客户的需求,当我第一次完成系统时,我并没有用LCD1602,在潘老师的指导下,我领悟到满足客户需求才是最重要的,于是我再添加了LCD1602这一部分,通过LCD

24、1602不懂计算机的人都会看懂明白此时是哪台单片机与哪台单片机通信,我之所以敢大胆的接了这个多机通信的课程设计,首先我感谢潘老师和王老师,王老师认真的教了我单片机,使我对单片机感兴趣,让我有了单片机的基础,潘老师真是一个好老师,对教学尽心尽责还特别关心学生,他不但提供实验室让我团队学习而且还在自己很忙的情况下每周都抽出时间到实验室指导我们做实验,在他的带领下我团队也完成了十几个小系统实验,也许因为有了之前潘老师指导我做实验的基础,使我觉得他给我们的其他课程设计很简单,于是我选择了多机通信,因为多机通信之前我们都没有做过,所以我选择了挑战。除此之外我还要感谢团队负责人平时对我的帮助、团队队员的团结和团队之间的互相讨论交流,我觉得我很幸运,因为我有这机会和潘老师和团队一起在青春的舞台上的潇洒走一回。 参考文献1 潘新民,王燕芳.微型计算机控制技术实用教程.北京:电子工业出版社,2010.63-74.2 赵全利,肖兴达.单片机原理及应用教程.北京:机械工业出版社,2008.162-175.3 李泉溪. 单片机原理与应用实例仿真. 北京:航空航天大学出版社,2009.152-157 4 陈骏莲 , 云峰 单片机原理与应用基础

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

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号