使用stm32f103c8实现一个简单的运动会计时器

没事做突然想写博客,然后发现没有刷什么有价值的题,就写个做实验的记录吧。
首先是构思的思维导图
思维导图
可以看到,我用到了按键结合中断作为输入,使用定时中断来计数,同时显示使用的是oled屏幕,大小为128*64个像素点。
屏幕图片源水印淘宝店( ̄▽ ̄)"
oled

ok开始第一步,配置管脚图

oled管脚*7,一个3v3,一个GND,还有五个GPIO输出。
这边用的是串行通信的方法,各个管脚功能分别是
CS:OLED 片选信号。
RST(RES):硬复位 OLED。
DC:命令/数据标志(0,读写命令;1,读写数据)。
SCLK:串行时钟线。在 4 线串行模式下,D0 信号线作为串行时钟线 SCLK。
SDIN:串行数据线。在 4 线串行模式下,D1 信号线作为串行数据线 SDIN。
oled管脚:
CS~PA0
DC/RS~PA2 //这边的DC管脚在程序里面被记作了RS,都一样
RST~PA1
SCLK/D0~PB5
SDIN/D1~PB6

按键管脚*5,一个5v,一个GND,3个GPIO输入。
按键功能为
key0:开始和暂停计时
key1:重置计时
key2:计次,多人跑步的时候记下各个人情况
按键管脚:
key0~PB0
key1~PB1
key2~PB2

ok,既然心里有B数了,那么就可以开始设置初始化函数了

KEY_INIT(),我设置为上拉输入了,管脚改一下,就不多说了。
EXTI_INIT(),从按键设置可以看到,应该选中断线0,1,2,配置管脚为下降沿触发,设置NVIC中断优先级,中断服务程序先留着。
计时器初始化,这边用三号定时中断,TIM3_Int_Init(100,

使用OLED显示模块来显示循迹小车的运行时间,你可以按照以下步骤进行操作: 1. 连接硬件:将OLED显示模块连接到51单片机的相应引脚上。具体的引脚连接方式请参考你所使用的OLED显示模块的说明文档。 2. 引入OLED库文件:在你的C代码中,需要引入相应的OLED库文件,以便进行OLED的初始化和显示操作。你可以搜索并下载支持你所使用的OLED显示模块的库文件,并将其添加到你的工程中。 3. 初始化OLED:在主函数中,调用相应的函数来初始化OLED显示模块。这通常需要设置OLED的引脚、通信协议等参数。 4. 计时器:为了计算运行时间,你可以使用一个计时器来记录程序运行的时间。在51单片机中,你可以使用定时器/计数器来实现。以下是一个示例: ```c unsigned int time = 0; // 运行时间,单位:秒 // 定时器中断服务函数 void timerInterrupt() interrupt 1 { TH0 = 0xFC; // 设置定时器初值 TL0 = 0x67; time++; // 每秒递增一次 } void initTimer() { TMOD = 0x01; // 设置定时器0为模式1 TH0 = 0xFC; // 设置定时器初值 TL0 = 0x67; ET0 = 1; // 允许定时器0中断 EA = 1; // 允许总中断 TR0 = 1; // 启动定时器0 } ``` 5. 显示运行时间:在主函数的无限循环中,调用相应的函数来更新并显示运行时间。以下是一个示例: ```c void main() { initOLED(); // 初始化OLED显示模块 initTimer(); // 初始化定时器 while(1) { // 更新并显示运行时间 displayTime(time); } } ``` 在 `displayTime()` 函数中,你需要根据OLED库文件提供的函数来实现将运行时间显示在OLED上的操作。 通过以上步骤,你可以使用OLED显示模块来显示循迹小车的运行时间。请根据你所使用的具体硬件和库文件进行相应的调整和修改。
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值