• 小车测速并通过OLED显示


    小车测速并通过OLED显示

    拿测速并通过串口发送的代码进行修改

    1.增加OLED的文件

    增加IIC.c,OLED.c,OLEDASCII.h,相应头文件也加载进来,直接在OLED显示字符串(用厂商代码)的程序中拷贝这些文件进来,然后整合

    2.在main函数中进行调用

    main函数中就调用OLED初始化函数,然后清屏,显示一个自己想显示的字符串,然后在循环中调用厂商函数显示速度即可

    extern unsigned int ResultSpeed;
    extern unsigned char signal;	//发送标志,当定时器2将其改为1时串口发送数据
    char recspeed[24];
    
    void main()
    {
    	Timer0Init();
    	Timer2Init();
    	Int0_Init();
    	UartInit();
    	OLED_Init();	//OLED初始化
    	OLED_Clear();	//先清屏
    	OLED_P8x16Str(1,0,"******BMW******");		//显示一个字符串
    	while(1)
    	{
    		//定时器2那边如果将标志位改为1,则进行数组格式组装并发送
    		if(signal == 1)
    		{
    			//sprintf将ResultSpeed按格式组建好后放到数组中去
    			sprintf(recspeed,"speed:%d cm/s ",ResultSpeed);	
    			Uart_SendString(recspeed);		//通过串口发送速度
    			OLED_P8x16Str(3,3,recspeed);	//通过OLED显示速度
    			signal = 0;
    		}
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    3.程序文件如下:

    main.c:主函数,定时器0、定时器2、外部中断、串口、OLED的初始化函数调用,然后调用清屏函数清一下屏,while循环内根据标志位发送速度到串口,同时也调用函数在OLED上显示速度

    Motor.c:小车前进、后退、左转、右转和停止的函数

    Delay.c:延时函数

    Timer0.c:定时器0初始化函数,中断处理函数中是前进的PWM调速

    Timer2.c:定时器2初始化函数,中断处理函数是定时1秒对外部中断的变量进行处理后清零

    Init0.c:外部中断0初始化函数,下降沿中断处理函数让变量不断+1

    IIC.c:IIC协议的起始信号,停止信号,发送一个字节函数和接收应答

    OLED.c:OLED写命令函数,写数据函数,清屏函数,初始化函数,显示文字、字母或数字函数,设置坐标和显示8*16点阵的函数

    OLEDASCII.h:含有一个8*16的ASCII码的点阵数组

    Uart.c:串口发送函数,串口中断处理函数,接收串口指令让小车启动,包括快速、中速、慢速模式选择
    在这里插入图片描述

    4.实验效果

    在这里插入图片描述

  • 相关阅读:
    umi4+vue3开发模板摸索
    redis的入门学习到起飞,就这一篇搞定
    基于Matlab使用 IMU、磁力计和高度计估计方向和高度(附源码)
    【广州华锐互动】VR综合布线虚拟实验教学系统
    【定义】矩阵
    分享记账软件 设置账本密码防止收支被他人修改
    Web前端HTML页面input属性总结
    GCC多平台编译会遇到小问题
    受众分析与卸载分析全面升级,HMS Core分析服务6.6.0版本上新
    【软考软件评测师】第十八章 计算机组成与体系结构(寻址方式)
  • 原文地址:https://blog.csdn.net/weixin_46251230/article/details/126404817