极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12300|回复: 1

求助!!!求一个12864(ST7565驱动)arduino的程序

[复制链接]
发表于 2015-10-26 14:29:26 | 显示全部楼层 |阅读模式
求大神给个程序!谢谢!有的请发我邮箱[email protected]!谢谢了!老师布置的任务!自己找不到资源!求各位大神指点!小生在这里拜谢了!
回复

使用道具 举报

 楼主| 发表于 2015-10-29 09:31:47 | 显示全部楼层
int cs1=0;
int reset=1;
int rs=2;
int sclk=3;
int sid=4;//sid 就是 SDA,串行数据信号
void setup()
{
   pinMode(cs1, OUTPUT);
  pinMode(reset, OUTPUT);
  pinMode(rs, OUTPUT);
pinMode(sclk, OUTPUT);
pinMode(sid,OUTPUT);
}
unsigned char  graphic1[]={
/*-- 调入了一幅图像:d:\My Documents\My Pictures\多字.bmp --*/
/*-- 宽度 x 高度=128x64 --*/
/*--  文字:  喂  --*/
/*--  宋体12;  此字体下对应的点阵为:宽x高=16x16   --*/
};
void Transfer_data(int data1);
void Transfer_command(int data1);


void Delay(int i);
void Delay1(int i);
void DisplayGraphic1();
void Initial_Lcd();
void clear_screen();  


//===============main program===================
void loop()
{
int i,j,k;
Initial_Lcd();
while(1)
{
clear_screen(); //clear all dots
delay(100);
DisplayGraphic1(); //display a picture of 128*64 dots ;
}
}

//============initial
void Initial_Lcd()
{
digitalWrite (reset,LOW); //Reset the chip when reset=0
Delay(50);
digitalWrite ( reset,HIGH);
Delay(50);
Transfer_command(0xe2); /*软复位*/
Transfer_command(0x2c); /*升压步聚 1*/
Transfer_command(0x2e); /*升压步聚 2*/
Transfer_command(0x2f); /*升压步聚 3*/
Transfer_command(0x23); /*粗调对比度,可设置范围 20~27*/
Transfer_command(0x81); /*微调对比度*/
Transfer_command(0x28); /*微调对比度的值,可设置范围 0~63*/
Transfer_command(0xa2); /*1/9 偏压比(bias)*/
Transfer_command(0xc8); /*行扫描顺序:从上到下*/
Transfer_command(0xa0); /*列扫描顺序:从左到右*/
Transfer_command(0xaf); /*开显示*/
}

//===============clear all dot martrics=============
void clear_screen()
{
unsigned char i,j;
for(i=0;i<9;i++)
{
digitalWrite (cs1,LOW);
Transfer_command(0xb0+i);
Transfer_command(0x10);
Transfer_command(0x00);
for(j=0;j<132;j++)
{
Transfer_data(0x00);
}
}
}


//==================display a piture of 128*64 dots================
void DisplayGraphic1()
{
unsigned char *address; //define pointer
int i,j;
address=graphic1; //data pointer:point to "graphic[]",one-dimensional array
for(i=0;i<8;i++)
{
digitalWrite(cs1,LOW);
Transfer_command(0xb0+i); //set page address,
Transfer_command(0x10);
Transfer_command(0x00);
for(j=0;j<128;j++)
{
Transfer_data(*address);
address++;
}
}
}

/*=======写指令========*/
void Transfer_command(int data1)
{
char i;
digitalWrite (cs1,LOW);
digitalWrite (rs,LOW);
for(i=0;i<8;i++)
{
digitalWrite(sclk,LOW);
if(data1&0x80)digitalWrite(sid,HIGH);
else digitalWrite(sid,LOW);
Delay1(2);
digitalWrite (sclk,HIGH);
Delay1(2);
data1=data1<<=1;
}
}
/*--------写数据------------*/
void Transfer_data(int data1)
{
char i;
digitalWrite(cs1,LOW);
digitalWrite( rs,HIGH);
for(i=0;i<8;i++)
{
digitalWrite (sclk,LOW);
if(data1&0x80) digitalWrite(sid,HIGH);
else digitalWrite(sid,LOW);
digitalWrite (sclk,HIGH);
data1=data1<<=1;
}
}

/*=========延时=====================*/
void Delay(int i)
{
int j,k;
for(j=0;j<i;j++)
for(k=0;k<990;k++);
}

/*=========延时=====================*/
void Delay1(int i)
{
int j,k;
for(j=0;j<i;j++)
for(k=0;k<10;k++);
}

;
回复 支持 反对

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-15 20:48 , Processed in 0.056606 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表