qq501802153 发表于 2016-8-29 11:12:39

关于arduino连接12864lcd的问题

最近在做液晶屏   在用到12864LCD时照明都不显示,经过学习查找资料现经验分享给大家,希望共同进步,例程时借用别人的示波器的程序,原来的程序有点小问题无法编译,我已找到原因修改好了
1,先说lcd吧,买回来的液晶屏上面有个0Ω保险电阻应该是选择串口还是并口通讯的,默认电阻短接的时R9,按照论坛上的好多例程都不能用显示,而且PSB借口接低电平会造成整个电路的短路现象,一定要小心,翻了好多帖子在别的论坛看到有人提到这个问题了,自己从R9换到R10后能用了,但是PSB端口不能接高电平了,这应该时选择的原因,这算一个。
2,然后是关于lcd一定要接亮度调节的V0端口,接一个10K左右的滑动变阻器,调节亮度,不然屏幕白茫茫一片。
3,关于程序我就直接贴上来了
原程序    16行   Status = 64;    这句有问题,无法编译应该是Status = 64;   才对,大家注意。
下面是我修改的程序
库文件这个可以用
#include <U8glib.h> //声明库
U8GLIB_ST7920_128X64 u8g(3, 9, 8, U8G_PIN_NONE);
//声明液晶屏 3:E8:RS9:R/W
const int Input = A0;            //声明输入引脚
const int TimeAdd = 5;
const int TimeCdd = 2;               //声明按钮引脚
int x, y = 128;      //声明绘点坐标,初始值在液晶屏底部
int ax, ay = 128; //声明画线的前一个坐标
int Status; //声明信号值储存数组
int TimeSet = 1;         //声明扫描速率变量
int delayTime = 0;   //声明扫描速率延时
void setup()
{
for ( int i = 0; i < 128; i++)
{
   Status = 64;
}
pinMode(TimeAdd, INPUT);
digitalWrite(TimeAdd, HIGH);
pinMode(TimeCdd, INPUT);
digitalWrite(TimeCdd, HIGH); //加载按钮引脚
}
void draw()
{
y = map(analogRead(Input), 0, 1023, 62, 6); //获得信号值
for (x = 0; x < 128; x++)
{
    if (x != 127) {
      Status = Status; //将信号数组左移
    } else {
      Status = y;
    }
    u8g.drawPixel(x, Status); //画点
    u8g.drawLine(x, ay, x, Status); //画线
    ax = x; ay = Status; //获得下一个画线坐标
}
//画网格
u8g.setFont(u8g_font_4x6);//设定字体
u8g.drawStr(1, 5, "APE Arduino Oscilloscope V0.2");
//绘制标题(示波器型号版本)
u8g.drawLine(25.6,   6,   25.6,   64);//画竖线
u8g.drawLine(25.6 * 2,   6,   25.6 * 2, 64);
u8g.drawLine(25.6 * 3,   6,   25.6 * 3, 64);
u8g.drawLine(25.6 * 4,   6,   25.6 * 4, 64);
u8g.drawLine(25.6 * 5,   6,   25.6 * 5, 64);

u8g.drawLine(0, 35 - 15, 128, 35 - 15);//画横线
u8g.drawLine(0, 35,   128, 35);
u8g.drawLine(0, 35 + 15, 128, 35 + 15);
}
void loop()
{
u8g.firstPage();
do {
    draw();//绘制
} while ( u8g.nextPage() );
//检索按钮
if (digitalRead(TimeAdd) == HIGH) //扫描速率减按钮
{
    delay(50);
    TimeSet++;
    if (TimeSet == 5)
    {
      TimeSet = 4;
    }
}
if (digitalRead(TimeCdd) == HIGH) //扫描速率加按钮
{
    delay(50);
    TimeSet--;
    if (TimeSet == 0)
    {
      TimeSet = 1;
    }
}
switch (TimeSet)    //根据按钮状态设定延时
{
    case 1:
      delayTime = 0;
      break;
    case 2:
      delayTime = 60;
      break;
    case 3:
      delayTime = 300;
      break;
    case 4:
      delayTime = 500;
      break;
}
delay(delayTime);//延时
}

qq501802153 发表于 2016-9-4 12:03:09

怎么都没人支持一下

1546461351 发表于 2016-10-13 13:50:45

谢谢楼主分享

LOVE_KE 发表于 2016-10-13 23:16:56

谢谢啦,学习ing
页: [1]
查看完整版本: 关于arduino连接12864lcd的问题