实验二心电图机液晶显示系统实验图形部分.docx

上传人:b****5 文档编号:5740711 上传时间:2022-12-31 格式:DOCX 页数:38 大小:160.47KB
下载 相关 举报
实验二心电图机液晶显示系统实验图形部分.docx_第1页
第1页 / 共38页
实验二心电图机液晶显示系统实验图形部分.docx_第2页
第2页 / 共38页
实验二心电图机液晶显示系统实验图形部分.docx_第3页
第3页 / 共38页
实验二心电图机液晶显示系统实验图形部分.docx_第4页
第4页 / 共38页
实验二心电图机液晶显示系统实验图形部分.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

实验二心电图机液晶显示系统实验图形部分.docx

《实验二心电图机液晶显示系统实验图形部分.docx》由会员分享,可在线阅读,更多相关《实验二心电图机液晶显示系统实验图形部分.docx(38页珍藏版)》请在冰豆网上搜索。

实验二心电图机液晶显示系统实验图形部分.docx

实验二心电图机液晶显示系统实验图形部分

实验二心电图机液晶显示系统实验(图形部分)

李元斌

1、实验目的

●了解液晶显示的原理

●掌握液晶面板上进行波形显示的原理和方法

●掌握单片机编程技巧

2、实验要求

●了解80C51单片机及OCMJ4X8C液晶模组的硬件配置及连接方法

●掌握80C51单片机的编程语言

●掌握波形输出程序的算法和结构

●编写程序并调试程序

3、实验设备

●单片机仿真器

●金鹏OCMJ4X8C液晶模组

●稳压电源

4、实验内容

4.1实验说明

心电图是反映心脏兴奋的电活动过程,它对心脏基本功能及其病理研究方面,具有重要的参考价值。

心电图可以分析与鉴别各种心律失常,也可以反映心肌受损的程度、病理发展过程和心房、心室的功能结构情况,在指导心脏手术进行及指示必要的药物处理上有参考价值。

心电图的检查还必须结合多种指标和临床资料,进行全面综合分析,才能对心脏的功能结构做出正确的判断。

由此可以看出心电图的显示在临床医疗方面的重要性。

液晶显示在心电图机中的应用是将数字技术、计算机技术结合起来,利用单片机和液晶显示模块进行波形显示。

系统的主要功能是提供中文界面,对存储的心电图数据进行波形输出。

系统使用液晶显示模块,并利用51单片机作为系统控制核心,负责控制、检测、输入/输出显示等一系列的程序动作,使整个系统操作简便并且充满人性化。

4.2OCMJ4X8C液晶模块简介

概述

C系列中文模块可以显示字母、数字符号、中文字形及图形,具有绘图及文字画面混合显示功能。

提供三种控制接口,分别是8位微处理器接口,4位微处理器接口及串行接口。

所有的功能,包含显示RAM,字符产生器,都包含在一个芯片里面,只要一个最小的微处理器系统,就可以方便的操作模块。

内置2M-位中文字型ROM(CGROM),总共提供8192个中文字型(16*16点阵),16K-位半宽字型ROM(HCGROM)总共提供126个符号字型(16*8点阵),64*16-位字型产生RAM(CGRAM),另外绘图显示画面提供一个64*256点的绘图区域(GDRAM),可以和文字画面混合显示。

提供多功能指令:

画面清除、光标归位、显示打开/关闭、光标显示/隐藏、显示字符闪烁、光标移位、显示移位、垂直画面卷动、反白显示、待命模式。

主要参数:

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

1:

读0:

15

PSB

1:

并行模式0:

串行模式

6

E

使能端(高电平有效)

16

NC

空脚

7

DB0

数据0

17

/RST

重启复位(低电平有效)

8

DB1

数据1

18

NC

空脚

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

NOP

CLRE

RET

4.3.2写指令子程序

SEND_I:

LCALLCHK_BUSY

CLRRS

CLRRW

MOVP1,A

SETBE

NOP

NOP

CLRE

RET

4.3.3读数据子程序

READ_D:

LCALLCHK_BUSY

SETBRS

SETBRW

SETBE

NOP

MOVA,P1

CLRE

MOVSTORE,A

RET

4.3.4测忙碌子程序

CHK_BUSY:

MOVP1,#0FFH

CLRRS

SETBRW

SETBE

JBP1.7,$

CLRE

RET

4.3.5写坐标子程序

WR_ZB:

MOVA,#34H

LCALLSEND_I

MOVA,LCD_Y

LCALLSEND_I

MOVA,LCD_X

LCALLSEND_I

MOVA,#30H

LCALLSEND_I

RET

注:

程序中出现的NOP指令不能省略,否则数据传送将发生错误,原因请参见时序图。

4.3.6初始化

在程序启动时,应先对液晶进行初始化,代码如下:

INITIAL:

MOVA,#34H;34H--扩充指令操作

LCALLSEND_I

MOVA,#30H;30H--基本指令操作

LCALLSEND_I

MOVA,#01H;清除显示

LCALLSEND_I

MOVA,#06H;指定在资料写入或读取时,光标的移动方向

LCALLSEND_I

MOVA,#0CH;开显示,关光标,不闪烁

LCALLSEND_I

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

LCALLSEND_D

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:

MOVB,A

MOVA,#31

