ImageVerifierCode 换一换
格式:DOCX , 页数:45 ,大小:159.75KB ,
资源ID:12857899      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-12857899.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验2 心电图机液晶显示系统实验图形部分.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

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

1、实验2 心电图机液晶显示系统实验图形部分实验二心电图机液晶显示系统实验(图形部分)1、 实验目的 了解液晶显示的原理 掌握液晶面板上进行波形显示的原理和方法 掌握单片机编程技巧2、 实验要求 了解80C51单片机及OCMJ4X8C液晶模组的硬件配置及连接方法 掌握80C51单片机的编程语言 掌握波形输出程序的算法和结构 编写程序并调试程序3、 实验设备 单片机仿真器 金鹏OCMJ4X8C液晶模组 稳压电源4、 实验内容4.1实验说明心电图是反映心脏兴奋的电活动过程,它对心脏基本功能及其病理研究方面,具有重要的参考价值。心电图可以分析与鉴别各种心律失常,也可以反映心肌受损的程度、病理发展过程和心

2、房、心室的功能结构情况,在指导心脏手术进行及指示必要的药物处理上有参考价值。心电图的检查还必须结合多种指标和临床资料,进行全面综合分析,才能对心脏的功能结构做出正确的判断。由此可以看出心电图的显示在临床医疗方面的重要性。液晶显示在心电图机中的应用是将数字技术、计算机技术结合起来,利用单片机和液晶显示模块进行波形显示。系统的主要功能是提供中文界面,对存储的心电图数据进行波形输出。系统使用液晶显示模块,并利用51单片机作为系统控制核心,负责控制、检测、输入/输出显示等一系列的程序动作,使整个系统操作简便并且充满人性化。4.2 OCMJ4X8C液晶模块简介概述C系列中文模块可以显示字母、数字符号、中

3、文字形及图形,具有绘图及文字画面混合显示功能。提供三种控制接口,分别是8位微处理器接口,4位微处理器接口及串行接口。所有的功能,包含显示RAM,字符产生器,都包含在一个芯片里面,只要一个最小的微处理器系统,就可以方便的操作模块。内置2M-位中文字型ROM(CGROM),总共提供8192个中文字型(16*16点阵),16K-位半宽字型ROM(HCGROM)总共提供126个符号字型(16*8点阵),64*16-位字型产生RAM(CGRAM),另外绘图显示画面提供一个64*256点的绘图区域(GDRAM),可以和文字画面混合显示。提供多功能指令:画面清除、光标归位、显示打开/关闭、光标显示/隐藏、显

4、示字符闪烁、光标移位、显示移位、垂直画面卷动、反白显示、待命模式。主要参数:1、 工作电压(VDD):4.55.5V2、 逻辑电平:2.75.5V3、 LCD驱动电压(Vo):07V4、 工作温度(Ta):055(常温)/-2075(宽温)保存温度(Tstg):-1065(常温)/-3085(宽温)外形尺寸注意:放置液晶时焊盘一侧应放在下侧,此时左上角坐标为(0,0)接口信号:OCMJ4X8C液晶显示模块的接口信号包括8位三态数据线DB0DB7、命令数据线RS、片选信号线E、串并行模式选择线PSB以及读写控制线RW等。详细的接口信号端说明如下表所列。编号符号引脚说明编号符号引脚说明1VSSGN

5、D(0V)11DB4数据42VDD逻辑电平(+5V)12DB5数据53V0LCD供电电压(悬空)13DB6数据64RS1:数据 0:命令14DB7数据75R/W1:读 0:写15PSB1:并行模式 0:串行模式6E使能端(高电平有效)16NC空脚7DB0数据017/RST重启复位(低电平有效)8DB1数据118NC空脚9DB2数据219LEDA背光源正极(+5V)10DB3数据320LEDK背光源负极(0V)备注:上表所示接口功能均为并行模式下功能,串口模式下部分接口功能不同或无效硬件连接图4.3 程序设计(汇编语言编程)4.3.1 发送数据子程序SEND_D: LCALL CHK_BUSY

