液晶显示控制模块的问题!求助!!

guxingke 2003-10-20 09:01:47
我在做一个项目,中间有用到8279控控制液晶显示的问题,其中的液晶显示模块是用清华蓬远的,控制的芯片为HD61202R的型号为MGLS19264,希望能提供汇编源程序有哪们朋友知道的请赐教,本人不胜感激!!!!可以用QQ与本人联系!!QQ:44214956!
...全文
153 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
guxingke 2003-11-03
  • 打赏
  • 举报
回复
我的问题已经解决了,谢谢各位!!
CrazyGentleman 2003-10-28
  • 打赏
  • 举报
回复
EM?
guxingke 2003-10-24
  • 打赏
  • 举报
回复
我看了CrazyGentleman(疯狂绅士) 的介绍,自己写了一个程序,现在在放在这儿,希望你们可以看一看有没有错!!希望能帮我纠错一下!!;************************************
;DEFINE:
;R0 保存要输出显示的数
;R2保存要操作的命令字
;r3设置页内的地址
;R4保存显示的页数
;R7写到了第几页
;************************************
ORG 0000H
SJMP START
START: ACALL DELY
MOV SP, #60H
MOV R1, #00H
MOV R4, #64 ;以R4存储页数
MOV R3, #08H
MOV R7, #0B8H
MOV 7FH, #00H ;初始化页起始
MOV DPTR, #TDA2
MOV R5, DPL
MOV R6, DPH
ACALL PR7 ;初始化操作
JP_2: MOV DPTR, #TDA1
DISP_1: MOV A, #00H
MOVC A, @A+DPTR ;取得要显示的数
MOV R0, A ;保存要显示的数
MOV A, 7FH ;取得列地址
ADD A, #40H
MOV R2, A
ACALL PR0 ;设置列地址
MOV A, R0 ;将数据送出显示
MOV R2, A
ACALL PR1 ;写数据
INC 7FH ;列地址增1
ACALL DELY
ACALL FNL ;dptr+1取得下一个数的地址
DJNZ R4, DISP_1 ;是否第一片的一页显示完了
MOV R4, #64 ;准备下一片的一页
MOV 7FH, #00H
DISP_2: MOV A ,#00H
MOVC A, @A+DPTR
MOV R0, A
MOV A, 7FH
ADD A, #40H
MOV R2, A
ACALL PR2
MOV A, R0
MOV R2, A
ACALL PR3
INC 7FH
ACALL DELY
ACALL FNL
DJNZ R4, DISP_2
MOV R4, #64
MOV 7FH, #00H
DISP_3: MOV A, #00H
MOVC A, @A+DPTR
MOV R0, A
MOV A, 7FH
ADD A, #40H
MOV R2, A
ACALL PR4
MOV A, R0
MOV R2, A
ACALL PR5
INC 7FH
ACALL DELY
ACALL FNL
DJNZ R4, DISP_3
INC R7
DEC R3
NEXT: ACALL PR8
AJMP DISP_1

;********************************
pr7: mov r2, #3fh ;开显示器
lcall pr0
lcall pr2
lcall pr4
mov r2,#0c0h ;设显示起始地址为00
lcall pr0
lcall pr2
lcall pr4
PR8: MOV A, R7 ;调用设置初使页
MOV R2, A
LCALL PR0
LCALL PR2
LCALL PR4
MOV R2, #40H ;各初始列地址
LCALL PR0
LCALL PR2
LCALL PR4
ret

;*********************************
pr0: clr p1.0 ;第一片
clr p1.1
mov dptr,#0E072h
movx a,@dptr
jb acc.7,pr0
mov dptr,#0E070h
mov a,r2
movx @dptr,a
setb p1.0
setb p1.1
ret
;*********************************
pr1: clr p1.0 ;第一片
clr p1.1
mov dptr,#0E072h
movx a,@dptr
jb acc.7,pr1
mov dptr,#0E071h
mov a,r2
movx @dptr,a
setb p1.0
setb p1.1
ret

