linux数码管实验源代码,数码管 - 素人派的个人页面 - OSCHINA - 中文开源技术交流社区...

int LCD1602_RS=12;

int LCD1602_RW=11;

int LCD1602_EN=10;

int DB[] = { 6, 7, 8, 9};

char str1[]="Welcome to";

char str2[]="geek-workshop by SuRen develop";

char str3[]="where is my address";

char str4[]="http://suren:6080/pageframe/main/mainpage.action?isLoadLanguage=true#";

void LCD_Command_Write(int command)

{

int i,temp;

digitalWrite( LCD1602_RS,LOW);

digitalWrite( LCD1602_RW,LOW);

digitalWrite( LCD1602_EN,LOW);

temp=command & 0xf0;

for (i=DB[0]; i <= 9; i++)

{

digitalWrite(i,temp & 0x80);

temp <<= 1;

}

digitalWrite( LCD1602_EN,HIGH);

delayMicroseconds(1);

digitalWrite( LCD1602_EN,LOW);

temp=(command & 0x0f)<<4;

for (i=DB[0]; i <= 9; i++)

{

digitalWrite(i,temp & 0x80);

temp <<= 1;

}

digitalWrite( LCD1602_EN,HIGH);

delayMicroseconds(1);

digitalWrite( LCD1602_EN,LOW);

}

void cleanScreen(int delayTime = 50)

{

LCD_Command_Write(0x01);

delay(delayTime);

}

void LCD_Data_Write(int dat)

{

int i=0,temp;

digitalWrite( LCD1602_RS,HIGH);

digitalWrite( LCD1602_RW,LOW);

digitalWrite( LCD1602_EN,LOW);

temp=dat & 0xf0;

for (i=DB[0]; i <= 9; i++)

{

digitalWrite(i,temp & 0x80);

temp <<= 1;

}

digitalWrite( LCD1602_EN,HIGH);

delayMicroseconds(1);

digitalWrite( LCD1602_EN,LOW);

temp=(dat & 0x0f)<<4;

for (i=DB[0]; i <= 9; i++)

{

digitalWrite(i,temp & 0x80);

temp <<= 1;

}

digitalWrite( LCD1602_EN,HIGH);

delayMicroseconds(1);

digitalWrite( LCD1602_EN,LOW);

}

void LCD_SET_XY( int x, int y )

{

int address;

if (y ==0) address = 0x80 + x;

else address = 0xC0 + x;

LCD_Command_Write(address);

}

void LCD_Write_Char( int x,int y,int dat)

{

LCD_SET_XY( x, y );

LCD_Data_Write(dat);

}

void LCD_Write_String(int x,int y,char *s, int delayTime = 50)

{

LCD_SET_XY(x, y); //设置地址

int i = 0;

while(*s && ++i <= 16) //写字符串

{

LCD_Data_Write(*s);

s++;

}

delay(delayTime);

if(*s)

{

cleanScreen();

LCD_Write_String(x, y, s, delayTime);

}

}

void setup (void)

{

int i = 0;

for(i = 6; i <= 12; i++)

{

pinMode(i,OUTPUT);

}

delay(100);

LCD_Command_Write(0x28);//4线 2行 5x7

delay(50);

LCD_Command_Write(0x06);

delay(50);

LCD_Command_Write(0x0c);

delay(50);

LCD_Command_Write(0x80);

delay(50);

LCD_Command_Write(0x01);

delay(50);

}

void loop (void)

{

cleanScreen();

LCD_Write_String(3,0,str1);//第1行,第4个地址起

LCD_Write_String(0,1,str2, 3000);//第2行,第2个地址起

cleanScreen();

LCD_Write_String(0,0,str3);

LCD_Write_String(0,1,str4, 3000);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值