MC9S12G128开发板—实现按键发送CAN报文指示小车移动功能
实验环境:MC9S12G128开发板
基本功能:控制开发板上的按键,模拟车辆移动的上下左右四个方位,通过can通信告诉上位机界面,车辆轨迹的移动方位。
1. 1939报文发送的示例代码
MC9S12G128开发板1939协议发送can报文数据的示例代码如下:
/*************************************************************/
/* 主函数 */
/*************************************************************/
void main(void) {DisableInterrupts;INIT_PLL();initialize_TIM();INIT_CAN();init_key();LEDCPU_dir=1;LEDCPU=0;EnableInterrupts;//填写报文内容msg_send.id = ID; for(k=0;k<data_len_TX;k++){msg_send.data[k] = senddata[k];}msg_send.len = data_len_TX;msg_send.RTR = FALSE;msg_send.prty = 0;for(;;) {delay1ms(500);if(!MSCANSendMsg(msg_send)) //发送过程出现错误for(;;);elseLEDCPU=~LEDCPU;}
}

2. 按键查询的示例代码
MC9S12G128开发板的按键查询的示例代码如下:
/*************************************************************/
/* 主函数 */
/*************************************************************/
void main(void) {DisableInterrupts;init_led_key(); EnableInterrupts;for(;;) {delay();//data=data<<1; //左移一位//if(data==0)// data=0x01;if(KEY1==0&&KEY1_last==1) //按键F1按下mode=1;if(KEY2==0&&KEY2_last==1) //按键F2按下mode=2; if(KEY3==0&&KEY3_last==1) //按键F3按下mode=3; if(KEY4==0&&KEY4_last==1) //按键F4按下mode=4; KEY1_last=KEY1; //保存F1的状态KEY2_last=KEY2; //保存F2的状态KEY3_last=KEY3;KEY4_last=KEY4;if(mode==1)LED = ~(0x01);else if(mode==2)LED = 0xFB;else if(mode==3)LED = 0xEF;else if(mode==4)LED = 0xBF;elseLED = 0xff; }
}

3. 按键发送报文的代码
参考1939报文发送示例代码+按键查询示例代码,指定按键发送相应报文给上位机从而显示车辆目前的方位。
/*************************************************************/
/* 主函数 */
/*************************************************************/
void main(void) {DisableInterrupts;INIT_PLL();initialize_TIM();INIT_CAN();init_led_key();LEDCPU_dir=1;LEDCPU=0;EnableInterrupts;//填写报文内容msg_send.id = ID; for(k=0;k<data_len_TX;k++){msg_send.data[k] = senddata[k];}msg_send.len = data_len_TX;msg_send.RTR = FALSE;msg_send.prty = 0;for(;;) {if(KEY1==0&&KEY1_last==1) //按键F1按下mode=1;if(KEY2==0&&KEY2_last==1) //按键F2按下mode=2; if(KEY3==0&&KEY3_last==1) //按键F3按下mode=3; if(KEY4==0&&KEY4_last==1) //按键F4按下mode=4; KEY1_last=KEY1; //保存F1的状态KEY2_last=KEY2; //保存F2的状态KEY3_last=KEY3;KEY4_last=KEY4;if(mode==1){LED = ~(0x01);msg_send.data[0]= 0x01; msg_send.data[1]= 0x00; msg_send.data[2]= 0x00; msg_send.data[3]= 0x00; }else if(mode==2){LED = 0xFB;msg_send.data[1]= 0x01;msg_send.data[0]= 0x00; msg_send.data[2]= 0x00; msg_send.data[3]= 0x00;}else if(mode==3){LED = 0xEF;msg_send.data[2]= 0x01;msg_send.data[0]= 0x00; msg_send.data[1]= 0x00; msg_send.data[3]= 0x00; }else if(mode==4){LED = 0xBF;msg_send.data[3]= 0x01;msg_send.data[0]= 0x00; msg_send.data[1]= 0x00; msg_send.data[2]= 0x00; }elseLED = 0xff;delay1ms(200);if(!MSCANSendMsg(msg_send)) //发送过程出现错误for(;;);elseLEDCPU=~LEDCPU;}
}
4. 界面演示
开发板上按动 KEY1:报文 01 00 00 00 FF FF FF FF 指示小车往上移动
开发板上按动 KEY2:报文 00 01 00 00 FF FF FF FF 指示小车往下移动
开发板上按动 KEY3:报文 00 00 01 00 FF FF FF FF 指示小车往左移动
开发板上按动 KEY4:报文 00 00 00 01 FF FF FF FF 指示小车往右移动

小车向上移动:

小车向左移动:

相关文章:
MC9S12G128开发板—实现按键发送CAN报文指示小车移动功能
实验环境:MC9S12G128开发板 基本功能:控制开发板上的按键,模拟车辆移动的上下左右四个方位,通过can通信告诉上位机界面,车辆轨迹的移动方位。 1. 1939报文发送的示例代码 MC9S12G128开发板1939协议发送can报文数据的…...
尚融宝22-提交借款申请
目录 一、需求介绍 二、图片上传 (一)前端页面 (二)实现图片上传 三、数据字典展示 (一)后端 (二)前端 四、表单信息提交 (一)后端 1、VO对象&…...
机器学习在生态、环境经济学中的实践技术应用及论文写作
近年来,人工智能领域已经取得突破性进展,对经济社会各个领域都产生了重大影响,结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一,目前也在飞快的融入计量经济学研究。表面上机器学习通常使用大数据…...
Android硬件通信之 WIFI通信
一,简介 1.1 随着网络的普及和通信技术的发展,网络的传输速度也越来越快,wifi技术也还成为手机设备最基本的配置。我们可以通过wifi实现手机与手机之前的信息传输,当然也可以与任意一台有wifi模块的其它设备传输。 1.2 wifi与蓝…...
面试官:“请描述一下Android系统的启动流程”
作者:OpenGL 前言 什么是Android启动流程呢?其实指的就是我们Android系统从按下电源到显示界面的整个过程。 当我们把手机充好电,按下电源,手机会弹出相应启动界面,在等了一段时间之后,会弹出我们熟悉的主…...
k8s delete node 后 重启kubelet会自己加入到集群 ?
原因 当执行kubectl delete node命令时,Kubernetes API服务器会收到该节点的删除请求,并将其从集群中删除。此时,kubelet服务在该节点上仍然在运行,但已经不再与集群通信。 当您重启kubelet服务时,它会重新向API服务…...
REXROTH液压方向阀安装须知
安装规程 阀安装到系统之前,应该对照订货型号比较其型号说明。 确认阀的连接表面和底板无水分,没有油。 - 清洁: ‧ 安装元件时,确认工业阀和周围干净 ‧ 油箱须密闭,以防止外部污染 ‧ 安装之前&…...
【数据结构实验】哈夫曼树
【数据结构实验】哈夫曼树 简介: 为一个信息收发站编写一个哈夫曼码的编/译码系统。文末贴出了源代码。 需求分析 完整的系统需要具备完整的功能,包含初始化、编码、译码、印代码文件和印哈夫曼树,因此需要进行相应的文件操作进行配合。哈…...
浏览器不好用?插件来帮忙
一、目的 浏览器本身具备的功能并不完善,不同的用户可以为自己浏览器增加想要功能,使得浏览器更能符合自己的需求,提高浏览器使用的舒适度 二、推荐插件 AdblockPlus LastPass(密码记录,全平台通用) Dar…...
Qt Quick - 容器控件综述
Qt Quick - 容器控件综述 一、概述二、ApplicationWindow Control三、Frame Control四、GroupBox Control五、Page Control六、Pane Control七、ScrollView Control八、StackView Control九、SwipeView Control十、TabBarControl十一、ToolBar控件 一、概述 Qt Quick Controls…...
面试题30天打卡-day06
1、什么是反射机制?说说反射机制的优缺点、应用场景? 反射机制:Java的反射机制是在运行状态,对于任意一个类,都能够动态的获得这个类的属性和方法;对于一个对象,都能动态的调用它当中的方法和属…...
Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理
Spring Boot的基础使用和< artifactId>spring-boot-maven-plugin</ artifactId>爆红的处理 Spring Boot概述 微服务概述 微服务Microservices是一种软件架构风格,他是以专注于单一责任与功能的小型功能区块Small Building Blocks 为基础,…...
项目管理中的必不可少的强大工具有哪些?
在项目管理中,我们总是想寻求一套功能强大的工具,来满足我们多样化的需求。但往往事与愿违,这样强大的工具总是费用高,操作复杂,需安装多个插件。下面,我就给大家推荐一款项目管理软件 ~Zoho Projects&…...
嵌入式学习笔记——SPI通信的应用
SPI通信的应用 前言屏幕分类1.3OLED概述驱动芯片框图原理图通信时序显示的方式页地址、列地址初始化指令 程序设计初始化代码初始化写数据与写命令清屏函数 初始化代码字符显示函数 总结 前言 上一篇中介绍了STM32的SPI通信,并根据框图和寄存器进行了SPI通信的初始…...
.Net下企业应用系统架构构建心得
在开始架构设计之前,需要了解一下架构是什么,按照IEEE标准的定义是: Architecture 是一个系统的基本组织,它蕴含于系统的组件中、组件之间的相互关系中、组件与环境的相互关系中、以及呈现于其设计和演进的原则中。 (The embodied…...
【社区图书馆】关于Mybatis原理学习的读后感
1、为什么会看原理书籍 Mybatis是我们Java后端开发中的主流ORM框架,基本都会在工作中用到。所以,是既熟悉,又陌生。熟悉是因为一直都在使用,而陌生则是对于其内部原理还不够深入。刚好近期的工作中,又遇到了一个需求&a…...
C++ Primer阅读笔记--表达式和运算符的使用
1--左值和右值 C 的表达式有右值(rvalue, are-value)和左值(lvalue, ell-value)两个形式;当一个对象被用作右值时,使用的是对象的值(内容);当对象被用作左值时࿰…...
npm install xxx的执行过程及示例
当你在终端中执行npm install xxx命令时,npm会执行以下步骤来安装软件包: 检查本地npm缓存中是否有该软件包。 如果本地npm缓存中已经存在该软件包,npm将直接从缓存中提取软件包并安装。这将显著加快安装速度,因为npm无需从网络下…...
excel数据分析比赛
基础 sql:百度网盘 请输入提取码 excel函数 <...
Git使用GitHub说明
GitHub为公网代码托管仓库,Git可以将本地仓库推送到GitHub管理。 步骤:1、注册GitHub账号 2、创建仓库(会得到一个仓库地址) 3、推送本地仓库 git remote add origin https://github.com/jianshengchuanqi/xuesezhanjiang.git…...
SEO_资深专家分享的3个高级SEO策略与思路
SEO资深专家分享的3个高级SEO策略与思路 在当今竞争激烈的数字营销环境中,搜索引擎优化(SEO)不仅仅是一个技术问题,更是一个战略问题。作为一名资深SEO专家,我有幸分享三个高级SEO策略,帮助你在竞争中脱颖…...
2026年毕业论文写作避坑:学术AI工具怎么选才靠谱?
每到开题季,后台总会收到相似的问题:现在AI这么强,写论文到底该用哪个?不少同学的教训是——随便找个通用聊天AI,输入题目“一键生成”几万字,结果查重不过、AI检测亮红灯、参考文献全是编的,导…...
ChatGLM3-6B Streamlit应用案例:代码辅助、长文档摘要、闲聊三合一
ChatGLM3-6B Streamlit应用案例:代码辅助、长文档摘要、闲聊三合一 1. 项目简介:你的本地全能AI助手 想象一下,你正在写一段复杂的代码,卡在某个逻辑上;或者面对一份几十页的技术文档,需要快速提炼核心&a…...
文墨共鸣大模型在网络安全领域的应用:模拟攻击脚本分析与安全报告撰写
文墨共鸣大模型在网络安全领域的应用:模拟攻击脚本分析与安全报告撰写 最近和几个做安全的朋友聊天,他们都在抱怨同一个问题:每天面对海量的告警日志和五花八门的攻击脚本,分析起来耗时费力,写报告更是头疼。技术细节…...
2026年青少年信息素养大赛备赛指南(含历年真题)
📢 2026年青少年信息素养大赛备赛指南各位家长、老师好!随着教育的不断发展,少儿编程已成为孩子综合能力培养的重要一环。今天给大家整理一下近期备受关注的青少年信息素养大赛相关资讯,以及备赛资源。🏆 赛事简介全国…...
创建使用费曼学习技能,让 AI 帮你快速学习新领域知识(实战教程)
看完一篇文章、学习一个知识,当时感觉懂了。过三天,有人问你,你发现说不清楚。又或者准备运用这个知识,尝试解决问题,又觉得似是而非。这不是记忆力的问题,是你从来没有真正理解过它。有个方法专门解决这件…...
AI开发效率翻倍:TensorFlow-v2.9镜像完整开发环境实测体验
AI开发效率翻倍:TensorFlow-v2.9镜像完整开发环境实测体验 你是不是也经历过这样的场景?新项目启动,满怀激情准备大干一场,结果第一天就卡在了环境配置上。CUDA版本不对、依赖库冲突、Python环境混乱……光是让TensorFlow成功识别…...
OpenClaw+千问3.5-9B爬虫方案:智能解析与数据入库
OpenClaw千问3.5-9B爬虫方案:智能解析与数据入库 1. 为什么需要智能爬虫 去年我接手了一个市场调研项目,需要从30多个电商平台抓取商品信息和用户评价。传统爬虫开发让我吃尽苦头——每个网站都要单独写解析规则,反爬机制层出不穷ÿ…...
M5Stamp C3 Mate LED驱动库:基于RMT的WS2812B精简控制方案
1. 项目概述M5StampC3LED 是专为 M5Stamp C3 Mate 模块设计的 LED 控制库,其本质是一个轻量级封装层,用于驱动板载的 Adafruit NeoPixel(WS2812B 兼容)RGB LED。该库不直接实现底层时序协议,而是基于 ESP-IDF 或 Ardui…...
JAE日本航空电子推出满足汽车市场小型防水最新需求的MX80系列连接器
随着汽车电子化和高功能化的演进,每辆汽车所搭载的电子设备数量逐年增加。为了在有限安装空间内集成更多的功能,车载用电子零部件必然要求进一步小型化,高功能化。同时由于连接各设备之间的布线空间也在缩小,因此开发小型化&#…...
