单片机课程设计论文基于C++Builder的PC机与单片机之间的串口通信.doc
《单片机课程设计论文基于C++Builder的PC机与单片机之间的串口通信.doc》由会员分享,可在线阅读,更多相关《单片机课程设计论文基于C++Builder的PC机与单片机之间的串口通信.doc(23页珍藏版)》请在三一文库上搜索。
1、河海大学计算机及信息工程学院(常州)课程设计报告题 目 基于C+Builder的PC机与单片机之间的串口通信专业 自动化学号 0862510109学生姓名 指导教师 完成时间 2010-12-22摘 要单片机是一门技术性、应用性很强的学科,如果不在实践技能的锻炼上下功夫,单凭课堂理论课学习,势必出现理论与实践脱节,学习与应用脱节的局面。因此为了能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、印制电路板等方面的知识进一步加深认识,此次课设主题为单片机串口通信的应用之一。通过串口,我们的个人电脑和单片机系统进行通信。个人电脑作为上位机,向下位机单片机系统发送数据帧,单
2、片机系统接收后,发回通信协议要求的数据帧。可以用C+ Builder 语言制作的应用程序界面或串口调试助手字符串输入框中输入数字和字符来实现PC机与80C51系列单片机的串口通信。关键字:单片机、PC机、串口通信、C+ BuilderAbstract SCM is a technical, applied a strong discipline, if not in practice, work hard skills training, theoretical study of the classroom alone, theory and practice is bound to appe
3、ar out of line, the gap between learning and application of situation. Therefore, in order to be able to classroom and practical application of theoretical knowledge combined, but also on the electronic circuits, electronic components, printed circuit boards and other knowledge to further deepen und
4、erstanding of the theme of the course based Application Serial Communication one. Through the serial port, our personal computer and microcontroller systems to communicate. PC as the host computer, the down-bit machine microcontroller system to send data frames after receiving the SCM system, sends
5、back the requested data communication protocol frame. Can make C + + Builder application language interface or serial debugging assistant string input box numbers and characters to achieve the PC, and 80C51 series microcontroller serial communication. Keywords: microcontroller, PC, serial communicat
6、ion, C + + Builder 目 录摘 要2一、 需求分析4二、系统设计及详细设计41. 串行通信原理42. 硬件设计53. 软件设计53.1串口初始化63.2从机(单片机)接收主机(PC机)发送来的数据帧63.3从机发送数据帧给主机73.4拓展部分7三、运行调试81.硬件方面82.软件方面8四、总结与体会10五、参考文献10六、附录11一、需求分析在工业自动化系统中,常用到微机与单片机进行控制和调试。单片机常被用作工业自动化系统中的前端处理器(也称下位机)。深入到现场,采集各种数据及信息,进行简单处理后送至上位机(PC机)。用一台PC机接收来自下位机的信息和数据,经处理后在微机界面上
7、显示,并向下位机下达命令,通过下位机对现场实施控制。其中,主要要解决的就是上位机与下位机的通信问题。接下来将会描述本次课设PC机与单片机间的串行通信原理、相关软硬件设计及流程图。二、系统设计及详细设计1.串行通信原理此次采用80C51系列串口的方式1进行串行通信。串口结构如图1所示。图1方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图2所示。其中1位起始位,8位数据位,1位停止位。用软件置REN为1时,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效,将其移入输入移位寄存器,并开始接收这
8、一帧信息的其余位。接收过程中,数据从输入移位寄存器右边移入,起始位移至输入移位寄存器最左边时,控制电路进行最后一次移位。当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。用单片机内部定时器1即T1,使其工作在方式2,作为波特率发生器。 图2由于基于C+Builder的通信协议如图3所示,因此在程序编写时,需要在设置一个缓冲区来暂时存储单片机接收的来自PC机的一串字符串。前导符站号地址功能码数据长度数据结束符校验码#AAAAFFLLDDDDX图32.硬件设计51单片机有一个全双工的串行通
9、讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换。如图4所示。图43.软件设计 如图4,PC机作为主机,80C51单片机作为从机(波特率为9600b/s)。通信程序采用C语言编程。这个程序的流程图如图5所示。程序见下。图5 3.1串口初始化 3.2从机(单片机)接收主机(PC机)发送来的数据帧 3.3从机发送数据帧给主机(1)解析从机发送的数据帧(程序见附录3的void send()部分)(2)从机发送数据帧3.4拓展部分 利用
10、P1口连接的8个LED灯来显示C+Builder的十三个功能(见附录1)。三、运行调试1.硬件方面(1)烧写程序时,已经上电了,可软件还是一直提示上电,反复上电也不行后,最终通过反复换串口,反复烧写上电解决了。类似的还有只要进行烧写,烧写软件界面就会消失,也是通过上述方法解决。(2)有时烧写时,忽略了相应的串口和波特率的选择甚至忘记打开串口助手的串口,发送数据后使得PC机的接收窗口中无显示。(3)有时发送数据后接收窗口无显示,经过复位后,问题得以解决。2.软件方面编程时遇到的主要问题有四个:(1)如何在C51单片机中存储接收的一个字符串数据帧。 如上所述,需要设置一个缓冲数组来接收主机发送的字
11、符串数据帧。程序见3.2。(2)如何判断从机已经接收到完整的数据帧即结束接收。 设置一个标志位,如uchar finish。当finish=1时,表示接收结束。(3)如何解析从机发送的数据帧。对此,我前后采用了两种方法进行调试运行(以下程序仅为“查询功能”模块的代码) 方案一: void send()if(host6=0)switch(host7)case 0:/查询地址TI=0; SBUF=#;while(!TI);TI=0;SBUF=#;while(!TI);TI=0;SBUF=slave_addr0;while(!TI);TI=0;SBUF=slave_addr1;while(!TI);
12、TI=0;SBUF=slave_addr2;while(!TI);TI=0;SBUF=slave_addr3;while(!TI);TI=0;SBUF=0;while(!TI);TI=0;SBUF=0;while(!TI);TI=0;SBUF=0;while(!TI);TI=0;SBUF=4;while(!TI);TI=0;SBUF=slave_addr0;while(!TI);TI=0;SBUF=slave_addr1;while(!TI);TI=0;SBUF=slave_addr2;while(!TI);TI=0;SBUF=slave_addr3;while(!TI);TI=0;SBUF=
13、;while(!TI);TI=0;SBUF=;while(!TI);TI=0;SBUF=x;while(!TI);break;方案二:void send_109()if(count_109=13) if(buf_1093=0)&(buf_1093=0)&(buf_1094=0)&(buf_1095=0)&(buf_1098=0)&(buf_1099=0) if(buf_1096=0&buf_1097=0) count_109=0; load_109(#); load_109(&slave_addr_109); load_109(0004); load_109(&slave_addr_109);
14、 load_109(X); /查询地址方案一没有把通信协议表达完善,因此运行不成功。方案二解决了通信协议部分,运行成功,而且代码长度较方案一更为简短。(4)如何放置功能拓展部分的程序。遵循着“中断中程序尽可能少些,一般放在主程序部分实现”的原则,对于我这次拓展的一点点功能(LED灯显示、报警蜂鸣器响,程序见3.4),我把标志位flag的设置放在了解析函数void send()部分,将LED显示放在了主函数中。起初我把蜂鸣器代码“RD=0”也放在解析函数中,效果失败,经过调试放在主函数中后,蜂鸣器响了起来。四、总结与体会每次课设后都会收获很多,这次也不例外。 平时编写代码的机会不多,因而这次课设
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 论文 基于 Builder PC 之间 串口 通信
链接地址:https://www.31doc.com/p-10337788.html