我在百科荣创企业实践——简易函数信号发生器(1)

        对于高职教师来说,必不可少的一个任务就是参加企业实践。这个暑假,本人也没闲着,报名参加了上海市电子信息类教师企业实践。7月8日到13日,有幸来到美丽的泉城济南,远离了上海的酷暑,走进了百科荣创科技发展有限公司。在这短短的一周时间里,我结合自己的教学经验和企业的需求,对一个简易函数信号发生器的嵌入式项目做了教学内容的转换。接下来,就用博客的形式,把这次转换后的成果分享出来,如果您觉得有用,还望多多点赞和转发!

 


        针对本项目,笔者根据自己的理解,力求做到循序渐进和逐步深入,计划用6篇文章来展开,本文是第一篇,先从整体上对本项目有个大致的了解。

一、任务概述

1.1 项目效果演示

        项目的整体效果如下面的视频所示,基于百科荣创的STM32F407核心板,实现了一个简易的函数信号发生器,可以输出三角波、锯齿波、正弦波和方波,可以通过按键调整波形的类型、幅度和频率,并在屏幕上呈现信号的基本信息和按键控制信息。

用STM32捣鼓了一下函数信号发生器,可以调整波形的种类、幅度和频率

 

        这里先声明一点,该工程的源码是百科荣创的工程师写的,本人只是站在一个教师的角度,把这个工程项目做了必要的分解和加工,形成一份循序渐进的教程,以帮助知识和技能尚不完备的嵌入式学习者。

1.2 硬件、配件与仪器

        图1和图2是本项目开发过程中用到的硬件、配件以及仪器,核心板上的主控芯片是STM32F407IGT6,显示屏是3.5寸的触摸屏(主控芯片为ILI9486),示波器品牌为优利德,型号是7102C。

图1 本项目用到的硬件及其配件
图2 优利德7102C示波器

1.3 重点与难点

        使用微控制器做信号发生器,最核心的就是DAC的控制,这也是本项目的重点。至于难点,个人觉得应该在信号变化规律的控制、按键的交互以及屏幕上UI界面的设计。在接下来的内容中,本人将逐步累加和迭代,由易到难的实现每个功能。

1.4 工程文件清单

        图3是本项目的工程文件清单,重点关注的是DAC驱动代码和主程序代码的编写,显示屏、按键、LED这些驱动文件不做解读,后续将直接调用其驱动。

图3 本项目的工程文件清单

1.5 任务推进流程

        笔者根据自己的理解认知和教学经验,将本项目分成了如下5个子任务来逐步推进:

  1. DAC基本输出(仅使用按键,单纯控制DAC输出指定的电压,用万用表测量)
  2. DAC输出三角波(加上定时器来触发DAC)
  3. DAC输出正弦波(加上了DMA搬运DAC数据,用按键切换波形)
  4. 部署UI界面(在屏幕上显示必要的波形信息)
  5. 加上频率和幅度控制(可以用按键对波形的频率和幅度进行加减)

 (第一部分完,共六部分)

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
荣创嵌入式小车的C语言代码可以根据具体需求来编写,以下是一个简单的示例代码: ```c #include <reg52.h> sbit IN1 = P1^0; // 电机控制引脚 sbit IN2 = P1^1; void delay(unsigned int time) // 延时函数 { unsigned int i, j; for (i = time; i > 0; i--) for (j = 110; j > 0; j--); } void forward() // 前进函数 { IN1 = 1; IN2 = 0; delay(1000); // 前进1秒 IN1 = 0; IN2 = 0; // 停止 } void backward() // 后退函数 { IN1 = 0; IN2 = 1; delay(1000); // 后退1秒 IN1 = 0; IN2 = 0; // 停止 } void turnLeft() // 左转函数 { IN1 = 0; IN2 = 0; delay(500); // 前进0.5秒 IN1 = 0; IN2 = 1; delay(1000); // 右转1秒 IN1 = 0; IN2 = 0; // 停止 } void turnRight() // 右转函数 { IN1 = 0; IN2 = 0; delay(500); // 前进0.5秒 IN1 = 1; IN2 = 0; delay(1000); // 左转1秒 IN1 = 0; IN2 = 0; // 停止 } void main() { while (1) { forward(); // 执行一次前进 delay(1000); // 停顿1秒 backward(); // 执行一次后退 delay(1000); // 停顿1秒 turnLeft(); // 执行一次左转 delay(1000); // 停顿1秒 turnRight(); // 执行一次右转 delay(1000); // 停顿1秒 } } ``` 上述代码使用了8051系列单片机的C语言开发,通过控制四个电机引脚的高低电平信号来控制小车的运动。通过调用不同的函数可以实现小车的前进、后退、左转和右转功能。在主循环中,小车将不断执行这四个动作,并在每个动作执行后停顿1秒钟。当然,真实的嵌入式小车代码可能更加复杂,需要根据具体的硬件配置和功能需求进行编写和调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南耿先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值