6、SETB RS CLR RW MOV P1,A SETB E NOP NOP CLR E RET4.3.2 写指令子程序SEND_I: LCALL CHK_BUSY CLR RS CLR RW MOV P1,A SETB E NOP NOP CLR E RET4.3.3 读数据子程序READ_D: LCALL CHK_BUSY SETB RS SETB RW SETB E NOP MOV A,P1 CLR E MOV STORE,A RET4.3.4 测忙碌子程序CHK_BUSY: MOV P1,#0FFH CLR RS SETB RW SETB E JB P1.7,$ CLR E RET4.

7、3.5 写坐标子程序WR_ZB: MOV A,#34H LCALL SEND_I MOV A,LCD_Y LCALL SEND_I MOV A,LCD_X LCALL SEND_I MOV A,#30H LCALL SEND_I RET注:程序中出现的NOP指令不能省略,否则数据传送将发生错误,原因请参见时序图。4.3.6 初始化在程序启动时,应先对液晶进行初始化,代码如下:INITIAL:MOV A,#34H ;34H-扩充指令操作 LCALL SEND_I MOV A,#30H ;30H-基本指令操作 LCALL SEND_I MOV A,#01H ;清除显示 LCALL SEND_I M

8、OV A,#06H ;指定在资料写入或读取时,光标的移动方向 LCALL SEND_I MOV A,#0CH ;开显示,关光标,不闪烁 LCALL SEND_I RET4.3.7 绘图绘图显示RAM提供64*32个字节的记忆空间,最多可以控制256*64点的二维绘图缓冲空间,在更改绘图RAM时,由扩充指令设定GDRAM地址,先设垂直地址再设水平地址,再写入两个8位的资料到绘图RAM,而地址计数器会自动加1,整个写入绘图RAM的步骤如下:1、 先将垂直的字节坐标(Y)写入绘图RAM地址2、 再将水平的字节坐标(X)写入绘图RAM地址(参见WR_ZB程序)3、 将D15D8写入到RAM中4、 将D

9、7D0写入到RAM中例如:描记如图示的一组点的程序为:MOV LCD_X,#80HMOV LCD_Y,#80HLCALL WR_ZBMOV A,#0EBHLCALL SEND_DMOV A,#00HLCALL SEND_D4.3.8 波形显示由上面的例子可以看出,绘图时描点的顺序是从左至右,从波形的角度看,横坐标代表时间,则一次要写16个时刻的点,可是我们每次拿到一个数据只能确定它的纵坐标,很难同时得到占用同一横坐标的其他15个时刻的纵坐标并转化为2个字节的数组。因此我们需要对同一坐标连续写16次,方法为:计算得到第一个点的纵坐标,在这个纵坐标上写80H和00H(即将第一个点描记出来),将80

10、H和00H(字)右环移,计算第二个点的纵坐标,如果与第一个不同,则在此纵坐标上写右环移后的字;如果与第一个相同,则将右环移后的字与8000H取并,再写入这个纵坐标这样,每次循环16次,再增加横坐标,循环16次,增加横坐标流程图如下:参考程序如下:LGS2: MOV R1,#8 MOV LCD_X,#80H MOV DPTR,#TABC2: MOV R0,#16 MOV DH,#80H MOV DL,#00HC1: CLR A MOVC A,A+DPTR INC DPTR MOV B,#4 DIV AB CJNE A,#31,CNEXT LJMP HIGHER ;上半区CNEXT: JC LOW

11、ER ;下半区HIGHER: MOV B,A MOV A,#63 CLR C SUBB A,B ORL A,#80H MOV LCD_Y,A LJMP NEXLOWER: MOV B,A MOV A,#31 CLR C SUBB A,B ORL A,#80H MOV LCD_Y,A MOV A,LCD_X ORL A,#08H MOV LCD_X,ANEX: LCALL WR_ZB LCALL READ_D ;读出的为高8位地址 LCALL READ_D MOV R6,STORE ;高8位 LCALL READ_D MOV R7,STORE ;低8位 LCALL WR_ZB MOV A,DH

12、ORL A,R6 LCALL SEND_D MOV A,DL ORL A,R7 LCALL SEND_D LCALL RCIR ;对字右环移 MOV A,LCD_X ANL A,#0F7H MOV LCD_X,A ;恢复LCD_X在上半区 DJNZ R0,C1 INC LCD_X DJNZ R1,C2 ;$ MOV A,#36H LCALL SEND_I MOV A,#30H LCALL SEND_I LJMP $;$对字右环移子程序RCIR: MOV A,DH CLR C RRC A MOV DH,A MOV A,DL RRC A JB PSW.7,RNEXT MOV DL,A RETRNE

