突然用到了用单片机和上位机进行传递浮点数方法是这样的。
1.将浮点数转化为整数,然后传递整数的ascII码形式。
2.进行编码,这个暂时我是这样理解的,比方说a=7.345678这样的浮点数。
可以进行编码 成一个帧数据 帧头 +数据位+ 整数编码+加小数点+小数编码
具体的解码方法是:a/1取整,得到整数7,然后再添加一个小数点编码!(如0x55),然后再用a-7得到小数部分,然后将小数扩大10倍。再取整然后继续进行取整,以此类推将
小数都编码成功。然后发送过去就可以了。
3.第三种方法也是利用内存,不用知到浮点数的具体编码方式,因为在单片机中浮点数占4个字节,就知道这一点就可以了,我们可以采用联合体的方式,
float value=-17.484;
union //联合体定义
{
u8 a[4];
float b;
}temp;
void Change_to_byte(void)
{
temp.b = value; //将数据存入联合休中
array[0] = temp.a[0]; //一个字节一个字节的取出来
array[1] = temp.a[1];
array[2] = temp.a[2];
array[3] = temp.a[3];
}
再用串口把array[0...4]发送出去就可以了,大功告成。
4.收到这种方法的启发,当然我们也可以使用指针来做。
float value=-9.4567;
float *p=&value;
unsigned char *q;
/*******************************************************************************
* 函数名 : main
* 函数描述 : 主函数
* 输入参数 : 无
* 输出结果 : 无
* 返回值 : 无
*******************************************************************************/
int main(void)
{
int j;
/*设置系统时钟 */
RCC_Configuration();
/* 设置GPIO端口 */
GPIO_Configuration();
/* 设置 USART */
USART_Configuration();
q=(unsigned char *)p;
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) != SET);
for(j=0;j<4;j++)//发送四个字节,表示一个浮点数
{
USART_SendData(USART1,q[j]);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) != SET);
}
上一篇:单片机上操作系统的好处
下一篇:stm8f103调试问题
推荐阅读
史海拾趣
随着全球对环境保护和可持续发展的关注度不断提升,Avasem公司积极响应这一趋势,将可持续发展理念融入公司的战略规划和日常运营中。公司采用环保材料和工艺生产电子产品,降低生产过程中的能源消耗和废弃物排放。同时,Avasem公司还积极参与社会公益事业,支持教育、环保等领域的项目。这些举措不仅提升了公司的社会形象,还为其赢得了更多消费者的支持和信任。
请注意,以上故事均为虚构内容,旨在展示一个电子行业公司可能的发展路径和策略。在实际情况下,一个公司的成长会受到多种因素的影响,包括市场环境、技术发展趋势、公司战略选择等。因此,这些故事并不能完全代表任何真实存在的电子行业公司的发展历程。
BETA Transformer Technology Corp公司在成立初期就凭借其创新性的变压器技术,在电子行业中崭露头角。公司研发团队不断突破传统变压器的设计局限,推出了一系列高效、稳定的变压器产品,赢得了客户的广泛认可。随着市场需求的不断增长,BETA公司逐渐扩大了生产规模,提高了产能,成为行业内的领军企业。
ANOVA深知,成功的关键在于与合作伙伴的紧密合作。因此,公司始终与客户保持紧密的合作关系,共同开发特定的解决方案,协助制定部署策略。ANOVA的服务团队以客户的需求为导向,以十几种语言提供个性化的服务,确保每一位客户都能得到满意的解决方案。此外,ANOVA还积极与商业伙伴合作,共同开拓市场,实现共赢。
进入21世纪,广东长利光电开始将目光投向国际市场。公司积极参加各种国际展览和交流活动,与世界各地的客户建立了广泛的联系。凭借优质的产品和服务,公司逐渐在国际市场上崭露头角。为了更好地服务全球客户,广东长利光电在中国设立了多个办事处,并建立了完善的销售和服务网络。
为了进一步提升国际竞争力,AIC公司开始实施全球化布局战略。公司先后在多个国家设立了研发中心和生产基地,以便更好地服务全球客户。同时,AIC公司还积极参加国际展览和交流活动,与海外企业建立合作关系,推动产品的全球化销售。这些举措使AIC公司的国际影响力不断提升,市场份额也进一步扩大。
随着全球对可持续发展的重视日益增强,FILTRONIC也开始关注自身的环保和社会责任问题。公司积极采取措施减少生产过程中的环境污染和资源浪费,推广绿色生产和循环经济理念。同时,FILTRONIC还积极参与社会公益事业和慈善活动,为社区的发展和进步贡献自己的力量。这些努力不仅展现了FILTRONIC作为一家负责任企业的形象,也为公司的长远发展奠定了坚实的基础。
高速电子设备硬件设计及电路板的故障分析 主办单位:北京昂讯科技有限公司 培训时间: 2007年9月7—8日 培训地点:北京-------北邮科技大厦 联系电话:010-62247628 010-62254817 联系人: 王先生 培训费用:2200元/人(包括:授课费、 ...… 查看全部问答∨ |
|
搅得不错,与大家分享下,来源:http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=597439&bbs_page_no=1&bbs_id=9999 最近发现突然出现很多人问起如何使用MCU来控制马达,由于工作的原因,最近一直在搞ST7MC和dsPIC30F的BLDC变频控制,手上到 ...… 查看全部问答∨ |
|
急求通过u盘盘符获取u盘的设备信息pid,vid,serialnumber(USB_DEVICE_DESCRIPTOR结构体中的数据)的方法. 此USB_DEVICE_DESCRIPTOR 数据结构获得的设备pid,vid,serialnumber escriptor.typedef struct _USB_DEVICE_DESCRIPTOR { UCHAR& ...… 查看全部问答∨ |
|
#define ADC2 ((ADC_TypeDef *) ADC2_BASE) #define ADC2 ((ADC_TypeDef *) ADC2_BASE) 中(ADC_TypeDef *) ADC2_BASE是什么啊定义一指针变量吗求解… 查看全部问答∨ |
|
人人都爱易电源——转发有礼! 活动主题:人人都爱易电源——转发有礼! 活动时间:10月11日—28日 活动链接:https://bbs.eeworld.com.cn/thread-352431-1-1.html … 查看全部问答∨ |