《1602液晶显示屏模块资料附程序.doc》由会员分享,可在线阅读,更多相关《1602液晶显示屏模块资料附程序.doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、液晶显示屏模块说明一功能说明:该模块可以通过单片机控制并行口数据16字2行的字符型液晶模块的显示。二硬件设计:核心控制:Freescale MC9S12D64 单片机系统板执行部分:16字X2行的字符型液晶模块操作部分:通过USBDM将已写好的程序刷入单片机指示部分:单片机上的发光二极管电源部分:提供给电机5V的直流稳压电源硬件说明:一液晶显示屏引脚的定义:1602采用标准的16脚接口,其中:(模块背面有标注)。1脚VSS:接地;2脚Vdd:接5V电源;3脚VO:对比度调整端,LCD驱动电压范围为VddVO。当VO接地时,对比度最强;4脚RS:寄存器选择端,RS为0时,选择命令寄存器IR;RS
2、为1时,选择数据寄存器DR;5脚:读写控制端,为1时,选择读出;为0时,则选择写入;6脚Enable:使能控制端,Enable为1时,使能;Enable为0,禁止;7脚14脚D0D7:数据总线;15脚LED:背景光源,接5V;16脚LED:背景光源,接地。1602液晶模块内部的字符发生存储器(CGROM)已经存储了不同的点阵字符图形,这些字符有,阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,其中数字与字母同ASCII码兼容。其内部还有自定义字符(CGRAM),可用业存储自已定义的字符。二硬件的连接(单片机与液晶的连接。注:表的上行是液晶显示的116个引脚
3、,下行是单片机接出的部分I/O口以及一些接口的定义):引脚12345678接口GND+5V电位器PE2PE3PB7PA0PA1引脚9116接口PA2PA3PA4PA5PA6PA7PB6接地三:液晶模块的读写与光标控制指令:指令 RSRWD7D6D5D4D3D2D1D01清屏 00000000012光标返回 000000001*3输入模式 00000001I/DS4显示控制 0000001DCB5光标/字符移位 000001S/CR/L*6功能 00001DLNF*7置字符发生器地址 0001字符发生存贮器地址 8置数据存贮器地址 001显示数据存贮器地址 9读忙标志和地址 01BF计数器地址
4、10写数据到指令7.8所设地址 10要写的数据 11从指令7.8所设的地址读数据 11读出的数据 指令说明:指令1:清显示屏;指令2:光标复位;指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移,S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。R/L,高向左,低向右。指令6:功能设置命令 D
5、L:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符(再这个液晶屏中选择57或510的效果一样)。指令7:写入字符,可以直接参看ASCII字符码。指令8:置显示字符的地址,第一行为:000F,第二行为:404F(十六进制的)。指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。所以,在写数据或指令到LCD之前,必须查看BF是否为0(在实际操作过程中,可以用一个短暂的延时来跳过这个忙指令即可) 。指令10:写数据。指令11:读数据。以上共
6、有11条控制指令,其中9条是针对命令寄存器IR的,两条是针对数据寄存器DR的(以下两条指令对写程序来控制液晶显示是很重要的,看的话要理解清楚)。IR为指令寄存器(Instruction Register,简称IR)负责存储MCU要写给LCD的指令码,当RS及R/W引脚信号为0且Enable引脚信号由1变为0时,D0-D7引脚上的数据便会存入到IR寄存器中;DR为数据寄存器(Data Register,简称DR),它们负责存储微机要写到CGRAM或DDRAM的数据,或者存储MCU要从CGRAM或DDRAM的数据。因此,可将DR视为一个数据缓存冲区,当RS及R/W引脚信号为1且Enable引脚信号
7、由一变为0时,读取数据;当RS引脚信号为1,R/W引脚信号为0且Enable引脚信号由1变为0时,存入数据。三软件说明:1.用户程序结构:该程序的主程序中未作任何有意义的工作。液晶显示在初始化 ,子程序,以及中断程序实现.为是程序模块化,将初始化,中断均在子程序中.为防止出现片内外设使用冲突,故将各模块使能设置寄存器放在主程序前设置。1.用户变量(EQU)设置;2.用户RMB设置;3中断设置(定时器通道0中断);4开机初始化;5各个模块的开关:(1)开启LCD模块;(2)开启定时器模块;(3)开中断;6主程序(空操作):7子程序:(1)写入地址(2)写入命令(3)写入数据(4)定时器中断2.流
8、程图:该程序就是一个单线条的,比较简单,在这里就不说了。3程序设计:;*SCI初始化* MOVB #$00,SCI0BDH MOVB #$A2,SCI0BDL ;波特率9600MOVB #$00,SCI0CR1MOVB #$0C,SCI0CR2 ;使能发送器和接受器 ;*定时器初始化*BSET TIOS,#%00000001 ;0通道为输出比较定时MOVB #%00000011,TSCR2 ;禁止溢出中断,8分频 BSET TIE,#%00000001 ;TC0开中断MOVB #%10000000,TSCR1 ;开定时器,标志位正常清除MOVW #125,TC0 BSET TSCR1,#%10
9、000000 ;定时器使能,标志位正常清除;*液晶显示初始化*MOVB #$FF,DDRAMOVB #$FF,DDRBMOVB #$FF,DDRE BSET PORTA,#%00000011 ;清屏和光标复位 JSR ENABLE BSET PORTB,#%01000000 ;开背光 MOVB #%00111000,PORTA ;8位总线,双行,5*7的点阵字符 JSR ENABLE MOVB #%00001110,PORTA ;开显示,光标开,不允许光标闪烁JSR ENABLE MOVB #%10000000,PORTA ;写入显示1地址(第一行第一个)JSR ENABLE LDX #ABC
10、_1LDAB #16 ;显示1JSR SHUJU MOVB #%11000000,PORTA ;写入显示2的地址(第二行第一个)JSR ENABLE LDX #ABC_2 ;显示2LDAB #16JSR SHUJU ;*主程序*mainLoop: NOP JMP mainLoop;*地址*SHUJU: MOVB X,PORTA JSR ENABLE_1 ;调用写入数据子程序INXDBNE B,SHUJURTS ;*写入命令子程序*ENABLE:BCLR PORTE,#%00001100BCLR PORTB,#%10000000JSR YANSHI_1MSBSET PORTB,#%1000000
11、0 RTS;*写入数据子程序*ENABLE_1: BSET PORTE,#%00000100 BCLR PORTE,#%00001000 BCLR PORTB,#%10000000 JSR YANSHI_1MS BSET PORTB,#%10000000 RTS;*定时器延时子程序*YANSHI_1MS: MOVB #25,R1 Y1: LDAA R1 CMPA #0 BNE Y1 ;变量循环 RTSYANSHI_2S: LDX #2000AAA: JSR YANSHI_1MS DBNE X,AAA RTS;*显示字母表* ABC_1: FCB $44,$65,$73,$69,$67,$6e,$65,$72,$A0,$62,$79,$A0,$63,$68,$65,$6e ABC_2: FCB $A0,$A0,$A0,$32,$30,$31,$31,$2e,$30,$37,$2e,$32,$35,$A0,$A0,$A0 ;*定时器中断子程序*ZHONGDUAN:BSET TFLG1,#%0000001 ;清零0通道位LDD TC0 将TC0通道的值给D寄存器ADDD #125 ;D的内容加上125存在D中STD TC0LDAA R1DECA STAA R1RTI 第 13 页