📄 main.c
字号:
#include <reg52.h>
#include <intrins.h>
#include "port.h"
#include "TS1620.h"
#include "delay.h"
#define uchar unsigned char
#define uint unsigned char
unsigned char Step_Total;
unsigned char Step_Current;
unsigned char Timer1;
unsigned char b;
/*
#define LED_Port P2
#define LCD_Port P0
*/
/******************LED PORT************************/
/*
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
sbit LED4=P2^3;
sbit LED5=P2^4;
sbit LED6=P2^5;
sbit LED7=P2^6;
sbit LED8=P2^7;
/******************CONTROL PORT*********************/
/*
sbit Run_Stop=P1^3;
sbit Auto_Man=P1^4;
sbit SW =P1^5;
sbit Gas =P1^7;
/******************LCD PORT*************************/
/*
sbit rs =P1^0;
sbit rw =P1^1;
sbit ep =P1^2;
*/
unsigned char code Timer_Data[8]={20,40,60,80,100,120,140,160};
unsigned char code Timer_S[8] ={1,2,3,4,5,6,7,8};
unsigned char code LED[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code LCD_Line2[8][16]=
{
{"Step1: 1s"},
{"Step2: 2s"},
{"Step3: 3s"},
{"Step4: 4s"},
{"Step5: 5s"},
{"Step6: 6s"},
{"Step7: 7s"},
{"Step8: 8s"}
};
unsigned char code LCD_Line1[2][10]=
{
{"Auto step"},
{"Manu step"}
};
//20=1s 20*x=xS
void Port_Init( )
{
P0=0xFF;
P1=0xFF; //
Gas1=0;
P2=0xFF;
P3=0xFF;
EA=0;
TMOD=0x01;
TR0=0;
ET0=1;
TH0=0x3C; //50ms
TL0=0xB0;
EA=1;
}
/*
unsigned char Scan_Key( )
{
return(1);
}
unsigned char Make_Key( )
{
return(1);
}
*/
unsigned char Model_Selcet( )
{
unsigned char a;
unsigned char b;
delay(10);
P3=0xFF;
nc(20);
a=P3;
delay(10);
b=P3;
if(a==b)
{
if(a>=8)
Step_Total=0;
else
Step_Total=a;
switch(a)
{
case 0xFC: Step_Total=1;break;
// case 0xFD: Step_Total=2;break;
case 0xF5: Step_Total=3;break;
case 0xF3: Step_Total=4;break;
case 0xED: Step_Total=5;break;
case 0xDD: Step_Total=6;break;
case 0xBD: Step_Total=7;break;
case 0x7D: Step_Total=8;break;
default: Step_Total=0;
}
}
return(Step_Total);
}
void Auto_Model( )
{
unsigned char i;
PutStr(0,0,LCD_Line1[0]);
Send_charstr(12,0,Step_Total);
for(i=0;i<Step_Total;i++)
{
while(SW==0); //
delay(10); //
while(SW==1) //
delay(1); //
while(SW==1) //
delay(10); //
while(SW==0) //
delay(10);
PutStr(0,1,LCD_Line2[i]);
// Send_charstr(4,1,k);
Timer1=0;
TH0=0x3C; //50ms
TL0=0xB0;
TR0=1;
_nop_( );
_nop_( );
Gas1=1;
P2=LED[i];
_nop_( );
_nop_( );
while(Timer1!=Timer_Data[i]);
TR0=0;
_nop_( );
_nop_( );
Gas1=0; //
Timer1=0;
TH0=0x3C;
TL0=0xB0;
}
}
void Man_Model( )
{
PutStr(0,0,LCD_Line1[1]);
if(SW==0)
{
delay(10);
if(SW==0)
Gas1=1;
else
Gas1=0;
}
}
void main( )
{
Timer1=0; //时间计数
Step_Total=0; //总步数
Step_Current=0; //当前的步数
Port_Init( );
lcd_init();
// Send_charstr(0,1,Step_Total);
// Step_Total=Model_Selcet( );
// Send_charstr(0,1,Step_Total);
// PutStr(0,0,LCD_Line2[0]);
Step_Total=Model_Selcet( );
Send_charstr(0,16,Step_Total);
while(1)
{
if(Auto_Man==1)
Auto_Model( );
else
Man_Model( );
}
}
void timer0( ) interrupt 1
{
TH0=0x3C; //50ms
TL0=0xB0;
Timer1++;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -