
LCD12864图形液晶并口显示.docx
13页LCD12864图形液晶并口显示【教学引入】液晶屏,在生活中很常见,我们常见的液晶显示器,如电脑的显示器,电视机,等等液晶屏在生活中已得到了普遍应用,它显示个各种各样的画面教学目标】1、掌握 LCD12864 液晶屏的用法;2、编写 LCD12864 液晶屏的指令代码;【知识目标】1、掌握 LCD12864 液晶屏的用法;2、掌握 LCD12864 液晶屏指令代码;【教学准备】电脑、Proteus、Keil【教学方法】教法:讲授法、讨论法学法:练习法、探究法【教学课时】四课时【教学过程】一、12864 液晶介绍(1) 12864 是 128*64 点阵液晶模块的点阵数简称,业界约定俗成的简称12864 点阵的屏显成本相对较低,适用于各类仪器,小型设备的显示领域12864M 汉字图形点阵液晶显示模块,可显示汉字及图形,内置 8192 个中文汉字(16X16 点阵) 、128 个字符(8X16 点阵)及 64X256 点阵显示 RAM(GDRAM) 12864 引脚说明引脚号 引脚名称 方向 功能说明1 VSS - 模块的电源地2 VDD - 模块的电源正端3 VO - 液晶显示对比度调节端4 RS( CS) H/L 数据/命令选择端(H/L) (串片选)5 R/W(SID) H/L 读/写选择端(H/L) (串数据口)6 E(SCLK) H/L 使能信号(串同步时钟信号)7 D0 H/L 数据口8 D1 H/L 数据口9 D2 H/L 数据口10 D3 H/L 数据口11 D4 H/L 数据口12 D5 H/L 数据口13 D6 H/L 数据口14 D7 H/L 数据口15 PSB H/L 并/串选择:H 并行 L 串行16 NC 空脚17 RST H/L 复位,低电平有效18 NC 空脚19 BLA - 背光电源正极20 BLK - 背光电源负极主要技术参数显示容量 128X64芯片工作电压 3.3~5.5V模块最佳工作电压 5.0V与 MCU 接口 8 位或 4 位并行/3 位串行工作温度(常温型) -10°C~+60°C工作温度(宽温型) -20°C~+70°C查阅“12864M.PDF” 12864M 液晶显示模块技术手册——四、用户指令集 1、指令表 1:(RE=0 :基本指令表) ,如下图,讲解了 12864 的基本指令集和扩充指令集。
当模块在接受指令前,微处理器必须先确认模块内部处于非忙碌状态,即读取 BF 标志时 BF 需为0RE”为基本指令集与扩充指令集的选择控制位元,往后的指令集将维持在最后的状态当选择G=0 :绘图显示OFF , 汉字显示的时,12864屏只能显示 8X4=32个汉字,下面是汉字显示的坐标二、12864 液晶屏驱动电路所需原件清单原件名称 所属类(Category) 所属子类(Sub-category)AT89C52 Microprocessor ICs 8051 FamilyPOT-HG Resistors VariableRESPACK-8 Resistors Resistor PacksLCD12864A 自制 -将表格所列原件添加到对象选择器窗口,绘制如下 12864 液晶屏驱动电路AT89C52 的 P0 口连接 12864 的并行数据口,RP1 为 P0 口的上拉排阻三、52 代码编写(1)打开 keil uVision4,建立一个新的工程,工程名为"12864 graphic LCD parallel display",保存类型*.uvproj,单片机型号 AT89C52在工程中添加 12864 graphic LCD parallel display.c 文件,如下图(2 )代码编写/*********************12864 液晶显示************************功能说明:将数组内的字符串显示到 12864 上面*******************************************************************/#include //52 系列单片机头文件#include #define uchar unsigned char // define 宏定义#define uint unsigned int // define 宏定义/*12864 端口定义 */#define LCD_data P0 //数据口sbit LCD_RS = P1^0; //寄存器选择输入 sbit LCD_RW = P1^1; //液晶读/写控制sbit LCD_EN = P2^5; //液晶使能控制sbit LCD_PSB = P1^2; //串/并方式控制uchar code TABROW1[][17]={ //字符串的末尾都有一个 ASCIII 的\0,所以为 17"去年今日此门中,", "人面桃花相映红。
","人面不知何处去,","桃花依旧笑春风"};/****************************************** 毫秒级延时函数******************************************/void Delay_ms(uchar ms){uchar i,j;for(i=ms;i>0;i--)for(j=112;j>0;j--);}/****************************************** 检测 12864 是否忙标志位******************************************/bit Check_12864_busy(){bit fgbusy; //忙标志位名称LCD_RS=0; //命令选择LCD_RW=1; //液晶读控制LCD_EN=1; //使能开_nop_(); //空指令fgbusy=(bit)(LCD_data&0x80);//获取忙碌标志 BF 的值,BF=1 忙LCD_EN=0; //使能关return fgbusy; //返回标志位数值,判断 12864 内部动作是否完成}/****************************************** 向 12864 写命令******************************************/void Write_12864_cmd(uchar cmd){while(Check_12864_busy());//忙则一直等待LCD_RS=0; //命令选择LCD_RW=0; //液晶写控制LCD_data=cmd; //发送命令LCD_EN=1; //使能开_nop_(); //空指令_nop_();LCD_EN=0; //使能关}/****************************************** 向 12864 写要显示的数据******************************************/void Write_12864_data(uchar dat){while(Check_12864_busy()); //忙则一直等待LCD_RS=1; //数据选择LCD_RW=0; //液晶写控制LCD_data=dat; //发送数据LCD_EN=1; //使能开_nop_(); //空指令_nop_();LCD_EN=0; //使能关}/****************************************** 12864 初始化******************************************/void init_12864(){LCD_PSB=1; //8 位并口方式Write_12864_cmd(0x30); //扩充指令集设置:8 位设置,RE=0:基本指令集设置,G=0:绘图显示 OFFDelay_ms(5);Write_12864_cmd(0x30); //基本指令集设置:DL=1,RE=0 基本指令集动作Delay_ms(5);Write_12864_cmd(0x0c); //显示状态开/ 关,D=1 整体显示 ON,C=B=0 游标、游标位置关。
Delay_ms(5);Write_12864_cmd(0x01); //清除显示Delay_ms(5);}void display_row(uchar row) //显示一行文字{uchar i=0,row_ad[4]={0x80,0x90,0x88,0x98}; //row_ad 为四行汉字的第一个字的 X 坐标Write_12864_cmd(row_ad[row]); //设定汉字显示坐标 ,第 row 行、第一个while(TABROW1[row][i]!='\0') //到了字符串末尾,跳出 while 循环{ Write_12864_data(TABROW1[row][i]); //写第 row 行,第 i 个数据i++;}}void main(){uchar row;init_12864(); //调用 12864 初始化函数while(1){for(row=0;row<4;row++) //依次显示 4 行文字display_row(row);}}代码写好后,单击 按钮,打开{Options for Target}对话框,点选{Target}选项卡,在{Xtal(MHz):}后面的框格里,填写"12.0",设置单片机的频率为 12M,如下图点选{Output}选项卡,勾选{Create HEX File}前面的复选框,如下图编译时生成.HEX 文件。
单击 OK 按钮,关闭对话框单击全部编译 按钮,结果如下0 错误,0 警告,编译通过,并生成 12864 graphic LCD parallel display.HEX 文件把 12864 graphic LCD parallel display.hex 文件添加到 AT89C52仿真:单击仿真进程控制按钮 里面的运行按钮 ,查看仿真结果四、操作实验箱(1 )硬件连接采用 USB ISP 下载方式,下载器如下图,实验箱采用 USB 窃电,无需外接电源将下载器一端连接 USB 接口,如下图,指示灯亮另一端连接“单片机核心板”的 ISP 插座(防呆的),如下图单片机核心板上单片机引脚 EA 需要拉高,拉高选择单片机内部程序执行,而不是外部程序执行,如下图(2 )软件操作双击“烧录软件”文件夹下 图标,打开软件烧录界面,如下图在 Select Chip 下面选择 AT89S52 芯片 ,其它默认单击右侧“文件”下的 图标按钮,如图 ,打开文件选取对话框,选取"12864 graphic LCD parallel display.hex"文件,如下图单击 图标按钮,回到软件烧录界面,下面空白处显示调入 Flash 文件:matrix keyboard.hex。
如下图单击 图标按钮,下面空白处显示 1:擦除,写 Flash,效验 Flash,成功,(2015/12/22 17:06:38),如下图下载完成3)“单片机核心板”模块 连接“LCD 12864”模块将“单片机核心板”模块上的“12864-1”接线座与“LCD 12864”模块上的“12864-1”接线座相连;将 “单片机核心板”模块上的“12864-2”接线座与“LCD 12864”模块上的“12864-2”接线座相连.操作程序的运行状况五、作业练习1、改动 LCD12864 液晶并口显示 代码,让 12864 显示图形。












