61阅读

串口猎人波形显示-串口接受并显示

发布时间:2017-08-04 所属栏目:软件教程

一 : 串口接受并显示

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

#include <reg52.h>

#include "51hei.H"

#define uchar unsigned char

sbitdula=P2^6;

sbitwela=P2^7;

sbitlaba=P2^2;

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

unsigned char ch;a;

bitread_flag= 0 ;

voidinit_serialcom( void )

{

SCON = 0x50 ;

PCON |= 0x80 ; //SMOD=1;

TH1 = 0xFA ; //Baud:9600 fosc=11.0592MHz

IE |= 0x90 ;

TR1 = 1 ;

TI=1;

}

uchar show[2]={0,0};

void delay(uchari)

{

ucharj,k;

P0=0xFF; //消隐

wela=1;

wela=0;

for(j=i;j>0;j--)

for(k=125;k>0;k--);

}

void display()

{

接受并 串口接受并显示

P0=table[show[0]];

dula=1;

dula=0;

P0=0xfe;

wela=1;

wela=0;

delay(1);

P0=table[show[1]];

dula=1;

dula=0;

P0=0xfd;

wela=1;

wela=0;

delay(1);

}

//

{

if (RI)

{

RI = 0 ;

}

}

/*演示主程序*/

void main(void)

{

unsignedint a;

guandz();

init_serialcom(); //初始化串口

while ( 1 )

{

if (read_flag) //如果取数标志已置位,就将读到的数从串口发出

接受并 串口接受并显示

{ read_flag= 0 ; //取数标志清0 Im[2]=ch; }

show[1]=Im[2] & 0x0F; //取键码的低四位

show[0]=Im[2] >> 4;

for(a=10;a>0;a--)

{

display();

}

}

}

51.h 文件

//51hei单片机开发板常用功能通用包含文件

//防止被重复定义引用

#ifndef __51hei_H__

sfr AUXR = ALE (不可位寻址) 如调用AUXR=0x01;,

P2^4

用P2^5

#define uchar unsigned char

sbitduan_x=P2^6; 的锁存LE端 U1 数码管的段选端

sbitwei_x=P2^7; 的锁存LE端 U2 数码管的位选端

// 函数名称:out_simuseri

// 输入参数:data_buf

// 输出参数:无

// 功能说明:8位同步移位寄存器74hc164,将data_buf的数据逐位输出到simuseri_1_DATA //--------------------------------------------------------------------------------------------------------

voidout_simuseri(uchardata_buf)

{

uchari;

i=8;

ACC=data_buf;

接受并 串口接受并显示

do

{

simuseri_1_CLK=0;

simuseri_1_DATA=accde7j;

simuseri_1_CLK=1;

ACC=ACC<<1;

}

while(--i!=0);

}

//--关闭点阵输出,在每个程序的开头调用一下可防止点阵时不时出现几个亮条.

voidguandz()

{

out_simuseri(0x00) ;

}

//--让所有led不亮

voidguanled()

{

duan_x=1; //让u1 74hc57301输出也是1

P0=0x00; //P0,

duan_x=0;

wei_x=1; //0,输出也是0,输入1输出也是1

//P0

wei_x=0; //

}

#endif

二 : 程序匠人的《串口猎人》多通道多数据显示波形方法

最近一直在研究陀螺仪和加速度计的滤波问题,在使用《串口猎人》的过程中发现很多人跟我一样不会使用多通道多数据显示波形,查了很多的资料,终于发现了使用方法,鉴于网上资料不好找,现重新整理一下 跟大家分享 : 在串口程序的发送过程中将所有数据依次通过串口发送出去,记下发送的串口字节长度 在多通道页面下 字节长度里 填充 ,举个例子 发送2个16位的数据,应该是以四个字节的长度发出,先发第一数据的高字节,然后第一数据的低字节,然后第二数据的高字节,最后是第二数据的低字节,一共是四个字节的长度,在波形显示界面中显示2个数据的波形,在0通道中设置 数据地址0 数据长度 双字节 在1通道中设置 数据地址2 数据长度双字节 这样就能在波形显示程序匠人的《串口猎人》多通道多数据显示波形方法

程序匠人的《串口猎人》多通道多数据显示波形方法

界面中看到双通道的波形了。(www.61k.com)有不对之处,请大家指正。

三 : 利用字符串资源显示MessageBox

C++代码
//////////////////////////////////////////////////////////////////////////
// InfoBox
// 利用字符串资源显示MessageBox
// hParent - 父窗口句柄
// uIDString - 字符串资源ID
// lpszCaption - MessageBox窗口标题
// uType - 同MessageBox最后一个参数
// 返回值:同MessageBox
// 备注:
// 1.可以像wsprintf那样加入可选附加参数;
// 2.最大字符串长度为MAX_PATH。
//////////////////////////////////////////////////////////////////////////
int CDECL InfoBox( HWND hParent, UINT uIDString, LPCTSTR lpszCaption, UINT uType, ... )
{
va_list arglist;
TCHAR str[MAX_PATH], strLoad[MAX_PATH];
va_start( arglist, uType );
LoadString( NULL, uIDString, strLoad, MAX_PATH );
wvsprintf( str, strLoad, arglist );
va_end( arglist );
return MessageBox( hParent, str, lpszCaption, uType );
}
补充两点:第一,字符串资源是一种很好用的资源,利用字符串资源显示MessageBox可以使消息文本容易更改;第二,字符串有长度的限制,如果希望突破这种限制,可以参考MFC中CString::Format的代码对字符串的长度进行动态计算。


本文标题:串口猎人波形显示-串口接受并显示
本文地址: http://www.61k.com/1088970.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1