;*********************************
pr2: setb p1.0 ;第二片
clr p1.1
mov dptr,#0E072h
movx a,@dptr
jb acc.7,pr2
mov dptr,#0E070h
mov a,r2
movx @dptr,a
setb p1.0
setb p1.1
ret
;*********************************
pr3: setb p1.0 ;第二片
clr p1.1
mov dptr,#0E072h
movx a,@dptr
jb acc.7,pr3
mov dptr,#0E071h
mov a,r2
movx @dptr,a
setb p1.0
setb p1.1
ret
;******************************
pr4: clr p1.0 ;第三片
setb p1.1
mov dptr,#0E072h
movx a,@dptr
jb acc.7,pr4
mov dptr,#0E070h
mov a,r2
movx @dptr,a
setb p1.0
setb p1.1
ret
;**********************************
pr5: clr p1.0 ;第三片
setb p1.1
mov dptr,#0E072h
movx a,@dptr
jb acc.7,pr5
mov dptr,#0E071h
mov a,r2
movx @dptr,a
setb p1.0
setb p1.1
ret
;***************************************
DELY: PUSH PSW
SETB RS0
SETB RS1
MOV R5,#02H ;B为外输入参数
TM0: MOV R6,#7DH ;#7DH=125D
TM1: MOV R7,#0FAH
TM2: DJNZ R7,TM2
DJNZ R6,TM1
DJNZ R5,TM0
POP PSW
RET
;*****************************************
FNL: PUSH ACC
INC DPTR ;DPTR增一
MOV A,DPL ;取出当前DPTR低8位
XRL A,R5 ;与(R5)即TDA2低8位相比较
JNZ ADP ;若不等则返回
MOV A,DPH
XRL A,R6 ;相等则比较高8位
JNZ ADP ;不等则返回
MOV DPTR,#TDA1 ;高8位也相等则令(DPTR)=#TDA1
ADP: POP ACC
RET
;*******************************************
TDA1: DB 00H,00H,00H,3EH,51H,49H,45H,3EH;"0"
DB 00H,00H,00H,00H,42H,7FH,40H,00H;"1"
DB 00H,00H,00H,42H,61H,51H,49H,46H;"2"
DB 00H,00H,00H,21H,41H,45H,4BH,31H;"3"
DB 00H,00H,00H,44H,64H,54H,4CH,44H;"z"
TDA2: DB 01H
END
guxingke 2003-10-24
  • 打赏
  • 举报
回复
q
zhk1124 2003-10-22
  • 打赏
  • 举报
回复
8279是16位数码显示芯片用来显示汉字不合算吧。
guxingke 2003-10-22
  • 打赏
  • 举报
回复
感谢CrazyGentleman(疯狂绅士) 的精彩回复,我一定好好看的!!谢谢!!1希望其它的兄弟
都能像CrazyGentleman(疯狂绅士)一样!!
CrazyGentleman 2003-10-21
  • 打赏
  • 举报
回复

