基于Proteus仿真的12864液晶的显示_第1页
基于Proteus仿真的12864液晶的显示_第2页
基于Proteus仿真的12864液晶的显示_第3页
基于Proteus仿真的12864液晶的显示_第4页
基于Proteus仿真的12864液晶的显示_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、Proteus实验报告课程题目:基于Proteus仿真的12864液晶的显不班级:m姓名:m学号:m完成时间:XXX目录一、概述3k 1 LCD 简介3K 2 LCD引脚说明31V 3 LCD原理简图41、4 LCD主要功能介绍.4仁5指令说明.6二、液晶显示原理82. 1汉字和英文显示原理82. 2图形显示9三、软件仿真103. 1汉字显示103.2向上滚动显示113. 3PCB 图11四、部分实验代码12五、总结18一、概述1、LCD简介在Protues仿真软件中,AMPIRE12864是一种图形点阵液晶显 示器。它主要采用动态驱动原理由行驱动一控制器和列驱动器两 部分组成了 128(列)

2、X64(行)的全点阵液晶显示。软件中不提供中 文字库,但可完成图形显示,也可以通过汉字取模软件显示8X4 个(16X16点阵)汉字。2、LCD引脚说明管脚名称LEVER管脚功能描述3VSS0电源地4VDD+5. 0V电源电压5V0一液晶显示器驱动电压6D/I(RS)H/LD/I=,表示DB7sDB0为显示数据D/I二,表示DB7sDB0为显示指令数据7R/WH/LR/W二, E二数据被读到 DB7sDB0R/W= “L”,E= “H-L” 数据被写到 IR 或 DR8EH/LR/扫“L”,E信号下降沿锁存DB7sDB0 R/W=, E= “H” DDRAM 数据读到 DB7DB09DB0H/L

3、数据线10DB1H/L数据线11DB2H/L数据线12DB3H/L数据线13DB4H/L数据线14DB5H/L数据线15DB6H/L数据线16DB7H/L数据线1CS1H/LH:选择芯片(右半屏)信号2CS2H/LH:选择芯片(左半屏)信号17RETH/L复位信号,低电平复位18V0UT-10VLCD驱动负电压19LED+一LED背光板电源20LED-一LED背光板电源3、LCD原理简图RSR纠行驱动卷列驱动-控制器(2 )2Eff-SEGb4SEGfc5-SEGlB1左半屏|64X64右半屏6血44、LCD主要功能介绍显示数据锁存器80位显示R3单元(4096) 第一页(64字节如创一数据总

4、线第二页字节烙创弟三七页2 地址计数器1)显示数据RAM(DDRAM)DDRAM (64X8X8 bits)是存储图形显示数据的。此RAM的每一位 数据对应显示面板上一个点的显示(数据为H)与不显示(数据为L)。 DDRAA的地址与显示位置关系对照图(见附录一)2)I/O缓冲器(DB0DB7)I/O缓冲器为双向三态数据缓冲器。是LCM (液晶显示模块)部总 线与HPL总线的结合部。其作用是将两个不同时钟下工作的系统连接起 来,实现通讯o I/O缓冲器在片选信号/CS有效状态下.1/0缓冲器开放, 实现LCM (液晶显示模块)与MPU之间的数据传递。当片选信号为无效 状态时,I/O缓冲器将中断L

5、CM (液晶显示模块)部总线与MPU数据总线 的联系,对外总线呈髙阻状态,从而不影响MPU的其他数据操作功能。3)输入寄存器输入寄存器用于接收在MPU运行速度下传送给LCM(液晶显示模块 的数据并将其锁存在输入寄存器,其输出将在LCH (液晶显示模块)部 工作时钟的运作下将数据写入指令寄存器或显示存储器。4)输出寄存器输出寄存器用于暂存从显示存储器读出的数据,在MPU读操作时, 输出寄存器将当前锁存的数据通过I/O缓冲器送入MPU数据总线上。5)指令寄存器指令寄存器用于接收MPU发来的指令代码,通过译码将指令代码置 入相关的寄存器或触发器。6)状态字寄存器状态字寄存器是LCM(液晶显示模块)与

