单片机电机测试系统的研制上位机监控系统设计Word文档格式.docx

上传人:b****3 文档编号:16395788 上传时间:2022-11-23 格式:DOCX 页数:23 大小:801.72KB
下载 相关 举报
单片机电机测试系统的研制上位机监控系统设计Word文档格式.docx_第1页
第1页 / 共23页
单片机电机测试系统的研制上位机监控系统设计Word文档格式.docx_第2页
第2页 / 共23页
单片机电机测试系统的研制上位机监控系统设计Word文档格式.docx_第3页
第3页 / 共23页
单片机电机测试系统的研制上位机监控系统设计Word文档格式.docx_第4页
第4页 / 共23页
单片机电机测试系统的研制上位机监控系统设计Word文档格式.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

单片机电机测试系统的研制上位机监控系统设计Word文档格式.docx

《单片机电机测试系统的研制上位机监控系统设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机电机测试系统的研制上位机监控系统设计Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。

单片机电机测试系统的研制上位机监控系统设计Word文档格式.docx

本文便是运用AT89C51单片机控制的智能化转速测量仪。

电机在运行过程中,需要对其进行监控,转速是一个必不可少的一个参数。

本系统就是对电机转速进行测量,并可以和PC机进行通信,显示电机的转速,并观察电机运行的基本状况。

本设计主要用AT89C51作为控制核心,由霍尔传感器、LED数码显像管、HIN232CPE电平转换、及RS232构成。

详细介绍了单片机的测量转速系统及PC机与单片机之间的串行通讯。

充分发挥了单片机的性能。

其优点硬件是电路简单,软件功能完善,测量速度快、精度高、控制系统可靠,性价比较高等特点。

2方案选择

2.1.1单片机与pc机通信原理

MCS-51单片机有一个全双工的串行通讯口UART。

利用其RXD和TXD与外界进行通信,其内部有2个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。

所以单片机和PC机之间可以方便地进行串口通讯。

单片机串口有3条引线:

TXD(发送数据)、RXD(接收数据)和GND(信号地)。

因此在通信距离较短时可采用零MO·

DEM方式,简单三连线结构。

IBM—PC机有两个标准的RS.232串行口,其电平采用的是EIA电平,而MCS-51单片机的串行通信是由TXD(发送数据)和

RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平;

为了Pc机与MCS-51机之间能可靠地进行串行通信,需要用电平转换芯片,我们采用了MAXIM公司生产的专用芯片MAX232进行转换。

电路如图所示。

图2.2MAX232工作原理图

2.2软件方案选择

2.2.1上位机编程方案选择

本设计采用VC6.0++来实现编程,上位机与单片机进行通信的程序编写可用VB、VC等软件。

由于VB作为面向对象的编程工具不够完全,效率比VC低,提供的命令语言环境较弱,通过串口设备一次最多只能交换16B的数据,对较大数据量的传输存在很大的局限性,很难实现较为复杂的数据处理,VC6.0++是一种功能强大的面向对象的Windows编程开发平台。

VC6.0的优点是界面简洁,占用资源少,操作方便。

所以本设计采用VC作为串口编程工具。

2.2.2单片机编程方案选择

本设计单片机的编程选择C语言编写,因为它简洁紧凑、灵活方便、运算符丰富、数据结构丰富、C是结构式语言、C语法限制不太严格,程序设计自由度大、C语言允许直接访问物理地址,可以直接对硬件进行操作、C语言程序生成代码质量高,程序执行效率高,一般只比汇编程序生成的目标代码效率低10へ20%、C语言适用范围大,可移植性好C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX,也适用于多种机型。

C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。

所以我选用C语言来编写此程序。

2.3总体方案选择

转速传感器测量出来的转速值由单片机采集出来,然后单片机再将采集出的转速数据处理后,通过串行口发送给上位机。

AT89C5111

PC机

MAX232

图2.1总体设计方案流程图

4软件设计

4.1上位机程序设计

voidCTem_conDlg:

:

OnOnCommMscomm1()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

m_strRXData="

"

;

//每次进入则将编辑框内容清空等待显示新的数据

VARIANTvariant_inp;

LONGlen,k;

BYTErxdata[2048];

//设置BYTE数组

CStringstrtemp;

if(m_ctrlComm.GetCommEvent()==2)//事件值为2表示接收缓冲区内有字符

{//以下你可以根据自己的通信协议加入//处理代码

variant_inp=m_ctrlComm.GetInput();

//读缓冲区

safearray_inp=variant_inp;

//VARIANT型变量转换为//ColeSafeArray型变量

len=safearray_inp.GetOneDimSize();

//得到有效数据长度

for(k=0;

k<

len;

k++)

safearray_inp.GetElement(&

k,rxdata+k);

//转换为BYTE型数组

k++)//将数组转换为Cstring型变量

{

BYTEbt=*(char*)(rxdata+k);

//字符型

strtemp.Format("

%c"

bt);

//将字符送入临时变量strtemp存放

m_strRXData+=strtemp;

//加入接收编辑框对应字符串

}

UpdateData(FALSE);

//更新编辑框内容

}

4.2下位机程序设计

#include<

reg51.h>

