


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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代码:. v.*include <reg52.h>*include <stdio.h>*define uchar unsigned char*define uint unsigned intsbit LED = P10;sbit KEY = P16;sbit P00 = P00;sbit P01 = P01;sbit P02 =
6、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
7、;case 'a':P00 = 1;break;case 'b':P01 = 1;break;case 'c':P02 = 1;break;case 'd':P03 = 1;break;. v.C+Builder代码:. v./-*include <vcl.h>*pragma hdrstop*include "Unit1.h"*include <stdio.h>*include <math.h>/-*pragma package(smart_init)*pragma link
8、 "MSCommLib_OCX"*pragma resource "*.dfm"TForm1 *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+=Uar
9、t_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-&g
10、t;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; S
11、leep(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 =
12、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_Ope
13、n=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_PortChan
14、ge(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->Item
15、Index; 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_But
16、tonClick(TObject *Sender) AnsiString str=Send_Box->Text; OleVariant temp; uchar c; if(Uart_Open) for(int n=1;n<=str.Length();n+) c=strn; if(c='r'|c='n')continue; temp=VarArrayCreate(OPENARRAY(int,(0,0),varByte); temp.PutElement(c,0); MSComm1->Output=temp; if(c='0') I
17、mage1->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;
18、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
19、; 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('
20、;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->V
21、isible=false;/-void _fastcall TForm1:Button4Click(TObject *Sender) OleVariant temp; temp=VarArrayCreate(OPENARRAY(int,(0,0),varByte); temp.PutElement('b',0);. v. 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;/-voi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中式烹调模拟题含答案(附解析)
- 9月系解题库(含参考答案解析)
- 灯饰照明安装考核试卷
- 节能环保关键技术研究与应用考核试卷
- 游艺用品销售渠道拓展考核试卷
- 生物质能发电的效率提升考核试卷
- 蔬菜罐头加工中的食品安全数据统计分析考核试卷
- 小老鼠和泡泡糖说课课件
- 蔬菜种植营养需求解析考核试卷
- 新能源汽车产业政策环境分析考核试卷
- 大学体育与健康知到智慧树章节测试课后答案2024年秋齐鲁师范学院
- 中考复习课件中考数学答题策略与技巧课件
- 便利店卫生清洁管理规范
- 《招标投标法》考试题库200题(含答案)
- 教科版三年级下册科学全册同步练习(一课一练)
- 浙江省“温州八校”2025届高考语文三模试卷含解析
- 医院食堂营养餐实施方案
- 2024中国房企数字化产品力白皮书
- 《地方文化资源在幼儿园中开发利用的比较研究》
- 水泥基材料改性研究-洞察分析
- 海外商务代理委托合同三篇
评论
0/150
提交评论