6、MPU通讯时唯一的“握手” 信号。状态字寄存器向MPU表示了 LCM (液晶显示模块)当前的工作状 态。尤其是状态字中的“忙”标志位是MPU在每次对LCM (液晶显示模 块)访问时必须要读出判别的状态位。当处于“忙”标志位时,I/O缓 冲器被封锁,此时MPU对LCH (液晶显示模块)的任何操作(除读状态 字操作外)都将是无效的。7)X地址寄存器X地址寄存器是一个三位页地址寄存器,其输出控制着DDRAM + 8个 页面的选择,也是控制着数据传输通道的八选一选择器。X地址寄存器 可以由MPU以指令形式设置。X地址寄存器没有自动修改功能,所以要 想转换页面需要重新设置X地址寄存器的容。8)Y地址计数

7、器Y地址计数器是一个6位循环加一计数器。它管理某一页面上的64 个单元。Y地址计数器可以由MPU以指令形式设置,它和页地址指针结 合唯一选通显示存储器的一个单元,Y地址计数器具有自动加一功能。 在显示存储器读/写操作后Y地址计数将自动加一。当计数器加至3FH后 循环归零再继续加一。9)Z地址计数器Z地址计数器是一个6位地址计数器,用于确定当前显示行的扫描 地址。Z地址计数器具有自动加一功能。它与行驱动器的行扫描输出同 步,选择相应的列驱动的数据输出。10)显示起始行寄存器显示起始行寄存器是一个6位寄存器,它规定了显示存储器所对应 显示屏上第一行的行号。该行的数据将作为显示屏上第一行显示状态 的

8、控制信号。11)显示开/关触发器显示开/关触发器的作用就是控制显示驱动输出的电平以控制显 示屏的开关。在触发器输出为“关”电平时,显示数据锁存器的输入 被封锁并将输出置“0,从而使显示驱动输出全部为非选择波形,显 示屏呈不显示状态。在触发器输出为“开电平时,显示数据锁存器 被控制,显示驱动输出受显示驱动数据总线上数据控制,显示屏将呈 显示状态。12)复位端/RES复位端/RES用于在LCM (液晶显示模块)上电时或需要时实现硬件 电路对LCM (液晶显示模块)的复位。该复位功能将实现:A设置显示状态为关显示状态B显示起始寄存器清零。显示RAM第一行对应显示屏上的第一行。C在复位期间状态字中RE

9、SET位置1。5、指令说明1.指令表指令名称控制信号II控制代码R HI D7 D6 D5 D4 D3 D2 DI DONI显示开关设置0 00011111D显示起始行设置0 011 L5 L4 L3 L2 LIL0页面地址设置0 010111 P2 PlP0列地址设置0 001 C5 C4 C3 C2 ClC0读取状态字0 1BUS 0 ON RE0000Y/0 SEFF T写显示数据1 0数据读显示数据1 1数据详细解释各个指令功能1)读状态字格式 I BUSY II 0 II ON/O II RESE II 0 II 0 II 0 II 0状态字是MPU 了解LCM (液晶显示模块)当前

10、状态,或LCM向HPU提供其部状 态的唯一的信息渠道。BUSY表示当前LCM接口控制电路运行状态。BUSY二1表示LCM正在处理MPU发过 来的指令或数据。此时接口电路被封锁,不能接受除读状态字以外的任何操作。 BUSY=O表示LCM接口控制电路已外于准备好”状态,等待MPU的访问。ON/OFF 表示当前的显示状态。ON/OFF=1表示关显示状态,ON/OFF二0表示开显示状态。 RESET表示当前LCM的工作状态,即反映/RES端的电平状态。当/RES为低电平状 态时,LCM处于复位工作状态,标志位RESET。当/REST为高电平状态时,LCM 为正常工作状态,标志位RESETS。在指令设置