#defineXTAL11059200//CUP晶振频率

#definebaudrate9600//通信波特率

#defineucharunsignedchar

#defineuintunsignedint

sbitDQ=P3^3;

//定义DS18B20端口DQ

sbitBEEP=P3^7;

unsignedcharpresence;

unsignedcharcodeLEDData1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10,0xff};

unsignedcharcodeLEDData[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,

0x80,0x90,0xff};

unsignedchardatatemp_data[2]={0x00,0x00};

unsignedchardatadisplay[5]={0x00,0x00,0x00,0x00,0x00};

unsignedcharcodeditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,

0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};

voidbeep();

sbitDIN=P0^7;

//小数点

bitflash=0;

//显示开关标记

bitflag_zf=0;

//正负转速标志

/**********************************************************/

voidDelay(unsignedintnum)//延时函数

while(--num);

ucharInit_DS18B20(void)//初始化ds1820

DQ=1;

//DQ复位

Delay(8);

//稍做延时

DQ=0;

//单片机将DQ拉低

Delay(90);

//精确延时大于480us

//拉高总线

presence=DQ;

//如果=0则初始化成功=1则初始化失败

Delay(100);

return(presence);

//返回信号,0=presence,1=nopresence

ucharReadOneChar(void)//读一个字节

unsignedchari=0;

unsignedchardat=0;

for(i=8;

i>

0;

i--)

DQ=0;

//给脉冲信号

dat>

>

=1;

DQ=1;

if(DQ)

dat|=0x80;

Delay(4);

return(dat);

voidWriteOneChar(unsignedchardat)//写一个字节

unsignedchari=0;

DQ=dat&

0x01;

Delay(5);

dat>

=1;

/*********************************************************/

voidRead_SPEED(void)//读取转速

Init_DS18B20();

if(presence==1)

{

beep();

flash=1;

}//DS18B20不正常,蜂鸣器报警

else

flash=0;

WriteOneChar(0xCC);

//跳过读序号列号的操作

WriteOneChar(0x44);

//启动转速转换

Init_DS18B20();

WriteOneChar(0xBE);

//读取转速寄存器

temp_data[0]=ReadOneChar();

//转速低8位

temp_data[1]=ReadOneChar();

//转速高8位

voidDisp_SPEED()//显示转速

unsignedcharn=0;

display[4]=temp_data[0]&

0x0f;

display[0]=ditab[display[4]];

//查表得小数位的值

display[4]=((temp_data[0]&

0xf0)>

4)|((temp_data[1]&

0x0f)<

<

4);

display[3]=display[4]/100;

display[1]=display[4]%100;

display[2]=display[1]/10;

display[1]=display[1]%10;

if(!

display[3])//高位为0,不显示

display[3]=0x0a;

display[2])//次高位为0,不显示

display[2]=0x0a;

P0=0xc6;

//显示C

P2=0xfe;

//位选线为P2.7口,LED为共阳极显示,当位选线为低电平时选通

Delay(300);

P0=0x9c;

//显示°

P2=0xfd;

//选中P2.6口

P0=LEDData[display[0]];

//显示小数位

P2=0xfb;

//p2.5

P0=LEDData1[display[1]];

//显示个位

P2=0xf7;

P0=LEDData[display[2]];

//显示十位

P2=0xef;

P0=LEDData[display[3]];

//显示百位

P2=0xdf;

P2=0xff;

//关闭显示

voidbeep(void)

unsignedchari;

for(i=0;

i<

100;

i++)

Delay(60);

BEEP=!

BEEP;

//BEEP取反

}

BEEP=1;

//关闭蜂鸣器

voidinit(void)

EA=1;

//"

中断总允许"

TMOD=0x20;

//定时器1工作于8位自动重载模式,用于产生波特率

TH1=(unsignedchar)(256-(XTAL/(32L*12L*baudrate)));

TL1=(unsignedchar)(256-(XTAL/(32L*12L*baudrate)));

//定时器0赋初值

SCON=0x50;

//设定串行口工作方式

PCON&

=0x00;

//波特率不倍增

TR1=1;

//启动定时器1

IE=0x00;

//禁止任何中断

voidsend_char(void)

//传送十六位的转速数据,低位在前

unsignedi=0;

while(i<

2)

SBUF=temp_data[i];

while(!

TI);

//等特数据传送

TI=0;

//清除数据传送标志

i++;

voidmain(void)

ucharreceive;

init();

while

(1)

Read_SPEED();

//读取转速

if(flash==0)

Disp_SPEED();

//显示转速

P2=0x00;

//DS18B20不正常,关闭显示

if(RI)//是否有数据到来

RI=0;

receive=SBUF;

if(receive==49)//是否开始采集转速

send_char();

//传送采集的转速

5仿真与调试

5.1PROTEUS软件仿真

5.1.1Protues简介

Protues软件是英国Labcenterelectronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年

即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。

在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。

protues支持当前的主流单片机,如51系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列、68000系列等。

1)提供软件调试功能

2)提供丰富的外围接口器件及其仿真

RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。

这样很接近实际。

3)提供丰富的虚拟仪器

利用虚拟仪器在仿真过程中可以测量外围电路的特性,培养学生实际硬

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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