?? m1602.c
字號(hào):
/*
**長(zhǎng)沙太陽(yáng)人電子有限公司SMC1602模擬接口參考程序
**電話(huà): 0731-4167806,4167808
**E-mail: www@sunman.cn
**Create by :譚超 E-mail: tanchao_1@126.com
**最后修改 : 2005年4月22日
*/
#include<reg51.h>
#include<intrins.h>
//sbit RSPIN = P3^2;
//sbit RWPIN = P3^1;
//sbit EPIN = P3^0;
sbit RSPIN = P3^0;
sbit RWPIN = P3^1;
sbit EPIN = P3^2;
unsigned char XPOS,YPOS;
void delay(unsigned int t)
{ unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<10;j++)
;
}
void lcdwaitidle(void)
{ P1=0xff;
RSPIN=0;
RWPIN=1;
EPIN=1;
while((P1&0x80)==0x80);
EPIN=0;
}
void lcdwcn(unsigned char c)
{ RSPIN=0;
RWPIN=0;
P1=c;
EPIN=1;
_nop_();
EPIN=0;
}
void lcdwc(unsigned char c)
{ lcdwaitidle();
lcdwcn(c);
}
void lcdwd(unsigned char d)
{ lcdwaitidle();
RSPIN=1;
RWPIN=0;
P1=d;
EPIN=1;
_nop_();
EPIN=0;
}
void lcdpos(void)
{ XPOS&=0x0f;
YPOS&=0x03;
if(YPOS==0x00)
lcdwc(XPOS|0x80);
else if(YPOS==0x01)
lcdwc((XPOS+0x40)|0x80);
else if(YPOS==0x02)
lcdwc((XPOS+0x10)|0x80);
else
lcdwc((XPOS+0x50)|0x80);
}
void lcdreset()
{ delay(150); lcdwcn(0x38);
delay(50); lcdwcn(0x38);
delay(50); lcdwcn(0x38);
lcdwc(0x38);
lcdwc(0x08);
lcdwc(0x01);
lcdwc(0x06);
lcdwc(0x0c);
}
void lcdfill(unsigned char n)
{
for(YPOS=0;YPOS<2;YPOS++)
for(XPOS=0;XPOS<16;XPOS++)
{ lcdpos();
lcdwd(n); }
}
void lcdwda(unsigned char x,unsigned char y,unsigned char *s)
{ YPOS=y;
for(XPOS=x;XPOS<16;XPOS++)
{ lcdpos();
lcdwd(*s);
s++;
delay(400);
}
}
main()
{ unsigned char i;
EPIN=0;
while(1)
{ lcdreset();
for(i=0x30;i<=0x3a;i++)
{ lcdfill(i);
delay(3500);
}
lcdfill(' ');
delay(2000);
lcdwda(0,0,"ABCDEFGHIJKLMNOPQRSTUVWXYZ");
lcdwda(0,1,"ZYXWVUTSRQPONMLKJIHGFEDCBA");
delay(2000);
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -