标题:
JLX12832G cog 128x32 28pin单片机驱动程序源码
[打印本页]
作者:
lephuocthe
时间:
2018-4-12 23:26
标题:
JLX12832G cog 128x32 28pin单片机驱动程序源码
JLX12832G-037 使用说明书
单片机源程序如下:
/* JLX12832G-037-P-FOG 测试程序****/
/* LCD 驱动 IC:ST7567
/* 该程序显示 2 行中文如下:*/
/* 全套液晶解决方案*/
/* 质量取胜创建口碑*/
//#include <reg51.H>
//#include <intrins.h>
//--------------------------------------------------------
#define lcd_cs1 10 //接口定义,CS:片选
#define lcd_reset 9 //接口定义,RESET:复位
#define lcd_rs 11 //接口定义,RS:命令/数据寄存器选择。也叫"A0",或“CD”
#define lcd_sid 12 //接口定义,SID 即 SDA:串行数据
#define lcd_sclk 13 //接口定义,sclk:串行时钟
//-------------------------------------------------------
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
void displaygraphic(char *dp);
uchar jiong1[]={/*-- 文字: 囧 --*/
/*-- 宋体 12; 此字体下对应的点阵为:宽 x 高=16x16 --*/
0x00,0xFE,0x82,0x42,0xA2,0x9E,0x8A,0x82,0x86,0x8A,0xB2,0x62,0x02,0xFE,0x00,0x00,
0x00,0x7F,0x40,0x40,0x7F,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x7F,0x00,0x00};
uchar lei1[]={/*-- 文字: 畾 --*/
/*-- 宋体 12; 此字体下对应的点阵为:宽 x 高=16x16 --*/
0x80,0x80,0x80,0xBF,0xA5,0xA5,0xA5,0x3F,0xA5,0xA5,0xA5,0xBF,0x80,0x80,0x80,0x00,
0x7F,0x24,0x24,0x3F,0x24,0x24,0x7F,0x00,0x7F,0x24,0x24,0x3F,0x24,0x24,0x7F,0x00};
//写命令到 LCD 模块
void transfer_command(int data1)
{
char i;
digitalWrite(lcd_cs1,LOW); //cs1=0,片选清零才可以传送命令或数据
digitalWrite(lcd_rs,LOW); //rs=0:表示以下发送 1 个字节的命令
for(i=0;i<8;i++)
{
digitalWrite(lcd_sclk,LOW);
if(data1&0x80) digitalWrite(lcd_sid,HIGH);
else digitalWrite(lcd_sid,LOW);
digitalWrite(lcd_sclk,HIGH);
data1<<=1;
}
digitalWrite(lcd_cs1,HIGH); //cs1=1,当不用传数据给液晶屏时片选尽量置高,以免接收到一些干扰信号
}
//写数据到 LCD 模块
void transfer_data(int data1)
{
char i;
digitalWrite(lcd_cs1,LOW); //cs1=0,片选清零才可以传送命令或数据
digitalWrite(lcd_rs,HIGH); //rs=0:表示以下发送 1 个字节的数据
for(i=0;i<8;i++)
{
digitalWrite(lcd_sclk,LOW);
if(data1&0x80) digitalWrite(lcd_sid,HIGH);
else digitalWrite(lcd_sid,LOW);
digitalWrite(lcd_sclk,HIGH);
data1<<=1;
}
digitalWrite(lcd_cs1,HIGH); //cs1=1,当不用传数据给液晶屏时片选尽量置高,以免接收到一些干扰信号
}
/*延时*/
void delay(int i)
{
int j,k;
for(j=0;j<i;j++)
for(k=0;k<500;k++);
}
/*等待一个按键,我的主板是用 P2.0 与 GND 之间接一个按键
void waitkey()
{
repeat:
if (P2&0x01) goto repeat;
else delay(6);
if (P2&0x01) goto repeat;
else
delay(40);
}
*/
void lcd_address(int page,int column)
{
column=column;
transfer_command(0xb0+page-1); /*设置页地址*/
transfer_command(0x10+(column>>4&0x0f)); /*设置列地址的高 4 位*/
transfer_command(column&0x0f); /*设置列地址的低 4 位*/
}
/*显示 16x16 点阵图像、汉字、生僻字或 16x16 点阵的其他图标*/
void display_graphic_16x16(uint page,uint column,uchar *dp)
{
uint i,j;
digitalWrite(lcd_cs1,LOW);
for(j=0;j<2;j++)
{
lcd_address(page,column);
for (i=0;i<16;i++)
{
transfer_data(*dp); /*写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1*/
dp++;
}
page++;
}
digitalWrite(lcd_cs1,HIGH);
}
/*显示 5*7 点阵图像、ASCII, 或 5x7 点阵的自造字符、其他图标*/
void display_graphic_5x7(uint page,uchar column,uchar *dp)
{
uint col_cnt;
digitalWrite(lcd_cs1,LOW);
lcd_address(page,column);
for (col_cnt=0;col_cnt<8;col_cnt++)
{
transfer_data(*dp);
dp++;
}
digitalWrite(lcd_cs1,HIGH);
}
/*显示 8x16 点阵图像、ASCII, 或 8x16 点阵的自造字符、其他图标*/
void display_graphic_8x16(uint page,uchar column,uchar *dp)
{
uint i,j;
digitalWrite(lcd_cs1,LOW);
for(j=0;j<2;j++)
{
lcd_address(page,column);
for (i=0;i<8;i++)
{
transfer_data(*dp); /*写数据到 LCD,每写完一个 8 位的数据后列地址自动加 1*/
dp++;
}
page++;
}
digitalWrite(lcd_cs1,HIGH);
}
//==================display a piture of 128*64 dots================
void displaygraphic(char *dp)
{
int i,j;
for(i=0;i<4;i++)
{
digitalWrite(lcd_cs1,LOW);
transfer_command(0xb0+i); //set page address,
transfer_command(0x10);
transfer_command(0x00);
for(j=0;j<128;j++)
{
transfer_data(*dp);
dp++;
}
}
}
char graphic1[]={
/*-- 调入了一幅图像:D:\Backup\我的文档\图片\G-037.bmp --*/
/*-- 宽度 x 高度=128x32 --*/
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x2A,0x2A,0x2A,
0x2A,0x2A,0x2A,0x7E,0x00,0x00,0x00,0x00,0x02,0xFE,0x92,0x92,0x92,0xFE,0x12,0x11,
0x12,0x1C,0xF0,0x18,0x17,0x12,0x10,0x00,0x20,0x21,0x2E,0xE4,0x00,0x42,0x42,0xFE,
0x42,0x42,0x42,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0xF8,0x48,0x48,0x48,0x48,0xFF,
0x48,0x48,0x48,0x48,0xF8,0x00,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xE2,
0x12,0x0A,0x06,0x02,0x00,0x80,0x00,0x00,0x00,0x00,0x80,0x40,0x30,0x0E,0x84,0x00,
0x00,0x0E,0x10,0x60,0xC0,0x80,0x80,0x00,0x00,0x10,0x92,0x92,0x92,0x92,0x92,0x92,
0x92,0x92,0x12,0x02,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,0x25,0x25,0x25,0x25,0x7F,0x00,
0x00,0x7F,0x25,0x25,0x25,0x25,0x7F,0x00,0x08,0x1F,0x08,0x08,0x04,0xFF,0x05,0x81,
0x41,0x31,0x0F,0x11,0x21,0xC1,0x41,0x00,0x00,0x00,0x00,0x7F,0x20,0x10,0x00,0x7F,
0x00,0x00,0x00,0x00,0x3F,0x40,0x38,0x00,0x00,0x00,0x0F,0x04,0x04,0x04,0x04,0x3F,
0x44,0x44,0x44,0x44,0x4F,0x40,0x70,0x00,0x01,0x01,0x01,0x01,0x01,0x41,0x81,0x7F,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x00,0x01,0x20,0x70,0x28,0x24,0x23,0x31,
0x10,0x10,0x14,0x78,0x30,0x01,0x00,0x00,0x00,0x00,0x1F,0x04,0x04,0x04,0x04,0x04,
0x04,0x0F,0x00,0x20,0x40,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,
0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,
0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};
//============initial
void initial_lcd()
{
digitalWrite(lcd_cs1,LOW);
digitalWrite(lcd_reset,LOW); //Reset the chip when reset=0
delay(20);
digitalWrite(lcd_reset,HIGH);
transfer_command(0xe2); /*软复位*/
transfer_command(0x2c); /*升压步聚 1*/
delay(5);
transfer_command(0x2e); /*升压步聚 2*/
delay(5);
transfer_command(0x2f); /*升压步聚 3*/
delay(5);
transfer_command(0x22); /*粗调对比度,可设置范围 20~27*/
transfer_command(0x81); /*微调对比度*/
transfer_command(0x1b); /*微调对比度的值,可设置范围 0~63*/
transfer_command(0xa2); /*1/9 偏压比(bias)*/
transfer_command(0xc8); /*行扫描顺序:从上到下*/
transfer_command(0xa0); /*列扫描顺序:从左到右*/
transfer_command(0x40); /*起始行:从第一行开始*/
transfer_command(0xaf); /*开显示*/
digitalWrite(lcd_cs1,HIGH);
}
//===============clear all dot martrics=============
void clear_screen()
{
unsigned char i,j;
for(i=0;i<4;i++)
{
digitalWrite(lcd_cs1,LOW);
transfer_command(0xb0+i);
transfer_command(0x10);
transfer_command(0x00);
for(j=0;j<132;j++)
{
transfer_data(0x00);
}
}
}
//===============main program===================
void setup()
{
pinMode(lcd_cs1,OUTPUT);
pinMode(lcd_reset,OUTPUT);
pinMode(lcd_rs,OUTPUT);
pinMode(lcd_sid,OUTPUT);
pinMode(lcd_sclk,OUTPUT);
// int i,j,k;
digitalWrite(lcd_cs1,LOW);
initial_lcd();
while(1)
{
clear_screen(); //clear all dots
displaygraphic(graphic1); //display a picture of 128*64 dots
//waitkey();
}
}
复制代码
所有资料51hei提供下载:
st7567_SPI.zip
(6.86 KB, 下载次数: 24)
2018-4-12 23:24 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1