CLRC

SUBBA,B

ORLA,#80H

MOVLCD_Y,A

MOVA,LCD_X

ORLA,#08H

MOVLCD_X,A

NEX:

LCALLWR_ZB

LCALLREAD_D;读出的为高8位地址

LCALLREAD_D

MOVR6,STORE;高8位

LCALLREAD_D

MOVR7,STORE;低8位

LCALLWR_ZB

MOVA,DH

ORLA,R6

LCALLSEND_D

MOVA,DL

ORLA,R7

LCALLSEND_D

LCALLRCIR;对字右环移

MOVA,LCD_X

ANLA,#0F7H

MOVLCD_X,A;恢复LCD_X在上半区

DJNZR0,C1

INCLCD_X

DJNZR1,C2

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

MOVA,#36H

LCALLSEND_I

MOVA,#30H

LCALLSEND_I

LJMP$

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$对字右环移子程序

RCIR:

MOVA,DH

CLRC

RRCA

MOVDH,A

MOVA,DL

RRCA

JBPSW.7,RNEXT

MOVDL,A

RET

RNEXT:

ORLA,#80H

MOVDL,A

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:

NOP

NOP

MOVSP,#5FH

SETBRST

NOP

SETBPSB

;********************初始化**********************

LGS0:

MOVA,#34H;34H--扩充指令操作

LCALLSEND_I

MOVA,#30H;30H--基本指令操作

LCALLSEND_I

MOVA,#01H;清除显示

LCALLSEND_I

MOVA,#06H;指定在资料写入或读取时,光标的移动方向

LCALLSEND_I

MOVA,#0CH;开显示,关光标,不闪烁

LCALLSEND_I

;***********************************************

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

LCALLSEND_D

DJNZCOUNT1,LAT_DISP31

INCLCD_Y

CPLF0

DJNZCOUNT2,LAT_DISP2

MOVLCD_X,#88H

DJNZCOUNT3,LAT_DISP1

MOVA,#36H

LCALLSEND_I

MOVA,#30H

LCALLSEND_I

RET

;***********************************************

LGS2:

MOVR1,#8

MOVLCD_X,#80H

MOVDPTR,#TAB

C2:

MOVR0,#16

MOVDH,#80H

MOVDL,#00H

C1:

CLRA

MOVCA,@A+DPTR

INCDPTR

MOVB,#8

DIVAB

MOVB,A

MOVA,#31

CLRC

SUBBA,B

ORLA,#80H

MOVLCD_Y,A

LCALLWR_ZB

LCALLREAD_D;address

LCALLREAD_D

MOVR6,STORE;most8

LCALLREAD_D

MOVR7,STORE;least8

LCALLWR_ZB

MOVA,DH

ORLA,R6

LCALLSEND_D

MOVA,DL

ORLA,R7

LCALLSEND_D

LCALLRCIR;对字右环移

DJNZR0,C1

INCLCD_X

DJNZR1,C2

;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

MOVA,#36H

LCALLSEND_I

MOVA,#30H

LCALLSEND_I

LJMP$

;***********************************************

WR_ZB:

MOVA,#34H

LCALLSEND_I

MOVA,LCD_Y

LCALLSEND_I

MOVA,LCD_X

LCALLSEND_I

MOVA,#30H

LCALLSEND_I

RET

;***********************************************

SEND_D:

LCALLCHK_BUSY;写数据子程序

SETBRS

CLRRW

MOVP1,A

SETBE

NOP

NOP

CLRE

RET

SEND_I:

LCALLCHK_BUSY;写指令子程序

CLRRS

CLRRW

MOVP1,A

SETBE

NOP

NOP

CLRE

RET

READ_D:

LCALLCHK_BUSY;读数据子程序

SETBRS

SETBRW

SETBE

NOP

MOVA,P1

CLRE

MOVSTORE,A

RET

CHK_BUSY:

MOVP1,#0FFH;测忙碌子程序

CLRRS

SETBRW

SETBE

JBP1.7,$

CLRE

RET

RCIR:

MOVA,DH

CLRC

RRCA

MOVDH,A

MOVA,DL

RRCA

JBPSW.7,RNEXT

MOVDL,A

RET

RNEXT:

ORLA,#80H

MOVDL,A

RET

;***********************************************

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

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

DB72,72,72,72,72,72,72,72,72,72,72,72,72,72,72,72

END

;******************OCM4x8C全屏显示波形******************

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:

NOP

NOP

MOVSP,#5FH

SETBRST

NOP

SETBPSB

;********************初始化**********************

LGS0:

MOVA,#34H;34H--扩充指令操作

LCALLSEND_I

MOVA,#30H;30H--基本指令操作

LCALLSEND_I

MOVA,#01H;清除显示

LCALLSEND_I

MOVA,#06H;指定在资料写入或读取时,光标的移动方向

LCALLSEND_I

MOVA,#0CH;开显示,关光标,不闪烁

LCALLSEND_I

;***********************************************

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

LCALLSEND_D

DJNZCOUNT1,LAT_DISP31

INCLCD_Y

CPLF0

DJNZCOUNT2,LAT_DISP2

MOVLCD_X,#88H

DJNZCOUNT3,LAT_DISP1

MOVA,#36H

LCALLSEND_I

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1