打印

关于上位机控制单片机的通讯问题

[复制链接]
3316|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
happywxg|  楼主 | 2008-12-1 19:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用51单片机控制一个步进电机,现在上位机做一个画面与单片机控制。要求:上位机输入一个电机的转速,然后把预定的转速值传给单片机来控制电机。
但是上位机传给的51的转速值是ASCII码,要转换成数字的话,工作量是不是太大了。谁又没有好的解决方案啊。。。。。。。

相关帖子

沙发
5880527| | 2008-12-1 19:59 | 只看该作者

典型的懒虫

使用特权

评论回复
板凳
ayb_ice| | 2008-12-1 20:17 | 只看该作者

那就直接传HEX

使用特权

评论回复
地板
腾腾| | 2008-12-1 20:20 | 只看该作者

哈哈

使用特权

评论回复
5
耕在此行| | 2008-12-1 21:04 | 只看该作者

ASCII转HEX不难吧.

使用特权

评论回复
6
gjg191| | 2008-12-2 08:47 | 只看该作者

o

有没让你自己去拿脑袋算.麻烦什么

使用特权

评论回复
7
happywxg|  楼主 | 2008-12-4 11:25 | 只看该作者

问题是工作量蛮大的嘛

使用特权

评论回复
8
xwj| | 2008-12-4 12:40 | 只看该作者

能有多大?????

使用特权

评论回复
9
a5566255| | 2008-12-4 16:17 | 只看该作者

哈哈哈。。。。

理解LZ,不就是希望有人给你段代码用嘛。。。。。。
不过你这个问得也太低级了。。。。
你上位机啥语言啊,定义个字节型变量可以吧?然后传给MCU。。。。

使用特权

评论回复
10
xhtxzxw| | 2008-12-4 23:35 | 只看该作者

嘿嘿


我有方案,要吗?  ASCII码转癞**的方案都有呢!
要也不给!!!

使用特权

评论回复
11
ejack| | 2008-12-5 07:51 | 只看该作者

……

"但是上位机传给的51的转速值是ASCII码,要转换成数字的话,工作量是不是太大了。"

你步进电机的转速,难道是形如2999.999999999999999999999999999999999这般精确吗?工作量很大???

使用特权

评论回复
12
红心j| | 2008-12-5 13:00 | 只看该作者

查表,工作量很小

使用特权

评论回复
13
ljm810010| | 2008-12-5 13:15 | 只看该作者

认为简单的试试看,ASCII"9876"转成HEX,要多少时间和代码?

并不是你们想象得那么简单,估计要上百个周期以上,MCU还是要瞎忙一会

使用特权

评论回复
14
zhaoyu2005| | 2008-12-5 14:00 | 只看该作者

LZ的9876

使用特权

评论回复
15
zhaoyu2005| | 2008-12-5 14:15 | 只看该作者

LZ的9876怎么表示?

是不是 39 38 37 36?如果是的话不是很简单么?如果不是说来听听,相信没什么难得,除非你定义的方式不好

使用特权

评论回复
16
ljm810010| | 2008-12-5 14:53 | 只看该作者

就是39 38 37 36呀

(int)speed = (buf3&15)*1000 + (buf2&15)*100 + (buf1&15)*10 + (buf0&15)
估计时间不少

使用特权

评论回复
17
xhtxzxw| | 2008-12-5 20:10 | 只看该作者

嘿嘿

#define uchar unsigned char
#define uint  unsigned int
uint ASCII_Bin(uchar buf3,uchar buf2, uchar buf1, uchar buf0)
{
    buf3 &= 0x0f;
    buf2 &= 0x0f;
    buf1 &= 0x0f;
    buf0 &= 0x0f;
    buf3 += buf3;
    buf2 += buf3;
    buf3 += buf3;
    buf3 += buf3;
    buf2 += buf3;
    buf1 += buf1;
    buf0 += buf1;
    buf1 += buf1;
    buf1 += buf1;
    buf0 += buf1;
    return buf2*100 + buf0;//只做一次乘法
}
0000~9999的ASCII转Binary, 想看看还有没有更好的码子?

使用特权

评论回复
18
zhaoyu2005| | 2008-12-6 09:58 | 只看该作者

xhtxzxw的算法好像是错的

计算结果应该是 (2buf2+4buf3)*100+(2buf0+4buf1)

使用特权

评论回复
19
ljm810010| | 2008-12-6 12:04 | 只看该作者

呵呵,是错了,不过方法还算是挺好的

使用特权

评论回复
20
xhtxzxw| | 2008-12-6 19:42 | 只看该作者

嘿嘿

呵呵,对不起,复制/编辑不小心,前后都丢了一行!已经改好了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

136

帖子

0

粉丝