LCD12232液晶显示实验_第1页
LCD12232液晶显示实验_第2页
LCD12232液晶显示实验_第3页
LCD12232液晶显示实验_第4页
LCD12232液晶显示实验_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、AVR学习笔记十七、LCD12232液晶显示实验 -基于LT_Mini_M1617.1 LCD12232液晶显示实验17.1.1、实例功能 在前面我们已经学习了1602和12864液晶的基本知识,并且通过简单的实例实现了在1602和12864液晶上显示字符和汉字。今天我们再来学习另外一种比较常用的液晶12232. 本实例中我们选用深圳锦昌电子的DM12232B型液晶。      本实例分为三个功能模块,分别描述如下: 单片机系统:利用ATmega16单片机与DM12232B型液晶构成液晶显示电路。 外围电路:DM12232B型液晶与单

2、片机的连接电路。 软件程序:编写软件,控制液晶显示字符。通过本实例的学习,掌握以下内容: 掌握DM12232B型液晶的基本原理和程序设计方法。17.2、器件和原理 关于液晶的显示原理我们在前面的实例中已经做过介绍,在这里就不再多做说明。在本实例中我们重点介绍DM12232B型液晶的结构、指令及显示控制。12232系列的LCD大部分都是使用SED1520驱动芯片,12232F用的是ST7920。它们的运行速度都是nS级的,所以一般我们发送数据的时候不用过多考虑等待问题。许多LCD模块的引脚数都不一致,常见有1620个不等。不过它们的功能是大同小异。我们所用的DM12232B型液晶是18引脚:VD

3、D,VSS,VLCD, RET,E1,E2,R/W,A0,DB0, DB1,DB2,DB3, DB4,DB5,DB6,DB7,LED+,LED-。、DM12232B型液晶的管脚排列 DM12232B型液晶的管脚排列及说明如图1所示: 引脚功能简单说明:1、VLCD为LCD电源,要求电压可调节,一般用20K的可调电阻取中间抽头电压供电; 2、RES,复位信号。这个大家都知道,一般应用中直接接到高平就行了;3、E1,E2为控制器选择线,高电平时为选中;4、R/W0时为写选通,R/W1时为读选通,一般我们只是向液晶发送数据,不读液晶内部的数据,所以该脚可以直接接地(低电平);5、A01时表示所发的数

4、据是显示数据,A00时表示所发数据是指令(Instruction);6、DB0DB7为数据线;7、LED-,LED+为背光灯电源,一个接正,一个接地就行。、DM12232B型液晶的读写时序DM12232B型液晶的读写时序如图2所示, 应用中主要有两种读写时序:写指令和写数据,分别描述如下: 写指令:E选通A0=0读写使能(直接接地就不用设置了)数据的发送状态释放写数据E选通A0=1读写使能(直接接地就不用设置了)数据的发送状态释放 图1 DM12232B型液晶的管脚排列及说明          

5、      图2 DM12232B型液晶的读写时序17.2.3、DM12232B型液晶的指令介绍DM12232B型液晶的指令如表1所示表1 DM12232B型液晶的指令表1(续) DM12232B型液晶的指令17.2.4、DM12232B型液晶的原理图DM12232B型液晶的原理图如图3所示17.2.5、DM12232B型液晶的地址表DM12232B型液晶的地址表如图4所示图3 DM12232B型液晶的原理图图4 DM12232B型液晶的地址表、电路和连接 图5所示为DM12232B型液晶与单片机之间进行并口通讯的典型接法本实例是在LT_Min

6、i_M16学习板的基础上做的扩展实验,具体连线如下。引脚连接mcu lcd 引脚说明Vcc VDD 电源电压GND VSS 电源地偏压信号,接可调电阻 VEE(VLCD) LCD外接驱动负电压PA1 RES 复位信号(低电平有效),低电平复位PA6 E1 读写使能信号1PA7 E2 读写使能信号2PA5 R/W 读写选择信号PA4 A0 H-显示数据。L-显示指令数据(指令数据选择)PB0 DB0 数据线PB1 DB1PB2 DB2PB3 DB3PB4 DB4PB5 DB5PB6 DB6 PB7 DB7Vcc VLED+ LED(+5V)或EL背光源GND VLED- LED(0V)或EL背光

7、源图5 12232B液晶与单片机的一种接口图17.4、程序设计 1、程序功能程序的功能是使用单片机控制12232B液晶显示字符,程序比较简单,直接看程序就能明白原理了。2函数说明本程序多个功能函数,分别是: DM12232B液晶处理相关函数:extern void LCDPort_Init(void); /液晶端口初始化extern void LCD_Init(void); /LCD初始化extern void WriteCommand(unsigned char chip_select,unsigned char cmd);/写命令extern void WriteData(unsigned

8、 char chip_select,unsigned char data);/写数据extern void clear_lcd(void); /清屏extern void tex_Write(unsigned char *pt); /写字符extern void WriteCharacter(unsigned char *pt); /写汉字extern void Drawing_Map(unsigned char *pt); /绘图 延时相关函数:void Delayus(unsigned int lus); /us延时函数void Delayms(unsigned int lms); /ms

9、延时函数由于WINAVR自带函数库中的延时函数使用起来很不方便,并且晶振频率不同,延时时间也有区别,所以本实例中自己写了两个延时函数。 3、使用WINAVR开发环境,使用的是外部12M的晶振,所以需要将makefile文件中的时钟频率修改为12M。另外在程序烧录到单片机的时候,熔丝位也要选择为外部12M晶振(注意是晶振,不是外部振荡器,一定不要选择错了,否则会导致单片机不能再烧写程序)。4、程序代码由于本程序代码比较长,所以在此只列出与控制液晶DM12232B相关的部分代码,完整程序放在附件中/端口初始化void LCDPort_Init() /LCD数据端口设置PORTB = 0xff; /

