还剩4页未读,继续阅读
文本内容:
08.
08.02TEST128x64汉字显示OKIO_ADDRESSequ288hDATASEGMENTHZ_TABDW0A__3H0A__2H0__BBH0__A2H0BBFAH0BDCCH0D1A7H0CAB5HDW0D1E9H0CFB5H0CDB3H0D5FDH0D4DAH0D1DDH0CABEH0D6D0HHZ_ADRDB;存放显示行起始端口地址DATAENDScodesegmentassumecs:codeds:dataSTART:MOVAXDATAMOVDSAXMOVDXIO_ADDRESSADDDX3MOVAL80HOUTDXAL;8255初始化moval0ffhmovdx300HoutdxalCALLCLEAR;LCD清除;CALLFUNCUP;LCD功能设置LEABXHZ_TABMOVCH2;显示第2行信息CALLLCD_DISPLEABXHZ_TABMOVCH3;显示第3行信息CALLLCD_DISPl1:jmpstart;l1CLEARPROCMOVAL0CHMOVDXIO_ADDRESSOUTDXAL;设置CLEAR命令CALLCMD_SETUP;启动LCD执行命令RETCLEARENDPFUNCUPPROC;MOVAL0fH;LCD功能设置命令;OUTDXAL;CALLCMD_SETUPMOVAL34H;LCD显示状态命令OUTDXALCALLCMD_SETUPRETFUNCUPENDPLCD_DISPPROCLEABXHZ_TABCMPCH2JZDISP_SECMOVBYTEPTRHZ_ADR88H;第三行起始端口地址ADDBX16;指向第二行信息JMPnextDISP_SEC:MOVBYTEPTRHZ_ADR90Hnext:movcl8continue:pushcxMOVALHZ_ADRMOVDXIO_ADDRESSOUTDXALCALLCMD_SETUP;设定DDRAM地址命令MOVAX[BX]PUSHAXMOVALAH;先送汉字编码高位MOVDXIO_ADDRESSOUTDXALCALLDATA_SETUP;输出汉字编码高字节CALLDELAY;延迟POPAXMOVDXIO_ADDRESSOUTDXALCALLDATA_SETUP;输出汉字编码低字节CALLDELAYINCBXINCBX;修改显示内码缓冲区指针INCBYTEPTRHZ_ADR;修改LCD显示端口地址POPCXDECCLJNZCONTINUERETLCD_DISPENDPCMD_SETUPPROCMOVDXIO_ADDRESS;指向8255端口控制端口ADDDX2NOPMOVAL00000000B;PC1置0pc0置0(LCDI端=0,W端=0)OUTDXALcalldelayNOPMOVAL00000100B;PC2置1(LCDE端=1)OUTDXALNOPcalldelayMOVAL00000000B;PC2置0(LCDE端置0)OUTDXALcalldelayRETCMD_SETUPENDPDATA_SETUPPROCMOVDXIO_ADDRESS;指向8255控制端口ADDDX2MOVAL00000001B;PC1置0,PC0=1(LCDI端=1)OUTDXALNOPcalldelayMOVAL00000101B;PC2置1(LCDE端=1)OUTDXALNOPcalldelayMOVAL00000001B;PC2置0(LCDE端=0)OUTDXALNOPcalldelayRETDATA_SETUPENDPDELAYPROCpushcxpushdxMOVCX0fffhx1:loopx1popdxpopcxRETDELAYENDPcodeendsendstart/************************//*LCD汉字显示*//************************/#includestdio.h#includeconio.h#includeApiExu__.h#prag__commentlibApiExu__.libcharlcd2
[16]={0xa30xb30xa30xb20x__0xbb0x__0xa20xbb0xfa0xbd0xcc0xd10xa70xca0xb5};charlcd3
[16]={0xd10xe90xcf0xb50xcd0xb30xd50xfd0xd40xda0xd10xdd0xca0xbe0xd60xd0};voidclear;voidcmdsetup;voiddatasetup;void__in{inti;printfPressanykeytobegin!\n\n;getch;if!Startup/*打开设备*/{printfERROR:OpenDevi__Error!\n;return;}PortWriteByte0x28b0x80;/*设8255为方式0C口输出A口输出*/clear;PortWriteByte0x2880x90;cmdsetup;Sleep10;fori=0;i16;i++{PortWriteByte0x288lcd2[i];datasetup;};PortWriteByte0x2880x88;cmdsetup;Sleep10;fori=0;i16;i++{PortWriteByte0x288lcd3[i];datasetup;};Cleanup;/*关闭设备*/}voidclear{PortWriteByte0x2880x0c;cmdsetup;}voidcmdsetup{PortWriteByte0x28a0x00;Sleep1;PortWriteByte0x28a0x04;Sleep1;PortWriteByte0x28a0x00;Sleep1;}voiddatasetup{PortWriteByte0x28a0x01;Sleep1;PortWriteByte0x28a0x05;Sleep1;PortWriteByte0x28a0x01;Sleep1;。