(七)显示汉字
显示汉字的基本方法也跟显示字符的基本方法相符,所不同的是,汉字至
少是16×16点阵,显示一个16×16点阵需送进32个字节, 则必须往两页中的对
应列送。这样,一片MGLS-19264可以显示四行汉字。给16×16点阵汉字建字模
时,将该点阵分为两部分,然后分别按列取出每列字节,其方法和字符字模的
建立相同。
下面的程序是要在LCD 屏上显示两行汉字,其中在第2.3 页显示" 北京清
华蓬远公司",在第4.5页显示"欢迎选购液晶模块"。汉字以每两字为一组。
ACALL CLER ;首先清屏
MOV R4,#02H ;共显示两行汉字
MOV DPTR,#CHN1
MOV 20H,#0BAH ;存储列地址设置代码
CHN: MOV A,20H
ACALL CWE1
MOV 7FH,#32 ;(7FH)列地址
MOV R2,#32 ;(R2):要显示的字节数
ACALL LPE1 ;LPE1用来显示一串字符,这里用
MOV A,20H ;来显示前两汉字的上半部分
INC A ;转下页,显示两个字的下半部
ACALL CWE1
MOV 7FH,#32
MOV R2,#32
ACALL LPE1
MOV R5,#02H ;写完两个汉字开始往(2)中写
MOV R6,#00H ;四个汉字数据
BCHA: MOV A,20H
ACALL CWE2
MOV 7FH,R6
MOV R2,#32
ACALL LPE2 ;写两个汉字上半部分
MOV A,20H
INC A
ACALL CWE2
MOV 7FH,R6
MOV R2,#32
ACALL LPE2 ;写两个汉字下半部分
MOV R6,#32 ;起始列地址改为32
DJNZ R5,BCHA
MOV A,20H ;(2)中四个汉字写完,向(3)中写
ACALL CWE3 ;两个汉字
MOV 7FH,#00H
MOV R2,#32
ACALL LPE3
INC 20H
MOV A,20H
ACALL CWE3
MOV 7FH,#00H
MOV R2,#32
ACALL LPE3
MOV B,#80H
ACALL DELY ;一行汉字全写完,延时一段时间
INC 20H
DJNZ R4,CHN ;两行未全显示完转往下一页继续写
......
上面程序中用到的LPE1,LPE2,LPE3是用来向HD61202 (1),(2), ( 3) 的
RAM 中某页写入一串数据,其中(7FH) 为该串数据起始列,(R2)为数据总共字
节数,程序清单如下:
LPE1: MOV A,#00H
MOVC A,@A+DPTR
ACALL DWE1
INC DPTR
DJNZ R2,LPE1
RET
LPE2: MOV A,#00H
MOVC A,@A+DPTR
ACALL DWE2
INC DPTR
DJNZ R2,LPE2
RET
LPE3: MOV A,#00H
MOVC A,@A+DPTR
ACALL DWE3
INC DPTR
DJNZ R2,LPE3
RET
#CHN1为汉字数据的首地址,汉字数据是如下存放的:
CHN1:DB 00H,20H,20H,20H,20H,FFH,00H,00H,00H,FFH,40H,20H,20H,10H,00H,00H
;"北"字上半部分
DB 04H,04H,04H,E4H,24H,24H,25H,26H,24H,24H,24H,E4H,04H,06H,04H,00H
;"京"字上半部分
DB 04H,04H,04H,E4H,24H,24H,25H,26H,24H,24H,24H,E4H,04H,06H,04H,00H
;"北"字下半部分
DB 00H,40H,20H,13H,1AH,42H,82H,7EH,02H,02H,0AH,13H,30H,60H,00H,00H
;"京"字下半部分


至此,MGLS-19264的应用已基本说完,MGLS-12864因比其少一片HD61202,
使用起来比其简单,这里就不再多说了。
CrazyGentleman 2003-10-21
  • 打赏
  • 举报
回复
(六)显示字符
有了以上各种子程序,显示字符的程序就好写了。要想显示字符,就必须
先有这个字符的字模. 我们以"A" 字的8×8字模为例, 说明一下字符的字模建
立方法。

□□□□■■■□
□□□■□□□■
□□□■□□□■ 如左图所示,可行出"A" 的字模为如下八
□□□■□□□■ 个字节
□□□■□□□■ 00H,00H,00H,7EH,11H,11H,11H,7EH
□□□■■■■■
□□□■□□□■
□□□■□□□■
□□□□□□□□

