基于C8051F410单片机的12864带字库点阵LCD显示器设计.doc_第1页
基于C8051F410单片机的12864带字库点阵LCD显示器设计.doc_第2页
基于C8051F410单片机的12864带字库点阵LCD显示器设计.doc_第3页
基于C8051F410单片机的12864带字库点阵LCD显示器设计.doc_第4页
基于C8051F410单片机的12864带字库点阵LCD显示器设计.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

题 目:基于C8051F410的128*64带字库点阵LCD显示器设计 班级: 姓 名: 学 号: 基于C8051F410的128*64带字库点阵LCD显示器设计 (温州大学物理与电子信息工程学院)摘要:128*64带字库点阵LCD显示器可以显示84行1616点阵的汉字。显示数据RAM(DDRAM)模块内部显示数据RAM提供642个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型 。 字符显示RAM在液晶模块中的地址80H9FH。字符显示的RAM的地址与32个字符显示区域有着一一对应的关系。带中文字库的128X64-0402B内部提供1282字节的字符显示RAM缓冲区(DDRAM)。关键词:LCD液晶屏,并行接口,控制器接口信号,基本指令,扩充指令,字符显示,图形显示1 12864点阵LCD液晶屏带中文字库详细介绍 带中文字库的128*64是一种具有4位/8位并行、2线或3线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为12864, 内置8192个16*16点汉字,和128个16*8点ASCII字符集.利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示84行1616点阵的汉字. 也可完成图形显示.低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。2 基本特性(1)、低电源电压(VDD:+3.0-+5.5V)(2)、显示分辨率:12864点 (3)、内置汉字字库,提供8192个1616点阵汉字(简繁体可选) (4)、内置 128个168点阵字符 (5)、2MHZ时钟频率 (6)、显示方式:STN、半透、正显 (7)、驱动方式:1/32DUTY,1/5BIAS (8)、视角方向:6点 (9)、背光方式:侧部高亮白色LED,功耗仅为普通LED的1/51/10 (10)、通讯方式:串行、并口可选 (11)、内置DC-DC转换电路,无需外加负压 (12)、无需片选信号,简化软件设计(13)、工作温度: 0 - +55 ,存储温度: -20 - +603 模块接口说明并行接口管脚号管脚名称电平管脚功能描述1VSS0V电源地2VCC3.0+5V电源正3V0-对比度(亮度)调整4RS(CS)H/LRS=“H”,表示DB7DB0为显示数据RS=“L”,表示DB7DB0为显示指令数据5R/W(SID)H/LR/W=“H”,E=“H”,数据被读到DB7DB0R/W=“L”,E=“HL”, DB7DB0的数据被写到IR或DR6E(SCLK)H/L使能信号7DB0H/L三态数据线8DB1H/L三态数据线9DB2H/L三态数据线10DB3H/L三态数据线11DB4H/L三态数据线12DB5H/L三态数据线13DB6H/L三态数据线14DB7H/L三态数据线15PSBH/LH:8位或4位并口方式,L:串口方式(见注释1)16NC-空脚17/RESETH/L复位端,低电平有效(见注释2)18VOUT-LCD驱动电压输出端19AVDD背光源正端(+5V)(见注释3)20KVSS背光源负端(见注释3)*注释1:如在实际应用中仅使用并口通讯模式,可将PSB接固定高电平,也可以将模块上的J8和“VCC”用焊锡短接。*注释2:模块内部接有上电复位电路,因此在不需要经常复位的场合可将该端悬空。 *注释3:如背光和模块共用一个电源,可以将模块上的JA、JK用焊锡短接。4 模块主要硬件构成说明控制器接口信号说明:4.1RS,R/W的配合选择决定控制界面的4种模式:RSR/W功能说明LLMPU写指令到指令暂存器(IR)LH读出忙标志(BF)及地址记数器(AC)的状态HLMPU写入数据到数据暂存器(DR)HHMPU从数据暂存器(DR)中读出数据4.2E信号E状态执行动作结果高低I/O缓冲DR配合/W进行写数据或指令高DRI/O缓冲配合R进行读数据或指令低/低高无动作 忙标志:BF BF标志提供内部工作情况.BF=1表示模块在进行内部操作,此时模块不接受外部指令和数据.BF=0时,模块为准备状态,随时可接受外部指令和数据.利用STATUS RD 指令,可以将BF读到DB7总线,从而检验模块之工作状态. 字型产生ROM(CGROM) 字型产生ROM(CGROM)提供8192个此触发器是用于模块屏幕显示开和关的控制。DFF=1为开显示(DISPLAY ON),DDRAM 的内容就显示在屏幕上,DFF=0为关显示(DISPLAY OFF)。DFF 的状态是指令DISPLAY ON/OFF和RST信号控制的。 显示数据RAM(DDRAM)模块内部显示数据RAM提供642个位元组的空间,最多可控制4行16字(64个字)的中文字型显示,当写入显示数据RAM时,可分别显示CGROM与CGRAM的字型;此模块可显示三种字型,分别是半角英数字型(16*8)、CGRAM字型及CGROM的中文字型,三种字型的选择,由在DDRAM中写入的编码选择,在0000H0006H的编码中(其代码分别是0000、0002、0004、0006共4个)将选择CGRAM的自定义字型,02H7FH的编码中将选择半角英数字的字型,至于A1以上的编码将自动的结合下一个位元组,组成两个位元组的编码形成中文字型的编码BIG5(A140D75F),GB(A1A0-F7FFH)。 字型产生RAM(CGRAM) 字型产生RAM提供图象定义(造字)功能, 可以提供四组1616点的自定义图象空间,使用者可以将内部字型没有提供的图象字型自行定义到CGRAM中,便可和CGROM中的定义一样地通过DDRAM显示在屏幕中。 地址计数器AC地址计数器是用来贮存DDRAM/CGRAM之一的地址,它可由设定指令暂存器来改变,之后只要读取或是写入DDRAM/CGRAM的值时,地址计数器的值就会自动加一,当RS为“0”时而R/W为“1”时,地址计数器的值会被读取到DB6DB0中。 光标/闪烁控制电路此模块提供硬体光标及闪烁控制电路,由地址计数器的值来指定DDRAM中的光标或闪烁位置。5 指令说明 模块控制芯片提供两套控制命令,基本指令和扩充指令如下:指令表1:(RE=0:基本指令)指 指 令 码功 能令RSR/WD7D6D5D4D3D2D1D0清除显示0000000001将DDRAM填满20H,并且设定DDRAM的地址计数器(AC)到00H地址归位000000001X设定DDRAM的地址计数器(AC)到00H,并且将游标移到开头原点位置;这个指令不改变DDRAM 的内容显示状态开/关0000001DCBD=1: 整体显示 ONC=1: 游标ONB=1:游标位置反白允许进入点设定00000001I/DS指定在数据的读取与写入时,设定游标的移动方向及指定显示的移位游标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的内容功能设定00001DLXREXXDL=0/1:4/8位数据RE=1: 扩充指令操作RE=0: 基本指令操作设定CGRAM地址0001AC5AC4AC3AC2AC1AC0设定CGRAM 地址设定DDRAM地址0010AC5AC4AC3AC2AC1AC0设定DDRAM 地址(显示位址)第一行:80H87H第二行:90H97H读取忙标志和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值写数据到RAM10数据将数据D7D0写入到内部的RAM (DDRAM/CGRAM/IRAM/GRAM)读出RAM的值11数据从内部RAM读取数据D7D0(DDRAM/CGRAM/IRAM/GRAM)指令表2:(RE=1:扩充指令)指 指 令 码功 能令RSR/WD7D6D5D4D3D2D1D0 待命模式0000000001进入待命模式,执行其他指令都棵终止待命模式卷动地址开关开启000000001SRSR=1:允许输入垂直卷动地址SR=0:允许输入IRAM和CGRAM地址 反白 选择00000001R1R0选择2行中的任一行作反白显示,并可决定反白与否。初始值R1R000,第一次设定为反白显示,再次设定变回正常 睡眠 模式0000001SLXXSL=0:进入睡眠模式SL=1:脱离睡眠模式 扩充 功能 设定00001CLXREG0CL=0/1:4/8位数据RE=1: 扩充指令操作RE=0: 基本指令操作G=1/0:绘图开关设定绘图RAM地址0010AC60AC50AC4AC3AC3AC2AC2AC1AC1AC0AC0设定绘图RAM先设定垂直(列)地址AC6AC5AC0再设定水平(行)地址AC3AC2AC1AC0将以上16位地址连续写入即可备注:当IC1在接受指令前,微处理器必须先确认其内部处于非忙碌状态,即读取BF标志时,BF需为零,方可接受新的指令;如果在送出一个指令前并不检查BF标志,那么在前一个指令和这个指令中间必须延长一段较长的时间,即是等待前一个指令确实执行完成。6 应用举例6.1使用前的准备:先给模块加上工作电压,再按照下图的连接方法调节LCD的对比度,使其显示出黑色的底影。此过程亦可以初步检测LCD有无缺段现象。6.2字符显示:带中文字库的128X64-0402B每屏可显示4行8列共32个1616点阵的汉字,每个显示RAM可显示1个中文字符或2个168点阵全高ASCII码字符,即每屏最多可实现32个中文字符或64个ASCII码字符的显示。带中文字库的128X64-0402B内部提供1282字节的字符显示RAM缓冲区(DDRAM)。字符显示是通过将字符显示编码写入该字符显示RAM实现的。根据写入内容的不同,可分别在液晶屏上显示CGROM(中文字库)、HCGROM(ASCII码字库)及CGRAM(自定义字形)的内容。三种不同字符/字型的选择编码范围为:00000006H(其代码分别是0000、0002、0004、0006共4个)显示自定义字型,02H7FH显示半宽ASCII码字符,A1A0HF7FFH显示8192种GB2312中文字库字形。字符显示RAM在液晶模块中的地址80H9FH。字符显示的RAM的地址与32个字符显示区域有着一一对应的关系,其对应关系如下表所示。80H81H82H83H84H85H86H87H90H91H92H93H94H95H96H97H88H89H8AH8BH8CH8DH8EH8FH98H99H9AH9BH9CH9DH9EH9FH字符显示举例以下为内部电压VDD和文字显示代码#include #include #define uchar unsigned char#define uint unsigned intuchar flag=0;unsigned char sendata=V,D,D, ,:,0,0,0,0, m,V;unsigned char fang=方成杰;unsigned int i;sbit RS=P13;sbit RW=P14;sbit EN=P15;sbit PSB=P16;sbit RET=P07;sfr16 TMR2RL = 0xca; / 定时器2重载值 P210这里采用的是定时器2的16位自动重载sfr16 TMR2 = 0xcc; / 定时器2计数值sfr16 ADC0 = 0xbd; / P35 ADC0的采样值#define SYSCLK 24500000 / 内部晶振频率为24.5MHz#define BAUDRATE 115200 / 串口通讯波特率为115200void SYSCLK_Init (void)OSCICN = 0x83; / 内部振荡器不分频为24.5MHz P138 RSTSRC = 0x04; / 复位源寄存器 时钟丢失检测器标志置1? P110CLKSEL = 0x00; void PCA_Init() PCA0MD &= 0x40; PCA0MD = 0x00;void PORT_Init (void)/ P0.0 - Unassigned, Open-Drain, Digital / P0.1 - Unassigned, Open-Drain, Digital / P0.2 - Unassigned, Open-Drain, Digital / P0.3 - Unassigned, Open-Drain, Digital / P0.4 - TX0 (UART0), Push-Pull, Digital / P0.5 - RX0 (UART0), Push-Pull, Digital / P0.6 - Unassigned, Open-Drain, Digital / P0.7 - Unassigned, Open-Drain, Digital / P1.0 - Unassigned, Open-Drain, Digital / P1.1 - Skipped, Open-Drain, Analog / P1.2 - Unassigned, Open-Drain, Digital / P1.3 - Skipped, Push-Pull, Digital / P1.4 - Skipped, Push-Pull, Digital / P1.5 - Skipped, Push-Pull, Digital / P1.6 - Skipped, Push-Pull, Digital / P1.7 - Unassigned, Open-Drain, Digital / P2.0 - Skipped, Push-Pull, Digital / P2.1 - Skipped, Push-Pull, Digital / P2.2 - Skipped, Push-Pull, Digital / P2.3 - Skipped, Push-Pull, Digital / P2.4 - Skipped, Push-Pull, Digital / P2.5 - Skipped, Push-Pull, Digital / P2.6 - Skipped, Push-Pull, Digital / P2.7 - Skipped, Push-Pull, Digital P1MDIN = 0xFD; P0MDOUT = 0x30; P1MDOUT = 0x78; P2MDOUT = 0xFF; P1SKIP = 0x7A; P2SKIP = 0xFF; XBR0 = 0x01; XBR1 = 0x40;void delay_50us(uint t)uchar i=2;while(t-)while(i-);void delay_50ms(uint t)uint i,j,k;for (i=t;i0;i-)for (j=57;j0;j-)for(k=100;k0;k-);void write12864com(uchar com) RS=0; RW=0; delay_50us(1); P2=com; EN=1; delay_50us(1); EN=0; delay_50us(1);void write12864dat(uchar dat)RS=1;RW=0;delay_50us(1);P2=dat;EN=1;delay_50us(1);EN=0;delay_50us(1); void initinal12864(void)PSB=1; RET=1;delay_50ms(2);write12864com(0x30);delay_50us(2);write12864com(0x30);delay_50us(2);write12864com(0x0c);delay_50us(1);write12864com(0x01);delay_50us(20);write12864com(0x06);delay_50us(2); void write12864place(uchar x,uchar y)uchar tempaaa=0x80;switch(x)case 1: tempaaa=0x7f; break;case 2: tempaaa=0x8f;break;case 3: tempaaa=0x87;break;case 4: tempaaa=0x97;break;tempaaa=tempaaa+y;write12864com(tempaaa);delay_50us(4);void Timer2_Init (void)TMR2CN = 0x00; / 定时器2控制寄存器 P213 停止定时器2,清空TF2标志位,以系统时钟为基准,16位自动重装载CKCON = 0x30; / 时钟控制寄存器 P208 1:允许定时器2低字节中断。 1:使能定时器2捕捉方式。1-0 00 24.5/12TMR2RL = - (SYSCLK / 10000); / 重载值为100uSTMR2 = 0xffff; / 设置计数值TR2 = 1; / 启动定时器2void ADC0_Init (void)ADC0CN = 0x03; / ADC0控制寄存器 P46 11:定时器2溢出启动ADC0转换。REF0CN = 0x13; / 电压基准控制寄存器 P61 内部电压基准设置为2.2V。并输出至VREF脚ADC0MX = 0x19; / ADC0通道选择寄存器 P43 选择P1.1作为ADC0输入通道ADC0CF = (SYSCLK/3000000)-1)3; / set SAR clock to 3MHz ADC0配置寄存器P44 ADC0CF |= 0x00; / right-justify results/*位7-3:AD0SC4-0:ADC0 SAR转换时钟周期控制位位2:-1AD0RPT:ADC0重复次数控制ADC0转换结束(AD0INT)和ADC0窗口比较中断(AD0WINT)之间的转换和累加次数。在突发模式未被使能时,每次转换都需要一次转换启动。在突发模式,一次转换启动能触发多个自定时的转换。在这两种模式下,转换结果都被累加到ADC0H:ADC0L寄存器。当AD0RPT1-0的设置值不为00时,ADC0CN寄存器中的AD0LJST位必须被清0(右对齐)。00:执行1次转换。01:执行4次转换转换和累加。10:执行8次转换转换和累加。11:执行16次转换转换和累加。位0:保留。读 = 0b,必须写0b。*/ EIE1 |= 0x08; / 扩展中断允许1 P95 扩展中断允许1 允许AD0INT标志的中断请求。AD0EN = 1; / ADC0控制寄存器中的使能位 位7/*位7:AD0EN:ADC0使能位0:ADC0禁止。ADC0处于低耗断点状态。1:ADC0使能。ADC0处于活动状态,可以进行转换数据。*/void UART0_Init (void)SCON0 = 0x10; /设置UART0为8位通信方式 P184 允许接收 TH1 = 0x96; /CKCON |= 0x08; /系统时钟12分频TL1 = TH1; / 自动装载 TMOD &= 0xf0; / p207 设置为定时器1方式 TMOD |= 0x20; / 设置8位自动重载定时器TR1 = 1; /开启定时器1 TI0 = 1; /发送完一字节数据后串行口中断置1 /-void ADC0_ISR (void) interrupt 10static unsigned long accumulator = 0; / 用于平均值的累加和static unsigned int measurements = 2048; / 用于平均值的采样次数unsigned long result=0; / 存放计算后的采样平均值unsigned long mV; / 用于存储最后的电压值unsigned int i;AD0INT = 0; / ADC0控制寄存器 P46 位5 /*位5:AD0INT:ADC0转换结束中断标志0:从最后一次AD0INT清0后,ADC0还没有完成一次数据转换。1:ADC0完成了一次数据转换。*/accumulator += ADC0; /采样值累加measurements-; /次数减一if(measurements = 0) /判断是否达到采样平均次数 measurements = 2048; /重新赋值采样次数result = accumulator / 2048; /计算2048次采样的平均值,形成滤波accumulator=0; /累加和清零/ 平均值的采样次数取决于你的是否决定滤波和波形的频率大小,一般用于平稳波形的测量 / / Vref (mV) / measurement (mV) = - * result (bits) / (212)-1 (bits)mV = result * 2200 / 4095; sendata5=mV/1000;sendata6=(mV-sendata5*1000)/100; sendata7=(mV-sendata5*1000-sendata6*100)/10; sendata8=mV-sendata5*1000-sendata6*100-sendata7*10; sendata5=sendata5+0x30;sendata6=sendata6+0x30;sendata7=sendata7+0x30;sendata8=sendata8+0x30;flag=1;/printf(P1.1 V : %ld mVn,mV);for(i=0;i=12;i+) TI0 = 0; SBUF0=sendatai; while(TI0 != 1); TI0 = 0; void main (void) PCA0MD &= 0x40; / WDTE = 0 PCA方式寄存器 P230 位6 1:PCA模块5被用作看门狗定时器。/在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,/程序的正常运行被打断,由单片机控制的系统无法继续工作,会造成整个系统的陷入停滞状态,发生不可预料的后果,/所以出于对单片机运行状态进行实时监测的考虑,便产生了一种专门用于监测单片机程序运行状态的芯片,俗称看门狗(watchdog) SYSCLK_Init (); PCA_Init(); PORT_Init (); Timer2_Init(); UART0_Init(); ADC0_Init(); initinal12864();/初始化12864write12864place(1,1);delay_50us(3);for(i=0;i12;i+) write12864dat(sendatai);write12864com(0x9D);for(i=0;i6;i+) write12864dat(fangi);delay_50us(4); EA = 1; / 开总中断while (1) if(flag=1) write12864place(1,4); delay_50us(3);write12864dat(sendata5);write12864dat(sendata6);

温馨提示

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

评论

0/150

提交评论