3876|2

7

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

arduino mega256 1602 扩展库 [复制链接]












1.myLCD1602.cpp
//#include "WProgram.h"
#include "Arduino.h"
#include
#define uchar unsigned char
uchar RS = 22;
uchar RW = 23;
uchar E =24;
uchar D0 = 25;
uchar D1 = 26;
uchar D2 = 27;
uchar D3 = 28;
uchar D4 = 29;
uchar D5 = 30;
uchar D6 = 31;
uchar D7 = 32;

myLCD::myLCD()
        {}

void  myLCD::lcdWriteCmd(uchar cmd)
{
  uchar i;
  digitalWrite(RS,LOW);
  digitalWrite(RW,LOW);

  for(i=0;i<8;i++)
  {
    digitalWrite(25+i,cmd & 0x1);
    cmd >>=1;
  }
  digitalWrite(E,LOW);
  delayMicroseconds(1);
  digitalWrite(E,HIGH);
  delayMicroseconds(1);
  digitalWrite(E,LOW);
  delayMicroseconds(1);

}
void myLCD::lcdWriteData(uchar data)
{
  uchar i;
  digitalWrite(RS,HIGH);
  digitalWrite(RW,LOW);
  for(i=0;i<8;i++)
  {
    digitalWrite(25+i,data & 0x1);
    data>>=1;
  }
  digitalWrite(E,LOW);
  delayMicroseconds(1);
  digitalWrite(E,HIGH);
  delayMicroseconds(1);
  digitalWrite(E,LOW);
  delayMicroseconds(1);


}
void myLCD::lcdInit()
{
        char i;
  //set use pin output
  for(i=0;i<11;i++)
    pinMode(22+i,OUTPUT);
  delay(100);
  lcdWriteCmd(0x38);
  delay(64);
  lcdWriteCmd(0x38);
  delay(50);
  lcdWriteCmd(0x38);
  delay(20);
  lcdWriteCmd(0x06);
  delay(20);
  lcdWriteCmd(0x0e);
  delay(20);
  lcdWriteCmd(0x01);
  delay(100);
  lcdWriteCmd(0x80);
  delay(20);


}
//x==0 or 1, 0<=y<16
void myLCD::lcdSetXY(uchar x,uchar y)
{
       
        lcdWriteCmd(0x0c);
  delay(10);
  if(x==0)
  {
                  lcdWriteCmd(0x80+y);
  }
  else if(x==1)
  {
                  lcdWriteCmd(0xc0+y);               
  }
  else
  {
  }

  delay(10);
}
void myLCD::lcdClear()
{
                lcdWriteCmd(0x01);
          delay(10);
}
void myLCD::lcdWrite(unsigned char *data,unsigned char size)
{
        uchar i;
        for(i=0;i         {
                lcdWriteData(*data++);
               
        }       
}



2.myLCD1602.h

#ifndef myLCD1602
#define myLCD1602

class myLCD{
        public:
        myLCD();
        void lcdInit();
        void lcdSetXY(uchar x,uchar y);
        void lcdWrite(uchar *data,uchar size);
        private:
        void  lcdWriteCmd(uchar cmd);
        void  lcdWriteData(uchar data);
       
};


#endif

3.keywords.txt
myLCD        KEYWORD1
lcdInit        KEYWORD2
lcdSetXY KEYWORD2
lcdWrite        KEYWORD2

4.testlib.ino
#include

myLCD mylcd1;
char ledpin=38;
void setup()
{
  mylcd1.lcdInit();
}

void loop()
{
  unsigned char test[]={'A','r','d','u','i','n','o'};
  unsigned char test1[]={'e','r','a','i','n','_','3','0'};
  mylcd1.lcdSetXY(0,4);
  mylcd1.lcdWrite(test,7);

  mylcd1.lcdSetXY(1,4);
  mylcd1.lcdWrite(test1,8);

  pinMode(ledpin,OUTPUT);
  while(1)
  {
    digitalWrite(ledpin,LOW);
    delay(500);
    digitalWrite(ledpin,HIGH);
    delay(500);
  }
}





最新回复

  详情 回复 发表于 2014-5-10 08:54
点赞 关注
 

回复
举报

1071

帖子

7

TA的资源

纯净的硅(中级)

沙发
 
感谢楼主分享
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表