本帖最后由 sxwangjin1 于 2014-10-10 19:13 编辑
7月份换了一份LCD代理的工作,小公司但老板待人不错,公司虽小效率很高。以前的做过3年瀚彩大陆的FAE,做过一年群创PE,不能说见过多大场面,但是也经历过不少事情,但这个公司确实让我佩服。虽然之前有过多年的LCD工作经验,但是到了这个公司和我完全想象的不一样了,更多的还是做黑白,做点阵,做定制,做段码。凭借着老板带着一对业务愣是拯救了两个濒临倒闭的LCD厂商,一年有近亿元的业务量,确实不简单。有点跑题哈哈。。。介绍下我们公司的配置10个业务2个技术,另一个技术还是主要负责数码管的,LCD我只能一个人硬着头皮扛下来,从9月初选定arduino平台经过近一个月的摸索终于有了一点进展,与大家分享共同进步。
以下程序均参考 弘毅 及论坛其他兄弟的程序,我仅为归纳整理http://www.geek-workshop.com/thread-91-1-1.html
目录:
一、ST7920 12864的驱动
二、KS0108 12864的驱动
三、NT7534 12864的驱动
第一、ST7920 12864的驱动,这个芯片弘毅使用的是库文件,做为程序开发库文件好用,但是作为学习研究修改就不那么方便了,我在这里把库文件提出来直接放到程序里供大家学习研究,arduino画器件连线的软件没有,连线图我就不画了大家到程序里找把,我使用的编译软件是1.0.5版本
1>串口
- // case 0: N|=0x80;break;每行首地址
- // case 1: N|=0x90;break;
- // case 2: N|=0x88;break;
- // case 3: N|=0x98;break;
- //基于ST7920芯片的128*64显示程序 2014/9/23
- //待处理bug 位图显示时,最下边3-5行数据如不删除程序卡死不能运行,删除后下部有乱点
- //此bug在使用ATMEGA8L时出现,使用328及性能更好芯片为发现乱点及卡死现象。2014/10/7
- ////////////////////////////////////////////////////////////////////////////////////////
- //引脚定义
- //////////////////////////////////////////////////
- //RS(DI)/latch->8,R/Wdatapin->9,E/clock->3
- int latchPin = 8;
- int dataPin = 9;
- int clockPin = 3;
- unsigned char show[]={
- 0xC4, 0xCF,
- 0xBE, 0xA9,
- 0xD6, 0xDB,
- 0xD0, 0xBE,
- 0xB5, 0xE7,
- 0xD7, 0xD3};//nanjingzhouxin
- unsigned char show1[]="TEL:025-66085988";
- unsigned char logo[]={
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xFF,0xFF,0xF0,0x1F,0xCF,0xFE,0xFF,0x03,0xFF,0xFF,0xC3,0xFF,0xFF,0xFE,0x00,
- 0x03,0xFF,0xFF,0xF8,0x1F,0xCF,0xFE,0xFF,0x07,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xFF,0xFC,0x0F,0xCF,0xFF,0xFE,0x0F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,
- 0x03,0xFF,0xFF,0xFE,0x0F,0xEF,0xFF,0xFE,0x1F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xFF,0xFF,0x0F,0xEF,0xFF,0xFC,0x3F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,
- 0x03,0xFF,0xFF,0xFF,0x8F,0xE7,0xFD,0xF8,0x3F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,0x03,0xFF,0xFF,0xFF,0x87,0xF7,0xF9,0xF8,0x7F,0xFF,0xFF,0xC7,0xFF,0xFF,0xFE,0x00,
- 0x00,0x00,0x00,0x7F,0x87,0xF7,0xFB,0xF8,0x7F,0x80,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0x3F,0x87,0xF7,0xF3,0xF0,0x7F,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,
- 0x00,0x00,0x00,0x7F,0x87,0xF7,0xF7,0xF0,0x7F,0x00,0x00,0x00,0x01,0xFC,0x00,0x00,0x00,0x00,0x00,0xFF,0x07,0xFF,0xE7,0xF0,0x7F,0x00,0x00,0x00,0x01,0xF8,0x00,0x00,
- 0x00,0x00,0x03,0xFE,0x07,0xFF,0xEF,0xF0,0x7F,0x00,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x00,0x07,0xFC,0x03,0xFF,0xFF,0xF0,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,
- 0x00,0x00,0x0F,0xF8,0x03,0xFB,0xDF,0xE0,0x7F,0x00,0x00,0x00,0x03,0xF8,0x00,0x00,0x00,0x00,0x1F,0xF0,0x03,0xF9,0x9F,0xE0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,
- 0x00,0x00,0x7F,0xE0,0x03,0xFC,0x3F,0xC0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,0x00,0x00,0xFF,0xC0,0x01,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,
- 0x00,0x01,0xFF,0x00,0x03,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,0x00,0x07,0xFE,0x00,0x03,0xFF,0xFF,0xC0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,
- 0x00,0x0F,0xFC,0x00,0x07,0xFF,0xFF,0xE0,0x7F,0xFF,0xFF,0x80,0x03,0xF8,0x00,0x00,0x00,0x3F,0xF0,0x00,0x07,0xF8,0x3F,0xE0,0x7E,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,
- 0x00,0x7F,0xE0,0x00,0x07,0xF8,0x1F,0xE0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x01,0xFF,0x80,0x00,0x0F,0xF0,0x0F,0xE0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
- 0x03,0xFF,0x00,0x00,0x0F,0xE0,0x0F,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x03,0xFE,0x00,0x00,0x0F,0xE0,0x0F,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
- 0x07,0xFC,0x00,0x00,0x1F,0xE0,0x0F,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x07,0xF8,0x00,0x00,0x1F,0xC0,0x07,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
- 0x07,0xF0,0x00,0x00,0x1F,0xC0,0x07,0xF0,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x07,0xF0,0x00,0x00,0x1F,0xC0,0x07,0xF8,0x7E,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
- 0x07,0xFF,0xFF,0xFC,0x3F,0x80,0x07,0xF8,0x7F,0xFF,0xFF,0x00,0x0F,0xF0,0x00,0x00,0x07,0xFF,0xFF,0xFC,0x3F,0x80,0x03,0xF8,0x7F,0xFF,0xFF,0x00,0x0F,0xF0,0x00,0x00,
- 0x07,0xFF,0xFF,0xFC,0x7F,0x80,0x03,0xF8,0x7F,0xFF,0xFF,0x00,0x0F,0xE0,0x00,0x00,0x03,0xFF,0xFF,0xFC,0x7F,0x00,0x03,0xFC,0x7F,0xFF,0xFF,0x00,0x0F,0xE0,0x00,0x00,
- 0x03,0xFF,0xFF,0xFC,0x7F,0x00,0x03,0xFC,0x7F,0xFF,0xFF,0x00,0x0F,0xE0,0x00,0x00,0x01,0xFF,0xFF,0xFC,0xFE,0x00,0x01,0xFE,0x1F,0xFF,0xFF,0x00,0x0F,0xE0,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- //////////////////////////
- void setup() {
- //设置引脚为输出
- pinMode(latchPin, OUTPUT);
- pinMode(clockPin, OUTPUT);
- pinMode(dataPin, OUTPUT);
- }
- ////////////////////////////////////////////////////////////////
- //写SPI时序,具体参考shiftout 命令使用
- /////////////////////////////////////////////////////////
- void WriteByte(int dat)
- {
- digitalWrite(latchPin, HIGH);
-
- shiftOut(dataPin, clockPin, MSBFIRST, dat);
- digitalWrite(latchPin, LOW);
- }
- //////////////////////////////////////////////////////////
- //写命令
- ////////////////////////////////////////////////////////
- void LcdCommandWrite(int value) {
- int H_data,L_data;
- H_data = value;
- H_data &= 0xf0; //屏蔽低4位的数据
- L_data = value; //xxxx0000格式
- L_data &= 0x0f; //屏蔽高4位的数据
- L_data <<= 4; //xxxx0000格式
- WriteByte(0xf8); //RS=0,写入的是指令;
- WriteByte(H_data);
- WriteByte(L_data);
- }
- //////////////////////////////////////////////////////
- //写数据
- ///////////////////////////////////////////////////////////
- void LcdDataWrite(int value) {
- int H_data,L_data;
- H_data = value;
- H_data &= 0xf0; //屏蔽低4位的数据
- L_data = value; //xxxx0000格式
- L_data &= 0x0f; //屏蔽高4位的数据
- L_data <<= 4; //xxxx0000格式
- WriteByte(0xfa); //RS=1,写入的是数据
- WriteByte(H_data);
- WriteByte(L_data);
- }
- ////////////////////////////////////////////////
- //主程序
- ///////////////////////////////////////////////
- void loop (void) {
- LcdCommandWrite(0x30); // 设定为基本指令
- delay(60);
- LcdCommandWrite(0x01); // 清屏
- delay(50);
- LcdCommandWrite(0x02); // 清屏
- delay(50);
- LcdCommandWrite(0x90+1);
- delay(10);
- int i = 0;//显示南京舟芯电子
- for (i=0; i <= 11; i++)
- {
- LcdDataWrite(show[i]);
- }
- LcdCommandWrite(0x88);//显示电话
- for (i=0; i <= 15; i++)
- {
- LcdDataWrite(show1[i]);
- }
- delay(3000);
- LcdCommandWrite(0x01); // 清屏
- delay(50);
- int ygroup,x,y;
- int temp;
- int tmp;
-
- for(ygroup=0;ygroup<64;ygroup++) //写入液晶上半图象部分
- { //写入坐标
- if(ygroup<32)
- {
- x=0x80;
- y=ygroup+0x80;
- }
- else
- {
- x=0x88;
- y=ygroup-32+0x80;
- }
- LcdCommandWrite(0x34); //写入扩充指令命令
- LcdCommandWrite(y); //写入y轴坐标
- LcdCommandWrite(x); //写入x轴坐标
- LcdCommandWrite(0x30); //写入基本指令命令
- tmp=ygroup*16;
- for(i=0;i<16;i++)
- {
- LcdDataWrite(logo[tmp]);
- tmp++;
- }
- }
- LcdCommandWrite(0x34); //写入扩充指令命令
- LcdCommandWrite(0x36); //显示图象
-
- delay(3000);
- }
复制代码
2>并口 - //基于ST7920芯片的128*64显示程序 2014/9/23
- //待处理bug 位图显示时,最下边3-5行数据如不删除程序卡死不能运行,删除后下部有乱点
- int DI = 12;
- int RW = 11;
- int DB[] = {3, 4, 5, 6, 7, 8, 9, 10};//使用数组来定义总线需要的管脚
- int Enable = 2;
- unsigned char show[]={
- 0xC4, 0xCF,
- 0xBE, 0xA9,
- 0xD6, 0xDB,
- 0xD0, 0xBE,
- 0xB5, 0xE7,
- 0xD7, 0xD3};//nanjingzhouxin
- unsigned char show1[]="TEL:025-66085988";
- unsigned char logo[]={
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x07,0xFF,0xFF,0x80,0x3F,0x9F,0xFD,0xFE,
- 0x0F,0xFF,0xFF,0x87,0xFF,0xFF,0xFC,0x00,
- 0x07,0xFF,0xFF,0xF8,0x3F,0x9F,0xFD,0xFE,
- 0x0F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
- 0x07,0xFF,0xFF,0xF8,0x1F,0x9F,0xFF,0xFC,
- 0x1F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
- 0x07,0xFF,0xFF,0xFC,0x1F,0xDF,0xFF,0xFC,
- 0x3F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
- 0x07,0xFF,0xFF,0xFE,0x1F,0xDF,0xFF,0xF8,
- 0x7F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
- 0x07,0xFF,0xFF,0xFF,0x1F,0xCF,0xFB,0xF0,
- 0x7F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
- 0x07,0xFF,0xFF,0xFF,0x1F,0xEF,0xF3,0xF0,
- 0x7F,0xFF,0xFF,0x8F,0xFF,0xFF,0xFC,0x00,
- 0x00,0x00,0x00,0xFF,0x1F,0xEF,0xF7,0xF0,
- 0x7F,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,
- 0x00,0x00,0x00,0x7F,0x1F,0xEF,0xE7,0xE0,
- 0x7E,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,
- 0x00,0x00,0x00,0xFF,0x0F,0xEF,0xEF,0xE0,
- 0x7E,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,
- 0x00,0x00,0x01,0xFE,0x0F,0xFF,0xCF,0xE0,
- 0x7E,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,
- 0x00,0x00,0x07,0xFC,0x0F,0xFF,0xDF,0xE0,
- 0xFE,0x00,0x00,0x00,0x03,0xF0,0x00,0x00,
- 0x00,0x00,0x0F,0xF8,0x07,0xFF,0xFF,0xE0,
- 0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
- 0x00,0x00,0x1F,0xF8,0x07,0xF7,0xBF,0xC0,
- 0xFE,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,
- 0x00,0x00,0x3F,0xE0,0x07,0xF3,0x3F,0xC0,
- 0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
- 0x00,0x00,0x7F,0xC0,0x07,0xF8,0x7F,0x80,
- 0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
- 0x00,0x01,0xFF,0x80,0x03,0xFF,0xFF,0x80,
- 0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
- 0x00,0x03,0xFE,0x00,0x07,0xFF,0xFF,0x80,
- 0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
- 0x00,0x0F,0xFC,0x00,0x07,0xFF,0xFF,0x80,
- 0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
- 0x00,0x3F,0xE0,0x00,0x0F,0xFF,0xFF,0xC0,
- 0xFF,0xFF,0xFF,0x00,0x07,0xF0,0x00,0x00,
- 0x00,0x7F,0xC0,0x00,0x0F,0xF0,0x7F,0xC0,
- 0xFC,0x00,0x00,0x00,0x0F,0xF0,0x00,0x00,
- 0x00,0xFF,0x80,0x00,0x1F,0xF0,0x3F,0xC0,
- 0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
- 0x07,0xFE,0x00,0x00,0x1F,0xE0,0x1F,0xE0,
- 0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
- 0x07,0xFC,0x00,0x00,0x1F,0xC0,0x1F,0xE0,
- 0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
- 0x07,0xFC,0x00,0x00,0x1F,0xC0,0x1F,0xE0,
- 0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
- 0x07,0xF8,0x00,0x00,0x3F,0xC0,0x1F,0xE0,
- 0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
- 0x0F,0xE0,0x00,0x00,0x3F,0x80,0x0F,0xE0,
- 0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
- 0x0F,0xC0,0x00,0x00,0x3F,0x80,0x0F,0xE0,
- 0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
- 0x0F,0xC0,0x00,0x00,0x3F,0x80,0x0F,0xE0,
- 0xFC,0x00,0x00,0x00,0x0F,0xE0,0x00,0x00,
- 0x0F,0xFF,0xFF,0xF8,0x7F,0x00,0x0F,0xE0,
- 0xFF,0xFF,0xFE,0x00,0x1F,0xE0,0x00,0x00,
- 0x0F,0xFF,0xFF,0xF8,0x7F,0x00,0x07,0xE0,
- 0xFF,0xFF,0xFE,0x00,0x1F,0xE0,0x00,0x00,
- 0x0F,0xFF,0xFF,0xF8,0xFF,0x00,0x07,0xE0,
- 0xFF,0xFF,0xFE,0x00,0x1F,0xC0,0x00,0x00,
- 0x07,0xFF,0xFF,0xF8,0xFE,0x00,0x07,0xE0,
- 0xFF,0xFF,0xFE,0x00,0x1F,0xC0,0x00,0x00,
- 0x07,0xFF,0xFF,0xF8,0xFE,0x00,0x07,0xE0,
- 0xFF,0xFF,0xFE,0x00,0x1F,0xC0,0x00,0x00,
- 0x03,0xFF,0xFF,0xF9,0xFC,0x00,0x03,0xF0,
- 0x1F,0xFF,0xFE,0x00,0x1F,0xC0,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-
- };
- void LcdCommandWrite(int value) {
- // 定义所有引脚
- digitalWrite(DI, 0);
- digitalWrite(RW, 0);
- int i = 0;
- for (i=3; i <= 10; i++) //总线赋值
- {
- digitalWrite(i,value & 01);//value与0001相与赋予i
- value >>= 1;//value右移一位
- }
- //digitalWrite(Enable,HIGH);
- digitalWrite(Enable,1);
- delayMicroseconds(1);
- digitalWrite(Enable,LOW);
- delayMicroseconds(1);
- digitalWrite(Enable,HIGH);
- delayMicroseconds(1); // 延时1ms
- digitalWrite(Enable,LOW);
- delayMicroseconds(1); // 延时1ms
- }
-
- void LcdDataWrite(int value) {
- // 定义所有引脚
- int i = 0;
- digitalWrite(DI, 1);
- digitalWrite(RW, 0);
- //digitalWrite(DI, HIGH);
- //digitalWrite(RW, LOW);
- for (i=DB[0]; i <= DB[7]; i++) {
- digitalWrite(i,value & 01);
- value >>= 1;
- }
- digitalWrite(Enable,LOW);
- delayMicroseconds(1);
- digitalWrite(Enable,HIGH);
- delayMicroseconds(1);
- digitalWrite(Enable,LOW);
- delayMicroseconds(1); // 延时1ms
- }
-
- void setup (void) {
- int i = 0;
- for (i=Enable; i <= DI; i++) {
- pinMode(i,OUTPUT);
- }
- delay(100);
- // 短暂的停顿后初始化LCD
- // 用于LCD控制需要
- LcdCommandWrite(0x30); // 设定为基本指令
- delay(60);
- LcdCommandWrite(0x01); // 清屏指令
- delay(50);
- LcdCommandWrite(0x0c); // 整体显示
- delay(20);
- LcdCommandWrite(0x06); //
- delay(20);
- }
- void loop (void) {
- LcdCommandWrite(0x30); // 设定为基本指令
- delay(60);
- LcdCommandWrite(0x01); // 清屏
- delay(50);
- LcdCommandWrite(0x02); // 清屏
- delay(50);
- LcdCommandWrite(0x90+1);
- delay(10);
- int i = 0;//显示南京舟芯电子
- for (i=0; i <= 11; i++)
- {
- LcdDataWrite(show[i]);
- }
- LcdCommandWrite(0x88);//显示电话
- for (i=0; i <= 15; i++)
- {
- LcdDataWrite(show1[i]);
- }
- delay(3000);
- LcdCommandWrite(0x01); // 清屏
- delay(50);
- int ygroup,x,y;
- int temp;
- int tmp;
-
- for(ygroup=0;ygroup<62;ygroup++) //写入液晶上半图象部分
- { //写入坐标
- if(ygroup<32)
- {
- x=0x80;
- y=ygroup+0x80;
- }
- else
- {
- x=0x88;
- y=ygroup-32+0x80;
- }
- LcdCommandWrite(0x34); //写入扩充指令命令
- LcdCommandWrite(y); //写入y轴坐标
- LcdCommandWrite(x); //写入x轴坐标
- LcdCommandWrite(0x30); //写入基本指令命令
- tmp=ygroup*16;
- for(i=0;i<16;i++)
- {
- LcdDataWrite(logo[tmp]);
- tmp++;
- }
- }
- LcdCommandWrite(0x34); //写入扩充指令命令
- LcdCommandWrite(0x36); //显示图象
-
- delay(3000);
- }
复制代码
二、KS0108芯片,这个芯片和ST7920的区别在与写RAM的方式的不同,7920是写上下片,KS0108是写左右片。KS0108无字库,只支持并口驱动。另外我这块板子必须要外接可变电阻才能点亮,这个说明书里会注明:
- /////////////////////////////////////////////////////////////////////////////////
- //基于arduino 平台的KS0180芯片128*64并口显示LCD测试程序by 王瑾 2014/9/27
- //程序较大使用小RAM芯片可能无法运行,如无法运行可将调用logo部分删除,会大幅减小RAM使用
- //因为uno 坏了只在mega 2560测试成功
- //和ST7920芯片主要是RAM地址的分布不同注意分析RAM地址写程序
- //程序没有采用库文件,显示程序也没有另写子程序,主要是为了个人修改方便
- //////////////////////////////////////////////////////////////////////////////
- //
- int CS1=A0;//左半屏,高电平有效
- int CS2=A1;//右半屏,高电平有效
- int RS = 12;
- int RW = 11;
- int DB[] = {3, 4, 5, 6, 7, 8, 9, 10};//使用数组来定义总线需要的管脚DB 0-7
- int Enable = 2;
- /////////////////////////////////////////////////////////////////////////
- // Bitmap点阵数据表 //
- // 内容为:南京舟芯电子,TEL025-66085988 //
- // 图片尺寸: 128 * 64 //
- /////////////////////////////////////////////////////////////////////////
- unsigned char logo1[] =
- {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x80,0x80,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xF2,0xF2,0x12,0xB2,0xF2,0xD2,
- 0x9F,0x9F,0xD2,0xF2,0xB2,0x12,0xF2,0xF2,0x02,0x00,0x02,0x02,0x02,0xF2,0xF2,0x12,
- 0x12,0x13,0x13,0x12,0x12,0xF2,0xF2,0x02,0x02,0x02,0x00,0x40,0x40,0x40,0xFE,0xFE,
- 0x43,0x4B,0x7A,0x72,0x42,0x42,0xFE,0xFE,0x40,0x40,0x40,0x00,0x02,0x02,0x02,0x02,
- 0x0F,0x8F,0x92,0x32,0x62,0x42,0x0F,0x0F,0x82,0x82,0x02,0x02,0x00,0x00,0x00,0xFC,
- 0xFC,0x44,0x44,0x44,0xFF,0xFF,0x44,0x44,0x44,0xFC,0xFC,0x00,0x00,0x00,0x40,0x41,
- 0x41,0x41,0x41,0x41,0x41,0xF1,0xF1,0x59,0x4D,0x47,0x43,0x41,0x40,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x04,0x04,0x04,0x04,
- 0x3F,0x3F,0x04,0x04,0x24,0x64,0x7F,0x3F,0x00,0x00,0x00,0x20,0x30,0x1D,0x0D,0x21,
- 0x61,0x7F,0x3F,0x01,0x01,0x05,0x0D,0x38,0x30,0x00,0x00,0x40,0x60,0x38,0x1F,0x07,
- 0x00,0x01,0x07,0x06,0x20,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x08,0x0C,0x07,0x03,
- 0x00,0x1F,0x3F,0x20,0x20,0x20,0x20,0x38,0x38,0x01,0x07,0x06,0x00,0x00,0x00,0x0F,
- 0x0F,0x04,0x04,0x04,0x3F,0x7F,0x44,0x44,0x44,0x4F,0x4F,0x78,0x78,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x60,0x60,0xE0,0xE0,0x60,0x60,0x00,0x20,0xE0,0xE0,0x20,0x60,0x60,0x00,0x20,0xE0,
- 0xE0,0x20,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xE0,0xF0,0x10,0xF0,0xE0,0x00,0x00,0x60,0x70,0x10,0xF0,0xE0,0x00,0x00,
- 0xF0,0xF0,0x90,0x90,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,
- 0x90,0xB0,0x20,0x00,0x00,0xE0,0xF0,0x90,0xB0,0x20,0x00,0x00,0xE0,0xF0,0x10,0xF0,
- 0xE0,0x00,0x00,0x60,0xF0,0x90,0xF0,0x60,0x00,0x00,0xF0,0xF0,0x90,0x90,0x10,0x00,
- 0x00,0xE0,0xF0,0x10,0xF0,0xE0,0x00,0x00,0x60,0xF0,0x90,0xF0,0x60,0x00,0x00,0x60,
- 0xF0,0x90,0xF0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x08,0x0F,0x0F,0x09,0x0D,0x0C,0x00,0x08,0x0F,
- 0x0F,0x08,0x0C,0x0C,0x00,0x00,0x0D,0x0D,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x00,0x00,
- 0x04,0x0C,0x08,0x0F,0x07,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x07,0x0F,
- 0x08,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,
- 0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x04,0x0C,0x08,0x0F,0x07,0x00,
- 0x00,0x04,0x0D,0x09,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x07,
- 0x0F,0x08,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- ////////////////////////////////////////////////////////
- //写命令子程序
- ///////////////////////////////////////////////////////
- void LcdCommandWrite(int value) {
- digitalWrite(RS, 0);
- digitalWrite(RW, 0);
- int i = 0;
- for (i=3; i <= 10; i++) //总线赋值
- {
- digitalWrite(i,value & 01);//value与0001相与赋予i
- value >>= 1;//value右移一位
- }
- digitalWrite(Enable,1);
- delayMicroseconds(1);
- digitalWrite(Enable,LOW);
- delayMicroseconds(1);
- }
- //////////////////////////////////////////////////////
- //写数据子程序
- /////////////////////////////////////////////////////
- void LcdDataWrite(int value) {
- // 定义所有引脚
- int i = 0;
- digitalWrite(RS, 1);
- digitalWrite(RW, 0);
- //digitalWrite(DI, HIGH);
- //digitalWrite(RW, LOW);
- for (i=DB[0]; i <= DB[7]; i++) {
- digitalWrite(i,value & 01);
- value >>= 1;
- }
- digitalWrite(Enable,HIGH);
- delayMicroseconds(1);
- digitalWrite(Enable,LOW);
- delayMicroseconds(1); // 延时百万分之一秒
- }
- ///////////////////////////////////////////////////
- //输出引脚声明
- //////////////////////////////////////////////////
- void setup (void) {
- int i = 0;
- for (i=Enable; i <= 12; i++) {
- pinMode(i,OUTPUT);
- }
- pinMode(A0,OUTPUT);
- pinMode(A1,OUTPUT);
- }
- ////////////////////////////////////////////
- //循环主程序
- /////////////////////////////////////////////////
- void loop (void) {
- ///////////////////////////////////////////////////////////////////////////////////////////
- //初始化,因为KS0108芯片无初始化命令需要对整个屏幕赋值0x00, 不然的话会有杂点
- //没有查到KS0108芯片的始化命令,位图调用一直有杂点,采用REST复位也不能解决,所以采用此方法
- //////////////////////////////////////////////////////////////////////////////////////////
- digitalWrite(CS1,1);
- digitalWrite(CS2,1);
- LcdCommandWrite(0x3e); // 显示关
- int i = 0;
- int yg,x,y;
- int temp;
- int tmp;
- for(yg=0;yg<8;yg++)
- {
- x=yg+0xb8; //0xb8为首页地址
- y=0x40; //0x40为首列地址注意分析规格书RAM地址分布图
- LcdCommandWrite(x); //写入y轴坐标
- LcdCommandWrite(y); //写入x轴坐标
- tmp=yg*64;
- for(i=0;i<64;i++)
- {
- LcdDataWrite(0x00);
- tmp++;
- }
- }
- LcdCommandWrite(0x3f); //显示图象
- delay(1);
- //////////////////////////////////////////////////////////
- //显示ZXET logo
- ///////////////////////////////////////////////////////////
- digitalWrite(CS1,1); //先显示左半屏
- digitalWrite(CS2,0);
- for(yg=0;yg<8;yg++)
- {
- x=yg+0xb8;
- y=0x40;
- LcdCommandWrite(x); //写入y轴坐标
- LcdCommandWrite(y); //写入x轴坐标
- tmp=2*yg*64;
- for(i=0;i<64;i++)
- {
- LcdDataWrite(logo[tmp]);
- tmp++;
- }
- }
- LcdCommandWrite(0x3f); //此处无需延迟直接接右半屏显示程序
- ////////////////////////
- digitalWrite(CS1,0); //显示右半屏
- digitalWrite(CS2,1);
- for(yg=0;yg<8;yg++)
- {
- x=yg+0xb8;
- y=0x40;
- LcdCommandWrite(x); //写入y轴坐标
- LcdCommandWrite(y); //写入x轴坐标
- tmp=(2*yg+1)*64;
- for(i=0;i<64;i++)
- {
- LcdDataWrite(logo[tmp]);
- tmp++;
- }
- }
- LcdCommandWrite(0x3f);
- delay(3000);
- ///////////////////////////////////////////////////////////////
- //显示 文字,依然采用位图数据调用,KS0108无字库只能采用这种办法
- ///////////////////////////////////////////////////////////////
- digitalWrite(CS1,1);
- digitalWrite(CS2,0);
- for(yg=0;yg<8;yg++)
- {
- x=yg+0xb8;
- y=0x40;
- LcdCommandWrite(x); //写入y轴坐标
- LcdCommandWrite(y); //写入x轴坐标
- tmp=2*yg*64;
- for(i=0;i<64;i++)
- {
- LcdDataWrite(logo1[tmp]);
- tmp++;
- }
- }
- LcdCommandWrite(0x3f);
- //////////////////////////////////////
- digitalWrite(CS1,0);
- digitalWrite(CS2,1);
- for(yg=0;yg<8;yg++)
- {
- x=yg+0xb8;
- y=0x40;
- LcdCommandWrite(x); //写入y轴坐标
- LcdCommandWrite(y); //写入x轴坐标
- tmp=(2*yg+1)*64;
- for(i=0;i<64;i++)
- {
- LcdDataWrite(logo1[tmp]);
- tmp++;
- }
- }
- LcdCommandWrite(0x3f);
- delay(3000);
- ///////////////////////////////////////////////////////
- //测试画面 :全黑
- ////////////////////////////////////////////////////////
- digitalWrite(CS1,1);
- digitalWrite(CS2,1);
- for(yg=0;yg<8;yg++)
- {
- x=yg+0xb8;
- y=0x40;
- LcdCommandWrite(x); //写入y轴坐标
- LcdCommandWrite(y); //写入x轴坐标
- for(i=0;i<64;i++)
- {
- LcdDataWrite(0xFF);
- }
- }
- LcdCommandWrite(0x3f);
- delay(3000);
- ///////////////////////////////////////////////////////
- //测试画面 :全白
- ////////////////////////////////////////////////////////
- digitalWrite(CS1,1);
- digitalWrite(CS2,1);
- for(yg=0;yg<8;yg++)
- {
- x=yg+0xb8;
- y=0x40;
- LcdCommandWrite(x); //写入y轴坐标
- LcdCommandWrite(y); //写入x轴坐标
- for(i=0;i<64;i++)
- {
- LcdDataWrite(0x00);
- }
- }
- LcdCommandWrite(0x3f);
- delay(3000);
- ///////////////////////////////////////////////////////
- //测试画面 :数条纹
- ////////////////////////////////////////////////////////
- digitalWrite(CS1,1);
- digitalWrite(CS2,1);
- for(yg=0;yg<8;yg++)
- {
- x=yg+0xb8;
- for(i=0;i<32;i++)
- {
- y=0x40+2*i;
- LcdCommandWrite(x); //写入y轴坐标
- LcdCommandWrite(y); //写入x轴坐标
- LcdDataWrite(0xFF);
-
- }
- }
- LcdCommandWrite(0x3f);
-
- delay(3000);
- }
复制代码
三、NT7534这块芯片是COG芯片即chip on glass 芯片是bonding在玻璃上的,前两块是COB芯片是bongding在PCB板上的,这块芯片功能更多,可设置的更多,可以通过命令设置偏压,VLCD电压,对比度,等等具体参考附件里的规格书资料,这里还有一点因为我要做一个使用ATMEGA8L的测试板,但是程序基本超过2.2K 8L就运行不起来了,不知道是我程序的问题还是芯片的问题还是arduino的问题,我只能精简程序,位图上下0x00的部分后删除,int 都改为 unsigned char 总算是可以运行了
我这里使用的是并口驱动,这块芯片也是可以串口的,和ST7920的3线SPI不同它是 4线SPI程序,程序后续后放出 - ////////////////////////////////////////////////////////
- //基于arduino平台的NT7534 128*64液晶并口驱动程序 by 王瑾 2014/10/4
- // 从新设定变量,精简bitmap 使其在uno上运行 2014/10/5
- ////////////////////////////////////////////////////////
- /////
- ////引脚定义
- unsigned char a0 = 3;
- unsigned char RW = 2;// 对应WR
- unsigned char RES=4;
- unsigned char CS1=5;
- unsigned char DB[] = {6, 7, 8, 9, 10,11,12,13};//使用数组来定义总线需要的管脚
- unsigned char E= A0; // 对应RD
- /////////////////////////////////////////////////////////////////////////
- // Bitmap点阵数据表 //
- // 内容为:南京舟芯电子,TEL025-66085988 //
- // 图片尺寸: 128 * 64 //
- /////////////////////////////////////////////////////////////////////////
- unsigned char logo1[] =
- {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0xF2,0xF2,0x12,0xB2,0xF2,0xD2,
- 0x9F,0x9F,0xD2,0xF2,0xB2,0x12,0xF2,0xF2,0x02,0x00,0x02,0x02,0x02,0xF2,0xF2,0x12,
- 0x12,0x13,0x13,0x12,0x12,0xF2,0xF2,0x02,0x02,0x02,0x00,0x40,0x40,0x40,0xFE,0xFE,
- 0x43,0x4B,0x7A,0x72,0x42,0x42,0xFE,0xFE,0x40,0x40,0x40,0x00,0x02,0x02,0x02,0x02,
- 0x0F,0x8F,0x92,0x32,0x62,0x42,0x0F,0x0F,0x82,0x82,0x02,0x02,0x00,0x00,0x00,0xFC,
- 0xFC,0x44,0x44,0x44,0xFF,0xFF,0x44,0x44,0x44,0xFC,0xFC,0x00,0x00,0x00,0x40,0x41,
- 0x41,0x41,0x41,0x41,0x41,0xF1,0xF1,0x59,0x4D,0x47,0x43,0x41,0x40,0x40,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x7F,0x04,0x04,0x04,0x04,
- 0x3F,0x3F,0x04,0x04,0x24,0x64,0x7F,0x3F,0x00,0x00,0x00,0x20,0x30,0x1D,0x0D,0x21,
- 0x61,0x7F,0x3F,0x01,0x01,0x05,0x0D,0x38,0x30,0x00,0x00,0x40,0x60,0x38,0x1F,0x07,
- 0x00,0x01,0x07,0x06,0x20,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x08,0x0C,0x07,0x03,
- 0x00,0x1F,0x3F,0x20,0x20,0x20,0x20,0x38,0x38,0x01,0x07,0x06,0x00,0x00,0x00,0x0F,
- 0x0F,0x04,0x04,0x04,0x3F,0x7F,0x44,0x44,0x44,0x4F,0x4F,0x78,0x78,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x20,0x60,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x60,0x60,0xE0,0xE0,0x60,0x60,0x00,0x20,0xE0,0xE0,0x20,0x60,0x60,0x00,0x20,0xE0,
- 0xE0,0x20,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0xE0,0xF0,0x10,0xF0,0xE0,0x00,0x00,0x60,0x70,0x10,0xF0,0xE0,0x00,0x00,
- 0xF0,0xF0,0x90,0x90,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xF0,
- 0x90,0xB0,0x20,0x00,0x00,0xE0,0xF0,0x90,0xB0,0x20,0x00,0x00,0xE0,0xF0,0x10,0xF0,
- 0xE0,0x00,0x00,0x60,0xF0,0x90,0xF0,0x60,0x00,0x00,0xF0,0xF0,0x90,0x90,0x10,0x00,
- 0x00,0xE0,0xF0,0x10,0xF0,0xE0,0x00,0x00,0x60,0xF0,0x90,0xF0,0x60,0x00,0x00,0x60,
- 0xF0,0x90,0xF0,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x08,0x0F,0x0F,0x08,0x00,0x00,0x08,0x0F,0x0F,0x09,0x0D,0x0C,0x00,0x08,0x0F,
- 0x0F,0x08,0x0C,0x0C,0x00,0x00,0x0D,0x0D,0x0D,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x0C,0x0E,0x0B,0x09,0x08,0x00,0x00,
- 0x04,0x0C,0x08,0x0F,0x07,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x07,0x0F,
- 0x08,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,
- 0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x04,0x0C,0x08,0x0F,0x07,0x00,
- 0x00,0x04,0x0D,0x09,0x0F,0x07,0x00,0x00,0x07,0x0F,0x08,0x0F,0x07,0x00,0x00,0x07,
- 0x0F,0x08,0x0F,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- };
- //////////////////////////////////////////////////////////////
- //写命令子程序
- ///////////////////////////////////////////////////////////
- void WriteCommand(unsigned char value) {
- digitalWrite(a0, 0);
- digitalWrite(RW, 0);
- digitalWrite(CS1, 0);
- digitalWrite(E, 1);
- unsigned char i;
- for (i=6; i <= 13; i++) //总线赋值
- {
- digitalWrite(i,value & 01);//value与0001相与赋予i
- value >>= 1;//value右移一位
- }
- digitalWrite(CS1,1);
- digitalWrite(RW, 1);
- digitalWrite(E, 0);
- }
- ////////////////////////////////////////////////////////////
- //写数据子程序
- //////////////////////////////////////////////////////////
- void WriteData(unsigned char value) {
- digitalWrite(a0, 1);
- digitalWrite(RW, 0);
- digitalWrite(CS1, 0);
- digitalWrite(E, 1);
- unsigned char i;
- for (i=6; i <= 13; i++) //总线赋值
- {
- digitalWrite(i,value & 01);//value与0001相与赋予i
- value >>= 1;//value右移一位
- }
- digitalWrite(CS1,1);
- digitalWrite(RW, 1);
- digitalWrite(E, 0);
- }
- //////////////////////////////////////////////////////
- //清屏子程序
- /////////////////////////////////////////////////////////
- void cl() //清屏,其实就是把所有的地址全部填成0
- {
- unsigned char x,y;
- for(y=0;y<8;y++)
- {
- WriteCommand(0xb0+y);
- WriteCommand(0x10);
- WriteCommand(0x00);
- for(x=0;x<128;x++) WriteData(0);
- }
- }
- ///////////////////////////////////////////////////////
- //全显示子程序
- //////////////////////////////////////////////////////
- void qx() //把所有的地址全部填成1
- {
- unsigned char x,y;
- for(y=0;y<8;y++)
- {
- WriteCommand(0xb0+y);
- WriteCommand(0x10);
- WriteCommand(0x00);
- for(x=0;x<128;x++) WriteData(0xff);
- }
- }
- /////////////////////////////////////////////////
- //初始化设定
- ////////////////////////////////////////////
- void setup (void) {
- unsigned char i;
- for (i=2; i <= 13; i++) {
- pinMode(i,OUTPUT);
- }
- pinMode(22,OUTPUT);
- delay(100);
-
- digitalWrite(RES,HIGH);
- delay(1000);
- WriteCommand(0x24);//对比度
- WriteCommand(0xa2);//BR=1/9
- WriteCommand(0xa0);//set seg direction
- WriteCommand(0xc8);//set com direction
- WriteCommand(0x2f);//set power control
- WriteCommand(0x40);//set scroll line
- WriteCommand(0x81);//SET ELECTRONIC VOLUME
- WriteCommand(0x20);//set pm: 通过改变这里的数值来改变电压
- //WriteCommand(0xa6);//set inverse display a6 off, a7 on
- //WriteCommand(0xa4);//set all pixel on
- WriteCommand(0xaf);//开显示
-
- }
- ////////////////////////////////////////////////////
- //主循环程序
- /////////////////////////////////////////////////////
- void loop (void) {
- cl() ;
- unsigned char x,y;
- for(y=0;y<4;y++)
- {
- WriteCommand(0xb2+y);
- WriteCommand(0x10);
- WriteCommand(0x00);
- int tmp=128*y;
- for(x=0;x<128;x++)
- {
- WriteData(logo1[tmp]) ;
- tmp++ ;
- }
- }
- delay(2000);
- qx() ;//set all pixel on
- delay(2000);
- cl() ;
- delay(2000);
- }
复制代码
|