1602液晶屏驱动源程序1

发布者:peon1989最新更新时间:2011-02-27 手机看文章 扫描二维码
随时随地手机看文章
rs bit p2.6
r_w bit p2.5
enable bit p2.7
db0_db7 data p1
org 0000h
ajmp main
org 0050h
main:mov sp,#60h
lcall initial
lcall cls
main1:
ll2:lcall key

cjne a,#00h,l1
ajmp lp
l1:cjne a,#01h,l2a
ajmp lp
l2a:cjne a,#02h,l2
ajmp lp
l2:cjne a,#03h,l3
ajmp lp
l3:cjne a,#04h,l4
ajmp lp
l4:cjne a,#05h,l5
ajmp lp
l5:cjne a,#06h,l6
ajmp lp
l6:cjne a,#07h,l7
ajmp lp
l7:cjne a,#08h,l8
ajmp lp
l8:cjne a,#09h,l9
ajmp lp
l9:cjne a,#0ah,l10
ajmp lp
l10:cjne a,#0bh,ll2
lp:mov 32h,a
mov dptr,#tab0
movc a,@a+dptr
mov 30h,a
mov a,32h
mov dptr,#tab1
movc a,@a+dptr
mov 31h,a
ajmp loop


loop:mov a,30h 
lcall write_instruction
mov a,31h
lcall writelcddata
ljmp main1
;*********************************
initial:
mov a,#00111000b
lcall write_instruction
mov a,#00001110b
lcall write_instruction
mov a,#00000110b
lcall write_instruction
ret
;***********************************
cls: 
mov a,#01h
lcall write_instruction
ret
;************************************
write_instruction:
lcall checkbusy
clr enable
clr r_w
clr rs
setb enable
mov db0_db7,a
clr enable
ret
;************************************
checkbusy: 
push acc
checkbusyloop:
clr enable
setb r_w
clr rs
setb enable
mov a,db0_db7
clr enable
jb acc.7,checkbusyloop
pop acc
lcall delay1
ret
;*************************************
writelcddata:
lcall checkbusy
clr enable
clr r_w
setb rs
setb enable
mov db0_db7,a
clr enable
ret
;**************************************
delay1:
mov r5,#06
kp01:mov r6,#248
djnz r6,$
djnz r5,kp01
ret
;***************************************
key:lcall ks 
jnz k1
lcall delay2
ajmp key
k1:lcall delay2
lcall delay2
jnz k2
ajmp key
k2:mov r2,#0dfh
mov r4,#00h
k6:mov p3,r2
jb p3.0,k3
mov a,#00h
ajmp lk
k3:jb p3.1,k4
mov a,#03h
ajmp lk
k4:jb p3.2,k5
mov a,#06h
ajmp lk
k5:jb p3.3,next
mov a,#09h
lk:add a,r4
push acc
lkk:lcall delay2
lcall ks
jnz lkk
pop acc
ret
next:
inc r4
mov a,r2
jnb acc.7,key
rl a
mov r2,a
ajmp k6

ks: mov p3,#0fh
mov a,p3
xrl a,#0fh
ret

delay2:
mov 35h,#4ah
tt01:mov 36h,#0fah
djnz 36h,$
djnz 35h,tt01
ret

tab1:db 30h,31h,32h,33h,34h,35h,36h,37h,38h,39h,41h,42h
tab0:db 80h,81h,82h,83h,84h,85h,86h,87h,88h,89h,8ah,8bh

end
引用地址:1602液晶屏驱动源程序1

上一篇:数据表中的代码怎样得到的呢?
下一篇:1602液晶屏驱动源程序2

小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved