网页设计网站名称the7 wordpress theme

张小明 2026/1/11 18:52:45
网页设计网站名称,the7 wordpress theme,电子商务网站建设模式,ai免费logo设计一键生成文章目录一、ATGM336H   1、简介   2、引脚说明   3、数据帧二、实例代码一、ATGM336H 1、简介 ATGM336H 是一款由中科微电子设计生产的中高精度、高性能 GNSS 定位模块。        支持的卫星系统#xff1a;        支持 BDS、GPS、GALILEO、QZSS、IRNSS 等…文章目录一、ATGM336H1、简介2、引脚说明3、数据帧二、实例代码一、ATGM336H1、简介ATGM336H 是一款由中科微电子设计生产的中高精度、高性能 GNSS 定位模块。支持的卫星系统支持 BDS、GPS、GALILEO、QZSS、IRNSS 等卫星导航系统可接收 B1I、B1C、B2a、L1、L5、E1、E5a 等多频点信号还支持 SBAS 星基增强系统。性能指标水平定位精度CEP50可达 1.0m冷启动时间为 20s热启动时间为 1s重捕获时间为 1s跟踪灵敏度可达 - 162dBm冷启动捕获灵敏度为 - 148dBm。功耗与供电功耗为 31mA3.3V主电源供电电压为 2.7V 至 3.6V。数据输出输出频率最高为 10Hz默认波特率为 115200数据格式为 NMEA0183。尺寸与封装封装尺寸为 10.1mm×9.7mm×2.1mm。特点模块提供标准的 UART 串行接口也可选择支持 I2C 接口内置 1PPS 秒脉冲输出可提供高精度的时间同步信号。此外模块还支持 AGNSS 功能可利用网络辅助数据加速定位。应用领域适用于共享单车、电单车、宠物跟踪器等多种场景还可用于车载导航、便携式手持设备、无人机、物联网设备等。2、引脚说明如果单纯做定位只需要前4个引脚即可也即PPS引脚用不到所以我们PPS这个引脚可以不接空着就行。3、数据帧GPS模块通过串口将数据发给主控芯片ATGM336H会一次性返回多条信息其中信息头的第一个是消息ID标示着通过什么定位系统的采集的数据。本次学习只关注“GNRMC”信息。$GNRMC,121520.000,A,3438.1766,N,11224.5016,E,0.08,292.36,140816,A*77二、实例代码在LCD1602上显示经纬度。#includeREGX52.H#includestring.h#includestdio.h#includestdlib.h#includemath.h#includeLCD1602.h// 定义串口缓冲区大小根据实际GPS波特率/数据长度调整#defineGPRMC_BUF_SIZE80// 经纬度放大倍数用整数代替浮点如48.1173° → 481173避免浮点运算#defineLAT_LON_SCALE10000// 串口接收缓冲区相关#defineUART_BUF_SIZE100// 串口接收缓冲区大小可容纳完整GPRMC语句// 全局变量串口接收缓冲区中断中使用需全局unsignedcharuart_buf[UART_BUF_SIZE];// 存储接收到的串口数据unsignedintuart_buf_idx0;// 缓冲区索引bit gprmc_ready0;// GPRMC语句接收完成标志// GPRMC解析结果结构体typedefstruct{unsignedcharvalid;// 定位有效性1有效(A)0无效(V)unsignedcharutc_time[7];// UTC时间 hhmmss6位结束符unsignedcharutc_date[7];// UTC日期 ddmmyy6位结束符longlatitude;// 纬度十进制*10000如48.1173°→481173longlongitude;// 经度十进制*10000如11.5167°→115167unsignedcharlat_dir;// 纬度方向N/Sunsignedcharlon_dir;// 经度方向E/Wunsignedintspeed_knots;// 速度节放大10倍22.4→224unsignedintcourse;// 航向度放大10倍84.4→844}GPRMC_Data;// 全局/局部解析结果存储根据实际需求调整存储位置GPRMC_Data gprmc_data;// ------------------- 经纬度转字符串函数 -------------------/** * brief 将纬度转换为字符串如 481173 → 48.1173°N * param lat: 解析后的纬度整数放大10000倍 * param lat_dir: 纬度方向N/S * param str_buf: 输出字符串缓冲区至少12字节如-12.3456°S * retval 0:失败1:成功 */unsignedcharLat2Str(longlat,unsignedcharlat_dir,unsignedchar*str_buf){longabs_lat0;unsignedintint_part0;unsignedintdec_part0;if(str_bufNULL)return0;memset(str_buf,0,12);// 初始化缓冲区abs_latlat0?lat:-lat;// 取绝对值处理负数int_partabs_lat/LAT_LON_SCALE;// 整数部分481173→48dec_partabs_lat%LAT_LON_SCALE;// 小数部分481173→1173// 拼接字符串符号可选 整数.小数 ° 方向if(lat0){sprintf((char*)str_buf,-%d.%04d %c,int_part,dec_part,lat_dir);}else{sprintf((char*)str_buf,%d.%04d %c,int_part,dec_part,lat_dir);}return1;}/** * brief 将经度转换为字符串如 115167 → 11.5167°E * param lon: 解析后的经度整数放大10000倍 * param lon_dir: 经度方向E/W * param str_buf: 输出字符串缓冲区至少12字节 * retval 0:失败1:成功 */unsignedcharLon2Str(longlon,unsignedcharlon_dir,unsignedchar*str_buf){longabs_lon0;unsignedintint_part0;unsignedintdec_part0;if(str_bufNULL)return0;memset(str_buf,0,12);abs_lonlon0?lon:-lon;int_partabs_lon/LAT_LON_SCALE;dec_partabs_lon%LAT_LON_SCALE;if(lon0){sprintf((char*)str_buf,-%d.%04d %c,int_part,dec_part,lon_dir);}else{sprintf((char*)str_buf,%d.%04d %c,int_part,dec_part,lon_dir);}return1;}unsignedcharParseGPRMC(unsignedchar*gprmc_buf,GPRMC_Data*p_data){unsignedchar*ptrNULL;unsignedcharfield_idx0;// 字段索引对应GPRMC各字段unsignedcharfield_buf[20];// 单个字段缓冲区unsignedcharbuf_idx0;// 1. 基础校验非空、以$GPRMC开头if(gprmc_bufNULL||p_dataNULL)return0;if(strstr((char*)gprmc_buf,$GPRMC)NULL)return0;// 2. 初始化解析结果结构体memset(p_data,0,sizeof(GPRMC_Data));// 3. 按逗号分割字段核心解析逻辑ptrgprmc_buf;while(*ptr!\0field_idx12)// GPRMC共13个核心字段0-12{if(*ptr,||*ptr*)// 字段分隔符或校验和起始符{field_buf[buf_idx]\0;// 字段结束符buf_idx0;// 重置字段缓冲区索引// 4. 按字段索引解析对应数据switch(field_idx){case1:// UTC时间hhmmssif(strlen((char*)field_buf)6){strcpy((char*)p_data-utc_time,(char*)field_buf);}break;case2:// 状态A有效V无效if(field_buf[0]A){p_data-valid1;}elseif(field_buf[0]V){p_data-valid0;}else{return0;// 状态非法解析失败}break;case3:// 纬度ddmm.mmmmif(strlen((char*)field_buf)5){// 提取度前2位和分后几位转换为十进制整数unsignedintdegatoi((char*)field_buf);unsignedintminatoi((char*)field_buf2);floatlat_float(deg/100)(min%100(atof((char*)field_buf4))/10000)/60.0;p_data-latitude(long)(lat_float*LAT_LON_SCALE);}break;case4:// 纬度方向N/Sp_data-lat_dirfield_buf[0];if(p_data-lat_dirS){p_data-latitude-p_data-latitude;// 南半球取负}break;case5:// 经度dddmm.mmmmif(strlen((char*)field_buf)6){unsignedintdegatoi((char*)field_buf);unsignedintminatoi((char*)field_buf3);floatlon_float(deg/100)(min%100(atof((char*)field_buf5))/10000)/60.0;p_data-longitude(long)(lon_float*LAT_LON_SCALE);}break;case6:// 经度方向E/Wp_data-lon_dirfield_buf[0];if(p_data-lon_dirW){p_data-longitude-p_data-longitude;// 西半球取负}break;case7:// 速度节放大10倍存储22.4→224p_data-speed_knots(unsignedint)(atof((char*)field_buf)*10);break;case8:// 航向度放大10倍存储84.4→844p_data-course(unsignedint)(atof((char*)field_buf)*10);break;case9:// UTC日期ddmmyyif(strlen((char*)field_buf)6){strcpy((char*)p_data-utc_date,(char*)field_buf);}break;default:break;}field_idx;// 下一个字段if(*ptr*)break;// 校验和之后无有效字段退出循环}else{// 存储当前字符到字段缓冲区避免缓冲区溢出if(buf_idxsizeof(field_buf)-1){field_buf[buf_idx]*ptr;}}ptr;// 下一个字符}// 5. 最终校验必须包含有效状态和经纬度if(p_data-valid0||p_data-latitude0||p_data-longitude0){return0;}return1;// 解析成功}// ------------------- 串口初始化函数必须先初始化 -------------------voidUART_Init(void){TMOD|0x20;// 定时器1工作在模式28位自动重装TH10xFD;// 波特率9600晶振11.0592MHzTL10xFD;TR11;// 启动定时器1SCON0x50;// 串口工作在模式1允许接收REN1EA1;// 开启总中断ES1;// 开启串口中断}// ------------------- 串口接收中断服务函数核心 -------------------voidRECEIVE_DATA(void)interrupt4using3{unsignedcharrecv_char;// 接收的单个字符// 1. 清除中断标志必须否则会重复进入中断if(RI)// RI1表示串口接收到一个字符{RI0;// 清除接收中断标志recv_charSBUF;// 读取接收寄存器中的字符// 2. 数据缓存存储字符到缓冲区避免溢出if(uart_buf_idxUART_BUF_SIZE-1){// 关键GPRMC语句以换行符\n或\r结束以此判断接收完成if(recv_char\n||recv_char\r){uart_buf[uart_buf_idx]\0;// 字符串结束符// 判断是否是GPRMC语句以$GPRMC开头if(strstr((char*)uart_buf,$GPRMC)!NULL){gprmc_ready1;// 标记GPRMC语句接收完成}uart_buf_idx0;// 重置缓冲区准备接收下一条语句}else{uart_buf[uart_buf_idx]recv_char;// 存储字符}}else{// 缓冲区溢出重置避免数据错乱uart_buf_idx0;memset(uart_buf,0,UART_BUF_SIZE);}}}voidmain(){// 模拟GPS串口接收的GPRMC数据// unsigned char gprmc_test[] $GPRMC,123519,A,4807.038,N,01131.000,E,022.4,084.4,230394,003.1,W*6A;unsignedcharlat_str[12];// 纬度字符串缓冲区unsignedcharlon_str[12];// 经度字符串缓冲区LCD_Init();UART_Init();// 初始化串口必须先执行while(1){// 检测GPRMC语句是否接收完成if(gprmc_ready){gprmc_ready0;// 清除标志// 解析GPRMC数据if(ParseGPRMC(uart_buf,gprmc_data)){// 经纬度转字符串Lat2Str(gprmc_data.latitude,gprmc_data.lat_dir,lat_str);Lon2Str(gprmc_data.longitude,gprmc_data.lon_dir,lon_str);LCD_ShowString(1,0,lat_str);LCD_ShowString(2,0,lon_str);}}}}
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

