PC软件控制IO模块Word下载.docx

上传人:b****3 文档编号:13757498 上传时间:2022-10-13 格式:DOCX 页数:14 大小:29.26KB
下载 相关 举报
PC软件控制IO模块Word下载.docx_第1页
第1页 / 共14页
PC软件控制IO模块Word下载.docx_第2页
第2页 / 共14页
PC软件控制IO模块Word下载.docx_第3页
第3页 / 共14页
PC软件控制IO模块Word下载.docx_第4页
第4页 / 共14页
PC软件控制IO模块Word下载.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

PC软件控制IO模块Word下载.docx

《PC软件控制IO模块Word下载.docx》由会员分享,可在线阅读,更多相关《PC软件控制IO模块Word下载.docx(14页珍藏版)》请在冰豆网上搜索。

PC软件控制IO模块Word下载.docx

提交课程设计报告。

图1系统连接图

二.设计过程与原理

1.原理图设计

利用Proteus软件设计仿真电路,以AT89C51单片机为MCU,在最小系统的基础上通过IO口与继电器电路相连。

电路原理图如如图2所示。

2.单片机代码

利用Keil编写控制单片机的C51代码。

3.利用Proteus仿真

利用虚拟端口软件添加两个虚拟端口COM1,COM2,将Keil编写的代码导入到原理图中的AT89C51中,将RS232串口中端口改为COM2,打开原理图仿真。

运行串口调试助手将端口设为COM1,即可发送数据仿真。

4.利用C++Builder设计上位机

利用MicrosoftCommControl6.0串口控件实现与单片机的通信。

软件界面如图3所示。

上位机主要功能如下:

1.可以选择端口,波特率,校验位,数据位,停止位以及打开关闭串口。

2.可以输入数据发送给单片机,控制四个继电器打开关闭LED灯。

3.可以通过按钮控制四个LED的打开与关闭。

9

18

19

XTAL1

XTAL2

RST

X1

12M

22pf

C1

U1

C2

P0.0/AD0

P0.1/AD1

P0.2/AD2

P0.3/AD3

P0.4/AD4

P0.5/AD5

P0.6/AD6

P0.7/AD7

C3

10uF

29

PSEN

ALE

EA

1

3

P1.0

P1.1

P1.2

P1.3

P1.4

P1.5

P1.6

P1.7

P2.0/A8

P2.1/A9

P2.2/A10

P2.3/A11

P2.4/A12

P2.5/A13

P2.6/A14

P2.7/A15

P3.0/RXD

P3.1/TXD

P3.2/INT0

P3.3/INT1

P3.4/T0

P3.5/T1

P3.6/WR

P3.7/RD

432123456780

333222222221

1314151617

P1

COMPIM

图2电路原理图

R43

图3程序界面图

-2-

 

{

case'

0'

:

P00=0;

break;

case'

1'

P01=0;

2'

P02=0;

3'

P03=0;

a'

P00=1;

b'

P01=1;

c'

P02=1;

d'

P03=1;

}

.实习心得

这是一次纯软件的仿真实验,为期两周并不算长,而且还要学习不少新知识,总体来说算的上是一次满充实的的实验。

通过本次实验,我充分体会到软件仿真的便利。

本次实验第一周主要是查资料、学习软件知识,如学会用Proteus建元件库、画电路原理图,如何用KeiluVision写单片机程序,用C++Builder编写上位机等。

通过网上搜索,查找了关于串口通信的原理知识和上位机的相关内容。

本次实验第二周主要是上位机的编写与仿真,C++Builder具有快速的可视化开发环境:

只要简单地把控件拖到窗体上,定义一下它的属性,设置一下它的外观,就可以快速地建立应用程序界面;

C++Builder内置了100多个完全封装了Windows公用特性且具有完全可扩展性(包括全面支持ActiveX控件)的可重用控件;

C++Builder具有一个专业C++开发环境所能提供的全部功能:

快速、高效、灵活的编译器优化,逐步连接,CPU透视,命令行工具等。

它实现了可视化的编程环境和功能强大的编程语言(C++)

的完美结合。

掌握C++Builder对我们以后的学习有非常大的帮助。

KeilC代码:

#include<

reg52.h>

stdio.h>

#defineucharunsignedchar#defineuintunsignedintsbitLED=P1^0;

sbitKEY=P1^6;

sbitP00=P0^0;

sbitP01=P0^1;

sbitP02=P0^2;

sbitP03=P0^3;

voidmain()

charkey=0;

SCON=0x50;

TMOD|=0x20;

TH1=0xFD;

TR1=1;

TI=1;

while

(1)

LED=0;

key=_getkey();

switch(key)

C++Builder代码:

//

Form1->

MSComm1->

CommPort=Uart_Port

vcl.h>

#pragmahdrstop

#include"

Unit1.h"

math.h>

//#pragmapackage(smart_init)

#pragmalink"

MSCommLib_OCX"

#pragmaresource"

*.dfm"

TForm1*Form1;

//__fastcallTForm1:

TForm1(TComponent*

Owner)

TForm(Owner)

voidSet_Uart(void)

StringUartsettings;

if(Form1->

PortOpen)Form1->

MSComm1->

PortOpen=False;

Uartsettings=Uart_Bond+"

"

;

Uartsettings+=Uart_Chek.SubString(1,1)+"

Uartsettings+=Uart_Data+"

Uartsettings+=Uart_Stop;

try

Settings=Uartsettings;

catch(Exception&

e)

Application->

MessageBox("

设置不正确!

请检查..."

系统错误"

MB_OK);

PortOpen=True;

exception)

Uart_Open=false;

该串口不存在或串口被占用!

系统错误"

U_Status->

Brush->

Color=clBlack;

U_OPEN->

Caption="

打开串口"

return;

Sleep(10);

PortOpen=True;

if(!

Uart_Open)Form1->

PortOpen=False;

void__fastcall

TForm1:

FormCreate(TObject*Sender){

InputLen=1;

InBufferSize=2048;

InBufferCount=0;

OutBufferSize=512;

OutBufferCount=0;

CommPort=1;

//OnErrorGoTocomer

InputMode=comInputModeBinary;

RThreshold=1;

SThreshold=0;

InBufferCount=0;

Set_Uart();

U_OPENClick(TObject*Sender)

Uart_Open)

Uart_Open=true;

Color=clRed;

关闭串口"

PortOpen)Set_Uart();

}else

打开串口"

if(MSComm1->

PortOpen)MSComm1->

U_CheckChange(TObject

*Sender)

Uart_Chek=U_Check->

Items->

Strings[U_Check->

ItemIndex];

U_DataChange(TObject*Sender){Uart_Data=U_Data->

Strings[U_Data->

U_StopChange(TObject*Sender){Uart_Stop=U_Stop->

Strings[U_Stop->

void

U_PortChange(TObject*Sender)

Uart_Port=U_Port->

ItemIndex+1;

U

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

当前位置:首页 > 经管营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1