导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→初学者:用motorola的HC705单片机驱动1602LC

* 9186: 初学者:用motorola的HC705单片机驱动1602LCM例程

   coolman23 
coolman23发表的帖子 

 初学者:用motorola的HC705单片机驱动1602LCM例程
国内motorola的8位单片机的相关内容比起其他如51系列少多了,现在我正在学motorola的
hc05系列,现把自己写的程序与大家交流,如果大家觉得有价值的话我将继续发布我的程
序,希望motorola的使用者能分享一下经验。


; Register Equates
PORTA    EQU    $00    ;LCD display data
PORTB    EQU    $01    ;Keypad Row4,3,2,1;Col1,2,3,4
PORTC    EQU    $02    ;Fan*,Heat*,Cool*,Beep;ADen*,E,RS,R/W
DDRA    EQU    $04    ;Data direction, Port A (all output)
DDRB    EQU    $05    ;Data direction, Port B (7-4in,3-0out)
DDRC    EQU    $06    ;Data direction, Port C (all output)

; RAM Equates
TEMPA    EQU    $9E    ;One byte temp storage location
TEMPX    EQU    $9F    ;One byte temp storage location

    ORG    $100
; Set Port data patterns and directions
TRYLCD    LDA    #$00    ;
    STA    PORTB    ;Initial values for Thermostat controls控制脚PB0
接RS,PB1接RW,PB2接E
        STA     PORTC   ;数据线
    LDA    #$FF
    STA    DDRB    ;Port A all outputs
    STA    DDRC    ;Port C all outputs

; LCD display peripheral needs to be initialized  初始化
    LDA    #$01
    JSR    WCTRL    ;Clear
    LDA    #$02
    JSR    WCTRL    ;Home
    LDA    #$38
    JSR    WCTRL    ;Function Set- 8-bit,2-line,5X7
    LDA    #$0C
    JSR    WCTRL    ;Display on, Cursor off
    LDA    #$06
    JSR    WCTRL    ;Entry mode- Inc addr, no shift
        LDA     #80     ;从第一行开始
        JSR     ADDR

    LDA    #'A'    ;ASCII 'A'  显示单字符子程序
DLP    JSR    WDAT    ;Display a character
    INCA        ;To next ASCII character
    CMP    #'Z'    ;Go ABCDEFGHIJKLMNOPQRS & stop
    BNE    DLP    ;Loop till T
;HERE    BRA    HERE    ;Stop
        LDA     #0C0    ;从第二行开始
        JSR     ADDR
        CLRX
        JSR     PRSTR
PRSTR   LDA     LINE1,X   ;整行显示字符串子程序
        BEQ     OUT
L3      JSR     WDAT
        INCX
        BRA     PRSTR
OUT     RTS
;**************
; SUBROUTINES *
;**************

;*******************************************************
; WCTRL - Write control word to LCD peripheral         *
;    Enter with control word in accumulator         *
;    Return with original value of X                *
;    Delay ~4.5mS if A=$01 or $02 else delay ~120礢 *
;*******************************************************
WCTRL    STX    TEMPX    ;Save X  写操作命令子程序
    STA    PORTC    ;Write control word to LCD
    BSET    2,PORTB    ;E->1
    BCLR    2,PORTB    ;E->0
    LDX    #20    ;20*6~*1礢/~=120礢
L120U    DECX        ;Delay loop ~120礢
    BNE    L120U    ;20-19,19-18...1-0
    CMP    #$02    ;Commands $01 & $02 req extra delay
    BHI    ARN5M    ;If command > $02 skip long delay
L5M    JSR    ANRTS    ;JSR+RTS TAKES 12~ (just want delay)
    DECX        ;TAKES 3~ (X=0->1 on first pass)
    BNE    L5M    ;3~ Loop 256*18~*1礢/~=4.608mS Delay
ARN5M    LDX    TEMPX    ;Restore X
ANRTS    RTS        ;** RETURN **

********************************************************
* WDAT - Write data word to LCD peripheral             *
*    Enter with data word in accumulator            *
*    Return with original values of X & A           *
*    Delay ~120礢 after data write                  *
********************************************************
WDAT    STX    TEMPX    ;Save X  写显示字符子程序
    STA    TEMPA    ;Save A
    STA    PORTC    ;Write data word to LCD
    BSET    0,PORTB    ;RS->1
    BSET    2,PORTB    ;E->1
    BCLR    2,PORTB    ;E->0
    BCLR    0,PORTB    ;RS->0
    LDX    #20    ;20*6~*1礢/~=120礢
L120    DECX        ;Delay loop ~120礢
    BNE    L120    ;20-19,19-18...1-0
    LDA    TEMPA    ;Restore A
    LDX    TEMPX    ;Restore X
    RTS        ;** RETURN **
ADDR    BCLR    0,PORTB ;设定显示位置子程序
        STA     PORTC
        BSET    2,PORTB
        BCLR    2,PORTB
        LDA     #13
L4      DECA
        BNE     L4
        BSET    0,PORTB
        RTS

      ORG $50
LINE1   DB      'MY LCD IS RUNNING'     ;定义字符串
        DB      0


发表时间:2002年7月20日9:44:00

  
回复该帖

本主题共有 1 帖,分页:>>>>>该主题的所有内容[1]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

[上一篇帖子]:硬件:那位大侠能给我发一个信利MCG12864A8-3的说明书?我的Email:zhoubox@si
[下一篇帖子]:怎么没人回答阿!