• 小车测速并通过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.实验效果

    在这里插入图片描述

  • 相关阅读:
    UOJ#748-[UNR #6]机器人表演【dp】
    Promise解决异步
    Go语言泛型1.18(2)
    java方法是什么?
    PSO粒子群优化CNN-优化神经网络神经元个数dropout和batch_size等超参数
    【C++笔试强训】第十三天
    使用R语言对S&P500股票指数进行ARIMA + GARCH交易策略
    肖sir__面试就业课___数据库
    PDF怎么翻译成中文?这些方法值得收藏
    cf 交互题
  • 原文地址:https://blog.csdn.net/weixin_46251230/article/details/126404817