第28讲 4t 14届模拟1

本文介绍了如何在Seg中进行小数显示,包括使用底层计算和高位熄灭法来保留一位小数;同时讨论了参数界面的设置以及串口通信中的bug修复,特别提到了精度丢失问题在LED显示中的解决方案。
摘要由CSDN通过智能技术生成

一、Seg

①小数的显示 ②高位熄灭

bit Seg_Mode=0;//0-噪音界面 1-参数界面
unsigned char DianYa;
unsigned int Noise;
unsigned char FenBei=65;

①噪音(AD读取电压转化为噪音

关于0-255->0-5,然后保留一位小数,两个方法都可以:

1.在底层里*10/51

194*10/51=38     38*18=684(直接显示684,串口发送时684/10.0=68.4,满足%.1f

1.高位熄灭:

保留一位小数,所以是到最后一位之前的那一位熄灭。然后只有一位的话就用三目操作符。

684嘛那和他比较那个就60*10,684/10.0不对

2.底层不做修改,直接/51.0

194/51.0=3.8039           3.8039*18.0=68.4702(直接用显示小数的方法显示,串口发送时直接用%.1f

②参数界面(自己设置

二、Key

bit Seg_Mode=0;//0-噪音界面 1-参数界面
unsigned char FenBei=65;

三、串口

unsigned char Uart_Slow_Down;//串口减速专用变量
unsigned char Uart_Recv[10];//串口接收数据储存数组 默认10个字节 若接收数据较长 可更改最大字节数
unsigned char Uart_Recv_Index;//串口接收数组指针

float Noise_1;
unsigned int Noise;

串口的bug:

在串口处理,进入判断的时候直接判断字符“Return”(如果题目没说判断\r\n的话)(然后判断index的个数是接收数组Recv的个数Index的个数+1)

然后在发的时候,不勾那个发送的勾勾

在中断服务函数里,index要+2,算上\r\n!!

四、Led

unsigned int Noise;
unsigned char FenBei=65;

float Noise;
unsigned char FenBei=65;

unsigned int Noise;
unsigned char FenBei=65;

以上几种都可以

单纯/10的话会有精度丢失,那比你大0.几也是大,然后就会报错

然后就:

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值