小车测速并通过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;
		}
	}
}

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.实验效果

在这里插入图片描述

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值