以上的八个字节均是以每列最下面一位作为MSB,最上面一位作为LSB,这
正是HD61202 建立字模所要求的。其它字符字模的建立同样是如此。
HD61202 中RAM 共有64行,分为8页,每页8行,这样每页就可以写一行字
符,总共可显示8 行字符。
下面的程序是用来显示0-9,A-Z,a-z,并且每0.5S显示一个字符。其中TDA1
为"0"的起始地址,而TDA2为"z"后面一个字节的地址。
ACALL CLER
ACALL DISP
MOV DPTR,#TDA2
MOV R5,DPL
MOV R6,DPH ;以R5,R6两寄存器存储地址TDA@
MOV R4,#08H ;以R4存储页数
MOV DPTR,#TDA1
MOV 20H,#0B8H ;20H存储地址设置代码
MA1: MOV 7FH,#00H ;7FH存储列地址
MOV A,20H
ACALL CWE1
ACALL CWE2
ACALL CWE3
MOV R2,#64 ;设置页地址
MA2: MOV A,#00H
MOPVC A,@A+DPTR
ACALL DWE1
MOV B,#01H
ACALL DELY ;延时62.5mS
ACALL FNL
DJNZ R2,MA2 ;DPTR增一,如果DPTR=#TDA2,则令
;DPTR=#TDA1
MOV R2,#64 ;如果数字字母都显示完毕,则从头
;显示数字
MOV 7FH,#00H ;芯片(1)中64列显示完毕,则显示
;芯片中对应屏段
MA3: MOV A,#00H
MOPVC A,@A+DPTR
ACALL DWE2
ACALL DELY
ACALL FNL
DJNZ R2,MA3
MOV R2,#64
MOV 7FH,#00H
MA4: MOV A,#00H
MOPVC A,@A+DPTR
ACALL DWE3
ACALL DELY
ACALL FNL
DJNZ R2,MA4
INC 20H ;转下一页
DJNZ R4,MA1
......
TDA1: DB 00H,00H,00H,3EH,51H,49H,45H,3EH;"0"
DB 00H,00H,00H,00H,42H,7FH,40H,00H;"1"
DB 00H,00H,00H,42H,61H,51H,49H,46H;"2"
DB 00H,00H,00H,21H,41H,45H,4BH,31H;"3"
......
DB 00H,00H,00H,44H,64H,54H,4CH,44H;"z"
TDA2:......
以上程序对每列显示延时62.5MS,则一个字符8 列共显示延时0.5S,所以
每0.5S显示一个字符,延时子程序如下:
DELY: PUSH PSW
SETB RS0
SETB RS1
MOV R5,B ;B为外输入参数
TM0: MOV R6,#7DH ;#7DH=125D
TM1: MOB R7,#0FAH
TM2: DJNZ R7,TM2
DJNZ R6,TM1
DJNZ R5,TM0
POP PSW
RET
这儿假设了8031时钟频率为12MHz,则执行一条DJNZ指令需2μS 显示一个
字符共 2μS×125×250×8=500000μS=0.5S。
由于数字和字母总共有26×2+10=62个,而屏却可以不止显示62个字符,所
以字母显示完毕,即DPTR已指向#TDA2时,返回再从"0"开始显示,即让DPTR再
次指向TDA1,RNL子程序实现了此功能。
FNL: PUSH ACC
INC DPTR ;DPTR增一
MOV A,DPL ;取出当前DPTR低8位
XRL A,R5 ;与(R5)即TDA2低8位相比较
JNZ ADP ;若不等则返回
MOV A,DPH
XRL A,R6 ;相等则比较高8位
JNZ ADP ;不等则返回
MOV DPTR,#TDA1 ;高8位也相等则令(DPTR)=#TDA1
ADP: POP ACC
RET
HEROP 2003-10-21
  • 打赏
  • 举报
回复
CrazyGentleman(疯狂绅士) 老兄写的真够详细的。佩服!!!
intocsdn 2003-10-21
  • 打赏
  • 举报
回复
楼上说的很详细了
CrazyGentleman 2003-10-21
  • 打赏
  • 举报
回复
(三)写数据子程序
以下程序是写数据子程序,其中(7FH)中是事先存放的数据列地址, 其页
地址由外部命令设置。每次写完数后,该程序使(7FH)中的内容, 即列地址自
动增一,以便往下一单元写数,由于设置列地址指令的DB6 必须是"1", 所以
在发命令时必须将列地址加上#40H,才能作为指令代码。
DWE1:PUSH ACC ; 向HD61202(1)写数据子程序
PUSH DPL
PUSH DPH
PUSH ACC ;累加器ACC中存储待发数据(入栈)
MOV A,7FH ;列地址送入(A)
ADD A,#40H ;形成列地址设置指令代码
ACALL CWE1 ;发出列地址设置命令
ACALL STE1 ;查询状态
MOV DPTR,#1FFFH ;1FFFH是向HD61202(1)写数据地址
POP ACC ;取出数据(出栈)
MOVX @DPTR,A ;发出数据
ACALL STE1 ;查询状态
INC 7FH ;列地址增1
POP DPH
POP DPL
POP ACC
RET
DWE2:PUSH ACC
PUSH DPL
PUSH DPH
PUSH ACC
MOV A,7FH
ADD A,#40H
ACALL CWE2
ACALL STE2
MOV DPTR,#5FFFH
POP ACC
MOVX @DPTR,A
ACALL STE2
INC 7FH
POP DPH
POP DPL
POP ACC
RET
DWE3:PUSH ACC
PUSH DPL
PUSH DPH
PUSH ACC
MOV A,7FH
ADD A,#40H
ACALL CWE3
ACALL STE3
MOV DPTR,#9FFFH
POP ACC
MOVX @DPTR,A
ACALL STE3
INC 7FH
POP DPH
POP DPL
POP ACC
RET

