液晶显示模块LCM046的原理及其C语言编程
液晶显示模块(LCM)介绍
华视界光电有限公司技术培训液晶显示模块(LCM)认识技术部·刘钱2007年3月一. 名词解释液晶显示模块是一种将液晶显示器件、连接件、集成电路、PCB线路板、背光源、结构件装配在一起的组件.英文名称叫“LCD Module”,简称“LCM”,中文一般称为“液晶显示模块”。
实际上它是一种商品化的部件.根据我国有关国家标准的规定:只有不可拆分的一体化部件才称为“模块”,可拆分的叫作“组件”。
所以规范的叫法应称为“液晶显示组件”。
但是由于长期以来人们都已习惯称其为“模块”。
二. LCM分类LCM主要分为三大类1、笔段型液晶显示模块(Segment LCM).2、字符型液晶显示模块(Character LCM).3、图型液晶显示模块(Graphic LCM).笔段型液晶显示模块(Segment LCM)笔段型液晶显示模块是指以长条状显示像素组成一位显示类型的液晶器件,简称笔段型液晶显示模块。
笔段型液晶显示模块主要用于数字显示,也可以显示西文字母、某些专用符号或固定图形,还可以将一个汉字或一个汉字组成为一个段显示。
笔段型液晶显示模块主要是为了显示数字,或围绕数字显示。
在形状上总是围绕数字“8”的结构变化。
从显示“8”的形状上分类,可分为七段,八段,九段,十四段,十六段显示等。
最常见的就是七段和十四段显示,广泛用于电子表、数显仪表、计时器、计数器、示意显示等。
字符型液晶显示模块(Character LCM)字符型液晶显示模块是一类专用于显示字母,数字,符号等的点阵型液晶显示模块。
之所以称字符型液晶显示模块是因为其液晶显示器件的电极图形是由若干个5X8或5X11点阵组成的字符块集。
每个字符块是一个字符位,每一位都可以显示一个字符,字符位之间空有一个点距产间隔起着字符间距和行距的作用,这是其一;其二是这类模块使用的是专用于字符显示控制与驱动的IC芯片。
这两种因素确定了这类模块的应用范围仅局限于字符而显示不了图形,所以称之为字符型液晶示示模块。
液晶显示器的C语言程序设计——Freescale8位微控制器
液晶显示器的C语言程序设计——Freescale8位微控制器李晶皎,科学出版社,2005●内容简介本书讲述用c语言开发液晶显示应用系统的技术。
本书详尽介绍了目前国内正在使用的液晶显示模块控制器的工作原理,给出了用Freescale公司8位微控制器M68HC08的C语言程序设计的例程和相关的硬件电路。
液晶控制器具体有:HD44780U、SEDl520、T6963C、SEDl335、HD61830、KS0108B/HD61202、ST7920、SEDl565。
本书由浅入深,内容丰富新颖,并配有程序源代码光盘,适合使用C语言开发实用系统的读者阅读,也适合大专院校从事微控制器、嵌入式系统等研发的师生参考。
●目录第1章Freescale8位微控制器概述1.1微控制器概述1.2Freescale8位微控制器简介1.3Freescale微控制器命名规则1.4MC68HC908GP32微控制器基本结构1.4.1MC68HC908GP32微控制器性能概述1.4.2MC68HC908GP32内部结构1.4.3M68HC08系列微控制器的CPU1.4.4MC68HC908GP32存储器结构第2章M68HC08的C程序设计基础2.1M68HC08的COSMICC交叉编泽器安装2.1.1准备安装2.1.2安装2.2MC68HC908GP32的LED显示2.2.1MC68HC908GP32的LED显示硬件设计2.2.2MC68HC908GP32的LED显示软件设计2.2.3Freescales记录文件的下载2.3M68HC08的COSMICC交叉编译器2.3.1COSMIC的编译器2.3.2COSMIC的链接器2.3.3COSMIC的实用程序第3章HD44780U字符型液晶显示模块的应用3.1HD44780U工作原理3.1.1HD44780U原理3.1.2HD44780U液晶控制器的引脚及功能3.1.3FMl602字符型液晶显示模块的接口定义3.1.4HD44780U的编程结构3.1.5HD44780U液晶控制器的读写操作时序3.1.6HD44780U内置字符发生器的字符库3.2HD44780U液晶显示控制器的应用举例3.2.1HD44780U的MC68HC908GP32硬件接口电路3.2.2HD44780U的MC68HC908GP32软件编程第4章SEDl335图形液晶控制器的应用4.1SEDl335工作原理4.1.1SEDl335的功能原理4.1_2SEDl335液晶控制器的引脚及功能4.1.3EDM320240液晶显示模块的接口定义4.1.4SEDl335的编程结构4.1.5SEDl335液晶控制器的读写操作时序4.1.6SEDl335内置字符发生器的字符表4.2SEDl335液晶显示控制器的应用举例4.2.1SEDl335的M68HC908GP32应用硬件接口电路4.2.2SEDl335的M68HC908GP32应用软件编程第5章HD61830图形液晶显示模块的应用5.1HD61830的工作原理5.1.1HD61830的功能原理5.1.2HD61830的引脚及功能5.1.3LMG7401液晶显示模块的接口定义5.1.4HD61830的编程结构5.1.5HD61830液晶控制器的读写操作时序5.1.6HD61830字符表5.2HD61830液晶显示控制器的应用5.2.1HD61830的MC68HC908GP32应用的硬件接口电路5.2.2HD61830的MC68HC908GP32应用的软件编程第6章HD61202U图形液晶显示驱动控制器的应用6.1HD61202U工作原理6.1.1HD61202U控制器的功能原理6.1.2HD61202U控制器的引脚及功能6.1.3QH2001液晶显示模块的接口定义6.1.4HD61202U液晶控制器的编程结构6.1.5HD61202U液晶控制器的读写时序6.1.6HD61202U字符表6.2HD61202U液晶显示控制器的应用举例6.2.1HD61202U的MC68HC908GP32应用硬件接口电路6.2.2HD61202U的MC68HC908GP32应用软件编程第7章T6963C图形液晶控制器的应用7.1T6963C工作原理7.1.1T6963C控制器的功能原理7.1.2T6963C控制器的引脚及功能7.1_3MPG240128A1液晶显示模块的接口定义7.1.4T6963C液晶控制器的编程结构7.1.5T6963C的读写操作时序7.1.6T6963C字符表7.2T6963C的MC68HC08GP32应用7.2.1T6963C的MC68HC08GP32硬件接口电路7.2.2T6963C的MC68HC08GP32应用软件编程第8章SEDl520图形液晶显示控制器的应用8.1SEDl520的工作原理8.1.1SEDl520液晶控制器的原理8.1.2SEDl520FOA液晶控制器的引脚及功能8.1.3MGLSl0032A液晶显示模块的接口定义8.1.4SEDl520的编程结构8.1.5SEDl520液晶控制器的读写操作时序8.1.6SEDl520字符表8.2SEDl520液晶显示控制器的应用举例8.2.1SEDl520的MC68HC908GP32硬件接口电路8.2.2SEDl520的MC68HC908GP32软件编程第9章SEDl565图形液晶显示控制器的应用9.1SEDl565的工作原理9.1.1SEDl565液晶控制器的原理9.1.2SEDl565液晶控制器的引脚及功能9.1.3COG-VPl2864液晶显示模块的接口定义9.1.4SEDl565的编程结构9.1.5SEDl520液晶控制器的读写操作时序9.2SEDl565液晶显示控制器的应用举例9.2.1SEDl565的MC68HC908GP32硬件接口电路9.2.2SEDl565的MC68HC908GP32软件编程第10章ST7920汉字液晶控制,驱动器的应用10.1ST7920工作原理10.1.1ST7920功能原理10.1.2ST7920的引脚及功能10.1.3RTl2864HZ液晶显示模块的接口定义10.1.4ST7920的编程结构10.1.5ST7920液晶控制器的操作时序10.1.6ST7920内置字符发生器的字符表10.2ST7920液晶显示控制器的应用举例10.2.1ST7920的M68HC908GP32应用硬件接口电路10.2.2ST7920的M68HC908GP32应用软件编程主要参考文献。
LCD工作原理及编程
3 Sept. 2008 Confidential
1.3 LCD模块的选择(续)
从系统结构上来讲,由于显示器模块中已经有显示存 储器。显存中的每一个单元对应LCD上的一个点,只要显 存中的内容改变,显示结果便进行刷新,于是便存在2种刷 新方式:
1. 直接根据系统要求对显存进行修改。这里存在两种情况, 一种是只需做局部修改,不需要判断覆盖等问题;另一种就 是覆盖问题,计算起来比较复杂,而且每做一点小的屏幕改 变就进行刷新,将增加系统负担。 2. 专门开辟显示内存,在需要刷新的时候有程序进行更新。 这样不但可以减轻总线负荷,而且也比较合理,再有需要的 时候进行统一的显示更新,界面也可以比较美观,不至于因 为无法预料的刷新动作导致显示界面闪烁。
此指令设置CGRAM地址指针,ACG被送入AC中,之后用户就可 以将自定义显示字符数据写入CGRAM或从CGRAM中读出。
8)DDRAM地址设置指令
此指令设置DDRAM地址指针,ADD被送入AC中。之后就可以将 显示的数据写入DDRAM中。显示数据时只需要将数据对应的编码 写入DDRAM即可。
3 Sept. 2008 Confidential
指令说明
1)清屏指令
清屏指令使DDRAM的内容全部清零,光标回到第一行第一列的位 置,地址计数器清零。
2)软复位指令
软复位指令使光标和光标所在的字符回到第一行第一列的位置,但 DDRAM内容不变。
3)输入模式设置指令
I/D位:I/D=1时写数据到DDRAM(CGRAM)及从DDRAM( CGRAM)读数据时AC自动加1;I/D=0时自动减1。 S位:S=1时解数据到DDRAM时显示内容全部左移(I/D=1)或右 移(I/D=0),此时光标看上去未动而仅仅是显示内容移动。但是 读出数据显示内容不移动;S=0时显示不移动,只是光标左移或者 右移。
单片机LCD液晶显示模块详解
第五页,共二十一页。
25.1.4 液晶显示模块的优点
• 液晶显示最主要的优势是可以显示多行的汉字以及图形。除了这一点外,使用液晶显示 模块作为显示设备还具有其他很多优势,主要表现在如下几个方面:
• 体积小、重量轻。液晶显示模块通过显示屏上的电极控制液晶分子状态来达到显示目的,在重 量上比相同显示面积的传统显示器件要轻得多。
扩充指令集清屏子函数253汉字及图形显示实例液晶显示模块在现代的电子设计中的应用越来越广泛特别是图形点阵式液晶显示模块其不仅可以显示数字和字符也可以用来显示中文和图这里采用nh12864m来介绍如何使用液晶显示模块lcm来显示汉字图形以及在任意位置显示图形
第25章 LCD液晶显示模块
• 前面介绍的LED数码管只可以显示数字和某些字符,限制了其应用范围。 在很多场合中需要显示多行字符、汉字或者图形,液晶显示器便应运而 生。液晶显示器(LCD)是一种功耗很低的显示器,其以优越的性能,越 来越受到各方面的重视。液晶显示的应用领域越来越多,在电子表、计 算器、数码相机、计算机的显示器和液晶电视上都可以看到它的身影。
第十一页,共二十一页。
25.2.5 ST7920的操作方式
• 液晶控制驱动器ST7920提供了并行和串行两类指 令操作方式。其中,并行操作方式又可以分为8位 并行操作方式和4位并行操作方式两种。下面分别 进行介绍。
• 1.并行操作方式 • 2.串行操作方式
第十二页,共二十一页。
25.2.6 图形点阵式液晶显示模块
第十七页,共二十一页。
25.3.3 汉字显示实例
• 这里首先介绍如何使用液晶显示模块来显示多行 汉字以及字符。主程序的流程图,如图所示。
利用开发板编写程序,实现在LCD显示屏上显示宇符
实验三、编写程序,实现在LCD显示屏上显示宇符一、实验目的1、了解显示屏的电路的结构软硬件的设计。
2、学习并熟悉LCD显示屏显示的原理和使用方法;3、更进一步了解飞凌6410的功能。
二、实验设备及材料1、飞凌6410开发板及连接开发板和计算机的线路;2、DM Tool工具等相应的的软件;3、PC机1台三、实验步骤1.连接开发板和计算机并保证两者之间通信顺畅。
2、新建一个工程,在工程中新建一个C语言文件main.c。
3、按照实验原理,为显示模组提供显示驱动程序,显示驱动程序用了常用的一些显示函数,事先将驱动程序文件导入到工程中。
4、按照事先设计的方法在main.c中编写C语言程序,在程序中调用驱动程序中的子函数,控制LCD显示。
5、调试程序,观察并记录实验结果。
四、试验中使用的控制程序显示字符的程序如下:#include "ok6410User.h"#define P_Watchdog_Clear (volatile unsigned int *)0x7012: int main(void)// 实现功能:在开发板上的LCD模组显示 //"Automation"以及"is developing" // 参数:无 //int main(void) { int i,j;LCD501_Init(0xff);while(1){ LCD501_ClrScreen(1);for(j=0;j<=3;j++) /for(i=0;i<0x1fff;i++)*P_Watchdog_Clear = 0x0001;LCD501_ClrScreen(0);LCD501_PutString(30,3,(unsigned int *)"Automation"); //显示字符串"Automation"for(j=0;j<=7;j++)for(i=0;i<0x1fff;i++)*P_Watchdog_Clear = 0x0001;LCD501_FontSet(0);LCD501_PutString(0,40,(unsigned int *)"is");LCD501_PutString(50,50,(unsigned int *)"developing");for(j=0;j<=13;j++)for(i=0;i<0x1fff;i++)*P_Watchdog_Clear = 0x0001;}}五、实验结果按照实验要求将开发板和计算机连接起来,并肩控制程序导入相应的工程文件中,并进行调试保证其正常运行,就将会在显示屏上显示:“Automation is developing”LCD电路图。
C语言嵌入式系统编程修炼之四:屏幕操作资料
C语言嵌入式系统编程修炼之四:屏幕操作作者:宋宝华来源:天极网酷勤网收集2007-08-21摘要酷勤网屏幕乃嵌入式系统生存之重要辅助,面目可憎之显示将另用户逃之夭夭。
屏幕编程若处理不好,将是软件中最不系统、最混乱的部分,笔者曾深受其害。
汉字处理现在要解决的问题是,嵌入式系统中经常要使用的并非是完整的汉字库,往往只是需要提供数量有限的汉字供必要的显示功能。
例如,一个微波炉的LCD上没有必要提供显示"电子邮件"的功能;一个提供汉字显示功能的空调的LCD上不需要显示一条"短消息",诸如此类。
但是一部手机、小灵通则通常需要包括较完整的汉字库。
如果包括的汉字库较完整,那么,由内码计算出汉字字模在库中的偏移是十分简单的:汉字库是按照区位的顺序排列的,前一个字节为该汉字的区号,后一个字节为该字的位号。
每一个区记录94个汉字,位号则为该字在该区中的位置。
因此,汉字在汉字库中的具体位置计算公式为:94*(区号-1)+位号-1。
减1是因为数组是以0为开始而区号位号是以1为开始的。
只需乘上一个汉字字模占用的字节数即可,即:(94*(区号-1)+位号-1)*一个汉字字模占用字节数,以16*16点阵字库为例,计算公式则为:(94*(区号-1)+(位号-1))*32。
汉字库中从该位置起的32字节信息记录了该字的字模信息。
对于包含较完整汉字库的系统而言,我们可以以上述规则计算字模的位置。
但是如果仅仅是提供少量汉字呢?譬如几十至几百个?最好的做法是:定义宏:字模的存储用数组:从NVRAM中可以读取系统的时间,系统一般借助NVRAM产生的秒中断每秒读取一次当前时间并在LCD上显示。
关于时间的显示,有一个效率问题。
因为时间有其特殊性,那就是60秒才有一次分钟的变化,60分钟才有一次小时变化,如果我们每次都将读取的时间在屏幕上完全重新刷新一次,则浪费了大量的系统时间。
一个较好的办法是我们在时间显示函数中以静态变量分别存储小时、分钟、秒,只有在其内容发生变化的时候才更新其显示。
基于硅光电池的照度测量设计
基于硅光电池的照度测量设计作者:马栋萍邵明刚来源:《中国科技博览》2014年第20期[摘要]研究以硅光电池作为光感传感器,实现对光照度的测量。
硅光电池输出弱电流信号通过调理、放大,接至单片机的A/D输入端,单片机对相应的电压信号进行采集和处理,通过线性化处理、工程量转换等方法,实现对100~5000Lx范围照度的测量。
照度的精确检测除可以有效指导光度的调节外,还可针对密封环境中化学反应物发光强度来估计反应物的成分。
[关键词]硅光电池;单片机;照度;测量中图分类号:TP212.9 文献标识码:A 文章编号:1009-914X(2014)20-0095-011 引言硅光电池是一种自发电式的光电元件,在受到光照时能够产生某一方向的电动势,在没有电源的条件下,会有电流通过外电路。
硅光电池在不同的光照度下,产生的电动势和光电流是不同的,其线性范围较宽,接近短路状态时,可以作为电流源使用。
采用单片机作为主控制器,实现将硅光电池输出的模拟信号转换为数字信号,并通过数据处理,还原出照度值,直接显示在显示器上,或者对于密封环境采用RS-485通信方式将数据传输到外部显示器显示。
2 系统组成及电路设计采用硅光电池检测照度信号的系统组成如图1。
单片机采用C8051f410型,它含有12位AD转换器,基准电压选择1.5V。
裸片硅光电池的输出信号通过信号调理电路,接入单片机的A/D端口,通过A/D转换后进行数据的处理,包括线性化、温度补偿和工程转换等处理,再经过单片机的I/O接口把相应的电压数值显示在LCM046液晶显示模块上,并通过UART接口与外部设备通信,比如PC机。
由于单片机的A/D端输入信号是0~1.5V的电压信号,硅光电池输出的电流信号需转换为对应的电压信号,才能接至单片机,图2(a)电路实现弱电流到电压信号的转换,u1接在单片机的A/D输入端。
LCM046是一种4位多功能通用型8段式的液晶显示模块,具有尺寸小,功耗低,显示清晰的特点,单片机提供3个端口与LCM046连接,驱动其正常显示。
c语言的单片机模块化编程初阶入门
c语言的单片机模块化编程初阶入门示例:lcd1602液晶模块应用要求:lcd1602字符型液晶显示实验。
在屏幕的第一行显示“224166320@”,第二行则显示“tel:1308645xxxx”《单片机C语言模块化编程技能培训》施健TM1【实验原理——LCD基本知识】lcd显示器是一种利用液晶的扭曲/向列效应制成的新型显示器。
具有体积小、重量轻、功耗低、抗干扰能力强等优点,因而在单片机系统中被广泛应用。
《单片机C语言模块化编程技能培训》施健TM2【实验原理——LCD结构和工作原理】LCD本身不发光。
它是一种被动显示设备,通过外部光线照射液晶材料来实现显示。
向列相液晶材料封装在上部和下部导电玻璃电极之间。
液晶分子平行排列,上下扭曲90度。
外部入射光通过上偏振器后形成偏振光。
偏振光通过平行排列的液晶材料后旋转90度,然后通过垂直于上偏振器的下偏振器被反射器反射。
如果在上下电极之间施加一定的电压,添加到电极上的液晶分子在电场的作用下被迫变成垂直排列,其旋光也消失,从而使从上偏振器入射的偏振光不旋转,光不能通过下偏振器返回,是黑色的。
移除电压后,液晶分子恢复其扭转结构。
《单片机C语言模块化编程技能培训》施健TM3实验原理——SMC1602A LCD模块引脚功能《单片机c语言模块化编程技能训练》石坚tm四实验原理――液晶控制器接口说明《单片机C语言模块化编程技能培训》施健TM5实验原理——LCD控制器接口说明《单片机c语言模块化编程技能训练》石坚tm六实验原理――液晶控制器接口说明《单片机C语言模块化编程技能培训》施健TM7实验原理——LCD控制器接口说明《单片机c语言模块化编程技能训练》石坚tm八实验原理――1602液晶控制器自带标准字库每个字符都有一个固定的代码。
例如,“a”的代码是41h。
显示时,模块以41h显示点阵字符图形,您可以看到字母“a”。
《单片机C语言模块化编程技能培训》施健TM9参考示例程序(该程序以C文件编写)#include<at89x52 h>#include<intrins。
液晶显示控制(1602)c语言实例
DB1 低4位三态、 双向数据总线 1位
9
DB2 低4位三态、 双向数据总线 2位
10 DB3 低4位三态、 双向数据总线 3位
11 DB4 高4位三态、 双向数据总线 4位
12 DB5 高4位三态、 双向数据总线 5位
13 DB6 高4位三态、 双向数据总线 6位
14 DB7 高4位三态、 双向数据总线 7位 (最高位)(也是busy flag)
4 可视角度
➢大多数光都是从屏幕中垂直射出来的,所以从某一个 较大的角度观看液晶显示器时,便不能看到原本的颜 色,甚至只能看到全白或全黑。为了解决这个问题, 到目前为止有三种比较流行的技术,分别是: TN+FILM、IPS(IN-PLANE -SWITCHING)和 MVA(MULTI-DOMAIN VERTICAL align MENT)。
(8)写指令38H:显示模式设置; (9)写指令08H:显示关闭;
(10)写指令01H:显示清屏; (11)写指令06H:显示光标移动设置; (12)写指令0CH:显示开及光标设置;
2011年春
LCD 1602初始化函数实例
void Initialize_LCD( )
{
Write_LCD_Command(0x38);
4 RS RS为寄存器选择,高电平1时选择数据寄 存器、低电平0时选择指令寄存器。
5 R/W R/W为读写信号线,高电平时进行读操作, 低电平时进行写操作。
6E
E(或EN)端为使能(enable)端,下降沿使 能。
2011年春
引脚 符号
功能说明
7
DB0 低4位三态、 双向数据总线 0位
(最低位)
8
(2)写指令: 输入:RS=L;RW=L; D0~D7=指令码;E=高脉冲
《单片机应用技术(C语言)》实训课件—4.4 字符型LCD液晶显示广告牌控制
程序预处理
#include <reg51.h> //包含头文件reg51.h,定义了51单片机的专用寄存器
#include <intrins.h> //包含头文件intrins.h,代码中引用了_nop_()函数
//定义控制信号端口
sbit RS=0xb0;
//P3.0
sbit RW=0xb1;
//P3.1
(3)A2A1A0:与CGRAM字模的8行相对应。当A2A1A0=“000”时,写入第1行的 字模码,当A2A1A0=“001”时,写入第2行的字模码,依次类推。
软件设计思路
按照CGRAM地址和数据自编5x7字模
lcd_w_cmd(0x40); //写入第1行CGRAM地址 lcd_w_dat(0x1f); //写入第1行CGRAM数据
VSS VDD VO RS R/W E DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 A K
电源接线
读写控制线
数据线
背光控制线
字符型LCD1602的基本操作
RS
R/W
操作
0
0
写命令操作(初始化、光标定位等)
0
1
读状态操作(读忙标志)
1
0
写数据操作(要显示的内容)
1
1
读数据操作(可以把显示存储区中的数据反读出来)
//写入第5行CGRAM地址
lcd_w_dat(0x04);
//写入第5行CGRAM数据
lcd_w_cmd(0x45);
//写入第6行CGRAM地址
lcd_w_dat(0x1f);
//写入第6行CGRAM数据
lcd_w_cmd(0x46);
基于液晶显示单元的单片机仿真和C语言开发课程设计说明书
课程设计任务书学生姓名:专业班级:电信指导教师:工作单位:信息工程学院1)题目:基于液晶显示单元的单片机实验和C语言开发初始条件:具备单片机的理论知识;具备C语言编程能力;分析液晶显示的原理及实现;提供编程所需要的计算机一台要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)1、独立编写程序实现液晶显示2、分析并用仿真软件实现单片机液晶显示及循环移位3、完成符合学校要求的设计说明书时间安排:一周,其中3天程序设计,2天程序调试指导教师签名:年月日系主任(或责任教师)签名:年月日目录目录 0摘要 (1)2 软件、硬件介绍 (3)Proteus介绍 (3)Keil介绍 (4)字模提取软件介绍 (5)单片机AT89C51介绍 (5)液晶LCD12864介绍 (6)3 设计原理和方案 (7)设计原理 (7)设计步骤 (8)系统硬件电路原理图 (8) (9)4 程序设计 (9)程序流程图 (9)实验程序 (10)5 仿真结果与分析 (17)仿真结果 (17)6 实物展示 (18)7 心得体会 (18)8 参考文献 (19)本科生课程设计成绩评定表 0摘要很多信息可以直接由数字表示,从而数字化信息显示又成为信息显示的又一个重要内容。
本次课设是一种基于51单片机实时控制的LCD液晶显示屏循环显示系统。
硬件系统由单片机最小系统和液晶显示系统组成。
此次课程设计采用AT89C51型单片机和12864点阵型LCD液晶显示器来实现。
LCD上要显示某个图形或汉字就是将相应的点阵信息写入到相应的存储单元中。
要想实现循环移动,只需不断改变图片的字模数据在液晶面板上的显示位置(RAM地址)即可。
程序采用C语言编写,使用Keil编译器进行编译。
关键字:51单片机 C语言编程液晶显示 Proteus1 概述本次课设要求设计一种字符(或图形)液晶显示显示的电路,并实现循环移位显示给定字符串(或自行设计动态显示方式)。
PIC单片机C语言编程实例——液晶显示模块编程
PIC单片机C语言编程实例——液晶显示模块编程15.2.2 MG-12232模块的编程下面以图15.1的接口电路为例。
液晶显示区域分成E1边和E2边,下面只含E1边的程序(表15.1中E1=1,E2=0),E2边(表15.1中E1=0,E2=1)类推。
在系统程序的初始化部分,应对程序中用到的寄存器和临时变量作说明,如:unsigned char TRANS;unsigned char PAGEADD; //存放页地址寄存器unsigned char PAGENUM; //存放总页数寄存器unsigned char CLMSUM; //存放总列数寄存器unsigned char CLMADD; //存放列地址寄存器unsigned char WRITE; //存放显示数据寄存器unsigned char row; //存放显示起始行寄存器unsigned char i,k; //通用寄存器//系统各口的输入输出状态初始化子程序void INITIAL(){ADCON1=0X87; //设置PORTA口和PORTE口为数字I/O口TRISA3=0;TRISB0=0;TRISE=0X00; //设置液晶的4个控制脚为输出}//读液晶显示器状态子程序void LCDSTA1(){while(1){TRISD=0XFF; //设置D口为输入RB0=1; //E1=1RA3=0; //E2=0RE0=1; //R/W=1RE1=0; //A0=0if(RD7==0) break; //为忙状态,则继续等待其为空闲}}//对液晶显示器发指令子程序(指令保存在TRANS寄存器中)void TRANS1(){LCDSTA1(); //判断液晶是否为忙TRISD=0X00; //置D口为输出RB0=1; //E1=1RA3=0; //E2=0RE0=0; //R/W=0RE1=0; //A0=0PORTD=TRANS; //需要写入的命令字送入数据线RB0=0; //E1=0写入指令RE0=1; //R/W=1}//对液晶显示器写数据子程序(数据保存在WRITE寄存器中) void WRITE1(){TRANS=CLMADD; //设置列地址TRANS1();LCDSTA1(); //查询液晶是否为空闲TRISD=0X00; //D口为输出RB0=1;//E1=1RA3=0;//E2=0RE0=0;//R/W=0RE1=1;//A0=1PORTD=WRITE; //需要写入的数据放入D口RB0=0; //E1=0,写入数据CLMADD++; //列地址加1RE0=1; //R/W=1}//开E1显示子程序void DISP1(){while(1){TRANS=0XAF;TRANS1(); //送出控制命令LCDSTA1(); //判断液晶是否为空闲TRISD=0XFF; //设置D口为输入RB0=1; //E1=1RA3=0; //E2=0RE0=1; //R/W=1RE1=0; //A0=0if(RD5==0) break; //如果液晶没被关闭,则继续关}}//E1边清屏子程序void CLEAR1(){PAGEADD=0xB8; //设置页地址代码for(PAGENUM=0X04;PAGENUM>0;PAGENUM-){TRANS=PAGEADD;TRANS1();CLMADD=0x00; //设置起始列for(CLMSUM=0X50;CLMSUM>0;CLMSUM-){LCDSTA1(); //判断液晶是否为空闲WRITE=0X00;WRITE1(); //写入00H以清屏}PAGEADD++; //页号增1}}//关 E1显示子程序void DISOFF1(){while(1){TRANS=0XAE;TRANS1(); //发出控制命令LCDSTA1(); //判断液晶是否为空闲TRISD=0XFF; //D口设置为输入RB0=1; //E1=1RA3=0; //E2=0RE0=1; //R/W=1RE1=0; //A0=0if(RD5==1) break; //如果液晶没被关闭,则继续关}}有了以上的通用子程序,就可以构造出各种显示程序,如字符。
字符型液晶LCD模块原理及设计学习
字符型液晶(LCD)模块原理及设计学习17.1 液晶显示器概述在小型的智能化电子产品中,普通的7段LED数码管只能用来显示数字,若遇到要显示英文字母或图像、汉字时,则必须选择使用液晶显示器(简称LCD)。
LCD显示器的应用很广,简单的如手表、计算器上的液晶显示器,复杂如笔记本电脑上的显示器等,都使用LCD。
在一般的商务办公机器上,如复印机和传真机,以及一些娱乐器材、医疗仪器上,也常常看见LCD的足迹。
LCD可分为两种类型,一种是字符模式LCD,另一种为图形模式LCD。
这里要介绍的LCD为字符型点矩阵式LCD模组(Liquid Crystal Display Module简称LCM),或称字符型LCD。
市场上有各种不同厂牌的字符显示类型的LCD,但大部分的控制器都是使用同一块芯片来控制的,编号为HD44780,或是兼容的控制芯片。
字符型液晶显示模块是一类专门用于显示字母、数字、符号等的点阵型液晶显示模块。
在显示器件的电极图形设计上,它是由若干个5*7或5*11等点阵字符位组成。
每一个点阵字符位都可以显示一个字符。
点阵字符位之间空有一个点距的间隔起到了字符间距和行距的作用。
目前常用的有16字*1行、16字*2行、20字*2行和40字*2行等的字符模组。
这些LCM 虽然显示的字数各不相同,但是都具有相同的输入输出界面。
这里我们以16字*2行(简称16*2)字符型液晶显示模块为例,详细介绍字符液晶显示模块的应用技术。
读者朋友经过学习并实践实际的LCD程序设计,那么当你学完后,将掌握字符形液晶显示模块的程序设计技术,使液晶显示器听你的指挥显示出各种字符及信息,用到你设计的产品中后添色不少并增强市场竞争力。
字符LCD模块的控制器主要为日立公司的HD44780及其替代集成电路,驱动器为HD44100及其替代的兼容集成电路。
17.2 16*2字符型液晶显示模块(LCM)特性1.+5V电压,反视度(明暗对比度)可调整。
字符型液晶(LCD)模块原理及设计学习
字符型液晶(LCD)模块原理及设计学习17.1 液晶显示器概述在小型的智能化电子产品中,普通的7段LED数码管只能用来显示数字,若遇到要显示英文字母或图像、汉字时,则必须选择使用液晶显示器(简称LCD)。
LCD显示器的应用很广,简单的如手表、计算器上的液晶显示器,复杂如笔记本电脑上的显示器等,都使用LCD。
在一般的商务办公机器上,如复印机和传真机,以及一些娱乐器材、医疗仪器上,也常常看见LCD的足迹。
LCD可分为两种类型,一种是字符模式LCD,另一种为图形模式LCD。
这里要介绍的LCD 为字符型点矩阵式LCD模组(Liquid Crystal Display Module简称LCM),或称字符型LCD。
市场上有各种不同厂牌的字符显示类型的LCD,但大部分的控制器都是使用同一块芯片来控制的,编号为HD44780,或是兼容的控制芯片。
字符型液晶显示模块是一类专门用于显示字母、数字、符号等的点阵型液晶显示模块。
在显示器件的电极图形设计上,它是由若干个5*7或5*11等点阵字符位组成。
每一个点阵字符位都可以显示一个字符。
点阵字符位之间空有一个点距的间隔起到了字符间距和行距的作用。
目前常用的有16字*1行、16字*2行、20字*2行和40字*2行等的字符模组。
这些LCM 虽然显示的字数各不相同,但是都具有相同的输入输出界面。
这里我们以16字*2行(简称16*2)字符型液晶显示模块为例,详细介绍字符液晶显示模块的应用技术。
读者朋友经过学习并实践实际的LCD程序设计,那么当你学完后,将掌握字符形液晶显示模块的程序设计技术,使液晶显示器听你的指挥显示出各种字符及信息,用到你设计的产品中后添色不少并增强市场竞争力。
字符LCD模块的控制器主要为日立公司的HD44780及其替代集成电路,驱动器为HD44100及其替代的兼容集成电路。
17.2 16*2字符型液晶显示模块(LCM)特性1.+5V电压,反视度(明暗对比度)可调整。
单片机液晶显示程序设计
LCD如何显示汉字 LCD如何显示汉字
汉字的显示一般采用图形方式,事先从微机中提 汉字的显示一般采用图形方式 事先从微机中提 取汉字点阵码,每个汉字占32B,分左右两部分。左 取汉字点阵码,每个汉字占 ,分左右两部分。 边为1、3、5等,右边为2、4、6等,根据在LCD上开 边为 、 、 等 右边为 、 、 等 根据在 上开 始显示的行列号及每行的列数可找出显示RAM对应的 始显示的行列号及每行的列数可找出显示 对应的 地址,确定光标位置, 地址,确定光标位置,送上要显示的汉字的第一字节 送第二字节时光标位置加1;换行按列对齐,直到32B 送第二字节时光标位置加 ;换行按列对齐,直到 显示完就可以在LCD上得到一个完整的汉字。 上得到一个完整的汉字。 显示完就可以在 上得到一个完整的汉字
液晶显示原理
液晶显示的原理是利用液晶的物理特性,通过电压 液晶显示的原理是利用液晶的物理特性, 对其显示区域进行控制,有电就显示黑色, 对其显示区域进行控制,有电就显示黑色,这样即可 显示图形。液晶显示器的厚度薄、 显示图形。液晶显示器的厚度薄、适于大规模集成电 路直接驱动、易于实现全彩色显示的特点, 路直接驱动、易于实现全彩色显示的特点,广泛应用 在笔记本电脑、数字音像产品、 在笔记本电脑、数字音像产品、PDA移动通信工具等 移动通信工具等 众多领域。 众多领域。
行列控制型 内藏控制器
LCD如何显示线段 LCD如何显示线段
点阵图形液晶由M 点阵图形液晶由M×N个显示单元构成。假设显 个显示单元构成。 示屏有64 64行 每行有128 128列 列对应1B 8b, 1B的 示屏有64行,每行有128列,每8列对应1B的8b,则 每行由16B 16B, 16×8=128个点组成 屏上64 16个 个点组成, 64× 每行由16B,共16×8=128个点组成,屏上64×16个 显示单元与显示RAM区的1KB对应, 1B的内容与显 RAM区的1KB对应 显示单元与显示RAM区的1KB对应,每1B的内容与显 示屏相应位置的亮暗对应。 示屏相应位置的亮暗对应。例如屏的第一行的亮暗 RAM区的000H-00FH的16B内容决定 区的000H 内容决定, 由RAM区的000H-00FH的16B内容决定,当(000)=FFH 屏的左上角显示一条短亮线,长度为8个点; 时,屏的左上角显示一条短亮线,长度为8个点;当 (3FFH)=FFH时 显示屏右下角显示一条短亮线。 (3FFH)=FFH时,显示屏右下角显示一条短亮线。
c语言的单片机模块化编程初阶入门
c语言的单片机模块化编程初阶入门示例:LCD1602液晶模块应用要求:LCD1602字符型液晶显示实验。
在屏幕的第一行显示“224166320@”,第二行则显示“Tel:1308645____”《单片机C语言模块化编程技能训练》石坚TM1[实验原理——LCD基础知识]LCD显示器是一种利用液晶的扭曲/向列效应制成的新型显示器。
具有体积小、重量轻、功耗低、抗干扰能力强等优点,因而在单片机系统中被广泛应用。
《单片机C语言模块化编程技能训练》石坚TM2[实验原理——LCD结构及工作原理] LCD本身不发光,是通过借助外界光线照射液晶材料而实现显示的被动显示器件。
向列型液晶材料被封装在上、下两片导电玻璃电极之间,液晶分子平行排列,上下扭曲90度,外部入射光线通过上偏振片后形成偏振光,该偏振光通过平行排列的液晶材料后被旋转90度,再通过与上偏振片垂直的下偏振片,被反射极反射过来,呈透明状态。
若在上、下电极之间加一定电压,在电场的作用下迫使加在电极部分的液晶分子转成垂直排列,其旋光作用也随之消失,致使从上偏振片入射的偏振光不旋转,光无法通过下偏振片返回,呈黑色。
去掉电压后,液晶分子又恢复其扭转结构。
《单片机C 语言模块化编程技能训练》石坚TM3实验原理——SMC1602A液晶模块引脚功能《单片机C语言模块化编程技能训练》石坚TM4实验原理——液晶控制器接口说明《单片机C语言模块化编程技能训练》石坚TM5实验原理——液晶控制器接口说明《单片机C语言模块化编程技能训练》石坚TM6实验原理——液晶控制器接口说明《单片机C语言模块化编程技能训练》石坚TM7实验原理——液晶控制器接口说明《单片机C语言模块化编程技能训练》石坚TM8实验原理——1602液晶控制器自带标准字库每一个字符都有一个固定的代码,比如“A”的代码是41H,显示时模块把 41H中的点阵字符图形显示出来,就能看到字母“A”。
《单片机C语言模块化编程技能训练》石坚TM9参考示例程序(程序写在一个C文件中)_include _lt;AT89_52.h_gt; _include _lt;INTRINS.h_gt; _define uchar unsigned char _define uint unsigned int _define DOUT P0 sbit rs=P2 ; sbit rw=P2 ; sbit e =P2; code uchar tab1[]={0_32,0_32,0_34,0_31,0_36,0_36,0_33,0_32,0_30,0_40,0_71,0_71,0_2e,0_63,0_6f,0_6d,0_ff,}; code uchartab2[]={0_54,0_65,0_6c,0_3a,0_20, 0_31,0_33,0_30,0_38,0_36,0_34,0_35,0_78,0_78,0_78,0_78,0_ff,}; //延时函数 void delayms(unsigned int ms) { unsigned char i; while(ms--) {for(i=0;i_lt;120;i++);} } 《单片机C语言模块化编程技能训练》石坚 10TM//以下为读忙状态的时序程序 unsigned char read_status(void) { unsigned char LCD_Status; DOUT=0_ff;rs=0;rw=1;e=1; delayms(1);LCD_Status=DOUT;e=0; return LCD_Status; } //以下为写命令的时序程序 void write_com(unsigned char cmd) { while((read_status()_amp;0_80)==0_80);rs=0;rw=0;e=0; P0=cmd;e=1;delayms(1);e=0; }《单片机C语言模块化编程技能训练》石坚TM11《单片机C语言模块化编程技能训练》石坚TM//以下为液晶初始化程序 void lcd_ini(void) { write_com(0_38);delayms(1); write_com(0_01); delayms(1); write_com(0_06); delayms(1); write_com(0_0c); delayms(1); } //以下为写数据的时序程序 voidwrite_dat(unsigned char dat) { while((read_status()_amp;0_80)==0_80);rs=1;rw=0;e=0;P0=dat;e=1;delayms(1);e=0; }12//以下为主函数 void main(void) { uchar i=0; lcd_ini(); write_com(0_80); //设置第一行数据地址指针,为80H+地址码 delayms(1); while(tab1[i]!=0_ff) { write_dat(tab1[i]);i++;delayms(1); } i=0; write_com(0_c0); //设置第二行数据地址指针,为80H+地址码 delayms(1); while(tab2[i]!=0_ff){ write_dat(tab2[i]);i++;delayms(1); } i=0; while(1); } 《单片机C语言模块化编程技能训练》石坚TM13程序可作如下修改,写法如下:参考程序://LCD1602.C //液晶控制与显示程序 _include _lt;reg51.h_gt;_include _lt;intrins.h_gt; sbit RS=P2 ; //寄存器选择位,将RS位定义为P2.0引脚 sbit RW=P2 ; //读写选择位,将RW位定义为P2.1引脚 sbit EN=P2 ; //使能信号位,将E位定义为P2.2引脚 //延时函数 void delayms(unsigned int ms) { unsigned char i; while(ms--) { for(i = 0;i _lt; 120;i++); } } 《单片机C语言模块化编程技能训练》石坚TM14//忙检测函数unsigned char busy_check(void) { unsigned char LCD_Status; //定义忙状态变量 RS = 0; RW = 1; EN = 1; delayms(1); LCD_Status = P0; //读取忙状态 EN = 0; return LCD_Status; //返回忙状态 }//写命令void write_LCD_Command(unsigned char cmd) { while((busy_check( ) _amp; 0_80) == 0_80); //等待忙状态结束 RS = 0; RW = 0; EN = 0; P0 = cmd; EN = 1; delayms(1); EN = 0; 《单片机C语言模块化编程技能训练》石坚 }TM15//写数据 void write_LCD_data(unsigned char dat) { while((busy_check() _amp; 0_80) == 0_80); RS = 1; RW = 0; EN = 0; P0 = dat; EN = 1; delayms(1); EN = 0; } //初始化 void init_LCD(void) { write_LCD_Command(0_38); //显示模式设置 delayms(1); write_LCD_Command(0_01); //清屏 delayms(1); write_LCD_Command(0_06); //字符进入模式:屏幕不动,字符后移 delayms(1); write_LCD_Command(0_0c); //显示开,关光标 delayms(1); } 《单片机C语言模块化编程技能训练》石坚 16TM//显示字符串 void ShowString(unsigned char _,unsigned char y,unsigned char _str) { unsigned char i = 0; //设置起始位置 if(y == 0){write_LCD_Command(0_80 | _);} if(y == 1) {write_LCD_Command(0_c0 | _);} //输出字符串 for(i = 0; i _lt; 16;i++) {write_LCD_data(str[i]);} } //主函数 void main(void) { init_LCD( ); ShowString(0,0,;224166320@;); ShowString(0,1,;Tel: 1308645____;); while(1); } 《单片机C语言模块化编程技能训练》石坚TM17大型模块化程序的肇始(LCD1602 3.0版) 基本思路:将一个文件的程序按照其模块功能划分为两个或两个以上的文件,每个文件表示系统实现特定的功能。
LCD液晶显示器控制原理
哈尔滨工业大学华德应用技术学院本科毕业设计(论文)摘要LCD液晶显示已经是人机界面的关键技术。
本文对基于单片机的LCM 液晶显示模块控制系统进行了研究。
首先在绪论中介绍了本课题的课题背景、研究意义及完成的功能。
本系统是以单片机C语言来进行软件设计,指令的执行速度快,节省存储空间。
为了便于扩展和更改,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了。
使硬件在软件的控制下协调运作。
正文中首先简单描述系统硬件工作原理,且附以系统硬件设计框图,并介绍了单片机微处理器的发展史,论述了本次毕业设计所应用的各硬件接口技术和各个接口模块的功能及工作过程, 并具体描述了STC89C52、SMC1602A及MAX232外接电路接口的软、硬件调试。
其次阐述了程序的流程和实现过程。
本文撰写的主导思想是软、硬件相结合,以硬件为基础,来进行各功能模块的编写。
最后对我所开发的用单片机实现LCD液晶显示器控制原理的设计思想和软、硬件调试作了详细的论述。
关键词单片机;STC89C52;SMC1602A;MAX232哈尔滨工业大学华德应用技术学院本科毕业设计(论文)AbstractThe LCD manifestation has been the key technique of the man-machine interface. This text to basic proceeded the research in Micro Controller Unit liquid crystal display module control system.Introduced the lesson a background of this lesson and study meaning and finished functions in introduction first.This system edits C materials the language to proceed with the assembly language of a machine the software designs, the instruction carries out the speed quick, save memory. For the sake of easy to expand with the design adoption mold a logic for turning construction, making procedure designing relation that change, software more shorter and more easier to understand. Make hardware control in software descended to moderate the operation.The text inside describes the system hardware work principle in brief first, and attach with the system hardware design frame diagram, combine development history that introduced the single a machine microprocessor, discuss this graduate design a function for applied each hardware connecting a people the technique connects with each one a mold piece and work processes, combine to describe in a specific waySTC89C52,SMC1602A and the MAX232 circumscribes the electric circuit connects oscular and soft, the hardware adjusts to try. Expatiated the process of the procedure the next in order with realizes process. The predominance thought that this text compose is soft, the hardware combines together, regarding hardware as the foundation, proceed the plait of each function mold piece write.Develop to me finally of use the single a machine realizes the design thought that the liquid crystal display of LCD control principle with soft, the hardware adjusted to try to make the detailed treatise.Keywords Micro Controller Unit STC89C52 SMC1602A MAX232哈尔滨工业大学华德应用技术学院本科毕业设计(论文)目录摘要 (I)Abstract .............................................................................................................. I I 第1章绪论 (1)1.1 立题背景 (1)1.2 目的和意义 (1)1.3 主要技术指标 (2)第2章系统硬件设计 (3)2.1 硬件设计框图 (3)2.2 单片机 (4)2.2.1 单片机模块方案的比较与确定 (4)2.2.2 单片机简介 (4)2.2.3 单片机的引脚 (5)2.2.4 单片机的时钟电路 (9)2.2.5 单片机的复位电路 (10)2.2.6 STC89系列单片机命名规则 (11)2.3 液晶显示模块 (12)2.3.1 液晶显示器LCD (12)2.3.2 液晶显示模块LCM (12)2.3.3 点阵字符液晶模块的特点 (15)2.3.4 点阵字符液晶模块(LCM)内部结构 (15)2.3.5 字符液晶显示模块SMC1602A (16)2.4 电源电路 (21)2.5整机原理图 (23)第3章软件系统软计 (24)3.1 C编语言的特点 (24)3.2 程序流程图 (25)第4章系统调试与扩展 (27)4.1硬件调试 (27)4.2软件调试 (27)4.3 MAX232接口 (27)哈尔滨工业大学华德应用技术学院本科毕业设计(论文)4.4单片机MAX232的典型接口电路 (29)结论 (30)致谢 (31)参考文献 (32)附录1 RS-232C接口标准详解 (33)附录2 The RS-232C (36)附录3 液晶显示模块SMC1602A字库 (40)附录4 软件程序 (41)附录5 整机原理图 (45)哈尔滨工业大学华德应用技术学院本科毕业设计(论文)第1章绪论1.1 立题背景随着科学技术的发展,社会不断的进步,人们对公共传媒质量的要求越来越高。
液晶显示C语言实现
{0x38,0x44,0x04,0x08,0x10,0x20,0x7c,0x00}, // 2
{0x78,0x84,0x04,0x38,0x04,0x84,0x78,0x00}}; // 3
// 中文字模库 16x16点阵
code unsigned char CCTAB[][32] ={
{ /*-- 文字: 相 --*/
0x10,0x10,0xD0,0xFF,0x30,0x50,0x90,0x00,0xFE,0x22,0x22,0x22,0x22,0xFE,0x00,0x00,
{/*-- 文字: 蚕 --*/
0x08,0x08,0x89,0x89,0x49,0x29,0x19,0xCF,0x09,0x19,0x29,0x49,0x89,0x89,0x88,0x00,
0x01,0x41,0x40,0x4F,0x45,0x45,0x45,0x3F,0x25,0x25,0x25,0x2F,0x70,0x21,0x00,0x00},
{/*-- 文字: 到 --*/
0x00,0x22,0x72,0x2A,0x26,0xE2,0x2A,0x72,0x22,0x00,0xF8,0x00,0x00,0xFF,0x00,0x00,
0x00,0x42,0xC2,0x42,0x22,0x3F,0x22,0x12,0x12,0x00,0x0F,0x40,0x80,0x7F,0x00,0x00},
0x04,0x03,0x00,0xFF,0x00,0x00,0x01,0x00,0xFF,0x42,0x42,0x42,0x42,0xFF,0x00,0x00},
测试液晶LCM046程序
if((commond&0x80)==0x80){data_1;}
else {data_0;}
commond=commond<<1;
wr_1;
}
wr_0;
data_0;//data=0
wr_1;
data_1;
cs_1;
}
//写数据函数
void wr_data(unsigned char addr,unsigned char x)
case 3: {wr_data(0x04,d);d>>=4;wr_data(0x05,d);break;}
case 4: {wr_data(0x06,d);d>>=4;wr_data(0x07,d);break;}
default : break;
}
}
d=0;
}
/////////////////////////////////////////
#define lcm_int 0x29//模块初始化
#define close_wdt 0x05//关WDT
#define open_wdt 0x07//开WDT
#define close_time 0x04//关定时器
#define open_time 0x06//开定时器
#define clear_wdt 0x0e//WDT 清零
void wr_dig(unsigned char x)
{
if(x<=4){
switch(x){
case 1: {wr_data(0x00,d);d>>=4;wr_data(0x01,d);break;}
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 LCM 046 与单片机的接口电路
L CM 046 与单片机的接口很简单, 图 1 是其接口电
收稿日期: 2005206220 作者简介: 高振天 (19802) , 男, 硕士研究生, 研究方向为单片机及其嵌入式系统应用, gaozt99@ 163. com ;
韩佩富 (19462) , 男, 教授, 硕士生导师, 研究方向为 EDA 技术、虚拟仪器、单片机应用.
L CM 046 的写命令格式与写数据格式不同, 分 别由 12 位数据和 13 位数据组成, 具体格式见表 2 和表 3 所列。
表 2 写命令指令格式
模式
命令代码
补充位
格式
100
C 7C 6C 5C 4C 3C 2C 1C 0
0
表 3 写数据指令格式
模式
命令地址
段位数据
格式
101
0 A 4A 3A 2A 1A 0 D 0D 1D 2D 3
液晶显示模块LCM 046 的原理及其 C 语言编程
韩佩富, 高振天
(燕山大学信息科学与工程学院, 秦皇岛 河北 066004)
摘 要: 介绍新型通用液晶显示模块 L CM 046 的使用方法。 由 L CM 046 与微控制器的接口控制电路开始; 根据其内存分配
单元以及命令书写格式, 再结合时序图, 分析了其驱动显示原理; 最后, 在基于伟福 6000 ID E 的开发环境下, 成功给出了一些
Abstract: T he m ethod of u sing L CM 0462a new un iversa l L CD m odu le is described. T he in terface circu it of M CU , m em o ry st ructu re, comm and fo rm a t and schedu ling p rocess a re d iscu ssed, T he d riving d isp lay p rin2 cip le is ana lyzed. Som e p rim a ry d riving funct ion s a re g iven fo r u sing C 51 in the W ave6000 ID E environ2 m en t. Key words: L CD m odu le; L CM 046; C language; m icrocon t ro ller EEACC: 6150
图 1 L CM 046 与M CU 接口
3 LCM 046 的内存单元
L CM 046 内部有 8 个 4 位 RAM 存储单元, 平 均分给四位, 即每位数码占用两个 RAM 单元。所有 显示段位在内存中的位置见表 1, 其中 A、B、C、D、 E、F、G 代表 7 段数码字符的段位,D P 表示小数点。
L W rite (COMM AND , 3) ; 同上 L W rite (O SCon, 9) ; 开振荡器 L CM CS= 1; 同上 L W rite (COMM AND , 3) ; 同上 L W rite (L CM on, 9) ; 开显示器 L CM CS= 1; 同上
}
(4) 显示数字部分
# define B EEPL 0x60 置蜂鸣器频率 2k: 0110 0000
{
# define B EEPH 0x40 置蜂鸣器频率 4k: 0100 0000
Hale Waihona Puke delay (10000) ; 延时函数可以自己定义。
# define B EEPon 0x09 开蜂鸣器: 0000 1001
L W rite (COMM AND , 3) ; 选择模式 100
主要的 C51 驱动函数。
关键词: 液晶显示模块; L CM 046; C 语言; 单片机
中图分类号: TN918
文献标识码: A 文章编号: 1005-9490 (2005) 03-0648-03
现代仪器仪表通常要求显示大量信息, 如汉字、 曲线、图形等。 传统的数码管显示已很难满足要求。 液晶显示, 以其功耗小、体积小、显示信息量大等优 点被大量采用。
L CM 046 的驱动显示步骤如下: ①模块上电后延时 200m s 以上; ②写入专用初始化命令 0010 0100; ③定义模块振荡方式 0001 1000 (选内部 RC 振 荡器) 或 0001 0100 (接外部晶体) ; ④写入开振荡器命令 0000 0001; ⑤写入开显示器命令 0000 0011; ⑥写入欲显示内容的段位。 下面介绍几个主要应用函数, 这些函数在伟福 6000 ID E 中实际调试通过。
L CM 046 的显示驱动主要分为初始化和写数据 两大部分。 其中初始化是给模块写入必要的控制命 令, 其主要内容见表 4 (表中的代码 C7~ C0 的含义 与表 2 相同)。
表 4 主要命令表
序号 代码 C7~ C0 编码
命令功能
1 0000 0000 0x00
关闭振荡器, 进入静态模式
2 0000 0001 0x01 3 0000 0010 0x02 4 0000 0011 0x03 5 0000 1000 0x08
L W rite (COMM AND , 3) ; 同上
sb it L CM DA = P1^ 3;
L W rite (0x18, 9) ; 定义 RC 振荡方式: 选内部振荡器
(2) 写函数
L CM CS= 1; 同上
这是一个基本函数, 可以用于命令、地址或者数 据的写入。形式参数A dc 可以是命令字、RAM 地址 或显示的数据代码, 形式参数 B its 是欲显示内容的 位数。
表 1 内存段位地址表
序号 D 3 D 2 D 1 D 0 地址
内容
0 COL 1E 1F 1A 1 1D 1C 1G 1B
00000 00001
第一位数码
2 D P 1 2E 2F 2A 3 2D 2C 2G 2B
00010 00011
第二位数码
4 D P 2 3E 3F 3A 5 3D 3C 3G 3B
L CM 046 有两种写工作时序, 第一种是单字节 方式 (这里的单字节是指写命令格式的 12 位和写数 据格式的 13 位)。 这种方式的特点是每写一个命令 或显示数据都要对模块进行一次片选, 并且重复发 模式数据 (100: 写命令或 101: 写数据)。另一种是连 续写数据方式, 该方式可以只进行一次片选并只发 一次模式数据, 因此, 可将多个显示数据连续写入模 块, 该模式只适用于显示段码的写入, 而不能用于命 令写入。 图 2 所示是其时序图。
(1) 宏定义和端口定义部分: # define COMM AND 0x80 模式 100: 实际只发送最 高 3 位, 用于写命令字 # define DDA TA 0xA 0 模式 101: 实际只发送最高 3 位, 用于写地址 # define IN IT 0x29 专用初始化命令字 0010 1001 # define O SCon 0x01 开振荡器: 0000 0001
00100 00101
第三位数码
6 D P 3 4E 4F 4A 7 4D 4C 4G 4B
00110 00111
第四位数码
注: L CM 外形图中从左到右为一至四位。
4 C 语言驱动编程
编程时, 应首先根据表 2 将每个显示内容按 8 位一个字节进行编码。 比如, 对第一位数码而言, 当 它 为“0 ”时, 地 址 00000 单 元 的 内 容 为 0111 (D 3D 2D 1D 0 ) , 00001 单 元 的 内 容 为 l101 (D 3D 2D 1D 0) ; 往地址 00000、00001 单元分别写入 0111 和 1101, 则第一位显示 0。
# define B EEPoff 0x08 关蜂鸣器: 0000 1000
L W rite ( IN IT , 9) ; 写初始化命令字: 8 位
sb it L CM CS= P1^ 0; 端口定义, 可以根据实际需要
命令代码+ 0= 9 位。
换别的口线
L CM CS= 1; 置高电平实现低功耗
sb it L CM W R = P1^ 2;
V o l128 N o. 3 Sep. 2005
H A N P ei2f u , GA O Z hen2tian
(T he colleg e of Inf orm a tion S cience and eng ineering , Y anS han U n iversity , Q inhuang d ao H ebei 066004, C h ina)
本文以液晶显示模块L CM 046 为例, 介绍其工 作原理及 C 语言编程应用。
1 LCM 046 简介
L CM 046 是北京青云创新科技发展有限公司生 产的一种新型 4 位多功能通用型 8 段式液晶显示模 块, 内含看门狗 (W D T ) 时钟发生器, 2 种频率的蜂 鸣驱动电路, 内置显示 RAM , 3- 4 线串行接口, 低 功耗, 稳定可靠, 编程简单, 非常适合仪器仪表等便 携式设备。