13、XT: ORL A,#80H MOV DL,A RET 4.3.9 波形的移动显示 可以看出,上面的做法得到的波形并不能移动,只能静止的显示,由于数据有256个,而液晶横向只有128个点,因此一半的心电图信息就无法显示,因此,我们希望能够让波形滚动显示,以便看到心电的完整信息。做法为:当描记128个点后,就将写入数据的指针向TAB后移一位,重新写128个点,如此循环128次即可让波形滚动起来。 参考程序二:;*OCM4x8C用上半区域显示波形(半屏)*;将LGS2中的LCD_X改为88H即可在下半区域作图*RS EQU P3.0RW EQU P3.1E EQU P3.2PSB EQU P3.3

14、RST EQU P3.4LCD_X EQU 30HLCD_Y EQU 31HCOUNT EQU 32HCOUNT1 EQU 33HCOUNT2 EQU 34HCOUNT3 EQU 35HLCD_DATA EQU 36HLCD_DATA1 EQU 37HLCD_DATA2 EQU 38HSTORE EQU 39HDH EQU 40HDL EQU 41H;* ORG 0000H LJMP MAIN ORG 0100HMAIN: NOP NOP MOV SP,#5FH SETB RST NOP SETB PSB;*初始化*LGS0: MOV A,#34H ;34H-扩充指令操作 LCALL SEND

15、_I MOV A,#30H ;30H-基本指令操作 LCALL SEND_I MOV A,#01H ;清除显示 LCALL SEND_I MOV A,#06H ;指定在资料写入或读取时,光标的移动方向 LCALL SEND_I MOV A,#0CH ;开显示,关光标,不闪烁 LCALL SEND_I;*CLRRAM: MOV LCD_DATA1,#00H ;GDRAM写0子程序 MOV LCD_DATA2,#00H LCALL LAT_DISP LJMP LGS2;$LAT_DISP: MOV COUNT3,#02H ;显示点阵子程序 MOV LCD_X,#80HLAT_DISP1: MOV

16、LCD_Y,#80H CLR F0 MOV COUNT2,#20HLAT_DISP2: MOV COUNT1,#10H LCALL WR_ZBLAT_DISP3: JB F0,LAT_DISP32 MOV LCD_DATA,LCD_DATA1 AJMP LAT_DISP31LAT_DISP32: MOV LCD_DATA,LCD_DATA2LAT_DISP31: MOV A,LCD_DATA LCALL SEND_D DJNZ COUNT1,LAT_DISP31 INC LCD_Y CPL F0 DJNZ COUNT2,LAT_DISP2 MOV LCD_X,#88H DJNZ COUNT3,

17、LAT_DISP1 MOV A,#36H LCALL SEND_I MOV A,#30H LCALL SEND_I RET;*LGS2: MOV R1,#8 MOV LCD_X,#80H MOV DPTR,#TABC2: MOV R0,#16 MOV DH,#80H MOV DL,#00HC1: CLR A MOVC A,A+DPTR INC DPTR MOV B,#8 DIV AB MOV B,A MOV A,#31 CLR C SUBB A,B ORL A,#80H MOV LCD_Y,A LCALL WR_ZB LCALL READ_D;address LCALL READ_D MOV

18、R6,STORE;most8 LCALL READ_D MOV R7,STORE;least8 LCALL WR_ZB MOV A,DH ORL A,R6 LCALL SEND_D MOV A,DL ORL A,R7 LCALL SEND_D LCALL RCIR;对字右环移 DJNZ R0,C1 INC LCD_X DJNZ R1,C2 ;$ MOV A,#36H LCALL SEND_I MOV A,#30H LCALL SEND_I LJMP $;*WR_ZB: MOV A,#34H LCALL SEND_I MOV A,LCD_Y LCALL SEND_I MOV A,LCD_X LC

19、ALL SEND_I MOV A,#30H LCALL SEND_I RET;*SEND_D: LCALL CHK_BUSY ;写数据子程序 SETB RS CLR RW MOV P1,A SETB E NOP NOP CLR E RETSEND_I: LCALL CHK_BUSY ;写指令子程序 CLR RS CLR RW MOV P1,A SETB E NOP NOP CLR E RETREAD_D: LCALL CHK_BUSY ;读数据子程序 SETB RS SETB RW SETB E NOP MOV A,P1 CLR E MOV STORE,A RETCHK_BUSY: MOV P

