MC9S12G128开发板—实现按键发送CAN报文指示小车移动功能

news/2024/4/20 22:03:44/文章来源:https://blog.csdn.net/Logintern09/article/details/129580127

实验环境: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 指示小车往右移动

在这里插入图片描述

小车向上移动:

在这里插入图片描述

小车向左移动:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_103158.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php+vue 校友交流平台

1.普通用户功能分析 &#xff08;1&#xff09;用户注册&#xff1a;用于注册校友录用户。 &#xff08;2&#xff09;用户登录&#xff1a;供校友录用户登录。 &#xff08;3&#xff09;资料修改&#xff1a;修改当前登录使用者信息。 &#xff08;4&#xff09;…

“量子+生成式AI”!IBM联合生物制药公司Moderna进行疫苗研究

​ &#xff08;图片来源&#xff1a;网络&#xff09; 4月20日&#xff0c;以COVID-19疫苗而闻名的生物技术和制药公司Moderna Inc.表示&#xff0c;宣布正在与IBM公司合作&#xff0c;利用量子计算和生成式人AI探索推进研究mRNA技术的方法。 双方签署了一项协议&#xff0c;允…

【社区图书馆】Fundamentals Of Computer Graphics——The beginning of computer graphics

目录 English 中文 English "Fundamentals Of Computer Graphics" is a classic textbook on computer graphics, also known as the "Tiger Book". It is considered one of the best introductory texts in the field of computer graphics. The book …

022 - C++ 析构函数

上期我们讨论了构造函数。认识了它是什么以及如何使用它。如果你没有看上一期&#xff0c;那么你一定要回去看一下。 今天我们要讨论一下它的“孪生兄弟”&#xff0c;析构函数&#xff0c;它们在某些方面非常相似。 构造函数是你创建一个新的实例对象时运行&#xff0c;而析…

【iOS】AVPlayer 视频播放

视频播放器的类别 iOS开发中不可避免地会遇到音视频播放方面的需求。 常用的音频播放器有 AVAudioPlayer、AVPlayer 等。不同的是&#xff0c;AVAudioPlayer 只支持本地音频的播放&#xff0c;而 AVPlayer 既支持本地音频播放&#xff0c;也支持网络音频播放。 常用的视频播放…

深入理解Javascript事件处理机制

深入理解javascript事件处理机制 前言 在开发web应用程序时&#xff0c;事件处理机制是javascript中至关重要的一部分。许多高级特性&#xff0c;如事件冒泡、事件捕获和事件委托&#xff0c;都是通过事件处理来实现的。熟练掌握这些技术可以帮助我们更好地组织代码、提高代码…

C++篇----类、封装、类访问权限、类实例化

文章目录 一、面向过程和面向对象二、类 一、面向过程和面向对象 c语言是面向过程的编程语言 c是面向对象的编程语言 面向过程&#xff1a;关注过程&#xff0c;对于求解问题的不走&#xff0c;调用函数逐步解决问题 就洗衣服来说&#xff1a;洗衣服需要放水&#xff0c;倒洗衣…

10个必备的建筑可视化3dmax插件

当日复一日地处理项目时&#xff0c;很容易陷入舒适但效率不高的工作流程中。 插件是在不牺牲工作质量的情况下改进和加快工作流程的好方法。 尤其是在建筑可视化时&#xff0c;快节奏的行业往往需要艺术家灵活机智。 在本文中&#xff0c;我们将介绍 10 个最好的 3ds Max 插件…

C语言从入门到精通第11天(数组的基本操作)

数组的基本操作 数组的概念一维数组二维数组 数组的概念 在程序设计中&#xff0c;为了方便处理数据把具有相同类型的若干变量按有序形式集合在一起&#xff0c;这些按序排列的同类数据元素的集合称为数组。 在C语言中&#xff0c;数组属于构造数据类型&#xff0c;一个数组可…

Linux文本处理三大利器Grep、AWK、Sed

