新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 硬件漢字庫設計原理與應用

        硬件漢字庫設計原理與應用

        作者: 時間:2012-07-04 來源:網絡 收藏

        四顯示原理與軟件編制

        在第一節中我們已經得出國字的區位碼為195AH 換算成十進制為2590 ,即國字的點陣位
        于第25 區的第90 個字的位置,相當于在文件HZK16 中的位置為32 [(25-1) 94 (90-1)] 75040B 以后的32 個字節為國的顯示點陣。
        在本系統中AT29C020 的A15 A17 分別連接到P1 口的P1.0 P1.1 和P1.2 作為頁選擇控制A0
        A14 直接連接單片機的A0 A14 利用MOVX 指令連續取32 個字節送LCD 的相應位置就能實現正確的漢字顯示。
        由于240 128 點陣的LCD 顯示器每行只能顯示15 個漢字16 16 點陣漢字所以可以將需要顯示的語句按15 個漢字為1 行進行編寫標點符號要用全角不足15 個漢字的則補空格這就是下面軟件中的MENG.ASM 中的內容
        為方便讀者將已經通過匯編的有關程序列出有關LCD 的具體使用方法請見文獻[2]
        主程序
        C_ADD EQU 8001H 液晶命令地址
        D_ADD EQU 8000H 液晶數據地址
        DAT1 EQU 30H
        DAT2 EQU 31H
        COM EQU 32H
        CODE1 EQU 33H
        COUNT EQU 34H
        O_Y EQU 35H
        O_X EQU 36H
        COUNT_X EQU 37H
        ORG 0000H
        SJMP START
        ORG 0030H
        START: MOV SP, #60H
        ORL AUXR, #02H EXTRAM 位1 訪問外部數據存儲器
        ANL AUXR1, #0FH ENBOOT=0 訪問到FLASH
        CLR P1.5 正顯
        LCALL INT 初始化設置子程序
        LCALL CLEAR 清屏
        MOV DPTR, #TABLE 科幻小說的開頭
        MOV O_Y, #00H
        PUSH DPH
        PUSH DPL
        LOOP: POP DPL
        POP DPH
        MOV R0, #0E0H 字模數據暫存區
        MOV R7, #30 每個漢字為2 字節每行15 個漢字需30 字節
        PRHZ3: CLR A
        MOVC A, @A+DPTR
        MOV @R0,A
        INC R0
        INC DPTR
        DJNZ R7, PRHZ3
        PUSH DPH
        PUSH DPL
        MOV O_X, #00H
        MOV R0, #0E0H
        MOV COUNT_X, #15
        LCD112: MOV 24H, @R0 24H 和25H 為暫存緩沖存內碼
        INC R0
        MOV 25H, @R0
        INC R0
        MOV A, 24H
        CLR C
        SUBB A, #0A1H 轉換為區位碼
        MOV 24H, A
        MOV A, 25H
        CLR C
        SUBB A, #0A1H
        MOV 25H, A
        MOV A, R0
        PUSH ACC
        LCALL DPONHZ 取字模數據并存入0C0H 開始的寄存器
        LCALL WRI_CC 送出顯示
        POP ACC
        MOV R0, A
        INC O_X
        INC O_X
        DJNZ COUNT_X,LCD112 1 行漢字送完跳轉
        MOV A, O_Y
        ADD A, #10H
        MOV O_Y, A
        MOV A, O_Y
        CJNE A, #80H,LOOP
        MOV O_Y, #00H
        LCALL DELAY 送完1 屏后延長時間以便于閱讀
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        LCALL DELAY
        POP DPL
        POP DPH
        PUSH DPH
        PUSH DPL
        MOV A, DPH
        SUBB A, #0DFH 小說結尾地址如果是結尾則復位重新開始
        JNC RST1
        JMP LOOP
        RST1: MOV A, DPL
        SUBB A, #2AH
        JNC RST
        JMP LOOP
        RST: JMP START
        DPONHZ: MOV A, 24H 取字模數據至0C0H 開始的內部存儲區
        MOV B, #94
        MUL AB
        ADD A, 25H
        MOV 25H, A
        CLR A
        ADDC A, B
        MOV 24H, A
        CLR C
        RRC A
        CLR C
        RRC A
        MOV P1, A
        LCALL RL245
        CLR 24H.7
        MOV DPH, 24H
        MOV DPL, 25H
        MOV R2, #32
        MOV R1, #0C0H
        DPHZ2: MOVX A, @DPTR
        INC DPTR
        MOV @R1, A
        INC R1
        DJNZ R2, DPHZ2
        RET
        RL245: MOV R7, #05 24H25H 左移5 位
        RLL1: CLR C
        MOV A, 25H
        RLC A
        MOV 25H,A
        MOV A, 24H
        RLC A
        MOV 24H, A
        DJNZ R7, RLL1
        RET
        R_ST: MOV DPTR, #C_ADD 讀狀態
        MOVX A, @DPTR
        RET
        ST01: LCALL R_ST 讀寫一數據前
        JNB ACC.0, ST01
        JNB ACC.1, ST01
        RET
        ST2: LCALL R_ST 連續讀前
        JNB ACC.2, ST2
        RET
        ST3: LCALL R_ST 連續寫前
        JNB ACC.3, ST3
        RET
        ST6: LCALL R_ST
        JB ACC.6, ERR
        RET
        ERR: LJMP ST6
        PR1: LCALL ST01
        MOV A, DAT1
        LCALL PR13
        PR11: LCALL ST01
        MOV A, DAT2
        LCALL PR13
        PR12: LCALL ST01
        MOV A, COM
        LJMP PR14
        PR13: MOV DPTR, #D_ADD
        PR14: MOVX @DPTR, A
        RET
        PR2: LCALL ST01
        MOV DPTR, #D_ADD
        MOVX A, @DPTR
        MOV DAT2, A
        RET
        INT: MOV DAT1, #00H 初始化設置子程序
        MOV DAT2, #00H
        MOV COM, #40H
        LCALL PR1
        MOV DAT1, #20H
        MOV DAT2, #00H
        MOV COM, #41H
        LCALL PR1
        MOV DAT1, #00H
        MOV DAT2, #08H
        MOV COM, #42H
        LCALL PR1
        MOV DAT1, #20H
        MOV DAT2, #00H



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 江陵县| 大田县| 元氏县| 自贡市| 南召县| 容城县| 托克托县| 泸州市| 丹巴县| 岗巴县| 宁强县| 滦南县| 香港| 五原县| 搜索| 乌审旗| 榕江县| 道孚县| 鱼台县| 海安县| 石林| 乡城县| 平湖市| 健康| 青海省| 沂水县| 常州市| 长寿区| 桐乡市| 连州市| 教育| 镇江市| 萨迦县| 闻喜县| 雅安市| 克拉玛依市| 宁都县| 常熟市| 乐平市| 启东市| 南京市|