20、1,#0FFH ;测忙碌子程序 CLR RS SETB RW SETB E JB P1.7,$ CLR E RETRCIR: MOV A,DH CLR C RRC A MOV DH,A MOV A,DL RRC A JB PSW.7,RNEXT MOV DL,A RETRNEXT: ORL A,#80H MOV DL,A RET ;*TAB: DB 72, 72, 72, 72, 71, 71, 70, 70, 69, 69, 68, 67, 67, 66, 66, 66DB 66, 66, 67, 68, 69, 70, 71, 71, 72, 72, 72, 72, 72, 72, 72,

21、 72DB 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72DB 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72DB 66, 54, 46, 38, 26, 15, 12, 11, 12, 16, 23, 44, 66, 97,122,145DB 156,163,168,176,188,202,210,205,198,188,172,160,146,136,125,113DB 104, 94, 85, 77, 72, 70, 68, 66,

22、64, 63, 62, 61, 60, 59, 58, 58DB 57, 56, 55, 55, 54, 53, 53, 52, 52, 51, 51, 50, 50, 49, 49, 48DB 48, 47, 47, 46, 46, 45, 45, 44, 44, 43, 43, 42, 42, 41, 41, 40DB 40, 39, 39, 38, 38, 37, 37, 36, 36, 35, 35, 34, 34, 33, 33, 32DB 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 20, 19, 18, 17, 16DB 15, 14,

23、 13, 13, 12, 12, 12, 12, 12, 13, 13, 14, 14, 15, 16, 17DB 18, 20, 21, 22, 23, 25, 26, 27, 29, 30, 31, 33, 34, 36, 38, 39DB 41, 43, 45, 47, 48, 50, 51, 53, 54, 55, 56, 58, 59, 60, 61, 62DB 64, 65, 66, 67, 68, 69, 70, 70, 71, 71, 72, 72, 72, 72, 72, 72DB 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,

24、 72, 72, 72, 72 END;*OCM4x8C全屏显示波形*RS EQU P3.0RW EQU P3.1E EQU P3.2PSB EQU P3.3RST EQU P3.4LCD_X EQU 30HLCD_Y EQU 31HCOUNT EQU 32HCOUNT1 EQU 33HCOUNT2 EQU 34HCOUNT3 EQU 35HLCD_DATA EQU 36HLCD_DATA1 EQU 37HLCD_DATA2 EQU 38HSTORE EQU 39HDH EQU 40HDL EQU 41H;* ORG 0000H LJMP MAIN ORG 0100HMAIN: NOP NOP

25、 MOV SP,#5FH SETB RST NOP SETB PSB;*初始化*LGS0: MOV A,#34H ;34H-扩充指令操作 LCALL SEND_I MOV A,#30H ;30H-基本指令操作 LCALL SEND_I MOV A,#01H ;清除显示 LCALL SEND_I MOV A,#06H ;指定在资料写入或读取时,光标的移动方向 LCALL SEND_I MOV A,#0CH ;开显示,关光标,不闪烁 LCALL SEND_I;*CLRRAM: MOV LCD_DATA1,#00H ;GDRAM写0子程序 MOV LCD_DATA2,#00H LCALL LAT_D

26、ISP LJMP LGS2;$LAT_DISP: MOV COUNT3,#02H ;显示点阵子程序 MOV LCD_X,#80HLAT_DISP1: MOV LCD_Y,#80H CLR F0 MOV COUNT2,#20HLAT_DISP2: MOV COUNT1,#10H LCALL WR_ZBLAT_DISP3: JB F0,LAT_DISP32 MOV LCD_DATA,LCD_DATA1 AJMP LAT_DISP31LAT_DISP32: MOV LCD_DATA,LCD_DATA2LAT_DISP31: MOV A,LCD_DATA LCALL SEND_D DJNZ COUNT1,LAT_DISP31 INC LCD_Y CPL F0 DJNZ COUNT2,LAT_DISP2 MOV LCD_X,#88H DJNZ COUNT3,LAT_DISP1 MOV A,#36H LCALL SEND_I MOV A

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2