写在前面 Linux三剑客是文本处理工具&#xff0c;它们可以帮助我们快速、高效地对文本进行处理。其中包括了grep、awk、以及sed这三个强大的命令行工具。 Linux 三剑客主要作用: grep&#xff0c;它可以根据正则表达式查找相关内容并打印对应的数据。awk&#xff0c;它可以根…

C. Painting the Fence(思维 + 前缀和)

Problem - C - Codeforces You需要油漆一个由n个部分组成的长围栏。不幸的是&#xff0c;它没有被涂漆&#xff0c;所以你决定雇用q名画家来完成这项工作。第i名画家将会油漆所有满足lisxsri的部分x. 不幸的是&#xff0c;你的预算很紧&#xff0c;所以你只能雇用q-2名画家。显…

数据湖Iceberg-简介(1)

文章目录 Iceberg简介概述特性数据存储、计算引擎插件化实时流批一体数据表演化&#xff08;Table Evolution&#xff09;模式演化&#xff08;Schema Evolution&#xff09;分区演化&#xff08;Partition Evolution&#xff09;列顺序演化&#xff08;Sort Order Evolution&a…

itop-3568开发板驱动学习笔记(22)设备树(一)设备树基础

《【北京迅为】itop-3568开发板驱动开发指南.pdf》 学习笔记 文章目录 设备树简介设备树编译设备树语法设备根节点设备子节点节点名称reg 属性#address-cell 和 #size-cells 属性model 属性status 属性compatible 属性aliases 节点chosen 节点device_type 属性自定义属性 设备树…

Linux云服务器的使用,以及运行Python程序

目录 1、使用Linux云服务器的软件 2、Linux系统运行Python程序 3、Linux系统查看包、虚拟环境、安装包等 以下几个深度学习服务器都不错&#xff1a;智星云、AutoDL、恒源云 1、使用Linux云服务器的软件 MobaXterm_Personal 推荐MobaXterm_Personal mobaxterm是一款方便网站…

数据库管理新定义:一款纯Web化免费SQL开发工具,免安装

SQL Studio是一款由麦聪软件研发的多数据库管理工具&#xff0c;提供Windows、Linux 和 MacOS三种版本的软件包&#xff0c;支持中英文两种语言。SQL Studio是用Java编写的&#xff0c;默认使用 JDK 8进行编译。 下载看这里: [SQLStudio] (http://www.maicongs.com/#/home/web)…

地热井监测控制系统解决方案

概述 地热井监测控制系统主要是对地热井采水和回灌进行流量、温度、水位&#xff08;压力&#xff09;等参数的实时监测&#xff0c;对地热站现场环境进行实时视频监控。地热井现场和取水井、回灌井安装监测装置&#xff0c;通过无线传输设备将数据实时传输至自然资源局已建中…

上海车展:预售价109.8万元,仰望U8见证国产品牌崛起

如果要评选2023上海车展上比亚迪展台“最亮的星”&#xff0c;估计很多媒体和观众都会毫不迟疑地把票投给仰望U8。 没办法&#xff0c;因为在本届车展上&#xff0c;仰望U8的表现实在是太吸睛了。 作为比亚迪旗下的高端新能源品牌&#xff0c;仰望汽车在上海车展上携两款车型—…

【Leetcode -141.环形链表 -2.两数相加】

Leetcode Leetcode -141.环形链表Leetcode -2.两数相加 Leetcode -141.环形链表 题目&#xff1a;给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给…

测试Ocr工具IronOCR(续2:编写圈选图片识别文本的程序)

上篇文章介绍了加载图片并圈选图片中文字区域的程序实现方式&#xff0c;本文基于此实现识别圈选区域文字内容的程序。主要识别语言包括英文和中文。IronOCR包中自带英文语言包&#xff0c;项目还需安装中文语言包&#xff0c;建议直接安装IronOcr.Languages.Chinese语言包&…

什么样的测试才是优秀的测试

什么样的测试才是优秀的测试 优秀的测试应该包括以下要素&#xff1a; 测试代码的可读性和可维护性 代码在项目中及特定源代码中的组织方式 测试所检查的内容 测试的可靠性及可重复性 测试对测试替身的使用 可读的代码才是可维护的代码 代码较差的可读性与缺陷密度密切相…