專注電子技術(shù)學(xué)習(xí)與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

單片機LCD顯示漢字程序

作者:佚名   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2008年05月26日   【字體:

S_I     EQU    P1.5   ;內(nèi)容發(fā)送
SCK   EQU    P1.7   ;串行CP端
RCK    EQU    P1.6   ;輸出CP端
EN      EQU    P1.4   ;EN為138使能端.高電平關(guān)閉顯示;低電平顯示 
;*********************單片機LCD顯示漢字程序-匯編語言編寫****************************
;*********************http://www.torrancerestoration.com原創(chuàng)*****************************
        ORG     0000H
        LJMP    MAIN       
        ORG     0100H
MAIN:    SETB EN              ;關(guān)顯示端口           
        MOV    SP,#70H          ;堆棧首址
      MOV    DPTR,#TAB ;賦查表初址
      MOV    R3,#0
   
       ANL P1,#0F0H
   setb p1.0
     MOV R7,P1
      
 MOV    R6,#17     ;掃描的行數(shù),共16行,經(jīng)行程序處理后顯示應(yīng)顯示的行
FF:     LCALL  QQ          ;將顯示內(nèi)容移入內(nèi)存單元   
      LCALL  OUT_595        ;發(fā)送串行口子程序
       CALL DELAY
    CLR    RCK  ;將輸出CP變?yōu)榈碗娖綖樯仙刈鳒蕚?br />     
 SETB EN   ;將使能端變?yōu)楦唠娖綖橄陆笛刈鳒蕚?nbsp;   
    MOV P1,R7        ;送P1口
       MOV R7,P1
      INC    R7
        SETB   RCK  ;輸出CP為上升沿,顯示一個
        CLR    EN               ;138可顯示
        DJNZ   R6,FF
        LJMP   MAIN  ;如顯示完,就重新開始顯示內(nèi)容
;*************************顯示漢字內(nèi)容移入內(nèi)存單元子程序*************************
QQ:     MOV    R0,#30H
        MOV    R4,#8          ;如每幕顯示字數(shù)
        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,移到下一個字節(jié)的對應(yīng)位置
      MOV    R3,A  ;r3等于32
      INC    R0 ;繼續(xù)下一個地址
      DJNZ   R4,QQ1
      MOV    A,R3
      SUBB   A,#126
    SUBB   A,#126;每次顯示4個字,減126
      MOV    R3,A
      RET
;*****************************發(fā)送漢字數(shù)據(jù)到串口單片機子程序*********************************
OUT_595:MOV    R0,#30H
        MOV    R5,#16 ;一行有8個字節(jié);如每次顯示字數(shù)不同要作相應(yīng)改動
DD:     CLR    C                   ;清C方便每個字節(jié)的移動
      MOV    R2,#8
        MOV    A,@R0;將顯存的字節(jié)的單元移入A
       
   
        LCALL  DD1  ;調(diào)用顯示一個字節(jié)的子程序
        INC    R0   ;指向下一個顯存的單元
        DJNZ   R5,DD  ;8個字節(jié)全部移入了沒有,未繼續(xù)
        RET
DD1:    CLR    SCK  ;清串行CP端
        RLC    A   ;將每個字節(jié)移位
        MOV    S_I,C  ;將移入C的位移入信號端
        SETB   SCK  ;觸發(fā)串行CP端
        DJNZ   R2,DD1  ;每個字節(jié)位移8次夠了
        RET

DELAY:         MOV  53H,#10
DELY1:         MOV  54H,#030H
DELY:          NOP
  NOP
  DJNZ  54H,DELY
         DJNZ  53H,DELY1
  RET 

;***********************************漢字字碼表-LCD顯示漢字程序按照這些點陣逐行掃描我們?nèi)庋劬涂吹綕h字出現(xiàn)再了lcd屏幕上了*******************
TAB:
;陽碼逐行順向

DB 0FEH, 0FFH, 080H, 003H, 0FEH, 0FFH, 0F0H, 01FH, 0FFH, 0FFH, 0E0H, 00FH, 0EFH, 0EFH, 0E0H, 00FH;
DB 0F7H, 0BFH, 000H, 001H, 0EFH, 0FFH, 081H, 087H, 0EDH, 0B7H, 0DDH, 0B7H, 0B5H, 087H, 07BH, 0FFH;"嘉",0
DB 0FEH, 0FFH, 0FFH, 07FH, 0C0H, 003H, 0DFH, 0FFH, 0DDH, 0FFH, 0DEH, 0F7H, 0CFH, 073H, 0D7H, 037H;
DB 0DBH, 06FH, 0DBH, 06FH, 0D9H, 0DFH, 0BBH, 0DFH, 0BFH, 0BFH, 0A0H, 001H, 07FH, 0FFH, 0FFH, 0FFH;"應(yīng)",1
DB 0FEH, 0F7H, 0EFH, 073H, 0F3H, 037H, 0F7H, 06FH, 080H, 001H, 0BFH, 0FBH, 070H, 017H, 0FFH, 0BFH;
DB 0FFH, 07FH, 080H, 001H, 0FFH, 07FH, 0FFH, 07FH, 0FFH, 07FH, 0FFH, 07FH, 0FDH, 07FH, 0FEH, 0FFH;"學(xué)",2
DB 0FFH, 07FH, 007H, 0BFH, 070H, 001H, 06BH, 0FBH, 05FH, 0FFH, 05CH, 007H, 06FH, 0FFH, 077H, 0FFH;
DB 070H, 001H, 056H, 0DFH, 06EH, 0DFH, 07EH, 0DFH, 07DH, 0DDH, 07DH, 0DDH, 07BH, 0DDH, 077H, 0E1H;"院",3
DB 0FEH, 0FFH, 0FEH, 0FFH, 0FEH, 0FFH, 0C0H, 007H, 0DEH, 0F7H, 0DEH, 0F7H, 0C0H, 007H, 0DEH, 0F7H;
DB 0DEH, 0F7H, 0DEH, 0F7H, 0C0H, 007H, 0DEH, 0F7H, 0FEH, 0FDH, 0FEH, 0FDH, 0FFH, 001H, 0FFH, 0FFH;"電",4
DB 0FFH, 0FFH, 0C0H, 00FH, 0FFH, 0DFH, 0FFH, 0BFH, 0FFH, 07FH, 0FEH, 0FFH, 0FEH, 0FFH, 0FEH, 0FBH;
DB 000H, 001H, 0FEH, 0FFH, 0FEH, 0FFH, 0FEH, 0FFH, 0FEH, 0FFH, 0FEH, 0FFH, 0FAH, 0FFH, 0FDH, 0FFH;"子",5
DB 0FFH, 083H, 0C0H, 07FH, 0FDH, 0DFH, 0FBH, 0DFH, 0F7H, 0BFH, 0E0H, 07FH, 0FCH, 0DFH, 0F3H, 0EFH;
DB 0C0H, 007H, 0EFH, 073H, 0FBH, 05FH, 0F7H, 06FH, 0EFH, 077H, 0DFH, 07BH, 0BDH, 07BH, 0FEH, 0FFH;"系",6
DB 0FDH, 0FFH, 0FEH, 0FFH, 0C0H, 001H, 0BFH, 0FBH, 0E0H, 007H, 0FFH, 0FFH, 0F0H, 00FH, 0F7H, 0EFH;
DB 0F0H, 00FH, 0F7H, 0EFH, 0F7H, 0EFH, 0F0H, 00FH, 0F7H, 0EFH, 0FFH, 0FFH, 000H, 001H, 0FFH, 0FFH;"宣",7


END

趕快燒到單片機里去試一下吧,我自己已經(jīng)測試成功。

關(guān)閉窗口