查看(SKU:RB-05L003)LCD12864点阵液晶扩展板的源代码
←
(SKU:RB-05L003)LCD12864点阵液晶扩展板
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
[[文件:RB-05L003.jpg|500px|缩略图|右]] ==产品概述== 2014年最新推出的12864液晶板采用的是带汉字库图形点阵液晶显示模块,具有串行和并行接口,背光控制开关(串行与并行模式均可使用),对比度调节旋钮,板上集成IDC6插座和IDC14插座,可通过套件中附送的专用连接线与Arduino传感器扩展板连接,无需再买相关转接板,通过我们提供的例子程序,您可以用Arduino控制器做控制完成显示8192个中文汉字(16X16点阵)、128个字符(8X16点阵)和图形显示(128X64点阵)功能,轻松制作Arduino互动显示器最佳选择。 ==规格参数== # 电源电压:VDD+3.3V~+5.5V(内置升压电路,无需负压) # 控制器:ST7920 # 点阵个数:128列×64行 # 显示颜色:蓝底白字 # 可视角度:170度 # LCD类型:STN # 控制接口:8位或4位并行和3位串行 # LED背光:蓝色 # 软件功能:光标显示、画面移位、自定义字符、反白显示、睡眠模式等 # 逻辑工作电压(VDD):4.5~5.5V # 电源地(GND):0V # 工作温度:-20℃~70℃ # 存储温度:-30℃~80℃ # 模块尺寸:93×70×22mm # 视域尺寸:73×39mm ==使用方法== 工作于并行模式时的引脚定义: * PIN1------ GND 电源接入 -, 一般接0V。 * PIN2------电源接入 +, 一般接5V。 * PIN3------对比度调整端,VDD和GND接可调电阻两端,中间抽头接至V0。 * PIN4------RS 指令/数据选择 * PIN5------R/W 读写选择 * PIN6------E,信号使能 * PIN7------D0,数据位0 * PIN8------D1,数据位1 * PIN9------D2,数据位2 * PIN10-----D3,数据位3 * PIN11-----D4,数据位4 * PIN12-----D5,数据位5 * PIN13-----D6,数据位6 * PIN14-----D7,数据位7 * PIN15-----PSB 并行:PSB=1,可以接VCC; 串行:PSB=0,一般接GND * PIN16 ----NC,不连接 * PIN17-----~RST,模块复位,可不连接 * PIN18 ----NC,不连接 * PIN19 ----LED+ ,背光 +,一般接5V。 * PIN20 ----LED- ,背光 -,一般接GND。 ==应用例程== ===示例代码=== <pre style='color:blue'>/************************************************************ 机器人基地 RobotBase www.robatbase.cn 目 的: 12864LCD_Parallel功能测试实验例程 目标系统: Carduino Mega168/Arduino Mega168/Mega328/Mega1280控制器 应用软件: Arduino 0023 功能描述: 显示完整字符 发布时间: 2015-01-28 说 明: 若用于商业用途,请保留此段文字或注明代码来源 哈尔滨奥松机器人科技有限公司保留所有版权 ************************************************************/ #include "PIC.h" int RS = 2; int RW = 3; int E = 4; //DB should be an unseparated group of pins unsigned char DB[] = { 6,7,8,9,10,11,12,13}; //wire these to DB6~13 on LCD. //基本指令集预定义 #define LCD_DATA 1 //数据位 #define LCD_COMMAND 0 //命令位 #define LCD_CLEAR_SCREEN 0x01 //清屏 #define LCD_ADDRESS_RESET 0x02 //地址归零 #define LCD_BASIC_FUNCTION 0x30 //基本指令集 #define LCD_EXTEND_FUNCTION 0x34 //扩充指令集 //扩展指令集预定义 #define LCD_AWAIT_MODE 0x01 //待命模式 #define LCD_ROLLADDRESS_ON 0x03 //允许输入垂直卷动地址 #define LCD_IRAMADDRESS_ON 0x02 //允许输入IRAM地址 #define LCD_SLEEP_MODE 0x08 //进入睡眠模式 #define LCD_NO_SLEEP_MODE 0x0c //脱离睡眠模式 #define LCD_GRAPH_ON 0x36 //打开绘图模式 #define LCD_GRAPH_OFF 0x34 //关闭绘图模式 void setup() { LCD_Init(); LCD_ClearRam(); // lcd.LCD_DisplayStrings_WithAddress(0x90,"ST7920 testing... processing"); // pinMode(13,OUTPUT); } void loop() { LCD_DisplayStrings_WithAddress(0x80," Welcome to "); LCD_DisplayStrings_WithAddress(0x90,"www.robotbase.cn"); LCD_DisplayStrings_WithAddress(0x88,"LCD 12864 Module"); LCD_DisplayStrings_WithAddress(0x98,"ST7920 testing.."); delay(5000); LCD_ClearRam(); chsDisplay_16bit(0x80, 0xb4f2);//打 chsDisplay_16bit(0x81, 0xd4ec);//造 chsDisplay_16bit(0x82, 0xb9fa);//国 chsDisplay_16bit(0x83, 0xc4da);//内 chsDisplay_16bit(0x84, 0xcde2);//外 chsDisplay_16bit(0x85, 0xd7ee);//最 chsDisplay_16bit(0x86, 0xb4f3);//大 chsDisplay_16bit(0x90, 0xbbfa);//机 chsDisplay_16bit(0x91, 0xc6f7);//器 chsDisplay_16bit(0x92, 0xc8cb);//人 chsDisplay_16bit(0x93, 0xc5e4);//配 chsDisplay_16bit(0x94, 0xbcfe);//件 chsDisplay_16bit(0x95, 0xc9cc);//商 chsDisplay_16bit(0x96, 0xb3c7);//城 chsDisplay_16bit(0x88, 0xb8fc);//更 chsDisplay_16bit(0x89, 0xb6e0);//多 chsDisplay_16bit(0x8a, 0xd7ca);//资 chsDisplay_16bit(0x8b, 0xd1b6);//讯 chsDisplay_16bit(0x8c, 0xc7eb);//请 chsDisplay_16bit(0x8d, 0xb5c7);//登 chsDisplay_16bit(0x8e, 0xc2bc);//录 LCD_DisplayStrings_WithAddress(0x98,"www.robotbase.cn"); delay(5000); LCD_ClearRam(); LCD_ImgDisplay_from_flash(logo); delay(5000); LCD_ClearRam(); LCD_ImgDisplay_from_flash(QQ); delay(5000); LCD_ClearRam(); } void LCD_Init(void) { pinMode(E,OUTPUT); pinMode(RS,OUTPUT); pinMode(RW,OUTPUT); pinMode(6,OUTPUT); pinMode(7,OUTPUT); pinMode(8,OUTPUT); pinMode(9,OUTPUT); pinMode(10,OUTPUT); pinMode(11,OUTPUT); pinMode(12,OUTPUT); pinMode(13,OUTPUT); delay(100); LCD_Write(0,0x30); //基本指令动作 LCD_Write(0,0x02); //地址归位 LCD_Write(0,0x0C); //开显示,关游标 LCD_Write(0,0x01);//清屏,地址指针指向00H LCD_Write(0,0x06); //光标的移动方向 LCD_Write(0,0x80); //设定显示的起始地址 } void LCD_Write( unsigned char Data_Command , unsigned char uc_Content ) { digitalWrite(RW,LOW); //RW = 0; //写模式 if(Data_Command) { digitalWrite(RS,HIGH); //RS = 1; //数据 } else { digitalWrite(RS,LOW); //RS = 0; //指令 } unsigned char i; for (i=DB[0]; i <= DB[7]; i++) { digitalWrite(i,uc_Content & 0x01); uc_Content >>= 1; }//发送数据 digitalWrite(E,HIGH); //E = 1; delay(5); //延时 digitalWrite(E,LOW); //E = 0; } void LCD_ClearRam(void) { LCD_Write(LCD_COMMAND,LCD_BASIC_FUNCTION); //基本指令集 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); //清屏 } void LCD_DDRAM_AddressSet(unsigned char ucDDramAdd) { LCD_Write(LCD_COMMAND,LCD_BASIC_FUNCTION); //基本指令集 LCD_Write(LCD_COMMAND,ucDDramAdd); //设定DDRAM地址到地址计数器AC } void LCD_CGRAM_AddressSet(unsigned char ucCGramAdd) { LCD_Write(LCD_COMMAND,LCD_BASIC_FUNCTION); //基本指令集 LCD_Write(LCD_COMMAND,ucCGramAdd); //设定CGRAM地址到地址计数器AC } void LCD_GDRAM_AddressSet(unsigned char ucGDramAdd) { LCD_Write(LCD_COMMAND,LCD_EXTEND_FUNCTION); //扩展指令集 LCD_Write(LCD_COMMAND,ucGDramAdd); } void chsDisplay_8bit(unsigned char ucAdd, unsigned char code) { LCD_Write(LCD_COMMAND,LCD_BASIC_FUNCTION); //基本指令动作 LCD_DDRAM_AddressSet(ucAdd); LCD_Write(LCD_DATA, code); } void chsDisplay_16bit(unsigned char ucAdd, unsigned int code) { LCD_Write(LCD_COMMAND,LCD_BASIC_FUNCTION); //基本指令动作 LCD_DDRAM_AddressSet(ucAdd); unsigned char temp; delay(2); temp = (code&0xFF00)>>8; LCD_Write(1,temp); temp = code&0x00FF; LCD_Write(1,temp); } void LCD_DisplayStrings_WithAddress(unsigned char ucAdd,const char *p) { unsigned char length; length = strlen(p); LCD_Write(LCD_COMMAND,LCD_BASIC_FUNCTION); //基本指令动作 LCD_DDRAM_AddressSet(ucAdd); for( ; length ; length -- ) LCD_Write(LCD_DATA, *(p++)); } void LCD_GraphModeSet(unsigned char Select) { LCD_Write(LCD_COMMAND,LCD_EXTEND_FUNCTION); //扩展指令集 if(Select) { LCD_Write(LCD_COMMAND,LCD_GRAPH_ON); //打开绘图模式 } else { LCD_Write(LCD_COMMAND,LCD_GRAPH_OFF); //关闭绘图模式 } } void LCD_ImgDisplay(unsigned char *img) { unsigned char i,j; LCD_GraphModeSet(0x00); //先关闭图形显示功能 for(j=0;j<32;j++) { for(i=0;i<8;i++) { LCD_Write(LCD_COMMAND,0x80+j); //设定垂直坐标 LCD_Write(LCD_COMMAND,0x80+i); //设定水平坐标 LCD_Write(LCD_DATA,img[j*16+i*2]); //放入数据高字节 LCD_Write(LCD_DATA,img[j*16+i*2+1]); //放入数据低字节 } } for(j=32;j<64;j++) { for(i=0;i<8;i++) { LCD_Write(LCD_COMMAND,0x80+j-32); LCD_Write(LCD_COMMAND,0x88+i); LCD_Write(LCD_DATA,img[j*16+i*2]); LCD_Write(LCD_DATA,img[j*16+i*2+1]); } } LCD_GraphModeSet(0x01);//最后打开图形显示功能 } void LCD_ImgDisplay_from_flash(unsigned char *img) { unsigned char *data = img; unsigned char i,j; LCD_GraphModeSet(0x00); for(i=0;i<32;i++) { LCD_Write(LCD_COMMAND,0x80|i); LCD_Write(LCD_COMMAND,0x80); for(j=0;j<16;j++) { LCD_Write(LCD_DATA,pgm_read_byte(data++)); } } for(i=0;i<32;i++) { LCD_Write(LCD_COMMAND,0x80|i); LCD_Write(LCD_COMMAND,0x88); for(j=0;j<16;j++) { LCD_Write(LCD_DATA,pgm_read_byte(data++)); } } LCD_GraphModeSet(0x01); LCD_Write(LCD_COMMAND,LCD_BASIC_FUNCTION); }</pre> ===程序效果=== 字迹显示清晰 [[文件:RB-05L0031.jpg|500px|缩略图|居中]] ==产品相关推荐== [[文件:erweima.png|230px|无框|右]] ===购买地址=== [http://www.alsrobot.cn/goods-128.html LCD12864点阵液晶扩展板] =====周边产品推荐=== [http://www.alsrobot.cn/goods-663.html Raspberry Pi 树莓派 2代 B+ 7寸液晶屏 LCD电容触摸 高清显示器] <br/> [http://www.alsrobot.cn/goods-664.html Raspberry Pi 直插 3.5寸液晶屏 树莓派2代 B+ 高清 可触摸液晶屏] ===相关问题解答=== [http://www.makerspace.cn/forum.php?mod=viewthread&tid=3997&highlight=12864 Arduino驱动控制12864液晶屏]<br/> [http://www.makerspace.cn/forum.php?mod=viewthread&tid=2929&highlight=12864 12864液晶显示程序编译错误] ===相关学习资料=== [http://www.makerspace.cn/portal.php 奥松机器人技术论坛]
返回
(SKU:RB-05L003)LCD12864点阵液晶扩展板
。
导航菜单
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面
页面信息