基于STM32的8位定时器流水灯proteus仿真

硬件设计

链接:https://pan.baidu.com/s/1XzlxgI1GYLi0o0NwNEUZPg
提取码:dqbk

仿真图如下所示:
总共8位LED组成的流水灯具有加快、放慢、换方向1以及方向2等功能
在这里插入图片描述

程序设计

#include "led.h"


void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{   
	static unsigned char i=0;
	static int j=7;
	static unsigned char flag = 0;
	static unsigned char temp = 0;
	static unsigned char dri = 0;
	static unsigned char timcontrol=8;
	static unsigned char timcrl=8;
	if(htim==(&htim1))
 {
		keyscan();	
 }
   if(htim==(&htim3))
 { 
	if(mode==0)
	HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_7|GPIO_PIN_5 
                          |GPIO_PIN_6|GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_SET);
	if(mode==1&&flag>=timcontrol){
		flag=0;
	GPIOB->ODR =~(0x0001<<i);
		i++;
	if(i>=8)
	 i=0;
	}
	if(mode==2&&temp>=timcrl){
	temp=0;
	GPIOB->ODR =~(0x0001<<j);
	 j--;
	if(j<=-1)
	 j=7;
	if(dri==0)
	timcrl++;
	if(dri==1)
	timcrl--;
	if(timcrl>=14)
	dri=1;
	if(timcrl<=2)
	dri=0;
	}
	if(mode==3)	{
    timcontrol++;
	mode=1;
	if(timcontrol>=14)
	timcontrol=14;
	}		
	if(mode==4){
	timcontrol--;
	mode=1;
	if(timcontrol<=2)
	timcontrol=2;
	}
	flag++;
	temp++;
 }
}


.

.

  • 6
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值