PC软件控制的IO模块.doc

上传人:博****1 文档编号:559845125 上传时间:2023-11-02 格式:DOC 页数:9 大小:125.45KB
返回 下载 相关 举报
PC软件控制的IO模块.doc_第1页
第1页 / 共9页
PC软件控制的IO模块.doc_第2页
第2页 / 共9页
PC软件控制的IO模块.doc_第3页
第3页 / 共9页
PC软件控制的IO模块.doc_第4页
第4页 / 共9页
PC软件控制的IO模块.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《PC软件控制的IO模块.doc》由会员分享,可在线阅读,更多相关《PC软件控制的IO模块.doc(9页珍藏版)》请在金锄头文库上搜索。

1、实验总成绩: 装 订 线报告份数: 西安邮电大学 通信与信息工程学院 课程设计报告专业班级: 电科1102 学生姓名: # 学号(班内序号): 03112042(01号) 2014 年 4 月 23 日一.设计内容与要求实现一个能够通过PC软件控制的IO模块。IO模块的控制部件采用继电器,可以由微处理器(MCU)控制继电器的打开、吸合。IO模块通过RS232串口和PC机连接,PC机上运行上位机控制软件,提供控制IO模块继电器和显示IO模块继电器闭合状态的操作界面。上位机和IO模块间的通信协议可以自己定义,但要求必须有一定的保护校验等保证通信可靠性的措施。系统连接结构如图1所示。具体要求:1、

2、IO模块要求实现4路继电器控制。完成IO模块的原理图设计、电路搭建、测试。2、 设计IO模块和PC机软件间的通信协议。3、 设计上位机软件界面,并用C+Builder实现软件界面和RS232串口通信控制。 提交课程设计报告。 图1 系统连接图二.设计过程与原理1.原理图设计利用Proteus软件设计仿真电路,以AT89C51单片机为MCU,在最小系统的基础上通过IO口与继电器电路相连。电路原理图如如图2所示。2. 单片机代码利用Keil编写控制单片机的C51代码。3. 利用Proteus仿真利用虚拟端口软件添加两个虚拟端口COM1,COM2,将Keil编写的代码导入到原理图中的AT89C51中

3、,将RS232串口中端口改为COM2,打开原理图仿真。运行串口调试助手将端口设为COM1,即可发送数据仿真。4. 利用C+Builder设计上位机利用Microsoft Comm Control 6.0 串口控件实现与单片机的通信。软件界面如图3所示。上位机主要功能如下:1. 可以选择端口,波特率,校验位,数据位,停止位以及打开关闭串口。2. 可以输入数据发送给单片机,控制四个继电器打开关闭LED灯。3. 可以通过按钮控制四个LED的打开与关闭。图2 电路原理图图3 程序界面图三.实习心得 这是一次纯软件的仿真实验,为期两周并不算长,而且还要学习不少新知识,总体来说算的上是一次满充实的的实验。

4、通过本次实验,我充分体会到软件仿真的便利。本次实验第一周主要是查资料、学习软件知识,如学会用Proteus建元件库、画电路原理图,如何用Keil uVision写单片机程序,用C+Builder编写上位机等。通过网上搜索,查找了关于串口通信的原理知识和上位机的相关内容。本次实验第二周主要是上位机的编写与仿真,C+ Builder具有快速的可视化开发环境:只要简单地把控件拖到窗体上,定义一下它的属性,设置一下它的外观,就可以快速地建立应用程序界面;C+ Builder内置了100多个完全封装了Windows公用特性且具有完全可扩展性(包括全面支持ActiveX控件)的可重用控件;C+ Build

5、er具有一个专业C+开发环境所能提供的全部功能:快速、高效、灵活的编译器优化,逐步连接,CPU透视,命令行工具等。它实现了可视化的编程环境和功能强大的编程语言(C+)的完美结合。掌握C+Builder对我们以后的学习有非常大的帮助。Keil C代码:- 1 -#include #include #define uchar unsigned char#define uint unsigned intsbit LED = P10;sbit KEY = P16;sbit P00 = P00;sbit P01 = P01;sbit P02 = P02;sbit P03 = P03;void main(

6、)char key = 0; SCON = 0x50; TMOD |= 0x20; TH1 = 0xFD; TR1 = 1; TI = 1; P00 = 1;P01 = 1;P02 = 1;P03 = 1; while(1) LED = 0;key = _getkey();switch(key)case 0:P00 = 0;break;case 1:P01 = 0;break;case 2:P02 = 0;break;case 3:P03 = 0;break;case a:P00 = 1;break;case b:P01 = 1;break;case c:P02 = 1;break;case

7、d:P03 = 1;break;C+Builder代码:- 0 -/-#include #pragma hdrstop#include Unit1.h#include #include /-#pragma package(smart_init)#pragma link MSCommLib_OCX#pragma resource *.dfmTForm1 *Form1;/-_fastcall TForm1:TForm1(TComponent* Owner) : TForm(Owner)void Set_Uart(void) String Uartsettings; if(Form1-MSComm1

8、-PortOpen)Form1-MSComm1-PortOpen=False; Uartsettings=Uart_Bond+,; Uartsettings+=Uart_Chek.SubString(1,1)+,; Uartsettings+=Uart_Data+,; Uartsettings+=Uart_Stop; try Form1-MSComm1-Settings=Uartsettings; catch(Exception&e) Application-MessageBox(设置不正确!请检查.,系统错误,MB_OK); Form1-MSComm1-CommPort=Uart_Port;

9、 try Form1-MSComm1-PortOpen=True; catch(Exception&exception) Uart_Open=false; Application-MessageBox(该串口不存在或串口被占用!请检查.,系统错误,MB_OK); Form1-U_Status-Brush-Color=clBlack; Form1-U_OPEN-Caption=打开串口; return; Form1-MSComm1-PortOpen=False; Sleep(10); Form1-MSComm1-PortOpen = True; if(!Uart_Open)Form1-MSCom

10、m1-PortOpen=False;/-void _fastcall TForm1:FormCreate(TObject *Sender) MSComm1-InputLen = 1; MSComm1-InBufferSize=2048; MSComm1-InBufferCount=0; MSComm1-OutBufferSize = 512; MSComm1-OutBufferCount = 0; MSComm1-CommPort = 1; /On Error GoTo comer MSComm1-InputMode = comInputModeBinary; MSComm1-RThresho

11、ld = 1; MSComm1-SThreshold = 0; MSComm1-InBufferCount = 0; MSComm1-OutBufferCount = 0; Set_Uart();/-void _fastcall TForm1:U_OPENClick(TObject *Sender) if(!Uart_Open) Uart_Open=true; U_Status-Brush-Color=clRed; U_OPEN-Caption=关闭串口; if(!MSComm1-PortOpen)Set_Uart(); else Uart_Open=false; U_Status-Brush-Color=clBlack; U_OPEN-Caption=打开串口; if(MSComm1-PortOpen) MSComm1-PortOpen=False; /-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号