正大电气:请问在单片机向PC传输结果时是传的16进制数据还是ASCII码?

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/29 13:05:30
我用单片机作了个小计算,然后通过MAX232将结果传给PC,这样在单片机程序中是不是要加入一个进制转换的程序呢?

不一定
因为你在把数据从uC传给PC时,实际上牵扯到了两个协议:通信协议和数据协议。
MAX232,呵呵,我也蛮喜欢美信的IC的,为什么你要用这个东东呢?因为它给你的uC提供了一个通信协议,这就好比你要和别人联系,那你就去买了个手机吧,这样,你就可以和另一个有电话的人(PC)联系了。显然,为什么你不用写信的方式去和那个人联系呢?因为你知道那个人不喜欢看信件(PC机一般都不支持422协议,却可能提供232的接口)。这样,你就选择了一个通信协议。
接下来就该选择数据协议了。这部分工作受通信协议的影响很小,你不一定非要传输ASCII格式的数据,只要uC和PC之间规定好数据格式,随便你传什么!反正通过232协议传输的只是0101011101010110…………,意义,232协议可不管。就好象你和你朋友电话交谈,只要双方都听的懂,不一定要说汉语,英语、德语……,随便。但如果你会说俄语,但你朋友不会,那你就不能选择俄语交谈,不然,你朋友听不懂。请注意!电话线可不管它上面传输的是汉语还是其他鸟语,只要它能传就给你传过去,象哑语,电话线传不了,那你可别用。
上面闲扯半天,说正经的:
上面的意思是说,232协议和它所传输的内容无关,uC和PC之间只要规定好数据协议,不一定非要ASCII码,我曾经也设计过类似的东西,为了可靠性高些,曾采用过一种类似于“葛莱码”的协议(数控机床上的绝对式编码器所使用的格式,又叫循环2进制码);还有一个系统,为了压缩数据,采用了“摩尔斯”电码格式(0代表滴,1代表答,如果用ASCII码表示数字1,为00110001B,需8位,而用摩码则为01111B,比ASCII节约了3位不是^^)。只要你在PC机的软件里(最常用的是MSCOMM)编好相映的数据解释程序就可以了。
因为ASCII码的主要好处是大部分计算机系统都支持它,这样编程人员就免去了编写解释ASCII格式数据的程序,而调用函数就OK了(比如VB,一个Chr函数搞定)。这就是为什么绝大部分计算机产品都采用ASCII数据格式传输数据的原因。
但事无绝对,如果你认为其它编码比ASCII更适合你的系统,换!绝对没问题。

呵呵!打字打的好累^^!
另:小弟我其实是搞机械的,算是个电子爱好者,业余时间自己也会做一些东东,对什么电呀,通信呀之类的略懂一二,上文如有不对之处,还请高人指点。