11、和数据读写时要注意状态字中的BUSY标志。只有在BUSY=O时jPl; 对LCM的操作才能有效。因此MPU在每次对LCM操作之前,都要读出状态字判断BUSY 是否为“0” o若不为“0” ,则MPU需要等待,直至BUSY二0为止。2)显示开关设置格式 0011111 D该指令设置显示开/关触发器的状态,由此控制显示数据锁存器的工作方式, 从而控制显示屏上的显示状态。D位为显示开/关的控制位。当D二1为开显示设置, 显示数据锁存器正常工作,显示屏上呈现所需的显示效果。此时在状态字中 0N/0FF=0o当D二0为关显示设置,显示数据锁存器被置零,显示屏呈不显示状态, 但显示存储器并没有被破坏,在状

12、态字中ON/OFF二1。3)显示起始行设置格式1 1 11 1L5L4L3L2L1I(J该指令设置了显示起始行寄存器的容oLCM通过/CS的选择分别具有64行显示的管理能力,该指令中L5L0为显示起始行的地址,取值在03FH (164行) 围,它规定了显示屏上最顶一行所对应的显示存储器的行地址。如果定时间隔地, 等间距地修改(如加一或减一)显示起始行寄存器的容,则显示屏将呈现显示 容向上或向下平滑滚动的显示效果。4)页面地址设置格式1 10111P2 IP1该指令设置了页面地址一X地址寄存器的容。LCM将显示存储器分成8页,指 令代码中P2P0就是要确定当前所要选择的页面地址,取值围为07H,

13、代表第18页。该指令规定了以后的读/写操作将在哪一个页面上进行。5)列地址设置格式01C5C4C3C2C1C0该指令设置了 Y地址数计数器的容,LCM通过/CS的选择分别具有64列显示的 管理能力,C5C0= 03FH (164)代表某一页面上的某一单元地址,随后的 一次读或写数据将在这个单元上进行。Y地址计数器具有自动加一功能,在每一 次读/写数据后它将自动加一,所以在连续进行读/写数据时,Y地址计数器不必 每次都设置一次。页面地址的设置和列地址的设置将显示存储器单元唯一地确 定下来,为后来的显示数据的读/写作了地址的选譽。6)写显示数据格式| 数 |据|该操作将8位数据写入先前已确定的显示

14、存储器的单元。操作完成后列地址 计数器自动加7)读显示数据格式| 数 |据I该操作将LCM接口部的输岀寄存器容读出,然后列地址计数器自动加一。二. 液晶显示原理1汉字和英文显示原理在数字电路中,所有的数据都是以0和1保存的,对LCD控制器进行不同的数据操作, 可以得到不同的结果。对于显示英文操作,由于英文字母种类很少,只需要8位(一字节) 即可。而对于中文,常用却有6000以上,于是我们的DOS前辈想了一个办法,就是将ASCII 表的高128个很少用到的数值以两个为一组来表示汉字,即汉字的码。而剩下的低128位则 留给英文字符使用,即英文的码。那么,得到了汉字的码后,还仅是一组数字,那又如何在

15、屏慕上去显示呢?这就 涉及到文字的字模,字模虽然也是一组数字,但它的意义却与数字的意义有了根本的变化,它是用数字的各位信息来记载英文或汉字的形状,如英文的在字模的记载方式如图1所 示:英文字模位代码0000011111000000001111111100000 0 011001 0 0 0 0 0 0 0 0001100010000000000 011 0 01U0 0 00000000011111111 0 0 0 000000111111100000000000000000000字模信息0x000x000x100x380k6c0xc60xc6Oxfe0kc60kc60xc60xc60x00