(四)开显示,关闭显示及清屏子程序
无论是开显示,关闭显示还是清屏都必须对三片HD61202都发出指令, 因
此有必要建立一个子程序,以便随时能调用。
DISP: PUSH ACC ;开显示子程序
PUSH DPL
PUDH DPH
DIS1: MOD A,#3FH ;00111111B,开显示代码
ACALL CWE1 ;发出开显示命令
MOV DPTR,#3EFFH
MOVX A,@DPTR ;读取状态
JB ACC.5,DIS1 ;看是否确实打开
DIS2: MOV A,#3FH
ACALL CWE2
MOV DPTR,#7EFFH
MOVX A,@DPTR
JB ACC.5,DIS2
DIS3: MOD A,#3FH
ACALL CWE3
MOV DPTR,#BEFFH
MOVX A,@DPTR
JB ACC.5,DIS3
POP DPH
POP DPL
POP ACC
RET
DIOF: PUSH ACC ;关显示子程序
PUSH DPL
PUDH DPH
OFF1: MOD A,#3EH ;00111111B,关显示代码
ACALL CWE1 ;发出关显示命令
MOV DPTR,#3EFFH
MOVX A,@DPTR
JB ACC.5,OFF1
OFF2: MOV A,#3EH
ACALL CWE2
MOV DPTR,#7EFFH
MOVX A,@DPTR
JB ACC.5,OFF2
OFF3: MOD A,#3FH
ACALL CWE3
MOV DPTR,#BEFFH
MOVX A,@DPTR
JB ACC.5,OFF3
POP DPH
POP DPL
POP ACC
RET
所谓清屏,其实就是将显示RAM中所有单元数据位都置为0,使在开显示状
态下无任何显示。
CLER: PUSH ACC ;清屏子程序
MOV 20H,#0B8H ;#0B8H,为页地址设置中,首页设
MOV R3,#08H ;指令代码,共八页
CLR1: MOV A,20H
ACALL CWE1 ;向三片HD61202发出页地址设置指令
ACALL CWE2
ACALL CWE3
MOV R2,#64 ;R2:RAM总列数
MOV 7FH,#00H ;7FH:列地址
CLR2: MOV A,#00H ;A:数据,即向RAM 中写00H
PUSH 7FH
PUSH 7FH
ACALL DWE1
POP 7FH
ACALL DWE2
POP 7FH ;向三片HD61202的同一页同一列写
ACALL DWE3 ;00H
DJNZ R2,CLR2
INC 20H
DJNZ R3,CLR1
POP ACC
RET

(五)初始化
在每个程序前, 一般都要进行初始化, 其工作无非是将显示起始行置为
"0",页号、列地址置为"0",以及进行清屏等,这些都比较单,这里就不多说
了。

CrazyGentleman 2003-10-21
  • 打赏
  • 举报
回复
电路设计完毕,就可以给定访问各个HD61202 时的地址。
MGLS-19264有三片HD61202,故每种地址都有三个。
(A)写数据 (1)1FFFH
(2)5FFFH
(3)9FFFH
(B)写命令 (1)1EFFH
(2)5EFFH
(3)9EFFH
(C)读数据 (1)3FFFH
(2)7FFFH
(3)BFFFH
(D)读状态 (1)3EFFH
(2)7EFFH
(3)BEFFH
MGLS-12864只有两片HD61202,它们的选通地址如上面的(1),(2)。
MGLS-12864的使用方法与MGLS-19264的使用方法是完全一样的。所以下面
只以MGLS-19264显示字符和汉字的程序为例来说明其应用。

(一)读取状态
由于MGLS-19264有三片HD61202,且每次操作前都要各自查询状态, 故对
三个芯片的读状态子程序要分别写出。
STE1: PUSH ACC ;对HD61202(1)读状态子程序
PUSH DPL
PUSH DPH
MOV DPTR,#3EFFH ;3EFFH是芯片(1)读状态地址
TAE1: MOVX A,@DPTR ;读出状态
JB ACC.7,TAE1 ;判断状态
POP DPH
POP DPL
POP ACC
RET
HD61202(2),(3)读状态子程序如下:
STE2: ......
MOV DPTR,#7EFFH
TAE2: MOVX A,@DPTR
JB ACC.7,TAE2
......
RET
STE3: ......
MOV DPTR,#BEFFH
TAE3: MOVX A,@DPTR
JB ACC.7,TAE3
......
RET

