8051程式!? - 第 3 頁

第 3 頁,共 5 頁 首頁首頁 1 2 3 4 5 末頁末頁
顯示結果從第 21 筆 到 30 筆,共計 47 筆
  1. #21
    會員 聰明的豬 的大頭照
    註冊日期
    2001-02-19
    討論區文章
    1,497
    各位:

    嗯∼我知道的好像是!我要換的那顆他跟8051是同樣的內容!
    好像頂多只是腳位的不同而已!!



  2. #22
    會員
    註冊日期
    2001-01-17
    討論區文章
    241
    你應該先把要使用的所有IC及電路先確定好.

    下面是我修改我用的一些 LCD 副程式, 你可能要針對你的電路或你的組譯器再做修改:

    P8255Address equ 0000000000000000b
    P8255PortA equ P8255Address
    P8255PortB equ P8255Address+1
    P8255PortC equ P8255Address+2
    P8255Control equ P8255Address+3

    LCD_RS_pin reg p1.3 ; 0 -> Command port, 1 -> Data port
    LCD_RW_pin reg p1.4 ; 0 -> Write, 1 -> Read
    LCD_Enable_pin reg p1.5 ; 1 -> Enable

    LCDCommandPort equ P8255PortA
    LCDDataPort equ P8255PortA
    ; +======================================+
    ; + The LCD Software Command code define +
    ; +======================================+
    LCD_FunctionSet equ 00111000b ; 8-Bit, Dual line, 5 x 7 dots
    LCD_DisplayON equ 00001111b ; Display On, Cursor On, Blink On
    LCD_EntryMode equ 00000110b ; Cursor move increment
    LCD_ShiftMode equ 00010000b ; Move Cursor

    LCD_ClearCode equ 00000001b ; Display Clear, Home
    LCD_CursorHome equ 00000010b ; Cursor Home
    LCD_SetPosition equ 10000000b ; Set Cursor Position

    LCD_BLINKCURSOR equ 00001111b
    LCD_NORMALCURSOR equ 00001110b
    LCD_NOCURSOR equ 00001100b

    ;==============================================================================
    ;
    ; LCD Module (16 x 2)
    ;
    ;==============================================================================

    check_lcd_busy:
    ; push a
    ; mov dptr, #LCDCommandPort
    ;check_lcd_loop:
    ; clr LCD_RS_pin ; select Command port
    ; setb LCD_RW_pin
    ; setb LCD_Enable_pin
    ; movx a, @dptr
    ; clr LCD_Enable_pin
    ; jb a.7, check_lcd_loop
    ; pop a
    lcd_delay:
    ; wait about 1.5 ms
    push a
    mov a, #00h
    lcd_delay_wait:
    nop
    nop
    nop
    dec a
    jnz lcd_delay_wait
    pop a
    ret

    out_lcd_cmd:
    mov dptr, #LCDCommandPort
    clr LCD_RS_pin ; select Command port
    clr LCD_RW_pin
    setb LCD_Enable_pin
    movx @dptr, a
    nop
    clr LCD_Enable_pin
    setb LCD_RW_pin
    ret

    out_lcd_data:
    mov dptr, #LCDDataPort
    setb LCD_RS_pin ; select Data port
    clr LCD_RW_pin
    setb LCD_Enable_pin
    movx @dptr, a
    nop
    clr LCD_Enable_pin
    setb LCD_RW_pin
    ret

    outputlcdcmd:
    push dph
    push dpl
    call check_lcd_busy
    call out_lcd_cmd
    pop dpl
    pop dph
    ret

    display_init:
    mov a, #LCD_FunctionSet ; 00111000b
    call out_lcd_cmd
    ;
    call lcd_delay
    call lcd_delay
    ;
    mov a, #LCD_NOCURSOR ; 00001100b
    call out_lcd_cmd
    ;
    call lcd_delay
    ;
    mov a, #LCD_EntryMode ; 00000110b
    call out_lcd_cmd
    ;
    mov r7, #00h
    djnz r7, $
    ret

    display_clear:
    push dph
    push dpl
    call check_lcd_busy
    mov a, #LCD_ClearCode
    call out_lcd_cmd
    call check_lcd_busy
    call check_lcd_busy
    call check_lcd_busy
    call check_lcd_busy
    call check_lcd_busy
    call check_lcd_busy
    call check_lcd_busy
    call check_lcd_busy
    pop dpl
    pop dph
    ret

    return_home:
    push dph
    push dpl
    call check_lcd_busy
    mov a, #LCD_CursorHome
    call out_lcd_cmd
    call check_lcd_busy
    call check_lcd_busy
    call check_lcd_busy
    call check_lcd_busy
    call check_lcd_busy
    call check_lcd_busy
    call check_lcd_busy
    call check_lcd_busy
    pop dpl
    pop dph
    ret

    ; locate for LCD cursor
    gotoxy:
    jnb b.0, set_lcd_address
    add a, #40h
    set_lcd_address:
    add a, #LCD_SetPosition
    jmp outputlcdcmd

    putch:
    push dph
    push dpl
    call check_lcd_busy
    call out_lcd_data
    pop dpl
    pop dph
    ret

    putdigit:
    push a
    swap a
    anl a, #0Fh
    add a, #'0'
    call putch
    pop a
    anl a, #0Fh
    add a, #'0'
    call putch
    ret

    putdec:
    mov b, #10
    div b
    add a, #'0'
    call putch
    mov a, b
    add a, #'0'
    call putch
    ret

    putstr:
    clr a
    movc a, @a+dptr
    inc dptr
    jz putstr_exit
    call putch
    jmp putstr
    putstr_exit:
    ret

  3. #23
    會員 聰明的豬 的大頭照
    註冊日期
    2001-02-19
    討論區文章
    1,497
    有~我電路大概都確定好了!!!就是那一個圖!!!
    七斷顯示計改成lcd~
    再來~cd4543
    再來就是at89c2051這顆改成8051!!
    其他都不變!!

    大大您給的~lcd 程式~我會研究研究低!!!

    如果小弟有不懂的地方希望可以再讓小弟發問!!!...謝謝

  4. #24
    會員 聰明的豬 的大頭照
    註冊日期
    2001-02-19
    討論區文章
    1,497
    @____________@||

    請問一下!!您說您這個是~LCD副程式!?
    也就是說...
    我要是要把七斷顯示器改成LCD的話!
    那就得把檔案中的程式改成這段囉???((有點看不懂說))

  5. #25
    會員
    註冊日期
    2001-01-17
    討論區文章
    241
    你可以在 MAIN: 上面呼叫 LCD 副程式來初始化 LCD
    call display_init
    call display_clear
    然後如果要在第一行的第按十格顯示數字12的話, 如下
    mov a, #9
    mov b, #0
    call gotoxy
    mov a, #'1'
    call putch
    mov a, #'2'
    call putch
    至於 LCD 程式可以放在程式的最後面

    你看懂專題8051.txt裡面的程式了嗎?
    你必須將原本 LED 顯示的部分拿掉, 然後再使用 LCD 副程式來顯示
    另外你的程式應該還要保留超音波偵測的部分及主程式.

    你 LCD 的連接腳位確定後我可以幫你改 LCD 副程式順便給你個顯示的範例
    至於超音波部分你可能要自己研究囉!



  6. #26
    會員 gwochern 的大頭照
    註冊日期
    2002-02-15
    討論區文章
    785
    http://www.atmel.com/dyn/products/pr...p?part_id=1930

    你先把上面網址的
    Datasheets:
    AT89C51 (17 pages, Updated 2/00)
    的.pdf檔下載下來,
    這檔的第一頁有一個叫PDIP的IC圖,看一看.....
    你了解什麼叫P0.0~P0.7,P1.0~P1.7,P2.0~P2.7的接腳有什麼用處嗎....
    這幾隻腳就是I/O腳,它可IN和OUT,所以就和你圖上的2051一樣的作用
    也就是說2051的P什麼就跟8051是一樣的作用....所以2051的P什麼...
    你愛接到8051上任何P什麼上都可...

    先給你一建議....你應該把2051和8051的每隻接腳都搞清楚.....
    這樣你就能改電路...你先看看吧....不行你再PO上來問吧~~~~

  7. #27
    會員 聰明的豬 的大頭照
    註冊日期
    2001-02-19
    討論區文章
    1,497
    最初由 C.C. 發表
    你可以在 MAIN: 上面呼叫 LCD 副程式來初始化 LCD
    call display_init
    call display_clear
    然後如果要在第一行的第按十格顯示數字12的話, 如下
    mov a, #9
    mov b, #0
    call gotoxy
    mov a, #'1'
    call putch
    mov a, #'2'
    call putch
    至於 LCD 程式可以放在程式的最後面

    你看懂專題8051.txt裡面的程式了嗎?
    你必須將原本 LED 顯示的部分拿掉, 然後再使用 LCD 副程式來顯示
    另外你的程式應該還要保留超音波偵測的部分及主程式.

    你 LCD 的連接腳位確定後我可以幫你改 LCD 副程式順便給你個顯示的範例
    至於超音波部分你可能要自己研究囉!
    呼~從完全無知之中!!!!到現在終於略懂了!!!
    那如果說~我要改的話!!~~我就是~直接針對MAIN: 那段來作更改嗎??

  8. #28
    會員 聰明的豬 的大頭照
    註冊日期
    2001-02-19
    討論區文章
    1,497
    最初由 gwochern 發表
    http://www.atmel.com/dyn/products/pr...p?part_id=1930

    你先把上面網址的
    Datasheets:
    AT89C51 (17 pages, Updated 2/00)
    的.pdf檔下載下來,
    這檔的第一頁有一個叫PDIP的IC圖,看一看.....
    你了解什麼叫P0.0~P0.7,P1.0~P1.7,P2.0~P2.7的接腳有什麼用處嗎....
    這幾隻腳就是I/O腳,它可IN和OUT,所以就和你圖上的2051一樣的作用
    也就是說2051的P什麼就跟8051是一樣的作用....所以2051的P什麼...
    你愛接到8051上任何P什麼上都可...

    先給你一建議....你應該把2051和8051的每隻接腳都搞清楚.....
    這樣你就能改電路...你先看看吧....不行你再PO上來問吧~~~~

    好~沒有問題!!
    ((正在載中))
    我一定會好好的作公課的!!!!!!!

    我先去研究一翻~



    補充:
    我要用的lcd是這顆!!!


  9. #29
    會員 聰明的豬 的大頭照
    註冊日期
    2001-02-19
    討論區文章
    1,497
    我了改了!!!我大概研究一下pdf的腳位!!
    再對照一下我去買的書本的資料(8051)!!!
    我發現~8051跟89c2051的腳位是一樣低!!!!!!!...

    那如果是這樣的話!!我是不是只要把...把程式燒進去8051即可!?....
    因為如果假設我都不改變腳位的話!!!及時8051與89c51的腳位也是一樣低!!!
    像是那些~p1.0~p1.7!!等等的~都一樣!!!!??????

  10. #30
    會員
    註冊日期
    2001-01-17
    討論區文章
    241
    沒錯! 假設只將 CPU 換成 8051 其他電路不換則程式完全一樣不需修改也能用.
    最主要程式修改的部分應該就是你硬體有更動的部分(如 LCD 部分).



類似的主題

  1. 【轉貼】2005年超甜蜜方位,十二生肖出國旅遊先看這∼
    作者:minnan24 所在討論版:-- 生 活 & 工 作 & 健 康 小 常 識
    回覆: 0
    最後發表: 2005-01-01, 03:34 PM
  2. FTP站的下載速度?512 OR 64?
    作者:jshj0314 所在討論版:---- ADSL 軟 硬 體 技 術
    回覆: 13
    最後發表: 2002-08-02, 12:29 PM

 

此網頁沒有從搜尋引擎而來的訪客

發表文章規則

  • 不可以發表新主題
  • 不可以回覆文章
  • 不可以上傳附加檔案
  • 不可以編輯自己的文章
  •