新手上路
- 积分
- 20
- 金钱
- 20
- 注册时间
- 2018-9-5
- 在线时间
- 5 小时
|
5金钱
主程序:
#include "stm32f10x.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "motion.h"
#include "moto.h"
#include "timer.h"
#include "oled.h"
#include "bmp.h"
int jump;
int times = 0;
int timer3 = 0;
void delayms(u16 tim)
{
u16 p=0;
while(tim--)
{
p=12000;
while(p--);
}
}
void oled_display()
{
OLED_ShowCHinese(0,0,0);//佳
OLED_ShowCHinese(18,0,1);//臻
OLED_ShowCHinese(36,0,2);//牌
OLED_ShowCHinese(54,0,3);//抓
OLED_ShowCHinese(72,0,4);//娃
OLED_ShowCHinese(90,0,5);//娃
OLED_ShowCHinese(108,0,6);//机
OLED_ShowCHinese(0,3,7);//欢
OLED_ShowCHinese(18,3,8);//迎
OLED_ShowCHinese(36,3,9);//使
OLED_ShowCHinese(54,3,10);//用
OLED_ShowCHinese(72,3,11);//请
OLED_ShowCHinese(90,3,12);//投
OLED_ShowCHinese(108,3,13);//币
OLED_ShowCHinese(0,6,14);//可
OLED_ShowCHinese(18,6,15);//玩
OLED_ShowCHinese(66,6,16);//次
OLED_ShowCHinese(108,6,17);//秒
}
//中断抓娃娃程序1;
void star1(void)
{
TIM_Cmd(TIM3, DISABLE);//开中断
TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE ); //使能指定的TIM3中断,允许更新中断
timer3=0;
OLED_ShowNum(80,6,timer3,3,16);
TIM_SetCompare1(TIM4,1955);
IA1=1;
IB1=0;
delayms(2000);
IA1=0;
IB1=0;
TIM_SetCompare1(TIM4,1860);
delayms(2000);
while (limit_up == 1)
{
IA1=0;
IB1=1;
}
IA1=0;
IB1=0;
while (limit_b == 1)
{
b_stepmotor();
}
while (limit_r == 1)
{
r_stepmotor();
}
delayms(1000);
TIM_SetCompare1(TIM4,1955);
delayms(2000);
jump = 1;
times = times - 1;
OLED_ShowNum(36,6,times,3,16);
}
//抓娃娃程序2;
void star2(void)
{
TIM_Cmd(TIM3, DISABLE);//开中断
TIM_ITConfig(TIM3,TIM_IT_Update,DISABLE ); //使能指定的TIM3中断,允许更新中断
timer3=0;
OLED_ShowNum(80,6,timer3,3,16);
TIM_SetCompare1(TIM4,1955);
IA1=0;
IB1=1;
delayms(2000);
IA1=0;
IB1=0;
TIM_SetCompare1(TIM4,1860);
delayms(2000);
if(limit_up != 0)
{
while (limit_up != 0)
{
IA1=1;
IB1=0;
}
}
IA1=0;
IB1=0;
while (limit_b == 1)
{
b_stepmotor();
}
while (limit_r == 1)
{
r_stepmotor();
}
delayms(2000);
TIM_SetCompare1(TIM4,1955);
delayms(2000);
jump = 1;
times = times-1;
OLED_ShowNum(36,6,times,3,16);
}
int main(void)
{
TIM4_PWM_Init(1999,719);
delay_init(); //延时初始化
KEY_Init();
OLED_Init(); //初始化OLED
OLED_Clear();
oled_display();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
TIM3_Int_Init(9999,7199);//10Khz的计数频率,计数到5000为500ms
while(1)
{
jump = 0;
TIM_SetCompare1(TIM4,1955);
if (key2 == 0)
{
while(key2 == 0);
delay_ms(20);
if (key2 == 1)
{
times =times+1;
}
}
OLED_ShowNum(36,6,times,3,16);
if (key == 0 & times!=0)
{
while(key == 0);
delay_ms(20);
if (key == 1)
{
TIM_Cmd(TIM3, ENABLE);//开中断
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
while (jump == 0)
{
move();
if (key == 0)
{
while(key == 0);
delay_ms(20);
if (key == 1)
{
TIM_SetCompare1(TIM4,1955);
IA1=0;
IB1=1;
delayms(2000);
IA1=0;
IB1=0;
TIM_SetCompare1(TIM4,1900);
delayms(2000);
while (limit_up == 1)
{
IA1=1;
IB1=0;
}
IA1=0;
IB1=0;
while (limit_b == 1)
{
b_stepmotor();
}
while (limit_r == 1)
{
r_stepmotor();
}
delayms(2000);
TIM_SetCompare1(TIM4,1955);
delayms(2000);
jump = 1;
times = times-1;
OLED_ShowNum(36,6,times,3,16);
}
}
}
jump = 0;
}
}
}
}
[page
|
|