您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 股票报告 > vb语言与单片机传送的数据格式
Vb语言与单片机传送的数据格式详解作者:苏建伟郑州市岳村镇桥沟村金利煤业精密检测中心Vb语言,在用mscomm传送数据时,控件设置成以二进制方式传送,注意:单片机是不认识字符形式的,单片机收到的数据全是8位二进制数。我们在用keil编译单片机程序时,系统自动为我们翻译成8位十进制数。它的组成是:1,2,4,8,16,32,64,128。它们相加等于255.刚好是8位二进制数。255.Vb端:窗体添加按钮1按钮2按钮3text1text2mscomm按钮1PrivateSubCommand1_Click()Dimsd(0)AsByteDimdAsLongsd(0)=255-Val(Text1.Text)IfMSComm1.PortOpen=TrueThenMSComm1.Output=sdElsed=MsgBox(端口没有打开)EndIfEndSub按钮3PrivateSubCommand3_Click()MSComm1.PortOpen=TrueEndSubMscomm控件PrivateSubMSComm1_OnComm()OnErrorResumeNextDimsdeAsVariantDimds()AsBytesde=MSComm1.Inputds=sdeText2=ds(0)EndSub.在窗体text1中输入数字,它就以十进制形式原封发送出去。在单片机端:打开keil输入代码:#includeREGX52.H#defineucharunsignedchar#defineuintunsignedintuinth,d;ucharsdfg;sbitlcdrs=P3^5;//p0口写数据sbitlcden=P3^4;//rw接地。设为写状态。读状态rw=1.液晶屏我们只要能写就可以。不需要sbitduan=P2^6;sbitwei=P2^7;voidyanshi(uintqw1){uintq;uintw;for(w=qw1;w0;w--)for(q=50;q0;q--);}//rs=1是数据。rs=0是命令。voidwrithml(ucharyu)//写命令{lcdrs=0;P0=yu;yanshi(5);lcden=1;yanshi(5);lcden=0;}voidwrithsj(ucharyu)//写数据{lcdrs=1;P0=yu;yanshi(5);lcden=1;yanshi(5);lcden=0;}voidchuankou(){//PCON=0x80;//pcon不能设置。80是波特率加倍。//SM0=0;SM1=1;REN=1;TMOD=0X20;TH1=0XFD;TL1=0XFD;TR1=1;EA=1;ES=1;TI=0;RI=0;}voiddfg()interrupt4{sdfg=SBUF;P1=sdfg;}voidinter(){lcden=0;duan=0;wei=0;writhml(0x38);writhml(0x0c);writhml(0x06);writhml(0x01);writhml(0x80);//清屏在初始化内容里边没用。chuankou();}voidmain(){inter();while(1){if(RI==1){writhsj(255-sdfg);P1=sdfg;yanshi(1000);writhml(0x80);writhml(0x01);SBUF=sdfg;while(!TI);TI=0;RI=0;};};}这样你从电脑发出的数据就反扬在p1口和1602液晶上边。注意你的单片机板子,p1口要接上8位发光二极管。如果:你要让第一位亮,在电脑发送框,输入1,如果要让二位灯亮,输入2,三位输入4,四位亮输入8,五位亮输入16……,如果让1602显示,查编码表,A的编码0x41,十进制数是16*4+1=65,在电脑端输入65,液晶屏就显示A。记住一点:对做工控的人特别重要,电脑是以8个状态传送十进制数的。每一位代表十进制数如下。1,2,4,8,16,32,64,128.在液晶屏代码表是16进制数表示。B的代码是0x42对应十进制数是66。我们只要在发送框输入66,液晶屏就显示B.
本文标题:vb语言与单片机传送的数据格式
链接地址:https://www.777doc.com/doc-2865945 .html