《匠人手记》推荐网上购书渠道:
互动出版网(china-pub)购书入口   >>>
当当网(dangdang)购书入口   >>>
卓越亚马逊网 购书入口   >>>
淘宝网(taobao)购书入口   >>>
更多购书渠道……   >>> 

设为首页加入收藏联系匠人管理入口21IC首页21IC博客21IC社区侃单片机回复的贴参与的贴

天气预报
百宝日历
载入中...

百宝专栏

载入中...
最新货色

载入中...

粉丝评论

载入中...

载入中...



百宝信息

载入中...

百宝流量

(2006-07-01开始)


匠人手记

 匠人观点: 好记性不如烂笔头  
 黑色幽默:三鹿门——后世畅想

用单片机控制字符型液晶显示模块
程序匠人 发表于 2005-11-17 23:04:00  阅读全文 | 回复(2) | 引用通告 | 编辑

用单片机控制字符型液晶显示模块

液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。 字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,这里以常用的2行16个字的DM-162液晶模块来介绍它的编程方法,DM-162采用标准的14脚接口,其中VSS为地电源,VDD接5V正电源,V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。D0~D7为8位双向数据线。 DM-162液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A” DM-162液晶模块内部的控制器共有11条控制指令,如表2所示,它的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平) 指令1:清显示,指令码01H,光标复位到地址00H位置 指令2:光标复位,光标返回到地址00H 指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效 指令4:显示开关控制。 D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁 指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符 指令7:字符发生器RAM地址设置 指令8:DDRAM地址设置 指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据 指令11:读数据 DM-162液晶显示模块可以和单片机AT89C51直接接口,电路如图1所示。 液晶显示模块是一个慢显示器件,所以在执行每条指令之前一定要确认模块的忙标志为低电平,表示不忙,否则此指令失效。要显示字符时要先输入显示字符地址,也就是告诉模块在哪里显示字符,表3是DM-162的内部显示地址,比如第二行第一个字符的地址是40H,那么是否直接写入40H就可以将光标定位在第二行第一个字符的位置呢?这样不行,因为写入显示地址时要求最高位D7恒定为高电平1所以实际写入的数据应该是01000000B(40H)+10000000B(80H)=11000000B(C0H) 以下是在液晶模块的第二行第一个字符的位置显示字母“A”的程序: 
RS EQU P3.7 
RW EQU P3.6 
E EQU P3.5 
ORG 0000H 
MOV P1,#00000001B ;清屏 
ACALL ENABLE 
MOV P1,#00111000B ;8位2行5x7点阵 
ACALL ENABLE MOV P1,#00001111B ;显示器开、光标开、闪烁开 ACALL ENABLE MOV P1,#00000110B ;文字不动,光标自动右移 ACALL ENABLE MOV P1,#0C0H ;写入显示起始地址(第二行第一个位置) 
ACALL ENABLE MOV P1,#01000001B ;字母A的代码 SETB RS ;

RS=1 
CLR RW ;
RW=0 
CLR E ;
E=0 
ACALL DELAY 
SETB E ;
E=1 
AJMP $ ENABLE: 
CLR RS ;写入控制命令的子程序 
CLR RW 
CLR E 
ACALL DELAY 
SETB E RET DELAY: 
MOV P1,#0FFH ;判断液晶显示器是否忙的子程序 
CLR RS 
SETB RW 
CLR E 
NOP 
SETB E 
JB P1.7,
DELAY ;如果P1.7为高电平表示忙就循环等待 RET END 

看《匠人手记》,与匠人同行!北航出版,正在热卖!

回复:用单片机控制字符型液晶显示模块
amei(游客)发表评论于2006-9-23 13:08:00  个人主页 | 引用 | 返回 | 删除 | 回复

amei(游客)

搞定了:)犯了个弱智问题,抱歉

看《匠人手记》,与匠人同行!北航出版,正在热卖!

回复:用单片机控制字符型液晶显示模块
amei(游客)发表评论于2006-9-23 10:57:00  个人主页 | 引用 | 返回 | 删除 | 回复

amei(游客)

匠人,你好!我在用单片机点点阵式LCD的时候出现了一些问题,请教一下:

用的IC为S6A0094,点阵为5*8。初始化已经成功,电压也正常,但是出现的问题是,全部点都显示,不能将CGROM中的字符写到LCD上。不知道哪里有问题?(第一次点点阵式的,所以不太了解哪里有问题)我的程序如下,帮忙指正,谢谢

