欢迎来到51自学网!

51自学网

当前位置: 主页 > 软件教程 > 单片机教程 >

单片机LCD显示汉字程序

时间:2018-08-08 06:55来源:网络整理 作者:51自学网
S_I EQU P1.5 ;内容发送 SCK EQU P1.7 ;串行CP端 RCK EQU P1.6 ;输出CP端 EN EQU P1.4 ;EN为138使能端.高电平关闭显示;低电平显示 ;*********************单片机LCD显示汉字程序-汇编语言编写*********************

S_I     EQU    P1.5   ;内容发送
SCK   EQU    P1.7   ;串行CP端
RCK    EQU    P1.6   ;输出CP端
EN      EQU    P1.4   ;EN为138使能端.高电平关闭显示;低电平显示 
;*********************单片机LCD显示汉字程序-汇编语言编写****************************
;*********************原创*****************************
        ORG     0000H
        LJMP    MAIN       
        ORG     0100H
MAIN:    SETB EN              ;关显示端口           
        MOV    SP,#70H          ;堆栈首址
      MOV    DPTR,#TAB ;赋查表初址
      MOV    R3,#0
   
       ANL P1,#0F0H
   setb p1.0
     MOV R7,P1
      
 MOV    R6,#17     ;扫描的行数,共16行,经行程序处理后显示应显示的行
FF:     LCALL  QQ          ;将显示内容移入内存单元   
      LCALL  OUT_595        ;发送串行口子程序
       CALL DELAY
    CLR    RCK  ;将输出CP变为低电平为上升沿作准备
    
 SETB EN   ;将使能端变为高电平为下降沿作准备    
    MOV P1,R7        ;送P1口
       MOV R7,P1
      INC    R7
        SETB   RCK  ;输出CP为上升沿,显示一个
        CLR    EN               ;138可显示
        DJNZ   R6,FF
        LJMP   MAIN  ;如显示完,就重新开始显示内容
;*************************显示汉字内容移入内存单元子程序*************************
QQ:     MOV    R0,#30H
        MOV    R4,#8          ;如每幕显示字数
        MOV    A,R3      ;A清零
QQ1:    MOVC   A, @A+DPTR
        MOV    @R0,A        
        INC    R0;下一个地址
      MOV    A,R3
      INC    A
        MOVC   A,@A+DPTR
      MOV    @R0,A
      MOV    A,R3  ;A清零
        ADD    A,#32   ;加32,移到下一个字节的对应位置
      MOV    R3,A  ;r3等于32
      INC    R0 ;继续下一个地址
      DJNZ   R4,QQ1
      MOV    A,R3
      SUBB   A,#126
    SUBB   A,#126;每次显示4个字,减126
      MOV    R3,A
      RET
;*****************************发送汉字数据到串口单片机子程序*********************************
OUT_595:MOV    R0,#30H
        MOV    R5,#16 ;一行有8个字节;如每次显示字数不同要作相应改动
DD:     CLR    C                   ;清C方便每个字节的移动
      MOV    R2,#8
        MOV    A,@R0;将显存的字节的单元移入A
       
   
        LCALL  DD1  ;调用显示一个字节的子程序
        INC    R0   ;指向下一个显存的单元
        DJNZ   R5,DD  ;8个字节全部移入了没有,未继续
        RET
DD1:    CLR    SCK  ;清串行CP端
        RLC    A   ;将每个字节移位
        MOV    S_I,C  ;将移入C的位移入信号端
        SETB   SCK  ;触发串行CP端
        DJNZ   R2,DD1  ;每个字节位移8次够了
        RET

(责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容