• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

关于单片机中的LCD显示入门

有没有老师可以给我讲讲这个程序中的B的代码是怎么定义下来的?
小弟看了16X2的LCD的说明书还是没明白,还望有老师可以给小弟讲讲.
;1602液晶第二行显示一个B
;**************************************************************************
;*  Date :  2004.4.20                                                     *
;*  Support Mb:0735-2197559    E-mail:c51cn@163.com                       *
;*  Create by :邓德武      www.c51.cn www.china-mcu.cn 更多例程请登陆网站 *
;*        网站单片机学习资料同步更新,敬请新老朋友随时关注                *
;*注意:因ISP下载口与液晶数据口重复,所以用ISP下载时,请先将液晶拨下,烧写好后再插上液晶;
;**************************************************************************
     RS  BIT  P3.0
     RW  BIT  P3.1
     E   BIT  P3.2
DB0_DB7 DATA P0
     ORG   00H
     AJMP  START
     ORG   000BH
     AJMP  INSE
     ORG   50H
START:MOV  TMOD,#0
     MOV   TL0,#0
     MOV   TH0,#0
     SETB  EA
     SETB  ET0
     SETB  TR0
     MOV   R5,#50
     MOV   SP,#60H
     ACALL INIT
MOV  A,#0C3H         ;写入显示地址为第二行第三位.
ACALL Write
MOV A,#42H               ;字母B的代码.
ACALL WriteDDR
LOOP: AJMP LOOP
INSE: MOV TL0,#0   ;中断服务子程序.
MOV TH0,#0
DJNZ R5,NO
MOV R5,#50
NO: RETI
INIT:
MOV A,#38H          ;使用8Bits汇流排,显示两行,使用5*7的字型.
LCALL Write
MOV A,#0EH          ;显示器开,光标开,光标闪烁.
LCALL Write
MOV A,#06H          ;字符不动,光标自动右移一格.
LCALL Write
RET
CheckBusy:         ;检查忙碌子程序.
PUSH ACC
CB_Loop: CLR RS
SETB RW
CLR E
SETB E
MOV A,DB0_DB7
CLR E
JB ACC.7,CB_Loop
POP ACC
ACALL DELAY
RET
Write:             ;写入IR寄存器子程序.
ACALL CheckBusy
CLR E
CLR RS
CLR RW
SETB E
MOV DB0_DB7,ACC
CLR E
RET
WriteDDR:          ;写入DR寄存器子程序.
ACALL CheckBusy
CLR E
SETB RS
CLR RW
SETB E
MOV DB0_DB7,ACC
CLR E
RET
DELAY:             ;延时子程序.
MOV R6,#5
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
END
全部回复(4)
正序查看
倒序查看
2007-05-31 22:43
有个表格,你查一下就会知道了.
0
回复
whatcall
LV.5
3
2007-05-31 23:21
42H即字符大写'B'的ASCII码(16进制).
ASCII码表在这里可以看到:
http://www.96yx.com/tool/ASC2.htm

实际上如果使用C语言开发,编译器会将字符直接存储为其相应的ASCII码.
0
回复
caomin
LV.5
4
2007-06-01 18:16
@whatcall
42H即字符大写'B'的ASCII码(16进制).ASCII码表在这里可以看到:http://www.96yx.com/tool/ASC2.htm实际上如果使用C语言开发,编译器会将字符直接存储为其相应的ASCII码.
哦,非常感谢你的帮助,还想请教你一个问题,就是在使用LCD的时候,怎么去定地址写数据呢?
比如说我要在一个LCD屏幕的中间或者其他任意位置显示某个字符,
怎么去写我要的地址呢?
0
回复
whatcall
LV.5
5
2007-06-01 19:34
@caomin
哦,非常感谢你的帮助,还想请教你一个问题,就是在使用LCD的时候,怎么去定地址写数据呢?比如说我要在一个LCD屏幕的中间或者其他任意位置显示某个字符,怎么去写我要的地址呢?
不同的LCD控制也是不同的,但是对应的使用手册上都有说明和示例,请研读对应手册.一般应该是用命令指定地址(及位置),再发送数据.
0
回复