实验二心电图机液晶显示系统实验图形部分Word文档下载推荐.docx
《实验二心电图机液晶显示系统实验图形部分Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验二心电图机液晶显示系统实验图形部分Word文档下载推荐.docx(45页珍藏版)》请在冰点文库上搜索。
1、工作电压(VDD):
4.5~5.5V
2、逻辑电平:
2.7~5.5V
3、LCD驱动电压(Vo):
0~7V
4、工作温度(Ta):
0~55℃(常温)/-20~75℃(宽温)
保存温度(Tstg):
-10~65℃(常温)/-30~85℃(宽温)
外形尺寸
注意:
放置液晶时焊盘一侧应放在下侧,此时左上角坐标为(0,0)
接口信号:
OCMJ4X8C液晶显示模块的接口信号包括8位三态数据线DB0~DB7、命令数据线RS、片选信号线E、串并行模式选择线PSB以及读写控制线RW等。
详细的接口信号端说明如下表所列。
编号
符号
引脚说明
1
VSS
GND(0V)
11
DB4
数据4
2
VDD
逻辑电平(+5V)
12
DB5
数据5
3
V0
LCD供电电压(悬空)
13
DB6
数据6
4
RS
1:
数据0:
命令
14
DB7
数据7
5
R/W
读0:
写
15
PSB
并行模式0:
串行模式
6
E
使能端(高电平有效)
16
NC
空脚
7
DB0
数据0
17
/RST
重启复位(低电平有效)
8
DB1
数据1
18
9
DB2
数据2
19
LEDA
背光源正极(+5V)
10
DB3
数据3
20
LEDK
背光源负极(0V)
备注:
上表所示接口功能均为并行模式下功能,串口模式下部分接口功能不同或无效
硬件连接图
4.3程序设计(汇编语言编程)
4.3.1发送数据子程序
SEND_D:
LCALLCHK_BUSY
SETBRS
CLRRW
MOVP1,A
SETBE
NOP
CLRE
RET
4.3.2写指令子程序
SEND_I:
CLRRS
CLRE
4.3.3读数据子程序
READ_D:
SETBRW
MOVA,P1
MOVSTORE,A
4.3.4测忙碌子程序
CHK_BUSY:
MOVP1,#0FFH
CLRRS
JBP1.7,$
4.3.5写坐标子程序
WR_ZB:
MOVA,#34H
LCALLSEND_I
MOVA,LCD_Y
MOVA,LCD_X
MOVA,#30H
注:
程序中出现的NOP指令不能省略,否则数据传送将发生错误,原因请参见时序图。
4.3.6初始化
在程序启动时,应先对液晶进行初始化,代码如下:
INITIAL:
MOVA,#34H;
34H--扩充指令操作
MOVA,#30H;
30H--基本指令操作
MOVA,#01H;
清除显示
MOVA,#06H;
指定在资料写入或读取时,光标的移动方向
MOVA,#0CH;
开显示,关光标,不闪烁
RET
4.3.7绘图
绘图显示RAM提供64*32个字节的记忆空间,最多可以控制256*64点的二维绘图缓冲空间,在更改绘图RAM时,由扩充指令设定GDRAM地址,先设垂直地址再设水平地址,再写入两个8位的资料到绘图RAM,而地址计数器会自动加1,整个写入绘图RAM的步骤如下:
1、先将垂直的字节坐标(Y)写入绘图RAM地址
2、再将水平的字节坐标(X)写入绘图RAM地址
(参见WR_ZB程序)
3、将D15~D8写入到RAM中
4、将D7~D0写入到RAM中
例如:
描记如图示的一组点的程序为:
MOVLCD_X,#80H
MOVLCD_Y,#80H
LCALLWR_ZB
MOVA,#0EBH
LCALLSEND_D
MOVA,#00H
4.3.8波形显示
由上面的例子可以看出,绘图时描点的顺序是从左至右,从波形的角度看,横坐标代表时间,则一次要写16个时刻的点,可是我们每次拿到一个数据只能确定它的纵坐标,很难同时得到占用同一横坐标的其他15个时刻的纵坐标并转化为2个字节的数组。
因此我们需要对同一坐标连续写16次,方法为:
计算得到第一个点的纵坐标,在这个纵坐标上写80H和00H(即将第一个点描记出来),将80H和00H(字)右环移,计算第二个点的纵坐标,如果与第一个不同,则在此纵坐标上写右环移后的字;
如果与第一个相同,则将右环移后的字与8000H取并,再写入这个纵坐标……这样,每次循环16次,再增加横坐标,循环16次,增加横坐标……
流程图如下:
参考程序如下:
LGS2:
MOVR1,#8
MOVLCD_X,#80H
MOVDPTR,#TAB
C2:
MOVR0,#16
MOVDH,#80H
MOVDL,#00H
C1:
CLRA
MOVCA,@A+DPTR
INCDPTR
MOVB,#4
DIVAB
CJNEA,#31,CNEXT
LJMPHIGHER;
上半区
CNEXT:
JCLOWER;
下半区
HIGHER:
MOVB,A
MOVA,#63
CLRC
SUBBA,B
ORLA,#80H
MOVLCD_Y,A
LJMPNEX
LOWER:
MOVA,#31
MOVA,LCD_X
ORLA,#08H
MOVLCD_X,A
NEX:
LCALLWR_ZB
LCALLREAD_D;
读出的为高8位地址
LCALLREAD_D
MOVR6,STORE;
高8位
MOVR7,STORE;
低8位
MOVA,DH
ORLA,R6
LCALLSEND_D
MOVA,DL
ORLA,R7
LCALLRCIR;
对字右环移
ANLA,#0F7H
MOVLCD_X,A;
恢复LCD_X在上半区
DJNZR0,C1
INCLCD_X
DJNZR1,C2
;
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
MOVA,#36H
LJMP$
;
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$对字右环移子程序
RCIR:
MOVA,DH
RRCA
MOVDH,A
MOVA,DL
JBPSW.7,RNEXT
MOVDL,A
RNEXT:
RET
4.3.9波形的移动显示
可以看出,上面的做法得到的波形并不能移动,只能静止的显示,由于数据有256个,而液晶横向只有128个点,因此一半的心电图信息就无法显示,因此,我们希望能够让波形滚动显示,以便看到心电的完整信息。
做法为:
当描记128个点后,就将写入数据的指针向TAB后移一位,重新写128个点,如此循环128次即可让波形滚动起来。
参考程序二:
******************OCM4x8C用上半区域显示波形(半屏)*********
将LGS2中的LCD_X改为88H即可在下半区域作图********
RSEQUP3.0
RWEQUP3.1
EEQUP3.2
PSBEQUP3.3
RSTEQUP3.4
LCD_XEQU30H
LCD_YEQU31H
COUNTEQU32H
COUNT1EQU33H
COUNT2EQU34H
COUNT3EQU35H
LCD_DATAEQU36H
LCD_DATA1EQU37H
LCD_DATA2EQU38H
STOREEQU39H
DHEQU40H
DLEQU41H
***********************************************
ORG0000H
LJMPMAIN
ORG0100H
MAIN:
MOVSP,#5FH
SETBRST
SETBPSB
********************初始化**********************
LGS0:
MOVA,#34H;
CLRRAM:
MOVLCD_DATA1,#00H;
GDRAM写0子程序
MOVLCD_DATA2,#00H
LCALLLAT_DISP
LJMPLGS2
LAT_DISP:
MOVCOUNT3,#02H;
显示点阵子程序
MOVLCD_X,#80H
LAT_DISP1:
MOVLCD_Y,#80H
CLRF0
MOVCOUNT2,#20H
LAT_DISP2:
MOVCOUNT1,#10H
LCALLWR_ZB
LAT_DISP3:
JBF0,LAT_DISP32
MOVLCD_DATA,LCD_DATA1
AJMPLAT_DISP31
LAT_DISP32:
MOVLCD_DATA,LCD_DATA2
LAT_DISP31:
MOVA,LCD_DATA
DJNZCOUNT1,LAT_DISP31
INCLCD_Y
CPLF0
DJNZCOUNT2,LAT_DISP2
MOVLCD_X,#88H
DJNZCOUNT3,LAT_DISP1
MOVB,#8
LCALLREAD_D;
address
MOVR6,STORE;
most8
MOVR7,STORE;
least8
LCALLRCIR;
LCALLCHK_BUSY;
写数据子程序
写指令子程序
读数据子程序
MOVP1,#0FFH;
测忙碌子程序
TAB:
DB72,72,72,72,71,71,70,70,69,69,68,67,67,66,66,66
DB66,66,67,68,69,70,71,71,72,72,72,72,72,72,72,72
DB72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72
DB66,54,46,38,26,15,12,11,12,16,23,44,66,97,122,145
DB156,163,168,176,188,202,210,205,198,188,172,160,146,136,125,113
DB104,94,85,77,72,70,68,66,64,63,62,61,60,59,58,58
DB57,56,55,55,54,53,53,52,52,51,51,50,50,49,49,48
DB48,47,47,46,46,45,45,44,44,43,43,42,42,41,41,40
DB40,39,39,38,38,37,37,36,36,35,35,34,34,33,33,32
DB32,31,30,29,28,27,26,25,24,23,22,20,19,18,17,16
DB15,14,13,13,12,12,12,12,12,13,13,14,14,15,16,17
DB18,20,21,22,23,25,26,27,29,30,31,33,34,36,38,39
DB41,43,45,47,48,50,51,53,54,55,56,58,59,60,61,62
DB64,65,66,67,68,69,70,70,71,71,72,72,72,72,72,72
END
******************OCM4x8C全屏显示波形******************