ShowState(); }
//中断0:加速程序
void SpeedUp() interrupt 0 {
if(RunSpeed>=12)
RunSpeed=RunSpeed-2; DoSpeed(); P1=0x01; cmd_wr(); ShowState(); }
//中断1:减速程序
void SpeedDowm() interrupt 2 {
if(RunSpeed<=100)
RunSpeed=RunSpeed+2; DoSpeed(); P1=0x01; cmd_wr(); ShowState(); }
int delay() //判断LCD是否忙 {
int a; start:
RS=0; RW=1; E=0;
第 42 页
for(a=0;a<2;a++);
E=1; P1=0xff; if(P1_7==0) return 0; else goto start; }
void inti_lcd() //设置LCD方式 {
P1=0x38; cmd_wr(); delay();
P1=0x01; //清除 cmd_wr(); delay();
P1=0x0f; cmd_wr(); delay();
P1=0x06; cmd_wr(); delay();
P1=0x0c; cmd_wr(); delay(); }
void cmd_wr() //写控制字 {
RS=0;
第 43 页
RW=0; E=0;
E=1; }
void show_lcd(int i) //LCD显示子程序 {
P1=i; RS=1; RW=0; E=0; E=1; }
void ShowState() //显示状态与速度 {
int i=0;
while(SpeedChar[i]!='\\0') {
delay();
show_lcd(SpeedChar[i]); i++; }
delay();
P1=0x80 | 0x0d; cmd_wr();
i=0;
while(SPEED[i]!='\\0') {
delay();
show_lcd(SPEED[i]); i++; }
第 44 页
delay(); P1=0xC0; cmd_wr();
i=0;
while(StateChar[i]!='\\0') {
delay();
show_lcd(StateChar[i]); i++; }
delay();
P1=0xC0 | 0x0A; cmd_wr();
i=0;
if(RunState==RIGHT_RUN) while(STATE_CW[i]!='\\0') {
delay();
show_lcd(STATE_CW[i]); i++; } else
while(STATE_CCW[i]!='\\0') {
delay();
show_lcd(STATE_CCW[i]); i++; } }
void clock(unsigned int Delay) //1ms延时程序 { unsigned int i;
for(;Delay>0;Delay--) for(i=0;i<124;i++); }
第 45 页