wordpress 多站点迁移西安最好的互联网公司排名

想要快速掌握分子对接技术?AutoDock Vina作为目前最受欢迎的开源分子对接引擎,以其卓越的计算速度和精准的对接结果赢得了全球科研人员的青睐。无论你是药物研发新手还是计算化学爱好者,这份指南都将带你轻松上手。 【免费下载链接】AutoDock…

张小明 2026/1/11 18:47:38 网站建设

门户网站 建设 投入自助建站优化

如何在10分钟内掌握OCRAutoScore?教师必备的智能阅卷系统终极指南 【免费下载链接】OCRAutoScore OCR自动化阅卷项目 项目地址: https://gitcode.com/gh_mirrors/oc/OCRAutoScore 在数字化教育飞速发展的今天,OCRAutoScore作为一款开源的智能阅卷…

张小明 2026/1/5 17:02:34 网站建设

北京学生做兼职的网站品牌app定制开发

第一章:Open-AutoGLM 自主纠错机制原理Open-AutoGLM 是一种基于生成语言模型的自优化推理框架,其核心在于引入了自主纠错(Self-Correction)机制,使模型能够在生成输出后主动识别潜在错误并迭代修正。该机制不依赖外部标…

张小明 2026/1/11 16:08:50 网站建设

长春门户网站建设做个中英文网站多少钱

第一章:揭秘Open-AutoGLM部署难题:5步实现本地化快速部署与性能调优在本地环境中高效部署 Open-AutoGLM 并优化其推理性能,是许多开发者面临的核心挑战。通过系统化的步骤,可以显著降低部署复杂度并提升模型响应速度。环境准备与依…

张小明 2026/1/7 6:29:07 网站建设

太原加盟网站制作百度网址大全 简单版

大家好我是风歌,曾担任某大厂java架构师,如今专注java毕设领域。今天要和大家聊的是一款java小程序项目——电影交流平台小程序。项目源码以及远程配置部署相关请联系风歌,文末附上联系信息 。项目简介:本系统主要包括首页、个人中…

张小明 2026/1/6 16:18:30 网站建设