导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→[求助]128*64点阵LCD从汇编改为C51后不能正常显示[suvin]

 *第30095篇: [求助]128*64点阵LCD从汇编改为C51后不能正常显示

  
楼 主:suvin 2005年3月9日19:56
 [求助]128*64点阵LCD从汇编改为C51后不能正常显示
汇编程序如下:

;;;;;;;;;;;;          演示程序

;12864M        带中文字库

;
;P0为数据总线
;定义LCD控制线
  WRA       EQU   P2.6 ;R/W,  0:读 1:写
  EE        EQU   P2.5 ;E(SLCK)使能控制位(同步时钟)
  RS        EQU   P2.7 ;0:指令  1:数据
  REST      EQU   P2.4  ;复位(低电平有效)
  
  WRDATA  EQU  35H ;数据/命令寄存

 CSEG   AT  0000H 
 NOP
MAIN:
  CLR   EE
  NOP
  CLR   REST                      ;复位
  LCALL   DELAY
  SETB  REST
  NOP
  MOV  WRDATA,#01                ;清屏
  LCALL  WRCODE
  MOV  WRDATA,#0CH               ;开显示屏
  LCALL  WRCODE
  MOV  WRDATA,#80H               ;设置地址
  LCALL  WRCODE
  MOV   DPTR,#CCTAB
  MOV  R7,#58
GGHT:
  CLR   A
  MOVC  A,@A+DPTR                 ;读汉字内码
  MOV   WRDATA,A
  LCALL  WRDDA
  INC   DPTR
  DJNZ  R7,GGHT
  NOP
LOOP:
  NOP
  NOP
  NOP
  LJMP  LOOP

DELAY:
  MOV  R5,#0
  MOV  R6,#0
  MOV  R7,#2
DEL:
  DJNZ  R5,DEL
  DJNZ  R6,DEL
  DJNZ  R7,DEL
  RET

;--------------------------------------------
;       写指令子程序
WRCODE:
  MOV   P0,#0FFH
  CLR   RS
  SETB  WRA
  SETB  EE
  MOV  A,P0                    ;读BF, 查忙
  CLR   EE
  JB    ACC.7,WRCODE
  CLR   WRA
  MOV   P0,WRDATA             ;指令送P0口
  SETB  EE
  CLR   EE
  RET

WRDDA:
  MOV   P0,#0FFH
  CLR   RS
  SETB  WRA
  SETB  EE
  MOV   A,P0                 ;读BF, 查忙
  CLR   EE
  JB    ACC.7,WRDDA
  SETB  RS
  CLR  WRA
  MOV  P0,WRDATA            ;数据送P0口
  SETB  EE
  CLR   EE
  RET

CCTAB:                    ;中文字库内码表格
DB  0BAH,0BAH,0D7H,0D6H,0CDH,0BCH,0D0H,0CEH,0B5H,0E3H,0D5H,0F3H,0D2H,0BAH,0BEH,0A7H
DB  0D7H,0D6H,0BCH,0B0H,0CDH,0BCH,0D0H,0CEH,0C4H,0DAH,0D6H,0C3H,038H,031H,039H,032H
DB 0CFH,0D4H,0CAH,0BEH,0C4H,0A3H,0BFH,0E9H,0BFH,0C9H,0CFH,0D4H,0CAH,0BEH,0BAH,0BAH
DB  0B8H,0F6H,0D6H,0D0H,0CEH,0C4H,0BAH,0BAH,0D7H,0D6H
END 

改为C51后代码如下:
#define uchar unsigned char
uchar code cctab[]={0xBA,0xBA,0xD7,0xD6,0xCD,0xBC,0xD0,0xCE,0xB5,0xE3,0xD5,0xF3,0xD2,0xBA,0xBE,0xA7,0xD7,0xD6,0xBC,0xB0,0xCD,0xBC,0xD0,0xCE,0xC4,0xDA,0xD6,0xC3,0x38,0x31,0x39,0x32,0xCF,0xD4,0xCA,0xBE,0xC4,0xA3,0xBF,0xE9,0xBF,0xC9,0xCF,0xD4,0xCA,0xBE,0xBA,0xBA,0xB8,0xF6,0xD6,0xD0,0xCE,0xC4,0xBA,0xBA,0xD7,0xD6};

sbit WRA=P2^6;
sbit EE=P2^5;
sbit RS=P2^7;
sbit REST=P2^4;

Delay()
{
 int i;
 for(i=0;i  <=10000;i++)
 {}
}


WrCode(uchar wcode)
{
 uchar temp;
 P0=0xff;
 RS=0;
 WRA=1;
 EE=1;
 temp=P0;
 EE=0;////
 temp=(temp>  >  7 & 0x01);
 while(temp==1)
  {
  temp=P0;
  temp=(temp>  >  7 & 0x01);
  }
 WRA=0;////
 P0=wcode;
 EE=1;
 EE=0;
}

WrData(uchar wdata)
{
 uchar temp;
 P0=0xff;
 RS=0;
 WRA=1;
 EE=1;
 temp=P0;
 EE=0;/////
 temp=(temp>  >  7 & 0x01);
 while(temp==1)
  {
  temp=P0;
  temp=(temp>  >  7 & 0x01);
  }
 RS=1;
 WRA=0;
 P0=wdata;
 EE=1;
 EE=0;
}

main()
{
 uchar i;
 EE=0;
 REST=0;
 Delay();
 REST=1;
 WrCode(1);
 WrCode(0x0C);
 WrCode(0x80);
 for(i=0;i  <=57;i++)
  {
  WrData(cctab[i]);
  }
 while(1);



>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:[下载]急!急!急!请问哪个有ISP Synario这个软件下载啊!我现在要急用!

[下一篇主题]:招聘软件开发工程师