16、OxOO0x00OkOO图1 “A字模图而中文的“你”在字模中的记载却如图2所示:中文我位代码字模信息00010000000UxO8, 0x300000000000Us03,00010000000008, lfe800U11111110Oxll, Oxfc001000000100xll,fe02010000001000x32. 0x04100001000000x54, 0x20000001000000x10,0x20n00101010000x10, Ox aS000101001000x10, (tx ad00100100110UxJ 1,0x260000100010Ux2,Cte2200000

17、1000000x3 0, fe200UU001000000x10,0x2000010100000Ox 10, Ox 10000010000000x10.0x40图2 “你”字模图根据芯片的不同取模的方式不同,有多种取模方式:单色点阵液晶字模,横向取模,字 节正序,单色点阵液晶字模,横向取模,字节倒序,单色点阵液晶字模,纵向取模,字节正 序,单色点阵液晶字模,纵向取模,字节倒序等等。而PROTUES中的AMPIRE12684为纵向 取模.字节倒序液晶。2.2图形显示先设页地址再设列地址页地址围0xb8、0xbf列平地址围0x40、0x7f绘图RAM的地址计数器(AC)只对列地址自动加一,当列地址

18、二Ox7F时会重新设为0DDRAM的坐标地址与资料排列顺序如下图:/CSI-D/CS2-D卜0 6263D1 6263D2DD2QD2QD8QD8QD2QD2QD2QD2QD111111111I1X-DD87027D87D27D27D27D87D27D87D277D8DD8DD8DD8DD8DD8DD8DD8DD8D18 0g111111111LIID87D87D8?D8?D87087D8?DB7DB7D8?55X-7D2DD8QD8QD2QD8QD2QD2QD20D2QD2Q561!111!11LIID8 7D87D87D87D87DS7D87D87D87D8763三、软件仿真1汉字显示在P

19、rotues软件中选择所需元件,搭建的电路图如图1所示。LCM 4iPIICtZ25ft * * * * YHS ::.处呕熙菊胡列卩rc.wiIC3VCCc.冈,mmocfCJ/Wt2DfZ t2J/FXJChl! ,“*C 灯&*e PZAA1* ratyw ravTa P3ZWTO rx/RTT 13 uTO OSiP2k. Fa?.iT将编写的代码烧写到单片机里,运行液晶显示正常LCM TM*- *劭好四第腕山X洞她叩5X1Edpoattja ro.w(v*COfAX P0?W7J2J 2;piilAl;:P2W 92JM fZ2V*K P2a*rfi rz4 fxyim raaWTT

20、 z.e i*ri2向上滚动显示N.C1召LCDT XMPfRE17S-LCD!-WUPfRE12&-LEDQ (删卩廉曰畐目TE * LCD1*MJPfRE12B- TE=T V陈c技c陈c技。 -1 n 姓我广通Ololo ooaoaaoolUVi口-w3. PCB 图四、部分实验代码(向上滚动显示)0xb8/页地址0x40列地OxCO/行地/*片选1*/*片选2*/*复位信号*/*数据/指令/*读/写选6 ;/*读/写/* /*- 阵为:0x00,字体X文宋宽0x00, - 一 勺 - /*/*阵include #define uchar unsigned char #define ui

21、nt unsigned int tidefine LCDLCDDisp Off 0x3e define LCDLCDDisp_0n 0x3f #define Page_Add define LCDCol_Add 址#define StartLine/*液晶显示器的端口定义*/ ttdefine data ora P0 /*液晶数据总 线*/sbit LCDMcs二P2l ;sbit LCDScs二P22 ;sbit RESET二P23 ;sbit LCDDi=P24 ; 选择*/sbit LCDRW二P25 ; 择*/sbit LCDEnable=P2*使能*/uchar code Hz_gu

22、ang=:广 -*/12;此字体下对应的点髙=16x16-*/0xF8,0x08,0x08,0x08,Ox 08,0x09,OxOE,0x08,0x08,0x08,0x08.0x08,0x00,0x00,0x80,0x60,OxlF,0x00 F 0x00,0x00,Ox00,0x00,0x00,0x00,0x00,0x00 F 0x00 ,0x00,0x00,0x00;uchar code Hz_xi=字:西 -*/体12;此字体下对应的点 x 髙二16x16-*/0x02,0x02,0xE2,0x22,0x22,OxFE,Ox22,0x22,0x22,OxFE.0x22,0x22,0xE2

23、 ,0x02,0x02,0x00,0x00,0x00,OxFF,0x4& 0x44,0x43,Ox 40,0x40,0x40,0x43,0x44,0x44,OxFF ,0x00,0x00,0x00;uchar code Hz_ke = /*- 文字: 科一*/*宋体12;此字体下对应的点 阵为:宽x高=16x16-/0x24,0x24,0xA4,OxFE,0xA3,0x22,Ox 00,0x22,OxCC,0x00,0x00,OxFF,0x00 ,0x00,0x00,0x00,0x0& 0x06,0x01,OxFF,0x00,0x01,Ox 04,0x04,0x04,0x04,0x04,OxF

24、F,0x02 ,0x02,0x02,0x00;uchar code Hz_ji = /*- 文字: 技 -/*宋体12;此字体下对应的点 阵为:宽x高=16x16-/0x10,0x10,0x10,OxFF,0x10,0x90,Ox 08,0x88,0x88,0x88,OxFF,0x88,0x88 ,0x88,0x0& 0x00,0x04,0x44,0x82,0x7F,0x01,0x80,Ox 80,0x40,0x43,0x2C,0x10,0x2& 0x46 ,0x81,0x80,0x00;uchar code Hz_da = /*- 文字: 大一*/宋体12;此字体下对应的点 阵为:宽x高=1

25、6x16-/0x20,0x20,0x20,0x20,0x20,0x20,Ox 20,OxFF,0x20,0x20,0x20,0x20,0x20 ,0x20,0x20,0x00,0x80,0x80,0x40,0x20,0x10,OxOC,Ox 03,0x00,0x03,OxOC,0x10,0x20,0x40 ,0x80,0x80,0x00;uchar code Hz_xue = /*- 文字: 学 -/* 宋体12;此字体下对应的点 阵为:宽x髙=16x16-/0x40,0x30,0x11,0x96,0x90,0x90,Ox 91,0x96,0x90,0x90,0x98,0x14,0x13 ,0

26、x50,0x30,0x00,0x04,0x04.0x04.0x04,0x04.0x44,Ox84,0x7E,0x06,0x05.0x04,0x04,0x04,0x04,0x04,0x00;uchar code Hz_chen = /*- 文字: */*-宋体12;此字体下对应的点 阵为:宽x高=16x16-*/0x00,OxFE,0x22,0x5A f0x86,0x08,Ox88,0x68.0x18.0x0F.0xE& 0x08,0x08,0x08,0x08,0x00,0x00,OxFF,0x04,0x08,0x07,0x20,Ox11,OxOD,0x41,0x81,0x7F,0x01,0x0

27、5,0x09,0x30,0x00;uchar code Hz_jing = /*- 文字: 竞一*/*-宋体12;此字体下对应的点 阵为:宽x高=16x16*/0x20,0x20,0x24,0xA4OxAC,0xB4,Ox A5,0xA6,0xA4,0xB4,OxAC,0xA40x24 ,0x20,0x20,0x00,0x80,0x80,0x40,0x47,0x24,Ox1C,Ox 04,0x04,0x04,0x7C,0x84,0x87,0x80,0x80,OxEO,0x00; 、uchar code Hz_xiong = /* 文字: 雄 -*/*-宋体12;此字体下对应的点 阵为:宽x髙=

28、16x16*/0x00,0x08,0xC8,0x38,0x8F 10x08,Ox28,0x10,OxFC,Ox4B,0x48,0xF9,0x4A,0x48,0x08,0x00,0x04,0x23,0x70,0x2C,0x23,0x28,Ox 70,0x00,OxFF,0x22,0x22,0x3F,0x22 ,0x22,0x20,0x00;uchar code Hz_tong = /*- 文字: 通 -*/*宋体12;此字体下对应的点 阵为:宽x髙=16x16-*/0x40,0x42,OxCC,0x00,0x00,0xE2,Ox 22,0x2A,0x2A,0xF2,0x2A,0x26,0x22,

29、OxEO,0x00,0x00,0x80,0x40,0x3F,0x40,0x80,OxFF,Ox 89,0x89,0x89,OxBF,0x89,0xA9,0xC9 ,OxBF,0x80,0x00;uchar code Hz xin = /*- 文字: 信-*/*宋体12;此字体下对应的点 阵为:宽x高=16x16-*/0x00,0x80,0x60,0xF8,0x07,0x00,Ox 04,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x04,0x00,0x01,0x00,0x00,OxFF,0x00,0x00,Ox 00,0xF9,0x49,0x49,0x49,0x49

30、,0x49,0xF9,0x00,0x00;uchar code Hz_ 1 = /*- 文字:1 /* 宋体12;此字体下对应的点 阵为:宽x高=16x16*/0x00,0x10,0x10,0xF8,0x00,0x00,Ox00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,Ox 00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00;uchar code Hz_ 0 = /*- 文字:0 */*宋体12;此字体下对应的点 阵为:宽x髙=16x16-

31、*/0x00,OxEO,0x10,0x0& 0x08,0x10,Ox E0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,OxOF,0x10,0x20,0x20,0x10,Ox OF,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00;uchar code Hz ban! = /*- 文字: 班 -*/*宋体12;此字体下对应的点 阵为:宽x髙=16x16-*/0x84,0x84,OxFC,0x84,0x84,0x00,OxF8,0x00,OxFF,0x00,0x84,0x84,OxFC ,0x84,

32、0x84,0x00,0x10,0x30,Ox1F,0x08,0x88,0x42,Ox21,0x18,0x07,0x00,0x20,0x20,0x3F,0x20,0x20,0x00;uchar code Hz_wo = /*- 文字: 我一*/*-宋体12;此字体下对应的点 阵为:宽x髙=16x16-*/0x20,0x24,0x24,0x24,OxFE,0x23,Ox 22,0x20,0x20,OxFF,0x20,0x22,0x2C ,OxAO,0x20,0x00,0x00,0x08,0x48,0x84,0x7F,0x02,Ox41,0x40,0x201 Ox13,OxOC,0x14,0x22,

33、0x41,0xF8,0x00;uchar code Hz_ai = /*- 文字: 爱 */*-宋体12;此字体下对应的点 阵为:宽x髙=16x16*/0x80,0x6410x2C,0x34,0x24,0x24,OxEC.0x32,0x22,0x22,0x32,0x2E,0x23,0xA2,0x60,0x00,0x00,0x41,0x21,0x91,0x89,0x87,Ox4D,0x55,0x25,0x25,0x55,0x4D,0x81,0x80,0x80,0x00;uchar code Hz_m. = /*- 文字:M */*宋体12;此字体下对应的点 阵为:宽x高=16x16-*/0x08

34、,0xF8.0xF8,0x00,0xF8,0xF8,Ox 08,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x20,0x3F,0x00,0x3Ft0x00,0x3F,Ox 20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;uchar code Hz_c = /*- 文字:C */*-宋体12;此字体下对应的点 阵为:宽x髙=16x16-*/OxCO,0x30,0x08,0x08,0x08,0x08,Ox 38,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00

35、,0x07,0x18,0x20,0x20,0x20,0x10,Ox 08,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00;uchar code Hz_u = /*- 文字:U 一*/*宋体12;此字体下对应的点 阵为:宽x高=16x16-*/0x08,0xF8,0x08,0x00,0x00,0x08,Ox F8,0x08,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,OxlF,0x20,0x20,0x20,0x20,OxIF,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00

36、,0x00 ;/*函数功能:LCD延时程序入口参数:t出口参数:* *void LCDdelay(unsigned int t)unsigned int i,j;for(i=0;it;i+); for(j=0;j10;j+);/* *状态检查,LCD是否忙* *木卒裕祚祚卒不木裕卒裕木卒/void CheckState()unsigned char dat,DATA;/状态 信息(判断是否忙)LCDDi=O; /数据指令选择,D/I (RS) =WLW ,表示 DB7sDB0 为显示 指令数据LCDRW二 1; /R/W=rHh , E=”H”数据 被读到DB7sDB0doDATA二0x00;

37、LCDEnable=l; /EN 下降源LCDdelay(2);/ 延时 dat=DATA;LCDEnable=0;dat=0x80 & dat; /仅当第 7 位为0时才可操作(判别busy信号)while(!(dat=0x00);出口参数:* * *void init_lcd() LCDdelay(lOO);LCDMcs= 1 ; /刚开始关闭两屏LCDScs=l;LCDdelay(lOO); write_(LCDLCDDisp Off); /写初始化备令write, (Page_Add+0); write_ (Start_Line+0); wr i te_ (LCDCo1 Add+O);

38、 wr i te_ (LCDLCDD i sp On):/*/*函数功能:写命令到LCD程序,RS(DI)=LtRW=LtEN=H,即来一个脉冲 写一次入口参数:cmdcode出口参数:*函数功能:写数据到LCD程序,RS(DI)=H,RW=L,EN=H,即来一个脉冲 写一次入 口参数:LCDDispdata出口参数:*F9void write_(unsigned char cmdcode) CheckState () ; /检测 LCD 是否忙LCDDi=0;不不裕裕裕祥祚不祚不裕裕卒/void write_data(unsigned charLCDDispdata)CheckState (

39、); 检测 LCD 是否忙LCDRW二0;LCDDi=l;P0二cmdcode;LCDdelay(2);LCDEnable=l;LCDdelay(2);LCDEnable=0; /*LCDRW二0;PO=LCDDispdata;LCDdelay(2);LCDEnable=l;LCDdelay(2);LCDEnable=0;/*函数功能:LCD初始化程序 入口参数:函数功能:清除LCD存程序入口 参数:pag, col, hzk 岀口参数:* */void Clr Scr()unsigned char j,k;LCDMcs=0; 左、右屏均开显示LCDScs二0;write, (Page_Add

40、+0);wri te_(LCDCol_Add+0); for(k=0; k8; k+)/控制页数 0-7,共8页write_(Page_Add+k) ; /每页 每页进行写for(j=0;j64;j +)/每页最多可写32个中文文字或64个ASCII 字符wri te_(LCDCol_Add+j); write_ data (0x00); 控 制列数0-63,共64列,写点容,列地 址自动加1/*函数功能:指定位置显示汉字16*16程 序入口 参数:page, column, hzk出口参数:*卒卒卒祚不祚祚祚祚卒卒祚不祚祚祚祚卒卒祚不祚祚祚祚卒卒祚不祚祚祚/void hzLCDDispl6(

41、unsigned char page,unsigned char column, unsigned char code *hzk)wri te_ (Page_Add+page+j);wr i te_ (LCDCo1 Add+co1umn); for(i=0;i16;i+)write_data(hzkl16*j+i);void dis_gxkjdx() LCDMcs二0 ; /左屏开显示 LCDScs=l; hz_LCDDispl6(0,16,Hz_guang);/ HzJVo为某个汉字的首地it hz_LCDD i sp16(0,32,Hz_x i):hz_LCDDispl6(0,48,Hz_

42、ke); LCDMcs=l; /右屏开显示LCDScs=0; hz_LCDDispl6(0,0,Hz_ji); hz_LCDDispl6(0,16,Hz_da);hz_LCDDi sp16(0.32,Hz_xue); 一void dis_txb() 一LCDMc s=0 ; /左屏开显示 LCDScs=l;hz_LCDDispl6(2,16,Hz_tong);/HzJVo 7某个汉字的首地址hz_LCDDi sp16(2,32.Hz xin);hz_LCDDispl6(2,48,Hz_l); LCDMcs=l; 右屏开显示LCDScs=0; hz_LCDDispl6(2,0,Hz_0); hz

43、_LCDDispl6(2,16,Hz_l);unsigned char j=0,i=0;for(j=0;j2;j+)hz_LCDDi sp16(232.Hz_ban);dis wa mcu(); while(l)总结void dis_cjx() LCDMcs=0 ; /左屏开显示 LCDScs=l;hz_LCDDispl6(4,16,Hzchen);/ Hz_Wo另某个汉字的首地址hz_LCDDispl6(4,48,Hz_jing); LCDMcs=l; 右屏开显示LCDScs二0;hz_LCDDispl6(4,16,Hz_xiong); void dis_wa mcu() LCDMcs=0 ; /左屏开显示 LCDScs=l;hz_LCDDispl6(6,16,Hz wo);/ Hz_Wo另某个汉字的首地址hz_LCDDispl6(6,32.Hz_ai);hz_LCDDispl6(6,48,Hz_m);LCDMcs=l; 右屏开显示 LCDScs=0;hz_LCDDi sp16(6,0,Hz_c);hz_LCDDispl6(6,16,Hz_u); void iriainOinit_lcd(); Clr Scr (); dis_gxkjd

温馨提示

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

评论

0/150

提交评论