




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
实验总成绩: 装 订 线报告份数: 西安邮电大学 通信与信息工程学院 课程设计报告专业班级: 电科1102 学生姓名: # 学号(班内序号): 03112042(01号) 2014 年 4 月 23 日一.设计内容与要求实现一个能够通过PC软件控制的IO模块。IO模块的控制部件采用继电器,可以由微处理器(MCU)控制继电器的打开、吸合。IO模块通过RS232串口和PC机连接,PC机上运行上位机控制软件,提供控制IO模块继电器和显示IO模块继电器闭合状态的操作界面。上位机和IO模块间的通信协议可以自己定义,但要求必须有一定的保护校验等保证通信可靠性的措施。系统连接结构如图1所示。具体要求:1、 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中,将RS232串口中端口改为COM2,打开原理图仿真。运行串口调试助手将端口设为COM1,即可发送数据仿真。4. 利用C+Builder设计上位机利用Microsoft Comm Control 6.0 串口控件实现与单片机的通信。软件界面如图3所示。上位机主要功能如下:1. 可以选择端口,波特率,校验位,数据位,停止位以及打开关闭串口。2. 可以输入数据发送给单片机,控制四个继电器打开关闭LED灯。3. 可以通过按钮控制四个LED的打开与关闭。图2 电路原理图图3 程序界面图三.实习心得 这是一次纯软件的仿真实验,为期两周并不算长,而且还要学习不少新知识,总体来说算的上是一次满充实的的实验。通过本次实验,我充分体会到软件仿真的便利。本次实验第一周主要是查资料、学习软件知识,如学会用Proteus建元件库、画电路原理图,如何用Keil uVision写单片机程序,用C+Builder编写上位机等。通过网上搜索,查找了关于串口通信的原理知识和上位机的相关内容。本次实验第二周主要是上位机的编写与仿真,C+ Builder具有快速的可视化开发环境:只要简单地把控件拖到窗体上,定义一下它的属性,设置一下它的外观,就可以快速地建立应用程序界面;C+ Builder内置了100多个完全封装了Windows公用特性且具有完全可扩展性(包括全面支持ActiveX控件)的可重用控件;C+ Builder具有一个专业C+开发环境所能提供的全部功能:快速、高效、灵活的编译器优化,逐步连接,CPU透视,命令行工具等。它实现了可视化的编程环境和功能强大的编程语言(C+)的完美结合。掌握C+Builder对我们以后的学习有非常大的帮助。Keil C代码:#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()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 d:P03 = 1;break;C+Builder代码:/-#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-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; 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-MSComm1-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-RThreshold = 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; /-void _fastcall TForm1:U_PortChange(TObject *Sender) Uart_Port=U_Port-ItemIndex+1; Set_Uart();/-void _fastcall TForm1:U_BondChange(TObject *Sender) Uart_Bond=U_Bond-Items-StringsU_Bond-ItemIndex; Set_Uart();/-void _fastcall TForm1:U_CheckChange(TObject *Sender) Uart_Chek=U_Check-Items-StringsU_Check-ItemIndex; Set_Uart();/-void _fastcall TForm1:U_DataChange(TObject *Sender) Uart_Data=U_Data-Items-StringsU_Data-ItemIndex; Set_Uart();/-void _fastcall TForm1:U_StopChange(TObject *Sender) Uart_Stop=U_Stop-Items-StringsU_Stop-ItemIndex; Set_Uart();/-void _fastcall TForm1:Send_ButtonClick(TObject *Sender) AnsiString str=Send_Box-Text; OleVariant temp; uchar c; if(Uart_Open) for(int n=1;nOutput=temp; if(c=0) Image1-Visible=true; Image5-Visible=false; if(c=a) Image1-Visible=false; Image5-Visible=true; if(c=1) Image2-Visible=true; Image6-Visible=false; if(c=b) Image2-Visible=false; Image6-Visible=true; if(c=2) Image3-Visible=true; Image7-Visible=false; if(c=c) Image3-Visible=false; Image7-Visible=true; if(c=3) Image4-Visible=true; Image8-Visible=false; if(c=d) Image4-Visible=false; Image8-Visible=true; void _fastcall TForm1:Button1Click(TObject *Sender) OleVariant temp; temp=VarArrayCreate(OPENARRAY(int,(0,0),varByte); temp.PutElement(0,0); MSComm1-Output=temp; Image1-Visible=true; Image5-Visible=false;/-void _fastcall TForm1:Button2Click(TObject *Sender) OleVariant temp; temp=VarArrayCreate(OPENARRAY(int,(0,0),varByte); temp.PutElement(a,0); MSComm1-Output=temp; Image1-Visible=false; Image5-Visible=true;/-void_fastcallTForm1:Button3Click(TObject *Sender) OleVariant temp; temp=VarArrayCreate(OPENARRAY(int,(0,0),varByte); temp.PutElement(1,0); MSComm1-Output=temp; Image2-Visible=true; Image6-Visible=false;/-void _fastcall TForm1:Button4Click(TObject *Sender) OleVariant temp; temp=VarArrayCreate(OPENARRAY(int,(0,0),varByte); temp.PutElement(b,0); MSComm1-Output=temp; Image2-Visible=false; Image6-Visible=true;/-void _fastcall TForm1:Button5Click(TObject *Sender) OleVariant temp; temp=VarArrayCreate(OPENARRAY(int,(0,0),varByte); temp.PutElement(2,0); MSComm1-Output=temp; Image3-Visible=true; Image7-Visible=false;/-void _fastcall TForm1:Button6Cli
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年公共关系策划师职业技能水平考核试题及答案解析
- 2025年安全员B17考试模拟题库
- 2025年安全生产管理实操培训题集
- 护理教学课件资源有哪些
- 2025年渗透测试初级面试模拟题集宝典
- 2025年安全员招聘面试问题及答案解析
- 2025年村级水管员供水管理笔试题库
- 2025年机关节能面试模拟题及解析
- 2025年安全员C证复审强化复习题库
- 扁鹊见蔡桓教学课件
- 被诈骗的起诉书范文
- 医院病历单请假用
- 肝胆外科专科知识题库及答案
- 《数字媒体基础与实践》数字媒体技术概述
- 滁州市珠龙广卫绢云母粉厂滁州市南谯区将军山绢云母矿1万吨-年露天采矿工程项目环境影响报告书
- 迷你中长导管-
- 钢质防火门安装施工方法
- 优化物理教学策略的思考(黄恕伯)
- GB/T 26358-2022旅游度假区等级划分
- GB/T 25146-2010工业设备化学清洗质量验收规范
- GB/T 14825-1993农药可湿性粉剂悬浮率测定方法
评论
0/150
提交评论