找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5192|回復(fù): 5
收起左側(cè)

stm32匯編LCD1602四線液晶驅(qū)動

[復(fù)制鏈接]
ID:59583 發(fā)表于 2014-3-26 15:35 | 顯示全部樓層 |閱讀模式
第一次成功驅(qū)動1602以前沒用過, 最近在做金屬探測器,買了些零件中有1602LCD。 那個金屬探測器的固件怎么也不執(zhí)行,于是決定還是自己寫, 比2.4寸那個簡單多了。
板子是自己買的STM32F103C8T6然后自己焊在轉(zhuǎn)接板上,自己搭棚的最小系統(tǒng)。。 這都是第一次。。  
以下程序沒優(yōu)化延時什么的太長, 不過能用即可。 屏幕第一行顯示 yjmwxwx yjmwxwx

.thumb                 
         .syntax unified
.section .data
lcdshuju: .ascii "yjmwxwx yjmwxwx "
        .equ STACKINIT,          0x20005000
.equ yanshius,           0x20000200
.equ ledkongzhi,         0x20000204
.equ lcdshu,  0x20000208
.equ lcdyanshi, 800000
.equ lcdyanshi1, 2000
.section .text
vectors:        
        .word STACKINIT         
        .word _start + 1        
        .word _nmi_handler + 1  
        .word _hard_fault  + 1  
        .word _memory_fault + 1
        .word _bus_fault + 1   
        .word _usage_fault + 1
_start:
ldr r0, = yanshius
ldr r1, = 0xfffe
str r1, [r0]
mov r0, # 0
mov r1, # 0
mov r2, # 0
mov r3, # 0
mov r4, # 0
mov r5, # 0
mov r6, # 0
mov r7, # 0
mov r8, # 0
mov r9, # 0
mov r10, # 0
mov r11, # 0
@@AFIO-MAPR 開SWD模式
ldr r0, = 0x40010004
ldr r1, = 0x02000000
str r1, [r0]
shizhong:
ldr r0, = 0x40021000
ldr r1, = 0x14D83
str r1, [r0]
gsszbz:
ldr r2, [r0]
ldr r1, = 0x20000
tst r1, r2           @高速時鐘標(biāo)志位           
bne rccchushihua
b gsszbz
rccchushihua:
ldr r0, = 0x40022000
mov r1, # 0x00000032
str r1, [r0]           @FLASH緩沖 緩沖開啟
ldr r0, = 0x40021004
ldr r1, = 0x1D8400
str r1, [r0]
ldr r0, = 0x40021000
ldr r1, = 0x1033D03
str r1, [r0]
chaxun:
ldr r2, [r0]
ldr r1, = 0x2000000
tst r1, r2
bne rccgg
b chaxun
rccgg:
ldr r0, = 0x40021004
ldr r1, = 0x1D8402
str r1, [r0]

rccapb2enr:
        ldr r0, = 0x40021018
        mov r1, # 0x3D
        str r1, [r0]
ioshezhi:
ldr r0, = 0x40010800 @ gpioa
ldr r1, = 0x44443443
str r1, [r0]
        ldr r0, = 0x40010c04
        ldr r1, = 0x33334444
        str r1, [r0]
lcdchushihua:
ldr r0, = 0x20000208
ldr r10, = 0x42210180
mov r9,  # 0
str r9, [r10]
MOV R1, # 0x33
str r1, [r0]
bl xielcd
ldr r6, = lcdyanshi
yanshila3:
subs r6, # 1
bne yanshila3
MOV R1, # 0x32
str r1, [r0]
bl xielcd
ldr r6, = lcdyanshi
yanshila5:
subs r6, # 1
bne yanshila5
MOV R1, # 0x28
str r1, [r0]
bl xielcd
MOV R1, # 0x0c
str r1, [r0]
bl xielcd
MOV R1, # 0x01
str r1, [r0]
bl xielcd
ldr r6, = lcdyanshi
yanshila6:
subs r6, # 1
bne yanshila6
zhuchengxu:
bl lcdlcd
ddd3:
b ddd3

lcdlcd:
push {r0-r10, lr}
MOV R1, # 0x80
str r1, [r0]
bl xielcd
lcdd1:
ldr r0, = 0x20000208
ldr r1, = lcdshuju
mov r3, # 0
lcdchengxu:
ldrb r2, [r1, r3]
str r2, [r0]
ldr r10, = 0x42210180
mov r9,  # 1
str r9, [r10]
bl xielcd
add r3, # 1
cmp r3, # 16
bne lcdchengxu
pop {r0-r10, pc}

xielcd:
push {r0-r9, lr}
ldr r4, = 0x22004110
ldmia r4!, {r0-r3}
bl xielcd1
ldr r4, = 0x22004100
ldmia r4!, {r0-r3}
bl xielcd1
pop {r0-r9, pc}
xielcd1:
push {r0-r10, lr}
ldr r7,  = 0x4221018c
mov r11, # 1
str r11, [r7]
ldr r5, = 0x422181b0
stmia r5!, {r0-r3}
ldr r6, = lcdyanshi1
yanshila:
subs r6, # 1
bne yanshila
mov r11, # 0
str r11, [r7]
pop {r0-r10, pc}
_nmi_handler:
bx lr
_hard_fault:
bx lr
_memory_fault:
bx lr
_bus_fault:
bx lr
_usage_fault:
  bx lr
回復(fù)

使用道具 舉報

ID:161488 發(fā)表于 2017-1-18 11:57 | 顯示全部樓層
裝載的值怎么不注釋呢
回復(fù)

使用道具 舉報

ID:160895 發(fā)表于 2017-1-29 16:56 | 顯示全部樓層
大神 啊 大神啊,至今不知道如何用匯編來寫
回復(fù)

使用道具 舉報

ID:73992 發(fā)表于 2023-4-28 08:03 來自手機(jī) | 顯示全部樓層
樓主能不能出一篇keil5新建工程到點(diǎn)亮一個LED燈的匯編范例
回復(fù)

使用道具 舉報

ID:291668 發(fā)表于 2023-4-28 11:41 | 顯示全部樓層
這個代碼看著簡單多了。高人!
回復(fù)

使用道具 舉報

ID:1050548 發(fā)表于 2023-4-29 09:08 | 顯示全部樓層
碩005 發(fā)表于 2017-1-29 16:56
大神 啊 大神啊,至今不知道如何用匯編來寫

我也不知道,買了匯編的書,感覺C還是容易一點(diǎn)
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表