pcduino上的lcd 1602 时钟程序c语言,LCD 1602实验

#include "core.h"

#define RS 8

#define EN 9

#define backlight 10

#define RS_L digitalWrite(RS,LOW)

#define RS_H digitalWrite(RS,HIGH)

#define EN_L digitalWrite(EN,LOW)

#define EN_H digitalWrite(EN,HIGH)

int DB[] = {7,6,5,4};

/********************************************************************/

void write_command(int command)

{

int i,temp;

RS_L;

EN_L;

temp=command & 0xf0;

for (i=0; i < 4; i++)

{

if(temp&0x80)

digitalWrite(DB,HIGH);

else digitalWrite(DB,LOW);

temp <<= 1;

delayMicroseconds(10);

}

EN_H;

delay(1);

EN_L;

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

for (i=0; i < 4; i++)

{

if(temp&0x80)

digitalWrite(DB,HIGH);

else digitalWrite(DB,LOW);

temp <<= 1;

delayMicroseconds(10);

}

EN_H;

delay(1);

EN_L;

}

/********************************************************************/

void write_data(int dat)

{

int i=0,temp;

RS_H;

EN_L;

temp=dat & 0xf0;

for (i=0; i < 4; i++)

{

if(temp&0x80)

digitalWrite(DB,HIGH);

else digitalWrite(DB,LOW);

temp <<= 1;

delayMicroseconds(10);

}

EN_H;

delay(1);

EN_L;

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

for (i=0; i < 4; i++)

{

if(temp&0x80)

digitalWrite(DB,HIGH);

else digitalWrite(DB,LOW);

temp <<= 1;

delayMicroseconds(10);

}

EN_H;

delay(1);

EN_L;

}

/********************************************************************/

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

{

int address;

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

else address = 0xC0 + y;

write_command(address);

write_data(dat);

delayMicroseconds(10);

}

/********************************************************************/

void lcd1602_init()

{

int i = 0;

pinMode(RS,OUTPUT);

pinMode(EN,OUTPUT);

pinMode(backlight,OUTPUT);

digitalWrite(backlight,HIGH);

for (i=0; i < 4; i++)

{

pinMode(DB,OUTPUT);

}

delay(100);

write_command(0x28);

delay(50);

write_command(0x06);

delay(50);

write_command(0x0c);

delay(50);

write_command(0x80);

delay(50);

write_command(0x01);

delay(100);

}

/********************************************************************/

void setup (void)

{

lcd1602_init();

}

/********************************************************************/

void loop (void)

{

write_command(0x02);

LCD_write_char(0,2,'W');

LCD_write_char(0,3,'e');

LCD_write_char(0,4,'l');

LCD_write_char(0,5,'c');

LCD_write_char(0,6,'o');

LCD_write_char(0,7,'m');

LCD_write_char(0,8,'e');

LCD_write_char(0,10,'t');

LCD_write_char(0,11,'o');

LCD_write_char(1,4,'p');

LCD_write_char(1,5,'c');

LCD_write_char(1,6,'D');

LCD_write_char(1,7,'u');

LCD_write_char(1,8,'i');

LCD_write_char(1,9,'n');

LCD_write_char(1,10,'o');

while(1);

}四、试验结果如图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值