資料介紹
lcd12864液晶屏相關(guān)資料,包括arduino lcd12864,以及相關(guān)的設(shè)計(jì)方案,還有包括lcd12864中文資料數(shù)據(jù)使用手冊(cè),lcd12864程序,lcd12864串行時(shí)序的實(shí)現(xiàn),lcd12864顯示漢字程序,lcd12864引腳說(shuō)明。
lcd12864點(diǎn)陣的液晶屏主控芯片一般是ST7920及KS0107+KS0108及KS0086等IC,今天介紹一款我最新發(fā)現(xiàn)的一款COB液晶帶(RSCG12864B) 擁有I2C接口,內(nèi)建中文字庫(kù)(GB2312),ASCII有5*7點(diǎn)陣,6*12點(diǎn)陣,8*16點(diǎn)陣三種之多,可謂目前市場(chǎng)最全,這款液晶屏最出色的要屬于可以存儲(chǔ)多達(dá)2000張圖片,可以一般界面只需在電腦上做好BIN格式圖片,配合相應(yīng)的下載工具,就可以存儲(chǔ)到液晶模塊上。
點(diǎn)擊下載最新LCD12864中文數(shù)據(jù)手冊(cè)
lcd12864液晶模塊與Arduino接線
說(shuō)明:
GND------------->GND
VDD-------------->5V
RST-------------->A5
SCL-------------->A4
SDA-------------->A3
LCD12864庫(kù)文件:
/*
RSCG12864B.h - 12864LCD library for Arduino & Wiring
Copyright (c) 2015 Raylid Electronics Co.,Ltd (www.raylid.com)。 All right reserved.
*/
/*--------Arduino Uno connection to LCD-----------------------------------------------
LCD Module Arduino Uno
GND-------------------------GND
VDD-------------------------5.0V
RST(Floating)
SCL-------------------------A5(PC5)
SDA-------------------------A4(PC4)
BUSY------------------------A3(PC3)
A1(Floating)
A0(Floating)
-------------------------------------------------------------------------------------*/
#ifndef RSCG12864B_h
#define RSCG12864B_h
typedef unsigned char U8;
typedef unsigned int U16;
typedef unsigned long U32;
typedef const char CCHAR;
class RAYLIDLCD
{
private:
public:
RAYLIDLCD();
void begin();
void clear();
void display_on();
void display_off();
void brightness(U8 n);
void draw_pixel(U8 x,U8 y);
void delete_pixel(U8 x,U8 y);
void draw_line(U8 x1,U8 y1,U8 x2,U8 y2);
void delete_line(U8 x1,U8 y1,U8 x2,U8 y2);
void draw_rectangle(U8 x1,U8 y1,U8 x2,U8 y2);
void delete_rectangle(U8 x1,U8 y1,U8 x2,U8 y2);
void draw_fill_rectangle(U8 x1,U8 y1,U8 x2,U8 y2);
void delete_fill_rectangle(U8 x1,U8 y1,U8 x2,U8 y2);
void draw_circle(U8 x,U8 y,U8 r);
void delete_circle(U8 x,U8 y,U8 r);
void draw_fill_circle(U8 x,U8 y,U8 r);
void delete_fill_circle(U8 x,U8 y,U8 r);
void inversely_area(U8 x1,U8 y1,U8 x2,U8 y2);
void display_bmp(U16 n);
void display_bmp_block(U16 n,U8 px,U8 py,U8 x,U8 y,U8 w,U8 h);
void cursor(U8 x,U8 y);
void spacing(U8 xs,U8 ys);
void font_revers_on();
void font_revers_off();
void print_U32_5x7(U32 n);
void print_U32_6x12(U32 n);
void print_U32_8x16(U32 n);
void print_U32_5x7_xy(U8 x,U8 y,U32 n);
void print_U32_6x12_xy(U8 x,U8 y,U32 n);
void print_U32_8x16_xy(U8 x,U8 y,U32 n);
void print_string_12(CCHAR *ptr);
void print_string_16(CCHAR *ptr);
void print_string_12_xy(U8 x,U8 y,CCHAR *ptr);
void print_string_16_xy(U8 x,U8 y,CCHAR *ptr);
void print_string_5x7(CCHAR *ptr);
void print_string_6x12(CCHAR *ptr);
void print_string_8x16(CCHAR *ptr);
void print_string_5x7_xy(U8 x,U8 y,CCHAR *ptr);
void print_string_6x12_xy(U8 x,U8 y,CCHAR *ptr);
void print_string_8x16_xy(U8 x,U8 y,CCHAR *ptr);
};
extern RAYLIDLCD RSCG12864B;
#endif
//12864串行時(shí)序的實(shí)現(xiàn)
///**************************************/
#include《reg51.h》
#include《intrins.h》
#include《math.h》
/**************************************/
#define uchar unsigned char
#define uint unsigned int
#define clear 0x01 //清屏
#define reset_DDRAM 0x02 //DDRAM地址歸位
#define left_move 0x04 //游標(biāo)左移
#define right_move 0x06 //游標(biāo)右移
#define all_left_move 0x05 //畫(huà)面整體左移
#define all_right_move 0x07 //畫(huà)面整體右移
#define display_left_move 0x10 //顯示游標(biāo)左移
#define display_right_move 0x14 //顯示游標(biāo)右移
#define set_function1 0x30 //基本指令集動(dòng)作
#define set_CGRAM 0x40 //設(shè)定CGRAM地址
#define set_DDRAM 0x80 //設(shè)定DDRAM地址
#define set_function2 0x34 //擴(kuò)充指令集動(dòng)作
#define fanbai 0x04 //反白第一行(擴(kuò)充指令集)
#define set_GDRAM 0x80 //設(shè)定GDRAM地址(擴(kuò)充指令集)
#define ON_G 0x36 //開(kāi)繪圖顯示(擴(kuò)充指令集)
#define set_function2 0x34 //關(guān)繪圖顯示(擴(kuò)充指令集)
//端口定義
sbit LCD_CS=P1^3;
sbit LCD_SID=P2^0; //串行數(shù)據(jù)線
sbit LCD_SCLK=P2^1; //串上時(shí)鐘輸入
uchar code a[]={“串口LCD屏”}; //定義要顯示的字符串
/**************************************/
//延時(shí)函數(shù)
/**************************************/
void Delay_nms(uchar n)
{
uchar i;
uchar j;
for(i=0;i《n;i++)
for(j=0;j《125;j++) //大概1ms
_nop_();
}
/**************************************/
//串行發(fā)送一個(gè)字節(jié)
/**************************************/
void LCD_sendbyte(uchar byte)
{
uchar i;
for(i=0;i《8;i++)
{
LCD_SCLK=0; //拉低時(shí)鐘線
_nop_();
LCD_SID=(bit)(byte&0x80); //發(fā)送最高位數(shù)據(jù)
LCD_SCLK=1; //上升沿發(fā)送數(shù)據(jù)
byte=byte《《1; //左移一位
}
}
/****************************************/
//寫(xiě)指令
/****************************************/
void LCD_write_com(uchar com)
{
LCD_CS=1;
LCD_sendbyte(0xf8); //送入5個(gè)連續(xù)的“1“,啟動(dòng)一個(gè)周期,11111,RW(0),RS(0),0
LCD_sendbyte(0xf0&com); //取高四位,數(shù)據(jù)分兩次傳送,
//每個(gè)字節(jié)的內(nèi)容被送入兩個(gè)字節(jié)
//高四位放在第一個(gè)字節(jié)的高四位
LCD_sendbyte(0xf0&(com《《4)); //低四位放在第二個(gè)字節(jié)的高四位
LCD_CS=0;
Delay_nms(10); //串行不支持讀操作,不可檢測(cè)忙操作,這里用延時(shí)替代
}
/******************************************/
//寫(xiě)數(shù)據(jù)
/******************************************/
void LCD_write_dat(uchar dat)
{
LCD_CS=1;
LCD_sendbyte(0xfa); //送入5個(gè)連續(xù)的“1“,啟動(dòng)一個(gè)周期,11111,RW(0),RS(1),0
LCD_sendbyte(0xf0&dat); //取高四位,數(shù)據(jù)分兩次傳送,
//每個(gè)字節(jié)的內(nèi)容被送入兩個(gè)字節(jié)
//高四位放在第一個(gè)字節(jié)的高四位
LCD_sendbyte(0xf0&(dat《《4)); //低四位放在第二個(gè)字節(jié)
LCD_CS=0;
Delay_nms(10);
}
/********************************************/
//LCD初始化
/********************************************/
void LCD_init(void)
{
LCD_write_com(0x30); //選擇基本指令集
LCD_write_com(0x0c); //開(kāi)顯示,無(wú)游標(biāo),不反白
LCD_write_com(0x01); //清除顯示屏幕,把DDRAM位址計(jì)數(shù)器調(diào)整為00H
Delay_nms(5); //清屏操作時(shí)間較長(zhǎng)1.6ms 因此加此延時(shí)
LCD_write_com(0x02); //清DDRAM位址歸位,此處貌似與清屏重復(fù)
LCD_write_com(0x06); //設(shè)定光標(biāo)右移,整體顯示不移動(dòng)
}
/*************************************************/
//顯示字符串
/*************************************************/
void print(uchar *s)
{
while(*s!=‘\0’)
{
LCD_write_dat(*s);
s++;
}
}
/***************************************************/
//設(shè)置顯示地址
/***************************************************/
void LCD_Setaddress(uchar x,uchar y)
{ //地址從第1行第1列開(kāi)始不從0開(kāi)始
uchar addr;
switch(x)
{
case 1: addr=0x80+y-1;
break;
case 2: addr=0x90+y-1;
break;
case 3: addr=0x88+y-1;
break;
case 4: addr=0x98+y-1;
break;
default : break;
}
LCD_write_com(addr); //字符顯示開(kāi)始地址
}
/*****************************************************/
//讓字符串顯示在固定位置
/*****************************************************/
void LCD_Putstring( uchar x, uchar y, uchar *pData )
{
LCD_Setaddress(x,y);
while( *pData != ‘\0’ )
{
LCD_write_dat( *pData++ );
}
}
/*---------------------------------------------------------------------------------------------------------------------- */
//打點(diǎn)繪圖,適用于在屏幕上打稀疏的幾個(gè)點(diǎn),不能用于橫行連續(xù)打點(diǎn)
void LCD_draw_point(uchar x, uchar y)
{
uchar x_byte, x_bit; //在橫坐標(biāo)的哪一個(gè)字節(jié),哪一個(gè)位
uchar y_byte, y_bit; //在縱坐標(biāo)的哪一個(gè)字節(jié),哪一個(gè)位
x_byte=x/16; //算出它在哪一個(gè)字節(jié)(地址)
//注意一個(gè)地址是16位的
x_bit=x%16; //(取模)算出它在哪一個(gè)位
y_byte=y/32; //y是沒(méi)在哪個(gè)字節(jié)這個(gè)說(shuō)法
//這里只是確定它在上半屏(32行為一屏)還是下半屏
//0:上半屏 1:下半屏
y_bit=y%32; //y_bit確定它是在第幾行
LCD_write_com(0x34); //打開(kāi)擴(kuò)展指令集
LCD_write_com(0x80+y_bit); //垂直地址(上) 貌似與說(shuō)明書(shū)正好相反
LCD_write_com(0x80+x_byte+8*y_byte); //先寫(xiě)水平坐標(biāo)(下) 貌似與說(shuō)明書(shū)正好相反 ???????
//具體參照數(shù)據(jù)手冊(cè)
//下半屏的水平坐標(biāo)起始地址為0x88
//(+8*y_byte)就是用來(lái)確定在上半屏還是下半屏
if(x_bit《8) //如果x_bit位數(shù)小于8
{
LCD_write_dat(0x01《《(7-x_bit)); //寫(xiě)高字節(jié)。因?yàn)樽鴺?biāo)是從左向右的
//而GDRAM高位在左,低位在右
LCD_write_dat(0x00); //低字節(jié)全部填0
}
else
{
LCD_write_dat(0x00); //高字節(jié)全部填0
LCD_write_dat(0x01《《(15-x_bit));
}
LCD_write_com(0x36); //打開(kāi)繪圖顯示
LCD_write_com(0x30); //回到基本指令集
}
/************************************/
//打點(diǎn)繪圖 一次打水平一行 可以避免斷點(diǎn)現(xiàn)象
//x表示數(shù)組的首地址,y表示縱坐標(biāo)的值,也即是表示第多少行
//即對(duì)一個(gè)數(shù)組中的數(shù)進(jìn)行這樣的處理:
//檢測(cè)數(shù)組,并默認(rèn)數(shù)組為一行數(shù)的記錄即128字節(jié),只要數(shù)組中有數(shù)等于y,就把第y行的數(shù)全部打出
/************************************/
void LCD_draw_word(uchar *x, uchar y)
{
uchar i,j,k,m,n,count=0;
uchar hdat, ldat;
uchar y_byte, y_bit; //在縱坐標(biāo)的哪一個(gè)字節(jié),哪一個(gè)位
uchar a[16];
LCD_write_com(0x34); //打開(kāi)擴(kuò)展指令集
y_byte=y/32; //y是沒(méi)在哪個(gè)字節(jié)這個(gè)說(shuō)法
y_bit=y%32; //y_bit確定它是在第幾行
for(j=0;j《8;j++)
{
hdat=0, ldat=0; //此處清零是很必要的
n=j*16;
for(k=n;k《n+16;k++)
{
if(x[k]==y)
{
a[count]=k;
count++;
}
}
for(m=0;m《count;m++)
{
i=a[m]-n;
if(i《8) //如果x_bit位數(shù)小于8
hdat=hdat|(0x01《《(7-i)); //寫(xiě)高字節(jié)。因?yàn)樽鴺?biāo)是從左向右的
else
ldat=ldat|(0x01《《(15-i));
}
LCD_write_com(0x80+y_bit); //垂直地址(上) 貌似與說(shuō)明書(shū)正好相反
LCD_write_com(0x80+j+8*y_byte); //水平坐標(biāo)(下) 貌似與說(shuō)明書(shū)正好相反
LCD_write_dat(hdat);
LCD_write_dat(ldat);
}
LCD_write_com(0x36); //打開(kāi)繪圖顯示
LCD_write_com(0x30); //回到基本指令集
}
/**********************************************************/
//清圖形程序
/**********************************************************/
void LCD_draw_clr(void)
{
uchar i,j;
LCD_write_com(0x34); //8Bit擴(kuò)充指令集,即使是36H也要寫(xiě)兩次
LCD_write_com(0x36); //繪圖ON,基本指令集里面36H不能開(kāi)繪圖
for(i=0;i《32;i++) //12864實(shí)際為256x32
{
LCD_write_com(0x80+i); //行位置 貌似與說(shuō)明書(shū)正好相反 (上)
LCD_write_com(0x80); //列位置 貌似與說(shuō)明書(shū)正好相反 (下)
for(j=0;j《32;j++) //256/8=32 byte
LCD_write_dat(0);
}
LCD_write_com(0x30); //開(kāi)基本指令集
}
/*----------------------------------------------------------------------------------------------------------------------*/
/******************************************************/
//畫(huà)正弦波的波形
/******************************************************/
void print_sinx(void)
{
uchar i;
uchar xdata y_sin[128]; //定義屏幕上要打的正弦波的縱坐標(biāo)
uchar code v[128]={32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,
32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,};
float y;
for(i=0;i《128;i++)
{
y=31*sin(0.09*i)+0.5; //此處系數(shù)為31比較好
y_sin[i]=32-y;
}
for(i=0;i《64;i++)
LCD_draw_word(y_sin, i); //繪圖 一行一行繪
LCD_draw_word(v, 32);
}
/******************************************************/
//主函數(shù)
//用于觀看顯示效果
/******************************************************/
void main(void)
{
LCD_init();
LCD_Setaddress(1,1); print(“本文出自“電子發(fā)燒友”);
LCD_Setaddress(2,1); print(“”務(wù)必保留”);
LCD_Setaddress(3,1); print(“此出處”);
LCD_Setaddress(4,1); print(“elecfans.com”);
// LCD_Putstring(3,1,“xxxxxx”);
// LCD_write_dat(0x35);
LCD_draw_clr();
print_sinx();
while(1){};
}
- 基于LCD12864菜單的MCU總體程序下載 35次下載
- 使用LCD12864顯示圖片的仿真和程序資料免費(fèi)下載 53次下載
- LCD12864的GUI時(shí)鐘通道程序資料合集免費(fèi)下載 9次下載
- LCD12864的顯示程序免費(fèi)下載 62次下載
- LCD12864,Bresenham畫(huà)線 12次下載
- LCD12864中文數(shù)據(jù)手冊(cè) 394次下載
- VHDL語(yǔ)言的LCD12864 0次下載
- LCD12864液晶顯示的設(shè)計(jì) 27次下載
- LCD12864 顯示漢字 78次下載
- 常用LCD12864的權(quán)威資料 78次下載
- stm32驅(qū)動(dòng)lcd12864程序 71次下載
- LCD12864數(shù)據(jù)手冊(cè) 411次下載
- LCD12864的字模工具 110次下載
- LCD12864液晶使用分析 605次下載
- LCD12864直接寫(xiě)屏驅(qū)動(dòng)程序
- 基于單片機(jī)的語(yǔ)音識(shí)別控制系統(tǒng)設(shè)計(jì) 1495次閱讀
- 基于單片機(jī)的兒童防丟失系統(tǒng)設(shè)計(jì) 1229次閱讀
- LCD12864液晶顯示模塊串行連接方式 7208次閱讀
- 如何使用Arduino和LDR傳感器實(shí)現(xiàn)LCD液晶屏亮度的自動(dòng)調(diào)節(jié) 7183次閱讀
- dfrobotLCD12864顯示屏擴(kuò)展板簡(jiǎn)介 1574次閱讀
- dfrobotSPI LCD12864 Module顯示模塊簡(jiǎn)介 3433次閱讀
- dfrobotLCD12864點(diǎn)陣液晶顯示器簡(jiǎn)介 1821次閱讀
- MSP430單片機(jī)對(duì)12864液晶模塊顯示的測(cè)試設(shè)計(jì) 2890次閱讀
- 單片機(jī)采用串行方式對(duì)LCD12864的驅(qū)動(dòng) 7413次閱讀
- lcd1602實(shí)現(xiàn)字幕滾動(dòng)原理_lcd1602滾動(dòng)顯示程序 4.3w次閱讀
- LCD驅(qū)動(dòng)分析_LCD控制器設(shè)置及代碼詳解 1.9w次閱讀
- 12864液晶屏驅(qū)動(dòng)程序分享 2.8w次閱讀
- lcd12864中文資料匯總(12864引腳說(shuō)明及功能_特性參數(shù)及驅(qū)動(dòng)程序分享) 20.7w次閱讀
- lcd1602中文資料分享:lcd1602接線圖_lcd1602與單片機(jī)連接圖 43.2w次閱讀
- 由淺入深,藍(lán)牙4.0/BLE協(xié)議棧開(kāi)發(fā)攻略大全(1) 14.1w次閱讀
下載排行
本周
- 1GD100PIX120C6SNA規(guī)格書(shū)
- 0.98 MB | 3次下載 | 免費(fèi)
- 2一款入耳式耳機(jī)的仿真與分析
- 0.44 MB | 2次下載 | 免費(fèi)
- 3Eurotherm TKS Temperature 用戶手冊(cè)
- 1.46 MB | 2次下載 | 免費(fèi)
- 4人形機(jī)器人電機(jī)驅(qū)動(dòng)和傳感報(bào)告
- 4.27 MB | 2次下載 | 免費(fèi)
- 5無(wú)線系統(tǒng)中天線和RF元件電磁建模
- 7.48 MB | 1次下載 | 4 積分
- 6Multisim模擬電路仿真教程
- 1.93 MB | 1次下載 | 3 積分
- 7DMP300C1型微機(jī)變壓器保護(hù)測(cè)控裝置技術(shù)說(shuō)明書(shū)
- 4.11 MB | 次下載 | 10 積分
- 8用MT3540芯片設(shè)計(jì)BOOST電路 1(可下載)
- 445.66 KB | 次下載 | 免費(fèi)
本月
- 1晶體三極管的電流放大作用詳細(xì)說(shuō)明
- 0.77 MB | 32次下載 | 2 積分
- 2Python從入門(mén)到精通背記手冊(cè)
- 18.77 MB | 27次下載 | 1 積分
- 3雙極型三極管放大電路的三種基本組態(tài)的學(xué)習(xí)課件免費(fèi)下載
- 4.03 MB | 25次下載 | 1 積分
- 4AIWA HS-J303 MKⅡ維修手冊(cè)
- 22.47 MB | 23次下載 | 10 積分
- 5多級(jí)放大電路的學(xué)習(xí)課件免費(fèi)下載
- 1.81 MB | 21次下載 | 2 積分
- 6九陽(yáng)豆?jié){機(jī)高清原理圖
- 2.47 MB | 20次下載 | 1 積分
- 7AIWA HS-J202/HS-J202M/HS-J800維修手冊(cè)
- 13.60 MB | 15次下載 | 10 積分
- 81875功放原理圖
- 0.04 MB | 11次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420063次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191382次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183337次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81585次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73814次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評(píng)論