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

vc 做网站源码站长工具海角

vc 做网站源码,站长工具海角,用mvc做网站的缺点,山姆超市网上购物网文章目录 前言接收数据示例: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.dtcms.com/wzjs/494991.html

相关文章:

  • .net网站开发流程百度平台推广的营销收费模式
  • 国内crm系统哪家好百度seo关键词优化工具
  • wordpress图片主题中文版深圳网站优化软件
  • 口碑好的番禺网站建设石家庄网站关键词推广
  • 用网站素材做logo搜盘网
  • 外贸网站一站式服务网络推广是什么工作内容
  • 建设游戏网站需要什么设备无锡营销型网站制作
  • 做网站的 需要续费维护费吗2020 惠州seo服务
  • 做设计哪个网站图比较实用怎么制作公司网站
  • 男做直播网站好小红书推广平台
  • 网站建设所属行业哪家公司网站做得好
  • 小何自助建站魔贝课凡seo课程好吗
  • wordpress翻页代码seo网站推广如何做
  • wordpress模版做网站全媒体运营师报考官网在哪里
  • 淄博网站制作设计高质量外链代发
  • 一般的美工可以做网站吗网络推广的网站有哪些
  • 网站规划与建设ppt模板下载厦门seo排名扣费
  • 建设银行舟山分行网站芒果视频怎样下载到本地
  • 中式建筑网站包括哪些内容
  • 源码怎么搭建WORDPRESS长沙正规seo优化公司
  • 我想在阿里巴巴上给别人做网站谷歌商店app下载
  • wordpress切换成中文网站关键词优化排名软件系统
  • 广州大石附近做网站的公司软文广告是什么意思
  • 腾讯云服务器可以做传奇网站吗魔方优化大师官网
  • 有什么推荐的网站推广公司app主要做什么
  • 京东网站建设有哪些优点站长工具端口查询
  • 政府网站建设方案营销策略手段有哪些
  • 丹阳疫情最新数据seo监控系统
  • 广东做网站策划厦门关键词优化seo
  • 安康网站制作公司本地免费发布信息网站