(二)发指令子程序
指令代码已经存储于累加器A 中,则发指令子程序如下:
CWE1: PUSH ACC ;向HD61202(1)发命令子程序
PUSH DPL
PUDH DPH
ACALL STE1 ;先查询状态看是否"忙"
MOV DPTR,#1EFFH;1EFFH为向(1)写命令地址
MOVX @DPTR,A ;发出命令
ACALL STE1 ;查询状态
POP DPH
POP DPL
POP ACC
RET
CWE2: PUSH ACC ;向HD61202(2)发命令子程序
PUSH DPL
PUDH DPH
ACALL STE2 ;先查询状态看是否"忙"
MOV DPTR,#1EFFH;5EFFH为向(2)写命令地址
MOVX @DPTR,A ;发出命令
ACALL STE2 ;查询状态
POP DPH
POP DPL
POP ACC
RET
CWE3: PUSH ACC
PUSH DPL
PUDH DPH
ACALL STE3
MOV DPTR,#9EFFH
MOVX @DPTR,A
ACALL STE3
POP DPH
POP DPL
POP ACC
RET
CrazyGentleman 2003-10-21
  • 打赏
  • 举报
回复
可以找蓬远要!
应该提供的!
用8279??没有用过!
HD61202液晶显示驱动器的应用


HD61202液晶显示驱动器是一种点阵图形式液晶显示驱动器,它可直接与8
位微处理器相联, 它与 HD61203 配合对液晶屏进行行、 列驱动。 在此将对
HD61202作一简要的介绍,并且讲一讲内藏HD61202的液晶模块MGLS- 12864 和
MGLS-19264的应用方法。

    一、关于HD61202的一般介绍
HD61202 是一种点阵图形式液晶显示系统的列驱动器, 它与行驱动器
HD61203配合使用,共同驱动LCD。

(一) HD61202 的特点
⑴HD61202 内部有64×64=4096bits 显示RAM,RAM中每一个数据对应LCD屏上
一个点的亮、灭状态。"1" 表示亮,"0"表示灭。
⑵HD61202 是列驱动器,具有64个列驱动口。
⑶HD61202 读、写操作时序与68系列微处理器相符,因此它可直接与68系列微
处理器接口相联。
⑷HD61202 的占空比为1/32-1/64。

(二) HD61202的引脚功能
HD61202的引脚按照与之相联的器件的不同,可分为四类:
⑴与MPU 相联的引脚
·CS1,CS2,CS3:芯片片选端,CS1 和CS2 低电平选通,CS3高电平选通。
·E:读写使能信号,在E 下降沿,数据被锁存(写)入 HD61202,在E 高电平期
间,数据被读出。
·R/W,读写选择信号,R/W=1为读选通,R/W=0为写选通。
·D/I,数据、指令选择,D/I=1,数据操作,D/I=0,写指令或读状态。
·DB0-DB7,I/O口,数据总线。
⑵与HD61203相联的管脚
·M,使LCD驱动信号波形转变交流的转换信号。
·FRM,帧同步信号。
·CL,锁存行显示数据的同步信号。该信号上升沿时锁存数据,同时改变显示
输出地址。
·Φ1,Φ2,内部操作时钟信号。
以上引脚均作为输入端,各信号均由HD61203提供,只要给HD61203接上合适
的电源, 各信号就可以自动产生。
⑶与液晶屏相连的引脚,即Y1-Y64 64个列驱动口。
⑷其它引脚
·VCC,GND,内部逻辑电源。
·VEE1,VEE2,液晶显示驱动电路的电源,常令VEE1=VEE2。
·V1L,V1R,V2L,V2R,V3L,V3R,V4L,V4R,液晶显示驱动电压,其电压值均在VCL
和VEE之间,常令V1L=V1R,V2L=V2R,V3L=V3R,V4L=V4R。
·ADC,决定Y1-Y64与液晶屏的连接状况::
ADC=1时,Y1=$0,。,Y64=$63;; ADC=0时,Y1=$63,。,Y64=$0。
该引脚直接接VCC或GND即可。
·RST,复位信号。复位信号有效时,关闭液晶显示,使显示起始行为0,RST
可跟MPU 相连,由MPU 控制。也可直接接VCC ,使之不起作用。