10、DDRB = 0xFF; /配置端口PB全部为输出口,LCD数据端口/LCD控制端口设置 SET_RES; SET_A0;SET_RW; SET_E1; SET_E2; DDRA = 0xff; /Delayms(15); /LCD初始化void LCD_Init()WriteCommand(0x01,0xe2); /rest 复位WriteCommand(0x02,0xe2);/WriteCommand(0x01,0xae); /close display 关显示/WriteCommand(0x02,0xae); /WriteCommand(0x01,0xa4); /static drive

11、r关静态驱动/WriteCommand(0x02,0xa4);WriteCommand(0x01,0xa9); /duty 1/32占空比1/32WriteCommand(0x02,0xa9);/WriteCommand(0x01,0xa0); /clockwise output ADC选择,顺时针还是逆时针读取RAM数据/WriteCommand(0x02,0xa0); /WriteCommand(0x01,0xee); /end 关闭读修改写,无论读或写操作后,列地址都加1/WriteCommand(0x02,0xee); /WriteCommand(0x01,0x00); /行地址设置,

12、设置显示RAM的行地址(Y地址)/WriteCommand(0x02,0x00);/WriteCommand(0x01,0xc0); /显示起始行设置。指定显示器从显示RAM中的那一行开始显示 /数据,(起始行=0)/WriteCommand(0x02,0xc0);WriteCommand(0x01,0xaf); /opend display 开显示WriteCommand(0x02,0xaf); /LCD写指令,void WriteCommand(unsigned char chip_select,unsigned char cmd)if(chip_select & 1) /判断对左

13、页还是右页的操作SET_E1; /如果是左页,E1使能else if(chip_select & 2) /SET_E2; /右页,E2使能CLR_A0; /A0=0 写命令CLR_RW; /RW=0 写操作PORTB = cmd; /写命令数据到数据端口if(chip_select & 1) /CLR_E1; /关闭左右页使能else if(chip_select & 2) /CLR_E2; / SET_A0; /SET_RW; / /写数据void WriteData(unsigned char chip_select,unsigned char data)if(ch

14、ip_select & 1) /判断左右页SET_E1; /else if(chip_select & 2) /SET_E2; /SET_A0; /A0=1,写数据CLR_RW; /RW=0,写操作PORTB = data; /写数据到数据端口if(chip_select & 1) /CLR_E1; /结束使能else if(chip_select & 2) /CLR_E2; / CLR_A0; /SET_RW; / /清屏void clear_lcd(void)unsigned char a,b,c;for(a = 0xb8;a < 0xbc;a+) /

15、清屏0-3页,指令分别是b8,b9,ba,bb(X地址)b = 0; /WriteCommand(0x01,a); /左,第0页开始WriteCommand(0x02,a); /右,第0页开始WriteCommand(0x02,b); /右,第0行开始(Y地址)WriteCommand(0x01,b); /左,第0行开始for(c = 0;c < 61;c+) /总共122列,左右各61列WriteData(0x01,0x00); /左,每列均填充0WriteData(0x02,0x00); /右,每列均填充0/写字符void tex_Write(unsigned char *pt)un

16、signed char a,b;if(SEL_E1) /左选中? WriteCommand(0x01,0xb8); /页设置,第0页(X地址)WriteCommand(0x01,Add1); /第0行开始(Y)地址for(a = 8;a < 16;a+) / WriteData(0x01,*(pt + a); /上半部分8-16,总高度16, WriteCommand(0x01,0xb9); /第一页WriteCommand(0x01,Add1); /for(b = 0;b < 8;b+) /WriteData(0x01,*(pt + b); /下半部分else if(SEL_E1

17、 = 0) /若为0,写右半边WriteCommand(0x02,0xb8); /WriteCommand(0x02,Add1); /for(a = 8;a < 16;a+) /WriteData(0x02,*(pt + a); / WriteCommand(0x02,0xb9); /WriteCommand(0x02,Add1); /for(b = 0;b < 8;b+) /WriteData(0x02,*(pt + b); / if(Add1 + 8) < 61) Add1 += 8; /如果不超过61列列地址+8else / Add1 = 0; /超过61列,则列地址置

18、0,写右半边WriteCommand(0x02,0xb8); /WriteCommand(0x02,Add1); /for(a = 12;a < 16;a+) /一个字符占8列,所以在61列之后还要写4列WriteData(0x02,*(pt + a); /WriteCommand(0x02,0xb9); /WriteCommand(0x02,Add1); /for(b = 4;b < 8;b+) /WriteData(0x02,*(pt + b); /Add1 += 4; / SEL_E1 = 0; / 写汉字void WriteCharacter(unsigned char *

19、pt)unsigned char a,b; if(SEL_E2) /WriteCommand(0x01,0xba); /WriteCommand(0x01,Add2); /for(a=16;a<32;a+) /WriteData(0x01,*(pt+a); / WriteCommand(0x01,0xbb); /WriteCommand(0x01,Add2); /for(b=0;b<16;b+) /WriteData(0x01,*(pt+b); /else if(SEL_E2=0) /WriteCommand(0x02,0xba); /WriteCommand(0x02,Add2); /for(a=16;a<32;a+) /WriteData(0x02,*(pt+a); / WriteCommand(0x02,0xbb); /WriteCommand(0x02,Add2); /for(b=0;b<16;b+) /WriteData(0x02,*(pt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论