void initial()
{
uchar i;
 res=0;
 delay(1);
 res=1;
 delay(1);
 
 write_command(0x30);//RE=0
 write_command(0x60);//R1~R0=00,CS=0,CG=0(CGROM)
 write_command(0x20);//line blink mode
 
 write_command(0x32);//RE=1
 write_command(0x10);//determination of the DDRAM line which is display
 write_command(0x20);//douuble height mode
 write_command(0x60);//SS=0
 write_command(0x5d);//IRS=1(internal resistors are used for regulator),BS=0(BIAS=1/4),IR1~IR0=10(1+Rb/Ra)
 
 write_command(0x30);//RE=0
 write_command(0x88);//electronic volume register setup  0x08h
 write_data(0x10);//0x00~0x1f EV  contrast
 write_command(0x42);//OS=1(Oscillator) on,PS=0(power save off)
 //POWER ON
 write_command(0x51);
 delay(2);//waiting>1ms
 write_command(0x55);
 delay(2);//waiting>1ms
 write_command(0x57);
 delay(1);//waiting>500us
 
 write_command(0x30);
 write_command(0xb0);//DDRAM address
 for(i=0;i<80;i++)//clear DDRAM
 {
   write_data(0x20);
 }
 
 write_command(0x30);//RE=0
 write_data(0x10);//AC TO 30H,cursor returens to home position
 
 write_command(0x31);//RE=1,Dislay on

}

void display()
{
uchar i;

 write_command(0x31);//re=0,display on
 write_command(0xC0);//DDRAM line2
 write_data(0x42);//display"A"

}

void main()
{
  delay(1);
  initial();

 while(1)
  {
display();
  }
}

看《匠人手记》,与匠人同行!北航出版,正在热卖!

发表评论:
载入中...

芯片专题

器件专题

软件专题

硬件专题

综合专题

项目专题

原创专题

器件检测
LCD LED
按键 触摸键
E2PROM
电池 电机
电阻 电容 电感

指令系统
软件算法
编程规范
滤波算法
串行通讯

PCB设计
I2C PWM
红外遥控
充电技术
中断 ADC 

匠人手记
匠人夜话
网络心路
一周热点串烧
从零开始玩PIC
DIY旋转时钟

广告5号位 [投放]


学习板、开发板、编程器、下载器、仿真器(查看详情……)

广告3号位 [投放]

站内搜索


站外搜索


百度  google
mp3  歌词 
图片  FLASH 
知道  文档
新闻  词典 
地图  mp3 
软件  天网 
雅虎  爱问 
搜狗  讯雷 
网讯  华军 
天空 

21IC器件搜索
百宝箱分站
  • 《匠人的百宝箱》21IC站
  • 《匠人的百宝箱》21IC笔记团队
  • 《匠人手记》21IC书友会
  • 《匠人的百宝箱》MCUBLOG站
  • 《匠人的百宝箱》MCUBLOG笔记团队
  • 《匠人的百宝箱》EDN站
  • 《匠人手记》EDN书友会
  • 《匠人的百宝箱》与非网站
  • 《匠人的百宝箱》新浪站
  • 《匠人的百宝箱》百度站
  • 《匠人的百宝箱》网易126站
  • 《匠人的百宝箱》网易163站
  • 《匠人的百宝箱》互动出版网站
  • 广告4号位 [投放]

     
     

    匠人原创

    往日酷贴

     
     
     

    大千八卦

    友情连接

    新浪新闻:
    新浪财经:
    AK58新闻:
    新浪股票:
    新浪股票:
    证券之星:

     [更多酷站连接]

     

     

    [欢迎交换连接]

    [百宝箱之与非门分舵]

    [电脑圈圈的家当]

    [IC921的博客]

    [柔月阁]

    [八楼的呼吸]

    [hotpower 的水潭]

    [xwj的文君阁]

    [所长的BLOG]

    [阿摆手记]

    [电子伙伴]

    [unaided的笔记]

    [小飞的笔记]

    [单片机开发联盟]

    [网址之家]

    [好东西网址大全]

    [美萍中文精选]

    [数字电视之家]

    [SMARTCODE电子书斋]

    [软件开发之窗]

    [Armoric]

    [我爱研发网]

    [infernal的笔记]

    [雄鹰的空中加油站]

    [SunK]

    [逍遥电子]

    [ningpanda的博客]

    [C-Design]

    [一网见天下]

    [海边淘沙]

    [嵌入式365]

    [水牛的仓库]

    [股剩是怎样炼成的]

    [PIC论坛]

    [ICC AVR开发网]

    [中国高校自动化网]

     

     

     

    MCU博客-中国电子工程师博客网 

    大学生电子网 

     

     

     

     

     

    !!! 《匠人的百宝箱》 !!!