PC软件控制IO模块Word下载.docx
- 文档编号:13757498
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:14
- 大小:29.26KB
PC软件控制IO模块Word下载.docx
《PC软件控制IO模块Word下载.docx》由会员分享,可在线阅读,更多相关《PC软件控制IO模块Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
提交课程设计报告。
图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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PC 软件 控制 IO 模块