#include "STC15F2K60S2.h"
#include "oled.h"
#include "DS.h"
#include "stdio.h"
#include <intrins.h>
u32 speed=70;
bit status=0;
sbit SB1 = P0^3; //按钮定义
sbit SB2 = P0^2;
sbit SB3 = P0^1;
sbit SB4 = P0^0;
sbit ENA=P1^4;///L298N的ENA
sbit IN1=P1^5;
sbit IN2=P1^6;
unsigned char i,z,m=0; //z加时 m标志
unsigned char n=0;
void dj();
extern unsigned int Display_Digit[]={0,0,0,0};
int main(void)
{ AUXR |= 0x80; //定时器时钟1T模式
TMOD = (TMOD & 0xF0)|0x11;
TL1 = 0x00; //设定定时器初值
TH1 = 0xDC; //设定定时器初值
TL0=0x10;
TH0=0xff;
TR1=0;
TF0 = 0; //清除TF0标志
TF1=0;
TR0 = 1; //定时器0开始计时
EA = 1; //总中断打开
ET1=1;
ET0 = 1; //定时器0中断打开
ENA=1;
OLED_Init(); //初始化OLED
OLED_On();
delay_ms(100);
OLED_Clear();
OLED_ShowCHinese(36,4,0);
OLED_ShowCHinese(54,4,1);
OLED_ShowCHinese(72,4,2);
OLED_ShowCHinese(90,4,3);
delay_ms(100);
OLED_Clear();
Delay_ms1(5);
while(1)
{
OLED_ShowString(0,0,"speed",16);
OLED_ShowString(54,0,":",16);
OLED_ShowString(0,2,"status",16);
OLED_ShowString(54,2,":",16);
OLED_ShowString(0,4,"Temp",16);
OLED_ShowString(36,4,":",16);
OLED_ShowString(0,6,"time",16);
OLED_ShowString(36,6,":",16);
xianshi();
if(SB1==0)
{
delay_ms(1);
if(SB1==0)
{
while(!SB1);
status=!status;
// uart_send_str(send_data);
}
}
if(SB2==0)
{
delay_ms(1);
if(SB2==0)
{
while(!SB2);
speed-=5;
// uart_send_str(send_data1);
}
}
if( status==1)
OLED_ShowString(64,2,"start",16);
else if(status==0)
OLED_ShowString(64,2,"stop ",16);
dj();
}
}
void dj()
{
if(speed==45)
speed=70;
if( speed==50)
OLED_ShowString(82,0,"1",16);
if( speed==55)
OLED_ShowString(82,0,"2",16);
if( speed==60)
OLED_ShowString(82,0,"3",16);
if( speed==65)
OLED_ShowString(82,0,"4",16);
if( speed==70)
OLED_ShowString(82,0,"5",16);
}
void int_tim0(void) interrupt 1
{
TL0 = 0x10; //设定定时器初值
TH0 = 0xff; //设定定时器初值
n++;
if(n==100)n=0;
if(status==1&&n>=speed)
{IN1=1;
IN2=0;}
else
{IN1=0;
IN2=0;}
}
|