历史上的今天
今天是:2025年01月14日(星期二)
2018年01月14日 | 3X4键盘4位动态移位LED显示程序
2018-01-14 来源:eefocus
;-------------------------------------------------------
;程序名称:3X4矩阵键盘4位动态移位LED显示程序 *
;实现功能:扫描出键盘的键值并在4位LED上分别显示 *
;MCU: STC89C58RD+ 支持ISP功能 *
;p0口接LED段码 p2.4(第一位LED片选)~~p2.0(第4位片选)*
;p1.6 p1.5 p1.4 p1.3 *
; p1.2 *
; 3 X 4矩阵 p1.1 *
; p1.0 *
;-------------------------------------------------------
org 0000H
mov 30h,#00h ;将30H个位显示缓冲单元清零
mov 31h,#00h ;将31H十位显示缓冲单元清零
mov 32h,#00h ;将32H百位显示缓冲单元清零
mov 33h,#00h ;将33H千位显示缓冲单元清零
loop_r0: mov r0,#00h ;LED位计数器初始值
ajmp main ;跳主程序
org 0030h
;************************************************************
MAIN: ;主程序
LCALL DISPLAY ; 调显示子程序
LCALL KEY ; 调键盘子程序
AJMP MAIN ; 返回
;*******************************************************
loop_jishu: inc r0
CJNE R0,#01h,LOOP_02H
mov 30h,r3
ajmp main
ret
loop_02h: CJNE R0,#02h,LOOP_03H
mov 31h,r3
ajmp main
ret
loop_03h: CJNE R0,#03h,LOOP_04H
mov 32h,r3
ajmp main
ret
loop_04h: CJNE R0,#04h,LOOP_r0
mov 33h,r3
ajmp main
ret
CJNE R0,#05h,main
ajmp loop_r0
ret
;***********************************************************
KEY: MOV P1,#0FFH
CLR P1.0 ;扫KEY1
JB P1.3,KEY1_4 ;P1.3为高电平,跳出,扫描下个I/O口,P1.3为低电平执行下一句
ACALL DELAY10ms ;延时消抖再确认按下
key1__3: JB P1.3,KEY1_4 ;确认跳出,不确认执行下一句
MOV r3,#088H ;*
lcall display
jnb p1.3,key1__3
LJMP loop_jishu
KEY1_4: JB P1.4 ,KEY1_5
ACALL DELAY10ms
KEY1__4: JB P1.4 ,KEY1_5
MOV r3,#0F8H ;7
lcall display
jnb p1.4,key1__4
LJMP loop_jishu
KEY1_5: JB P1.5 ,KEY1_6
ACALL DELAY10ms
JB P1.5 ,KEY1_6
KEY1__5: MOV r3,#99H ;4
lcall display
jnb p1.5,key1__5
LJMP loop_jishu
KEY1_6: JB P1.6 ,next1
ACALL DELAY10ms
JB P1.6,NEXT1
KEY1__6: MOV r3,#0F9H ;1
lcall display
jnb p1.6,key1__6
LJMP loop_jishu
; -----------------------------
next1: setb p1.0
CLR P1.1 ;扫KEY2
JB P1.3 ,KEY2_4
ACALL DELAY10ms
JB P1.3 ,KEY2_4
KEY2__3: MOV r3,#0C0H ;0
lcall display
jnb p1.3,key2__3
LJMP loop_jishu
KEY2_4: JB P1.4 ,KEY2_5
ACALL DELAY10ms
JB P1.4 ,KEY2_5
KEY2__4: MOV r3,#80H ;8
lcall display
jnb p1.4,key2__4
LJMP loop_jishu
KEY2_5: JB P1.5 ,KEY2_6
ACALL DELAY10ms
JB P1.5 ,KEY2_6
KEY2__5: MOV r3,#92H ;5
lcall display
jnb p1.5,key2__5
LJMP loop_jishu
KEY2_6: JB P1.6 ,next2
ACALL DELAY10ms
JB P1.6,NEXT2
KEY2__6: MOV r3,#0A4H ;2
lcall display
jnb p1.6,key2__6
LJMP loop_jishu
;--------------------------------
next2: setb p1.1
CLR P1.2 ;扫KEY3
JB P1.3 ,KEY3_4
ACALL DELAY10ms
JB P1.3 ,KEY3_4
KEY3__3: MOV r3,#83H ;#
lcall display
jnb p1.3,key3__3
LJMP loop_jishu
KEY3_4: JB P1.4 ,KEY3_5
ACALL DELAY10ms
JB P1.4 ,KEY3_5
KEY3__4: MOV r3,#90H ;9
lcall display
JNB P1.4,KEY3__4
LJMP loop_jishu
KEY3_5: JB P1.5 ,KEY3_6
ACALL DELAY10ms
JB P1.5 ,KEY3_6
KEY3__5: MOV r3,#82H ;6
lcall display
jnb p1.5,key3__5
LJMP loop_jishu
KEY3_6: JB P1.6 ,next3
ACALL DELAY10ms
JB P1.6 ,NEXT3
KEY3__6: MOV r3,#0B0H ;3
lcall display
jnb p1.6,key3__6
LJMP loop_jishu
next3: setb p1.2
RET
;**************************************************************
display: mov p0,#0ffh ;将P02口置高电平
mov p2,#0ffh
mov r7,#100 ;软件计数器赋值
dd1:
mov R2,30h ;将显示缓冲区30H中的值送入ACC
;movc a,@a+dptr ;查表取要显示的数并把查表的结果送入ACC
mov p0,R2 ;将要显示的数送入P0口
clr p2.4 ;开个位显示单元
lcall delay100us ;延时100US
setb p2.4 ;关个位显示单
mov R2,31h ;将显示缓冲区别31H中的值送入A
;movc A,@a+dptr ;查表取要显示的数并把查表的结果送入ACC
mov p0,R2 ;将要显示的数送入P0口
clr p2.5 ;开十位显示单元
lcall delay100us ;延时100US
setb p2.5 ;关十位显示单元
mov R2,32h ;将显示缓冲区32H中的值送入ACC
;movc a,@a+dptr ;查表取要显示的数并把查表的结果送入ACC
mov p0,R2 ;将要显示的数送入P0口
clr p2.6 ;开百位显示单元
lcall delay100us ;延时100US
setb p2.6 ;关百位显示单元
mov R2,33h ;将显示缓冲区33H中的值送入ACC
;movc a,@a+dptr ;查表取要显示的数并把查表的结果送入ACC
mov p0,R2 ;将要显示的数送入P0口
clr p2.7 ;开千位显示单元
lcall delay100us ;延时100US
setb p2.7 ;关千位显示单元
djnz r7,dd1 ;R7不等于0返回至DD1处
ret ;R7等于0子程序返回
;***********************************************************
delay10ms:
mov r6,#50
tt2:
mov r5,#30
djnz r5,$
djnz r6,tt2
ret
delay100us:
mov r5,#30
djnz r5,$
ret
end
史海拾趣
|
开通了自己的博客,自然要把自己的空间装饰一下。EEWORLD博客给您提供了快速美化空间的方法。 1)登录空间之后,点击导航栏右侧的“设置”,如下图所示 2)进入设置界面,点击“主页风格”如下所示,可以选择一款您喜欢的页面风格,点 ...… 查看全部问答> |
|
EEWORLD第六届,也就是8月社区明星人物终于评出来了, 经过了soso、小志、小娜的努力工作 ,查看了了大量数据,明星人物们终于火热登场啦! 本月优秀工程师(依据发帖数排名): 最佳解惑奖:仙猫 最佳活跃奖:Yound 最佳贡献奖: ahshan 本 ...… 查看全部问答> |
|
作为无源元件之一的电容,其作用不外乎以下几种: 1、应用于电源电路,实现旁路、去藕、滤波和储能的作用。下面分类详述之: 1)旁路 旁路电容是为本地器件提供能量的储能器件,它能使稳压器的输出均匀化,降低负载需求。 就像小型可充电电池一 ...… 查看全部问答> |
|
就是当ctrl+c或者切断电源的时候,系统都会发出一个信号。 像SIGHUP SIGINT 之类的 东西 可以写出一个方法获取到它吗? 我是想让系统关机的时候 用signal绑定一个倒计时函数,但是我不知道关机的信号是什么 。这个信号会不会被隐藏掉? ps:已 ...… 查看全部问答> |
|
求利用 51单片机 和 CMOS图像传感器 做视频采集和显示的方案 如题,CMOS传感器型号已经选择好,OV7620,摄像头模块的核心器件即OV7620,摄像头是数字视频输出16Bit或8Bit的YUV422格式数据,如果用单片机进行图像的采集,并且在PC端显示,请问一下还需要什么核心器件,最好给出一个大体的设计方案,谢谢了,这 ...… 查看全部问答> |
|
前段时间比较忙,没来得及分析LM3S8962串口问题。今天花了一上午时间搞定了,原来是232片子坏了,换了个新的,串口能调通了。顺便发点LM3S8962串口的资料,大家共同学习进步。 [ 本帖最后由 beyondvv 于 2010-9-25 22:27 编辑 ]… 查看全部问答> |
|
replyreload += \',\' + 1189441; 本帖最后由 jameswangsynnex 于 2015-3-3 19:59 编辑 曾经在不同场合与很多安卓青探讨过一些或浅或深的知识层面问题,如今想来具备真正独立思考能力与当量知识储备的,也只有一人而己;换言之,绝大部分时候只是对 ...… 查看全部问答> |