(三)HD61202 的时序
HD61202 具有能与68系列微处理器直接接口的时序。各种信号波形对照如
下。
E ┏━━━━━━━━━━━━━━━━┓
┃ ┃
R/W ┃ ┃
┃ ┃
CS1-CS3 ┃ ┃
DI ┃ ( 图 一 ) ┃
DB0-DB7 ┃ ┃
(写) ┃ ┃
DB0-DB7 ┃ ┃
(读) ┗━━━━━━━━━━━━━━━━┛

(四)HD61202 的指令系统
HD61202 的指令系统比较简单,总共只有七种。现分别介绍如下。

⑴显示开/ 关指令

────┬──────────────────────
R/W D/I│DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
────┼──────────────────────
0 0 │ 0 0 1 1 1 1 1 1/0
────┴──────────────────────
当DB0=1时, LCD显示RAM 中的内容; DB0=0时, 关闭显示。
⑵显示起始行设置指令
────┬──────────────────────
R/W D/I│DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
────┼──────────────────────
0 0 │ 1 1 显示起始行(0--63)
────┴──────────────────────
该指令设置了显示RAM中显示在液晶屏最上面一行的行号, 通过不断增一
地改变显示起始行,可以使LCD 实现显示滚屏的效果。
⑶页设置指令
────┬──────────────────────
R/W D/I│DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
────┼──────────────────────
0 0 │ 1 0 1 1 1 页号(0--7)
────┴──────────────────────
显示RAM 共64行,分8页,每页8行。
⑷列地址设置指令
────┬──────────────────────
R/W D/I│DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
────┼──────────────────────
0 0 │ 0 1 显示列地址(0--63)
────┴──────────────────────
设置了页地址和列地址,就确定了一个一字节的单元,这样MPU就可以用读、
写指令读出该单元中的数或向该单元写进一个字节。
⑸读状态指令
────┬──────────────────────
R/W D/I│DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
────┼──────────────────────
1 0 │BUSY 0 ON/OFF RESET 0 0 0 0
────┴──────────────────────
该指令用来查询HD61202 的状态,各参量含义如下:
BUSY: 1:内部在工作,0:正常状态
ON/OFF:1:显示关闭 0:显示打开
RESET: 1:复位状态 0:正常状态
在BUSY和RESET 状态时,除读状态指令外,其它指令均不对HD61202 产生
作用。
故要经常查询状态,以确定是否对HD61202 进行操作。
⑹写数据指令
────┬──────────────────────
R/W D/I│DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
────┼──────────────────────
0 1 │ 写 数 据
────┴──────────────────────
⑺读数据指令
────┬──────────────────────
R/W D/I│DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
────┼──────────────────────
1 1 │ 读 显 示 数 据
────┴──────────────────────
读、写数据指令每执行完一次读、写操作,列地址就自动增一。必须注意
的是,进行读操作之前,必须有一次空读操作,紧接着再读才会读出所要
读的单元中的数据。
基于单片机的超速报警器电路设计 1前言 1.1 课题产生原因 超速行驶是指在一定道路上行驶的汽车,超过了该段道路所规定的行驶速度。《道路 交通安全法实施条例》第四十五条规定:机动车在道路上行驶不得超过限速标志、标线标 明的速度。在没有限速标志、标线的道路上,机动车不得超过下列最高行驶速度:没有 道路中心线的道路,城市道路为30 km/h,公路为40 km/h,同方向只有一条机动车道的道路,城市道路为50 km/h,公路为70 km/h。限速是为了行驶安全,而汽车在设计时都定有最高时速,以至于两者出现较大的 差距,令驾驶员稍不留意就要超速[1]。 那么公路车速到底对交通事故的影响是什么呢(1)驾驶员在道路上行驶时,必须时 刻获得周围环境的信息进行判断,决定自己的操作行为,这些过程都需要一定的时间。 但是,随着车速的提高,驾驶员观察和判断的时间必然减少、反应也会时间减少,导致 做出错误决定的可能性就会相应增加,从而使交通事故发生的可能性变大。而且车速的 提高会减少驾驶员采取避让措施的时间和距离,汽车发生碰撞时的速度也比初始速度高 。(2)驾驶员对事物判断的准确性主要取决于两个方面:一是事物对驾驶员的刺激强度, 强度越大,判断的准确性越高;二是单位时间内对驾驶员刺激的信息量的多少,信息量 越少,判断的准确性越高。超速行车时,刺激物一晃而过,刺激强度很小,而单位时间 内对驾驶员刺激的信息量却增大,因而严重地影响了驾驶员对车外事物判断的准确性, 极易导致事故的发生。(3)我们都有这样的感觉,如果乘坐汽车,会感觉到车外的自行 车速度很慢;如果乘飞机,会感觉到地面上行驶着的汽车像处于静止状态一样。这就是 所谓运动物体对速度的迟钝感。它包含两个方面,一方面常常低估自己本身的速度,另 一方面常常低估比自己速度慢的其他物体的速度。驾驶员超速行车时,必然会低估其他 交通参与者的速度,当遇到异常情况时,就会失去采取有效措施的时机而导致事故的发 生。 可见,随着车速的提高,事故率和事故的严重性都会提高。尽管汽车都安装了速度表 盘,司机可以通过速度表知道当前汽车的速度,但是汽车的驾驶有时候是一个长时间、 长路途的工作,很长时间的连续驾驶可能会使司机因疲倦而麻痹超速问题。为了在超速 时提醒和警示司机,进一步保证行车安全,避免因超速问题带来的交通安全事故的发生 ,还需要给汽车安装上汽车速度显示及超速报警器。因此本设计就是使驾驶员起到重视 速度问题,并且及时监督提醒作用驾驶员不要超速。 由此,我觉得开发一个超速报警系统是很有必要的,对于驾驶员及其家人的生命财产 安全有重大意义,可以降低交通事故发生率。课题:汽车超速报警系统的设计,正是在 此背景下提出的,故而有很大的现实意义。 目前市面上最流行的报警方式:车载GPS系统,能够提供车辆的定位信息,车速信息 等,但价格昂贵。鉴于此原因,本设计将汽车超速报警器与单片机的知识联系在一起, 使得器件操作更简单,成本更低廉,更能被广大消费者所接受。 1.2 课题的发展现状 现在国内外的汽车超速报警器发展很快,新技术层出不穷。据了解现在的中国的智能 测速仪技术已经有飞跃式的发展。即单纯利用传感器和单片机做出的单功能汽车超速报 警器逐渐发展到完善多方面需求的多功能汽车超速报警器。例如广东的:SP01A型报警器 。即可以实现多种实用功能高亮LED显示、具有两级速度报警、一级警灯提示、二级喇叭 警告。(一级跟二级速度可任意设计)可按客户要求做成断油(断电功能)。限速功能 型号可以强制车辆减速或者设定为车辆熄火;遥控解锁功能,只有授权人员才能解除报 警。SP02A型报警器,可实现功能:大屏幕液晶数据显示,车辆超出设定的一级速度警灯 提示,超出二级速度时喇叭警告同时还具备记录方便管理查寻。SP03A型报警器,可实现 功能:具备刷卡及四个权限设置,到期保养设置;大屏幕液晶数据显示,车辆超出设定 的一级速度警灯提示,超出二级速度时喇叭警告.同时还具备记录跟防剪功能方便管理查 寻。 随着科技的发展和市场的需求,超速报警器又迈向了一个新的台阶,从用传感器测量 车速,逐渐已经过度到利用GPS技术对车速进行监测。GPS车载监控终端以前在国内主要 应用于铁路,空运及海运领域。随着GPS全球定位体统技术日臻成熟,开始转向公路运输 领域,在南方各大城市发展迅速,GPS车载监控终端开始出现,市场前景看好。GPS车载监 控终端在技术上实现了质的飞跃,可实现如下基本功能:GPS实现卫星定位后,以GPRS将 监控目标的经纬度、速度、方位、海拔高度数据经由终端单片机进行解析处理后由GPRS 模块发回中心服务器,在由中心进行数据的处理,便可精确的查找出目前车辆所在的位 置;紧急求助功能:按数字键,即可向监控中心发送事先编写好的状态(路阻、故障、 事故求助、拨打电话

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