当前位置: 首页 > news >正文

个人网站设计结构图友情链接怎么添加

个人网站设计结构图,友情链接怎么添加,运城又一暂停通知,网页与网站的区别文章目录 前言接收数据示例:0xAA 0x12 0x34 0x55合并高/低字节数据RGB565颜色值:0xF800(红色)Python中负数右移接收帧:01 03 02 12 34 CRC 前言 本文简单对单片机、上位机中的映射(Mapping)和位…

文章目录

  • 前言
  • 接收数据示例:0xAA 0x12 0x34 0x55
  • 合并高/低字节数据
  • RGB565颜色值:0xF800(红色)
  • Python中负数右移
  • 接收帧:01 03 02 12 34 CRC


前言

本文简单对单片机、上位机中的映射(Mapping)和位移操作符(Bit Shifting)等相关知识进行了简单介绍.


一、单片机与上位机中的二进制操作基础
在嵌入式开发(单片机)和上位机编程(如Python、C#等)中,二进制操作是底层数据处理的核心,尤其在硬件控制、通信协议解析和数据压缩等领域。

  1. 位移操作符
    左移(<<):将二进制数向左移动指定位数,右侧补0。

作用:等效于乘以2^n(n为位移数)。

示例:0b0001 << 2 → 0b0100(十进制1→4)。

右移(>>):将二进制数向右移动指定位数,左侧补0(逻辑右移)或补符号位(算术右移)。

作用:等效于除以2^n(取整)。

示例:0b1000 >> 2 → 0b0010(十进制8→2)。

  1. 映射(Mapping)
    定义:将输入数据的范围按比例转换到目标范围,常用于传感器数据校准、数值标准化等场景。

公式:y = (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min

二、单片机中的二进制操作(以C语言为例)

  1. 位移操作符的应用
    场景1:控制IO引脚状态
    单片机中常用位移操作配置寄存器,例如设置某GPIO端口的第3位为高电平:

c
// 假设PORT寄存器为8位(0b00000000)
PORT |= (1 << 3); // 将第3位置1 → 0b00001000
场景2:组合多字节数据
从传感器读取的16位数据(如温度值)可能分为高8位和低8位,需合并:

c
uint8_t high_byte = 0x12; // 高字节
uint8_t low_byte = 0x34; // 低字节
uint16_t value = (high_byte << 8) | low_byte; // 0x1234
2. 映射操作示例
ADC数据转换为电压值
假设ADC为12位分辨率(0~4095),参考电压3.3V:

c
uint16_t adc_value = 2048; // ADC采样值
float voltage = (adc_value / 4095.0) * 3.3; // 映射到0~3.3V → 1.65V
三、上位机中的二进制操作(以Python为例)

  1. 位移操作符的应用
    场景1:解析通信协议
    从单片机接收的二进制数据包中提取字段(例如协议格式:[Header][DataHigh][DataLow][Checksum]):

python

接收数据示例:0xAA 0x12 0x34 0x55

header = data[0] # 0xAA
data_high = data[1] # 0x12
data_low = data[2] # 0x34
checksum = data[3] # 0x55

合并高/低字节数据

value = (data_high << 8) | data_low # 0x1234 → 4660
场景2:数据压缩与位掩码
使用位掩码提取特定比特位(例如RGB565颜色格式):

python

RGB565颜色值:0xF800(红色)

red = (color & 0xF800) >> 11 # 提取5位红色 → 0x1F (31)
green = (color & 0x07E0) >> 5 # 提取6位绿色 → 0x00 (0)
blue = color & 0x001F # 提取5位蓝色 → 0x00 (0)
2. 映射操作示例
传感器数据标准化
将原始数据(01000)映射到0100%的百分比:

python
raw_value = 750
percentage = (raw_value - 0) * (100 - 0) / (1000 - 0) + 0 # 75%
四、关键技巧与注意事项
位运算优先级

位移操作符(<</>>)优先级低于加减乘除,必要时需加括号:

c
uint8_t a = 1 << 3 + 2; // 等价于1 << (3+2) = 32,而非(1<<3)+2=10
有符号数的位移

右移有符号数时,C语言使用算术右移(补符号位),Python使用逻辑右移(补0):

python

Python中负数右移

(-8) >> 1 # -4 (二进制补码操作)
映射的精度问题

整数运算可能导致精度丢失,需使用浮点数:

c
int mapped_value = (x * out_max) / in_max; // 错误:可能截断小数
float mapped_value = (x * out_max) / (float)in_max; // 正确
五、实际项目案例
案例1:单片机控制LED矩阵
目标:通过位移操作实现LED流水灯效果。

代码:

c
for (int i = 0; i < 8; i++) {
PORT = (1 << i); // 依次点亮第0~7位LED
delay_ms(100);
}
案例2:上位机解析Modbus协议
目标:从Modbus RTU帧中提取数据。

代码片段:

python

接收帧:01 03 02 12 34 CRC

slave_id = frame[0] # 0x01
func_code = frame[1] # 0x03
data_length = frame[2] # 0x02
data = (frame[3] << 8) | frame[4] # 0x1234 → 4660
六、总结
位移操作符:用于快速位操作、数据合并与拆分,是硬件控制和协议解析的核心。

映射:将原始数据转换为有意义的物理量,提升系统可读性和兼容性。

应用场景:

单片机:GPIO控制、ADC/DAC数据处理、通信协议封装。

上位机:数据解析、图形化显示、算法实现。

掌握这些操作可以显著提升嵌入式系统和上位机软件的开发效率与性能。


http://www.cadmedia.cn/news/12899.html

相关文章:

  • 网站内容编写方法正规seo多少钱
  • 滑县网站建设哪家专业百度推广运营工作是什么
  • 手机免费网站制作网站制作工具有哪些
  • 企业网站建设规划的基本原则是什么2023新闻热点摘抄
  • 涪陵区小城镇建设管理处网站新闻网站软文平台
  • 政府网站建设费用太原seo公司
  • 网站建设对电子商务的作用seo专员的工作内容
  • 个人网站备案需要哪些百度推广代理商加盟
  • 广西建设执业资格注册中心网站太原竞价托管公司推荐
  • 网站建设用图片重庆百度推广开户
  • 网站建设域名是什么互联网营销推广渠道
  • 做外链的网站快速排名生客seo
  • 千图网官网素材seo引擎优化专员
  • 免备案自助建站网站windows优化大师怎么使用
  • 上海短期网站建设培训腾讯推广一次广告多少钱
  • 大连做网站哪家服务好百度搜索风云榜下载
  • 网站建设报价流程网络营销的五个发展阶段
  • 网站建设流程哪家好长沙百度推广开户
  • 东莞网站开发营销国外网站设计
  • 河南省建设教育协会网站人力资源培训网
  • 旅游网站建设实训报告创建网站平台
  • 网站建设的布局对网络推广的影响百度seo哪家公司好
  • 施工企业安全生产评价汇总表最终须由( )签名。上海aso苹果关键词优化
  • 杭州网站建设 巴零百度下载电脑版
  • 中石建基础设施建设有限公司网站长沙seo网站推广
  • 外国人做的关于中国的视频网站外包公司值得去吗
  • wordpress压缩数据库seo是搜索引擎营销吗
  • 怎么制作网站准考证在网上打印手游推广平台
  • 营销网站建设教学产品推销方案
  • 网站建设游戏公司360推广登录平台